Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(44)

Side by Side Diff: chrome/tools/test/reference_build/chrome_linux/resources/inspector/utilities.js

Issue 177049: On Linux, move the passing of filedescriptors to a dedicated socketpair(). (Closed)
Patch Set: Removed *.d files from reference build Created 11 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2007 Apple Inc. All rights reserved. 2 * Copyright (C) 2007 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 20 matching lines...) Expand all
31 if (obj === null) 31 if (obj === null)
32 return "null"; 32 return "null";
33 33
34 var type = typeof obj; 34 var type = typeof obj;
35 if (type !== "object" && type !== "function") 35 if (type !== "object" && type !== "function")
36 return type; 36 return type;
37 37
38 win = win || window; 38 win = win || window;
39 39
40 if (obj instanceof win.Node) 40 if (obj instanceof win.Node)
41 return "node"; 41 return (obj.nodeType === undefined ? type : "node");
42 if (obj instanceof win.String) 42 if (obj instanceof win.String)
43 return "string"; 43 return "string";
44 if (obj instanceof win.Array) 44 if (obj instanceof win.Array)
45 return "array"; 45 return "array";
46 if (obj instanceof win.Boolean) 46 if (obj instanceof win.Boolean)
47 return "boolean"; 47 return "boolean";
48 if (obj instanceof win.Number) 48 if (obj instanceof win.Number)
49 return "number"; 49 return "number";
50 if (obj instanceof win.Date) 50 if (obj instanceof win.Date)
51 return "date"; 51 return "date";
52 if (obj instanceof win.RegExp) 52 if (obj instanceof win.RegExp)
53 return "regexp"; 53 return "regexp";
54 if (obj instanceof win.Error) 54 if (obj instanceof win.Error)
55 return "error"; 55 return "error";
56 return type; 56 return type;
57 } 57 }
58 58
59 Object.proxyType = function(objectProxy)
60 {
61 if (objectProxy === null)
62 return "null";
63
64 var type = typeof objectProxy;
65 if (type !== "object" && type !== "function")
66 return type;
67
68 return objectProxy.type;
69 }
70
59 Object.hasProperties = function(obj) 71 Object.hasProperties = function(obj)
60 { 72 {
61 if (typeof obj === "undefined" || typeof obj === "null") 73 if (typeof obj === "undefined" || typeof obj === "null")
62 return false; 74 return false;
63 for (var name in obj) 75 for (var name in obj)
64 return true; 76 return true;
65 return false; 77 return false;
66 } 78 }
67 79
68 Object.describe = function(obj, abbreviated) 80 Object.describe = function(obj, abbreviated, win)
69 { 81 {
70 var type1 = Object.type(obj); 82 var type1 = Object.type(obj, win);
71 var type2 = Object.prototype.toString.call(obj).replace(/^\[object (.*)\]$/i , "$1"); 83 var type2 = Object.prototype.toString.call(obj).replace(/^\[object (.*)\]$/i , "$1");
72 84
73 switch (type1) { 85 switch (type1) {
74 case "object": 86 case "object":
75 case "node": 87 case "node":
76 return type2; 88 return type2;
77 case "array": 89 case "array":
78 return "[" + obj.toString() + "]"; 90 return "[" + obj.toString() + "]";
79 case "string": 91 case "string":
80 if (obj.length > 100) 92 if (obj.length > 100)
81 return "\"" + obj.substring(0, 100) + "\u2026\""; 93 return "\"" + obj.substring(0, 100) + "\u2026\"";
82 return "\"" + obj + "\""; 94 return "\"" + obj + "\"";
83 case "function": 95 case "function":
84 var objectText = String(obj); 96 var objectText = String(obj);
85 if (!/^function /.test(objectText)) 97 if (!/^function /.test(objectText))
86 objectText = (type2 == "object") ? type1 : type2; 98 objectText = (type2 == "object") ? type1 : type2;
87 else if (abbreviated) 99 else if (abbreviated)
88 objectText = /.*/.exec(obj)[0].replace(/ +$/g, ""); 100 objectText = /.*/.exec(obj)[0].replace(/ +$/g, "");
89 return objectText; 101 return objectText;
90 case "regexp": 102 case "regexp":
91 return String(obj).replace(/([\\\/])/g, "\\$1").replace(/\\(\/[gim]*)$/, "$1").substring(1); 103 return String(obj).replace(/([\\\/])/g, "\\$1").replace(/\\(\/[gim]*)$/, "$1").substring(1);
92 default: 104 default:
93 return String(obj); 105 return String(obj);
94 } 106 }
95 } 107 }
96 108
97 Object.sortedProperties = function(obj) 109 Object.properties = function(obj)
98 { 110 {
99 var properties = []; 111 var properties = [];
100 for (var prop in obj) 112 for (var prop in obj)
101 properties.push(prop); 113 properties.push(prop);
102 properties.sort();
103 return properties; 114 return properties;
104 } 115 }
105 116
117 Object.sortedProperties = function(obj, sortFunc)
118 {
119 return Object.properties(obj).sort(sortFunc);
120 }
121
106 Function.prototype.bind = function(thisObject) 122 Function.prototype.bind = function(thisObject)
107 { 123 {
108 var func = this; 124 var func = this;
109 var args = Array.prototype.slice.call(arguments, 1); 125 var args = Array.prototype.slice.call(arguments, 1);
110 return function() { return func.apply(thisObject, args.concat(Array.prototyp e.slice.call(arguments, 0))) }; 126 return function() { return func.apply(thisObject, args.concat(Array.prototyp e.slice.call(arguments, 0))) };
111 } 127 }
112 128
113 Node.prototype.rangeOfWord = function(offset, stopCharacters, stayWithinNode, di rection) 129 Node.prototype.rangeOfWord = function(offset, stopCharacters, stayWithinNode, di rection)
114 { 130 {
115 var startNode; 131 var startNode;
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 return false; 243 return false;
228 // Test for the simple case before using a RegExp. 244 // Test for the simple case before using a RegExp.
229 if (this.className === className) 245 if (this.className === className)
230 return true; 246 return true;
231 var regex = new RegExp("(^|\\s)" + className.escapeForRegExp() + "($|\\s)"); 247 var regex = new RegExp("(^|\\s)" + className.escapeForRegExp() + "($|\\s)");
232 return regex.test(this.className); 248 return regex.test(this.className);
233 } 249 }
234 250
235 Node.prototype.enclosingNodeOrSelfWithNodeNameInArray = function(nameArray) 251 Node.prototype.enclosingNodeOrSelfWithNodeNameInArray = function(nameArray)
236 { 252 {
237 for (var node = this; node && !objectsAreSame(node, this.ownerDocument); nod e = node.parentNode) 253 for (var node = this; node && node !== this.ownerDocument; node = node.paren tNode)
238 for (var i = 0; i < nameArray.length; ++i) 254 for (var i = 0; i < nameArray.length; ++i)
239 if (node.nodeName.toLowerCase() === nameArray[i].toLowerCase()) 255 if (node.nodeName.toLowerCase() === nameArray[i].toLowerCase())
240 return node; 256 return node;
241 return null; 257 return null;
242 } 258 }
243 259
244 Node.prototype.enclosingNodeOrSelfWithNodeName = function(nodeName) 260 Node.prototype.enclosingNodeOrSelfWithNodeName = function(nodeName)
245 { 261 {
246 return this.enclosingNodeOrSelfWithNodeNameInArray([nodeName]); 262 return this.enclosingNodeOrSelfWithNodeNameInArray([nodeName]);
247 } 263 }
248 264
249 Node.prototype.enclosingNodeOrSelfWithClass = function(className) 265 Node.prototype.enclosingNodeOrSelfWithClass = function(className)
250 { 266 {
251 for (var node = this; node && !objectsAreSame(node, this.ownerDocument); nod e = node.parentNode) 267 for (var node = this; node && node !== this.ownerDocument; node = node.paren tNode)
252 if (node.nodeType === Node.ELEMENT_NODE && node.hasStyleClass(className) ) 268 if (node.nodeType === Node.ELEMENT_NODE && node.hasStyleClass(className) )
253 return node; 269 return node;
254 return null; 270 return null;
255 } 271 }
256 272
257 Node.prototype.enclosingNodeWithClass = function(className) 273 Node.prototype.enclosingNodeWithClass = function(className)
258 { 274 {
259 if (!this.parentNode) 275 if (!this.parentNode)
260 return null; 276 return null;
261 return this.parentNode.enclosingNodeOrSelfWithClass(className); 277 return this.parentNode.enclosingNodeOrSelfWithClass(className);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 var total = 0; 310 var total = 0;
295 for (var element = this; element; element = element.offsetParent) 311 for (var element = this; element; element = element.offsetParent)
296 total += element.offsetTop; 312 total += element.offsetTop;
297 return total; 313 return total;
298 }); 314 });
299 315
300 Element.prototype.firstChildSkippingWhitespace = firstChildSkippingWhitespace; 316 Element.prototype.firstChildSkippingWhitespace = firstChildSkippingWhitespace;
301 Element.prototype.lastChildSkippingWhitespace = lastChildSkippingWhitespace; 317 Element.prototype.lastChildSkippingWhitespace = lastChildSkippingWhitespace;
302 318
303 Node.prototype.isWhitespace = isNodeWhitespace; 319 Node.prototype.isWhitespace = isNodeWhitespace;
304 Node.prototype.nodeTypeName = nodeTypeName;
305 Node.prototype.displayName = nodeDisplayName; 320 Node.prototype.displayName = nodeDisplayName;
306 Node.prototype.contentPreview = nodeContentPreview; 321 Node.prototype.isAncestor = function(node)
307 Node.prototype.isAncestor = isAncestorNode; 322 {
323 return isAncestorNode(this, node);
324 };
308 Node.prototype.isDescendant = isDescendantNode; 325 Node.prototype.isDescendant = isDescendantNode;
309 Node.prototype.firstCommonAncestor = firstCommonNodeAncestor;
310 Node.prototype.nextSiblingSkippingWhitespace = nextSiblingSkippingWhitespace; 326 Node.prototype.nextSiblingSkippingWhitespace = nextSiblingSkippingWhitespace;
311 Node.prototype.previousSiblingSkippingWhitespace = previousSiblingSkippingWhites pace; 327 Node.prototype.previousSiblingSkippingWhitespace = previousSiblingSkippingWhites pace;
312 Node.prototype.traverseNextNode = traverseNextNode; 328 Node.prototype.traverseNextNode = traverseNextNode;
313 Node.prototype.traversePreviousNode = traversePreviousNode; 329 Node.prototype.traversePreviousNode = traversePreviousNode;
314 Node.prototype.onlyTextChild = onlyTextChild; 330 Node.prototype.onlyTextChild = onlyTextChild;
315 331
316 String.prototype.hasSubstring = function(string, caseInsensitive) 332 String.prototype.hasSubstring = function(string, caseInsensitive)
317 { 333 {
318 if (!caseInsensitive) 334 if (!caseInsensitive)
319 return this.indexOf(string) !== -1; 335 return this.indexOf(string) !== -1;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 } 390 }
375 391
376 String.prototype.trimURL = function(baseURLDomain) 392 String.prototype.trimURL = function(baseURLDomain)
377 { 393 {
378 var result = this.replace(new RegExp("^http[s]?:\/\/", "i"), ""); 394 var result = this.replace(new RegExp("^http[s]?:\/\/", "i"), "");
379 if (baseURLDomain) 395 if (baseURLDomain)
380 result = result.replace(new RegExp("^" + baseURLDomain.escapeForRegExp() , "i"), ""); 396 result = result.replace(new RegExp("^" + baseURLDomain.escapeForRegExp() , "i"), "");
381 return result; 397 return result;
382 } 398 }
383 399
384 function getStyleTextWithShorthands(style)
385 {
386 var cssText = "";
387 var foundProperties = {};
388 for (var i = 0; i < style.length; ++i) {
389 var individualProperty = style[i];
390 var shorthandProperty = style.getPropertyShorthand(individualProperty);
391 var propertyName = (shorthandProperty || individualProperty);
392
393 if (propertyName in foundProperties)
394 continue;
395
396 if (shorthandProperty) {
397 var value = getShorthandValue(style, shorthandProperty);
398 var priority = getShorthandPriority(style, shorthandProperty);
399 } else {
400 var value = style.getPropertyValue(individualProperty);
401 var priority = style.getPropertyPriority(individualProperty);
402 }
403
404 foundProperties[propertyName] = true;
405
406 cssText += propertyName + ": " + value;
407 if (priority)
408 cssText += " !" + priority;
409 cssText += "; ";
410 }
411
412 return cssText;
413 }
414
415 function getShorthandValue(style, shorthandProperty)
416 {
417 var value = style.getPropertyValue(shorthandProperty);
418 if (!value) {
419 // Some shorthands (like border) return a null value, so compute a short hand value.
420 // FIXME: remove this when http://bugs.webkit.org/show_bug.cgi?id=15823 is fixed.
421
422 var foundProperties = {};
423 for (var i = 0; i < style.length; ++i) {
424 var individualProperty = style[i];
425 if (individualProperty in foundProperties || style.getPropertyShorth and(individualProperty) !== shorthandProperty)
426 continue;
427
428 var individualValue = style.getPropertyValue(individualProperty);
429 if (style.isPropertyImplicit(individualProperty) || individualValue === "initial")
430 continue;
431
432 foundProperties[individualProperty] = true;
433
434 if (!value)
435 value = "";
436 else if (value.length)
437 value += " ";
438 value += individualValue;
439 }
440 }
441 return value;
442 }
443
444 function getShorthandPriority(style, shorthandProperty)
445 {
446 var priority = style.getPropertyPriority(shorthandProperty);
447 if (!priority) {
448 for (var i = 0; i < style.length; ++i) {
449 var individualProperty = style[i];
450 if (style.getPropertyShorthand(individualProperty) !== shorthandProp erty)
451 continue;
452 priority = style.getPropertyPriority(individualProperty);
453 break;
454 }
455 }
456 return priority;
457 }
458
459 function getLonghandProperties(style, shorthandProperty)
460 {
461 var properties = [];
462 var foundProperties = {};
463
464 for (var i = 0; i < style.length; ++i) {
465 var individualProperty = style[i];
466 if (individualProperty in foundProperties || style.getPropertyShorthand( individualProperty) !== shorthandProperty)
467 continue;
468 foundProperties[individualProperty] = true;
469 properties.push(individualProperty);
470 }
471
472 return properties;
473 }
474
475 function getUniqueStyleProperties(style)
476 {
477 var properties = [];
478 var foundProperties = {};
479
480 for (var i = 0; i < style.length; ++i) {
481 var property = style[i];
482 if (property in foundProperties)
483 continue;
484 foundProperties[property] = true;
485 properties.push(property);
486 }
487
488 return properties;
489 }
490
491 function isNodeWhitespace() 400 function isNodeWhitespace()
492 { 401 {
493 if (!this || this.nodeType !== Node.TEXT_NODE) 402 if (!this || this.nodeType !== Node.TEXT_NODE)
494 return false; 403 return false;
495 if (!this.nodeValue.length) 404 if (!this.nodeValue.length)
496 return true; 405 return true;
497 return this.nodeValue.match(/^[\s\xA0]+$/); 406 return this.nodeValue.match(/^[\s\xA0]+$/);
498 } 407 }
499 408
500 function nodeTypeName()
501 {
502 if (!this)
503 return "(unknown)";
504
505 switch (this.nodeType) {
506 case Node.ELEMENT_NODE: return "Element";
507 case Node.ATTRIBUTE_NODE: return "Attribute";
508 case Node.TEXT_NODE: return "Text";
509 case Node.CDATA_SECTION_NODE: return "Character Data";
510 case Node.ENTITY_REFERENCE_NODE: return "Entity Reference";
511 case Node.ENTITY_NODE: return "Entity";
512 case Node.PROCESSING_INSTRUCTION_NODE: return "Processing Instruction";
513 case Node.COMMENT_NODE: return "Comment";
514 case Node.DOCUMENT_NODE: return "Document";
515 case Node.DOCUMENT_TYPE_NODE: return "Document Type";
516 case Node.DOCUMENT_FRAGMENT_NODE: return "Document Fragment";
517 case Node.NOTATION_NODE: return "Notation";
518 }
519
520 return "(unknown)";
521 }
522
523 function nodeDisplayName() 409 function nodeDisplayName()
524 { 410 {
525 if (!this) 411 if (!this)
526 return ""; 412 return "";
527 413
528 switch (this.nodeType) { 414 switch (this.nodeType) {
529 case Node.DOCUMENT_NODE: 415 case Node.DOCUMENT_NODE:
530 return "Document"; 416 return "Document";
531 417
532 case Node.ELEMENT_NODE: 418 case Node.ELEMENT_NODE:
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 } else if (this.systemId) 473 } else if (this.systemId)
588 docType += " SYSTEM \"" + this.systemId + "\""; 474 docType += " SYSTEM \"" + this.systemId + "\"";
589 if (this.internalSubset) 475 if (this.internalSubset)
590 docType += " [" + this.internalSubset + "]"; 476 docType += " [" + this.internalSubset + "]";
591 return docType + ">"; 477 return docType + ">";
592 } 478 }
593 479
594 return this.nodeName.toLowerCase().collapseWhitespace(); 480 return this.nodeName.toLowerCase().collapseWhitespace();
595 } 481 }
596 482
597 function nodeContentPreview() 483 function isAncestorNode(ancestor, node)
598 { 484 {
599 if (!this || !this.hasChildNodes || !this.hasChildNodes()) 485 if (!node || !ancestor)
600 return "";
601
602 var limit = 0;
603 var preview = "";
604
605 // always skip whitespace here
606 var currentNode = traverseNextNode.call(this, true, this);
607 while (currentNode) {
608 if (currentNode.nodeType === Node.TEXT_NODE)
609 preview += currentNode.nodeValue.escapeHTML();
610 else
611 preview += nodeDisplayName.call(currentNode).escapeHTML();
612
613 currentNode = traverseNextNode.call(currentNode, true, this);
614
615 if (++limit > 4) {
616 preview += "&#x2026;"; // ellipsis
617 break;
618 }
619 }
620
621 return preview.collapseWhitespace();
622 }
623
624 function objectsAreSame(a, b)
625 {
626 // FIXME: Make this more generic so is works with any wrapped object, not ju st nodes.
627 // This function is used to compare nodes that might be JSInspectedObjectWra ppers, since
628 // JavaScript equality is not true for JSInspectedObjectWrappers of the same node wrapped
629 // with different global ExecStates, we use isSameNode to compare them.
630 if (a === b)
631 return true;
632 if (!a || !b)
633 return false;
634 if (a.isSameNode && b.isSameNode)
635 return a.isSameNode(b);
636 return false;
637 }
638
639 function isAncestorNode(ancestor)
640 {
641 if (!this || !ancestor)
642 return false; 486 return false;
643 487
644 var currentNode = ancestor.parentNode; 488 var currentNode = node.parentNode;
645 while (currentNode) { 489 while (currentNode) {
646 if (objectsAreSame(this, currentNode)) 490 if (ancestor === currentNode)
647 return true; 491 return true;
648 currentNode = currentNode.parentNode; 492 currentNode = currentNode.parentNode;
649 } 493 }
650
651 return false; 494 return false;
652 } 495 }
653 496
654 function isDescendantNode(descendant) 497 function isDescendantNode(descendant)
655 { 498 {
656 return isAncestorNode.call(descendant, this); 499 return isAncestorNode(descendant, this);
657 }
658
659 function firstCommonNodeAncestor(node)
660 {
661 if (!this || !node)
662 return;
663
664 var node1 = this.parentNode;
665 var node2 = node.parentNode;
666
667 if ((!node1 || !node2) || !objectsAreSame(node1, node2))
668 return null;
669
670 while (node1 && node2) {
671 if (!node1.parentNode || !node2.parentNode)
672 break;
673 if (!objectsAreSame(node1, node2))
674 break;
675
676 node1 = node1.parentNode;
677 node2 = node2.parentNode;
678 }
679
680 return node1;
681 } 500 }
682 501
683 function nextSiblingSkippingWhitespace() 502 function nextSiblingSkippingWhitespace()
684 { 503 {
685 if (!this) 504 if (!this)
686 return; 505 return;
687 var node = this.nextSibling; 506 var node = this.nextSibling;
688 while (node && node.nodeType === Node.TEXT_NODE && isNodeWhitespace.call(nod e)) 507 while (node && node.nodeType === Node.TEXT_NODE && isNodeWhitespace.call(nod e))
689 node = node.nextSibling; 508 node = node.nextSibling;
690 return node; 509 return node;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
722 541
723 function traverseNextNode(skipWhitespace, stayWithin) 542 function traverseNextNode(skipWhitespace, stayWithin)
724 { 543 {
725 if (!this) 544 if (!this)
726 return; 545 return;
727 546
728 var node = skipWhitespace ? firstChildSkippingWhitespace.call(this) : this.f irstChild; 547 var node = skipWhitespace ? firstChildSkippingWhitespace.call(this) : this.f irstChild;
729 if (node) 548 if (node)
730 return node; 549 return node;
731 550
732 if (stayWithin && objectsAreSame(this, stayWithin)) 551 if (stayWithin && this === stayWithin)
733 return null; 552 return null;
734 553
735 node = skipWhitespace ? nextSiblingSkippingWhitespace.call(this) : this.next Sibling; 554 node = skipWhitespace ? nextSiblingSkippingWhitespace.call(this) : this.next Sibling;
736 if (node) 555 if (node)
737 return node; 556 return node;
738 557
739 node = this; 558 node = this;
740 while (node && !(skipWhitespace ? nextSiblingSkippingWhitespace.call(node) : node.nextSibling) && (!stayWithin || !node.parentNode || !objectsAreSame(node.p arentNode, stayWithin))) 559 while (node && !(skipWhitespace ? nextSiblingSkippingWhitespace.call(node) : node.nextSibling) && (!stayWithin || !node.parentNode || node.parentNode !== st ayWithin))
741 node = node.parentNode; 560 node = node.parentNode;
742 if (!node) 561 if (!node)
743 return null; 562 return null;
744 563
745 return skipWhitespace ? nextSiblingSkippingWhitespace.call(node) : node.next Sibling; 564 return skipWhitespace ? nextSiblingSkippingWhitespace.call(node) : node.next Sibling;
746 } 565 }
747 566
748 function traversePreviousNode(skipWhitespace, stayWithin) 567 function traversePreviousNode(skipWhitespace, stayWithin)
749 { 568 {
750 if (!this) 569 if (!this)
751 return; 570 return;
752 if (stayWithin && objectsAreSame(this, stayWithin)) 571 if (stayWithin && this === stayWithin)
753 return null; 572 return null;
754 var node = skipWhitespace ? previousSiblingSkippingWhitespace.call(this) : t his.previousSibling; 573 var node = skipWhitespace ? previousSiblingSkippingWhitespace.call(this) : t his.previousSibling;
755 while (node && (skipWhitespace ? lastChildSkippingWhitespace.call(node) : no de.lastChild) ) 574 while (node && (skipWhitespace ? lastChildSkippingWhitespace.call(node) : no de.lastChild) )
756 node = skipWhitespace ? lastChildSkippingWhitespace.call(node) : node.la stChild; 575 node = skipWhitespace ? lastChildSkippingWhitespace.call(node) : node.la stChild;
757 if (node) 576 if (node)
758 return node; 577 return node;
759 return this.parentNode; 578 return this.parentNode;
760 } 579 }
761 580
762 function onlyTextChild(ignoreWhitespace) 581 function onlyTextChild(ignoreWhitespace)
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
843 info.title = this.nodeName.toLowerCase().collapseWhitespace().escape HTML(); 662 info.title = this.nodeName.toLowerCase().collapseWhitespace().escape HTML();
844 } 663 }
845 664
846 return info; 665 return info;
847 } 666 }
848 667
849 function getDocumentForNode(node) { 668 function getDocumentForNode(node) {
850 return node.nodeType == Node.DOCUMENT_NODE ? node : node.ownerDocument; 669 return node.nodeType == Node.DOCUMENT_NODE ? node : node.ownerDocument;
851 } 670 }
852 671
853 function parentNodeOrFrameElement(node) { 672 function parentNode(node) {
854 var parent = node.parentNode; 673 return node.parentNode;
855 if (parent)
856 return parent;
857
858 return getDocumentForNode(node).defaultView.frameElement;
859 }
860
861 function isAncestorIncludingParentFrames(a, b) {
862 if (objectsAreSame(a, b))
863 return false;
864 for (var node = b; node; node = getDocumentForNode(node).defaultView.frameEl ement)
865 if (objectsAreSame(a, node) || isAncestorNode.call(a, node))
866 return true;
867 return false;
868 } 674 }
869 675
870 Number.secondsToString = function(seconds, formatterFunction, higherResolution) 676 Number.secondsToString = function(seconds, formatterFunction, higherResolution)
871 { 677 {
872 if (!formatterFunction) 678 if (!formatterFunction)
873 formatterFunction = String.sprintf; 679 formatterFunction = String.sprintf;
874 680
875 var ms = seconds * 1000; 681 var ms = seconds * 1000;
876 if (higherResolution && ms < 1000) 682 if (higherResolution && ms < 1000)
877 return formatterFunction("%.3fms", ms); 683 return formatterFunction("%.3fms", ms);
878 else if (ms < 1000) 684 else if (ms < 1000)
879 return formatterFunction("%.0fms", ms); 685 return formatterFunction("%.0fms", ms);
880 686
881 if (seconds < 60) 687 if (seconds < 60)
882 return formatterFunction("%.2fs", seconds); 688 return formatterFunction("%.2fs", seconds);
883 689
884 var minutes = seconds / 60; 690 var minutes = seconds / 60;
885 if (minutes < 60) 691 if (minutes < 60)
886 return formatterFunction("%.1fmin", minutes); 692 return formatterFunction("%.1fmin", minutes);
887 693
888 var hours = minutes / 60; 694 var hours = minutes / 60;
889 if (hours < 24) 695 if (hours < 24)
890 return formatterFunction("%.1fhrs", hours); 696 return formatterFunction("%.1fhrs", hours);
891 697
892 var days = hours / 24; 698 var days = hours / 24;
893 return formatterFunction("%.1f days", days); 699 return formatterFunction("%.1f days", days);
894 } 700 }
895 701
896 Number.bytesToString = function(bytes, formatterFunction) 702 Number.bytesToString = function(bytes, formatterFunction, higherResolution)
897 { 703 {
898 if (!formatterFunction) 704 if (!formatterFunction)
899 formatterFunction = String.sprintf; 705 formatterFunction = String.sprintf;
706 if (typeof higherResolution === "undefined")
707 higherResolution = true;
900 708
901 if (bytes < 1024) 709 if (bytes < 1024)
902 return formatterFunction("%.0fB", bytes); 710 return formatterFunction("%.0fB", bytes);
903 711
904 var kilobytes = bytes / 1024; 712 var kilobytes = bytes / 1024;
905 if (kilobytes < 1024) 713 if (higherResolution && kilobytes < 1024)
906 return formatterFunction("%.2fKB", kilobytes); 714 return formatterFunction("%.2fKB", kilobytes);
715 else if (kilobytes < 1024)
716 return formatterFunction("%.0fKB", kilobytes);
907 717
908 var megabytes = kilobytes / 1024; 718 var megabytes = kilobytes / 1024;
909 return formatterFunction("%.3fMB", megabytes); 719 if (higherResolution)
720 return formatterFunction("%.3fMB", megabytes);
721 else
722 return formatterFunction("%.0fMB", megabytes);
910 } 723 }
911 724
912 Number.constrain = function(num, min, max) 725 Number.constrain = function(num, min, max)
913 { 726 {
914 if (num < min) 727 if (num < min)
915 num = min; 728 num = min;
916 else if (num > max) 729 else if (num > max)
917 num = max; 730 num = max;
918 return num; 731 return num;
919 } 732 }
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
1127 940
1128 var unusedSubstitutions = []; 941 var unusedSubstitutions = [];
1129 for (var i = 0; i < substitutions.length; ++i) { 942 for (var i = 0; i < substitutions.length; ++i) {
1130 if (i in usedSubstitutionIndexes) 943 if (i in usedSubstitutionIndexes)
1131 continue; 944 continue;
1132 unusedSubstitutions.push(substitutions[i]); 945 unusedSubstitutions.push(substitutions[i]);
1133 } 946 }
1134 947
1135 return { formattedResult: result, unusedSubstitutions: unusedSubstitutions } ; 948 return { formattedResult: result, unusedSubstitutions: unusedSubstitutions } ;
1136 } 949 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698