Index: chrome/browser/resources/ntp/util.js |
=================================================================== |
--- chrome/browser/resources/ntp/util.js (revision 0) |
+++ chrome/browser/resources/ntp/util.js (revision 0) |
@@ -0,0 +1,86 @@ |
+// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// TODO(arv): Move to shared/js once namespaced and tested. |
+ |
+var global = this; |
+const IS_MAC = /$Mac/.test(navigator.platform); |
+ |
+function $(id) { |
+ return document.getElementById(id); |
+} |
+ |
+function bind(fn, selfObj, var_args) { |
+ var boundArgs = Array.prototype.slice.call(arguments, 2); |
+ return function() { |
+ var args = Array.prototype.slice.call(arguments); |
+ args.unshift.apply(args, boundArgs); |
+ return fn.apply(selfObj, args); |
+ } |
+} |
+ |
+function url(s) { |
+ // http://www.w3.org/TR/css3-values/#uris |
+ // Parentheses, commas, whitespace characters, single quotes (') and double |
+ // quotes (") appearing in a URI must be escaped with a backslash |
+ var s2 = s.replace(/(\(|\)|\,|\s|\'|\"|\\)/g, '\\$1'); |
+ // WebKit has a bug when it comes to URLs that end with \ |
+ // https://bugs.webkit.org/show_bug.cgi?id=28885 |
+ if (/\\\\$/.test(s2)) { |
+ // Add a space to work around the WebKit bug. |
+ s2 += ' '; |
+ } |
+ return 'url("' + s2 + '")'; |
+} |
+ |
+function findAncestorByClass(el, className) { |
+ return findAncestor(el, function(el) { |
+ if (el.classList) |
+ return el.classList.contains(className); |
+ return null; |
+ }); |
+} |
+ |
+/** |
+ * Return the first ancestor for which the {@code predicate} returns true. |
+ * @param {Node} node The node to check. |
+ * @param {function(Node) : boolean} predicate The function that tests the |
+ * nodes. |
+ * @return {Node} The found ancestor or null if not found. |
+ */ |
+function findAncestor(node, predicate) { |
+ var last = false; |
+ while (node != null && !(last = predicate(node))) { |
+ node = node.parentNode; |
+ } |
+ return last ? node : null; |
+} |
+ |
+function swapDomNodes(a, b) { |
+ var afterA = a.nextSibling; |
+ if (afterA == b) { |
+ swapDomNodes(b, a); |
+ return; |
+ } |
+ var aParent = a.parentNode; |
+ b.parentNode.replaceChild(a, b); |
+ aParent.insertBefore(b, afterA); |
+} |
+ |
+/** |
+ * Calls chrome.send with a callback and restores the original afterwards. |
+ */ |
+function chromeSend(name, params, callbackName, callback) { |
+ var old = global[callbackName]; |
+ global[callbackName] = function() { |
+ // restore |
+ global[callbackName] = old; |
+ |
+ var args = Array.prototype.slice.call(arguments); |
+ return callback.apply(global, args); |
+ }; |
+ chrome.send(name, params); |
+} |
+ |
+ |
Property changes on: chrome\browser\resources\ntp\util.js |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |