Index: netlog_viewer/util.js |
diff --git a/netlog_viewer/util.js b/netlog_viewer/util.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..57048ddfe68f71999e429eff94f0c92839819073 |
--- /dev/null |
+++ b/netlog_viewer/util.js |
@@ -0,0 +1,176 @@ |
+// Copyright (c) 2012 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. |
+ |
+/** |
+ * Sets the width (in pixels) on a DOM node. |
+ * @param {!HtmlNode} node The node whose width is being set. |
+ * @param {number} widthPx The width in pixels. |
+ */ |
+function setNodeWidth(node, widthPx) { |
+ node.style.width = widthPx.toFixed(0) + 'px'; |
+} |
+ |
+/** |
+ * Sets the height (in pixels) on a DOM node. |
+ * @param {!HtmlNode} node The node whose height is being set. |
+ * @param {number} heightPx The height in pixels. |
+ */ |
+function setNodeHeight(node, heightPx) { |
+ node.style.height = heightPx.toFixed(0) + 'px'; |
+} |
+ |
+/** |
+ * Sets the position and size of a DOM node (in pixels). |
+ * @param {!HtmlNode} node The node being positioned. |
+ * @param {number} leftPx The left position in pixels. |
+ * @param {number} topPx The top position in pixels. |
+ * @param {number} widthPx The width in pixels. |
+ * @param {number} heightPx The height in pixels. |
+ */ |
+function setNodePosition(node, leftPx, topPx, widthPx, heightPx) { |
+ node.style.left = leftPx.toFixed(0) + 'px'; |
+ node.style.top = topPx.toFixed(0) + 'px'; |
+ setNodeWidth(node, widthPx); |
+ setNodeHeight(node, heightPx); |
+} |
+ |
+/** |
+ * Sets the visibility for a DOM node. |
+ * @param {!HtmlNode} node The node being positioned. |
+ * @param {boolean} isVisible Whether to show the node or not. |
+ */ |
+function setNodeDisplay(node, isVisible) { |
+ node.style.display = isVisible ? '' : 'none'; |
+} |
+ |
+/** |
+ * Adds a node to |parentNode|, of type |tagName|. |
+ * @param {!HtmlNode} parentNode The node that will be the parent of the new |
+ * element. |
+ * @param {string} tagName the tag name of the new element. |
+ * @return {!HtmlElement} The newly created element. |
+ */ |
+function addNode(parentNode, tagName) { |
+ var elem = parentNode.ownerDocument.createElement(tagName); |
+ parentNode.appendChild(elem); |
+ return elem; |
+} |
+ |
+/** |
+ * Adds |text| to node |parentNode|. |
+ * @param {!HtmlNode} parentNode The node to add text to. |
+ * @param {string} text The text to be added. |
+ * @return {!Object} The newly created text node. |
+ */ |
+function addTextNode(parentNode, text) { |
+ var textNode = parentNode.ownerDocument.createTextNode(text); |
+ parentNode.appendChild(textNode); |
+ return textNode; |
+} |
+ |
+/** |
+ * Adds a node to |parentNode|, of type |tagName|. Then adds |
+ * |text| to the new node. |
+ * @param {!HtmlNode} parentNode The node that will be the parent of the new |
+ * element. |
+ * @param {string} tagName the tag name of the new element. |
+ * @param {string} text The text to be added. |
+ * @return {!HtmlElement} The newly created element. |
+ */ |
+function addNodeWithText(parentNode, tagName, text) { |
+ var elem = parentNode.ownerDocument.createElement(tagName); |
+ parentNode.appendChild(elem); |
+ addTextNode(elem, text); |
+ return elem; |
+} |
+ |
+/** |
+ * Returns the key such that map[key] == value, or the string '?' if |
+ * there is no such key. |
+ * @param {!Object} map The object being used as a lookup table. |
+ * @param {Object} value The value to be found in |map|. |
+ * @return {string} The key for |value|, or '?' if there is no such key. |
+ */ |
+function getKeyWithValue(map, value) { |
+ for (var key in map) { |
+ if (map[key] == value) |
+ return key; |
+ } |
+ return '?'; |
+} |
+ |
+/** |
+ * Returns a new map with the keys and values of the input map inverted. |
+ * @param {!Object} map The object to have its keys and values reversed. Not |
+ * modified by the function call. |
+ * @return {Object} The new map with the reversed keys and values. |
+ */ |
+function makeInverseMap(map) { |
+ var reversed = {}; |
+ for (var key in map) |
+ reversed[map[key]] = key; |
+ return reversed; |
+} |
+ |
+/** |
+ * Looks up |key| in |map|, and returns the resulting entry, if there is one. |
+ * Otherwise, returns |key|. Intended primarily for use with incomplete |
+ * tables, and for reasonable behavior with system enumerations that may be |
+ * extended in the future. |
+ * @param {!Object} map The table in which |key| is looked up. |
+ * @param {string} key The key to look up. |
+ * @return {Object|string} map[key], if it exists, or |key| if it doesn't. |
+ */ |
+function tryGetValueWithKey(map, key) { |
+ if (key in map) |
+ return map[key]; |
+ return key; |
+} |
+ |
+/** |
+ * Builds a string by repeating |str| |count| times. |
+ * @param {string} str The string to be repeated. |
+ * @param {number} count The number of times to repeat |str|. |
+ * @return {string} The constructed string |
+ */ |
+function makeRepeatedString(str, count) { |
+ var out = []; |
+ for (var i = 0; i < count; ++i) |
+ out.push(str); |
+ return out.join(''); |
+} |
+ |
+/** |
+ * Clones a basic POD object. Only a new top level object will be cloned. It |
+ * will continue to reference the same values as the original object. |
+ * @param {Object} object The object to be cloned. |
+ * @return {Object} A copy of |object|. |
+ */ |
+function shallowCloneObject(object) { |
+ if (!(object instanceof Object)) |
+ return object; |
+ var copy = {}; |
+ for (var key in object) { |
+ copy[key] = object[key]; |
+ } |
+ return copy; |
+} |
+ |
+/** |
+ * Helper to make sure singleton classes are not instantiated more than once. |
+ * @param {Function} ctor The constructor function being checked. |
+ */ |
+function assertFirstConstructorCall(ctor) { |
+ // This is the variable which is set by cr.addSingletonGetter(). |
+ if (ctor.hasCreateFirstInstance_) { |
+ throw Error('The class ' + ctor.name + ' is a singleton, and should ' + |
+ 'only be accessed using ' + ctor.name + '.getInstance().'); |
+ } |
+ ctor.hasCreateFirstInstance_ = true; |
+} |
+ |
+function hasTouchScreen() { |
+ return 'ontouchstart' in window; |
+} |
+ |