Add ICU message format support
[chromium-blink-merge.git] / ios / web / webui / resources / web_ui.js
blob3ae4da0636bbff77d4967299cf901992398857ec
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 // This file adheres to closure-compiler conventions in order to enable
6 // compilation with ADVANCED_OPTIMIZATIONS. In particular, members that are to
7 // be accessed externally should be specified in this['style'] as opposed to
8 // this.style because member identifiers are minified by default.
9 // See http://goo.gl/FwOgy
11 window['chrome'] = window ['chrome'] || {};
13 window['chrome']['send'] = function(message, args) {
14   __gCrWeb.message.invokeOnHost({'command': 'chrome.send',
15                                  'message': '' + message,
16                                  'arguments': args || []});
19 // Chrome defines bind on all functions, so this is expected to exist by
20 // webui's scripts.
21 Function.prototype.bind = function(context) {
22   // Reference to the Function instance.
23   var self = this;
24   // Reference to the current arguments.
25   var curriedArguments = [];
26   for (var i = 1; i < arguments.length; i++)
27     curriedArguments.push(arguments[i]);
28   return function() {
29     var finalArguments = [];
30     for (var i = 0; i < curriedArguments.length; i++)
31       finalArguments.push(curriedArguments[i]);
32     for (var i = 0; i < arguments.length; i++)
33       finalArguments.push(arguments[i]);
34     return self.apply(context, finalArguments);
35   }
38 /**
39  * Sends message requesting favicon at the URL from imageSet for el. Sets
40  * favicon-url attribute on el to the favicon URL.
41  * @param {Element} el The DOM element to request the favicon for.
42  * @param {string} imageSet The CSS -webkit-image-set.
43  */
44 window['chrome']['requestFavicon'] = function(el, imageSet) {
45   var cssUrls = imageSet.match(/url\([^\)]+\) \dx/g);
46   // Extract url from CSS -webkit-image-set.
47   var faviconUrl = '';
48   for (var i = 0; i < cssUrls.length; ++i) {
49     var scaleFactorExp = /(\d)x$/;
50     var scaleFactor = getSupportedScaleFactors()[0];
51     if (parseInt(scaleFactorExp.exec(cssUrls[i])[1], 10) === scaleFactor) {
52       var urlExp = /url\(\"(.+)\"\)/;
53       faviconUrl = urlExp.exec(cssUrls[i])[1];
54       break;
55     }
56   }
57   el.setAttribute('favicon-url', url(faviconUrl));
58   chrome.send('webui.requestFavicon', [faviconUrl]);
61 /**
62  * Called to set elements with favicon-url attribute equal to faviconUrl to
63  * provided dataUrl.
64  * @param {string} faviconUrl Favicon URL used to locate favicon element
65  *     via the favicon-url attribute.
66  * @param {string} dataUrl The data URL to assign to the favicon element's
67  *    backgroundImage.
68  */
69 window['chrome']['setFaviconBackground'] = function(faviconUrl, dataUrl) {
70   var selector = "[favicon-url='" + url(faviconUrl) + "']";
71   var elements = document.querySelectorAll(selector);
72   for (var i = 0; i < elements.length; ++i) {
73     elements[i].style.backgroundImage = url(dataUrl);
74   }