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

Side by Side Diff: Source/devtools/front_end/treeoutline.js

Issue 22548006: DevTools: Improve performance of the element breadcrumbs. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: fixed the test Created 7 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « Source/devtools/front_end/ElementsTreeOutline.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 this.hasChildren = false; 44 this.hasChildren = false;
45 this.expanded = true; 45 this.expanded = true;
46 this.selected = false; 46 this.selected = false;
47 this.treeOutline = this; 47 this.treeOutline = this;
48 /** @type {function(TreeElement,TreeElement):number|null} */ 48 /** @type {function(TreeElement,TreeElement):number|null} */
49 this.comparator = null; 49 this.comparator = null;
50 50
51 this.setFocusable(!nonFocusable); 51 this.setFocusable(!nonFocusable);
52 this._childrenListNode.addEventListener("keydown", this._treeKeyDown.bind(th is), true); 52 this._childrenListNode.addEventListener("keydown", this._treeKeyDown.bind(th is), true);
53 53
54 /** @type {!Map.<Object, !Array.<!TreeElement>>} */ 54 /** @type {!Map.<!Object, !Array.<!TreeElement>>} */
55 this._treeElementsMap = new Map(); 55 this._treeElementsMap = new Map();
56 /** @type {!Map.<Object, boolean>} */ 56 /** @type {!Map.<!Object, boolean>} */
57 this._expandedStateMap = new Map(); 57 this._expandedStateMap = new Map();
58 } 58 }
59 59
60 TreeOutline.prototype.setFocusable = function(focusable) 60 TreeOutline.prototype.setFocusable = function(focusable)
61 { 61 {
62 if (focusable) 62 if (focusable)
63 this._childrenListNode.setAttribute("tabIndex", 0); 63 this._childrenListNode.setAttribute("tabIndex", 0);
64 else 64 else
65 this._childrenListNode.removeAttribute("tabIndex"); 65 this._childrenListNode.removeAttribute("tabIndex");
66 } 66 }
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 */ 258 */
259 TreeOutline.prototype._forgetChildrenRecursive = function(parentElement) 259 TreeOutline.prototype._forgetChildrenRecursive = function(parentElement)
260 { 260 {
261 var child = parentElement.children[0]; 261 var child = parentElement.children[0];
262 while (child) { 262 while (child) {
263 this._forgetTreeElement(child); 263 this._forgetTreeElement(child);
264 child = child.traverseNextTreeElement(false, parentElement, true); 264 child = child.traverseNextTreeElement(false, parentElement, true);
265 } 265 }
266 } 266 }
267 267
268 /**
269 * @param {Object} representedObject
270 * @return {TreeElement}
271 */
268 TreeOutline.prototype.getCachedTreeElement = function(representedObject) 272 TreeOutline.prototype.getCachedTreeElement = function(representedObject)
269 { 273 {
270 if (!representedObject) 274 if (!representedObject)
271 return null; 275 return null;
272 276
273 var elements = this._treeElementsMap.get(representedObject); 277 var elements = this._treeElementsMap.get(representedObject);
274 if (elements && elements.length) 278 if (elements && elements.length)
275 return elements[0]; 279 return elements[0];
276 return null; 280 return null;
277 } 281 }
278 282
283 /**
284 * @param {Object} representedObject
285 * @return {TreeElement}
286 */
279 TreeOutline.prototype.findTreeElement = function(representedObject, isAncestor, getParent) 287 TreeOutline.prototype.findTreeElement = function(representedObject, isAncestor, getParent)
280 { 288 {
281 if (!representedObject) 289 if (!representedObject)
282 return null; 290 return null;
283 291
284 var cachedElement = this.getCachedTreeElement(representedObject); 292 var cachedElement = this.getCachedTreeElement(representedObject);
285 if (cachedElement) 293 if (cachedElement)
286 return cachedElement; 294 return cachedElement;
287 295
288 // Walk up the parent pointers from the desired representedObject 296 // Walk up the parent pointers from the desired representedObject
(...skipping 10 matching lines...) Expand all
299 // Walk down to populate each ancestor's children, to fill in the tree and t he cache. 307 // Walk down to populate each ancestor's children, to fill in the tree and t he cache.
300 for (var i = ancestors.length - 1; i >= 0; --i) { 308 for (var i = ancestors.length - 1; i >= 0; --i) {
301 var treeElement = this.getCachedTreeElement(ancestors[i]); 309 var treeElement = this.getCachedTreeElement(ancestors[i]);
302 if (treeElement) 310 if (treeElement)
303 treeElement.onpopulate(); // fill the cache with the children of tr eeElement 311 treeElement.onpopulate(); // fill the cache with the children of tr eeElement
304 } 312 }
305 313
306 return this.getCachedTreeElement(representedObject); 314 return this.getCachedTreeElement(representedObject);
307 } 315 }
308 316
317 /**
318 * @param {number} x
319 * @param {number} y
320 * @return {TreeElement}
321 */
309 TreeOutline.prototype.treeElementFromPoint = function(x, y) 322 TreeOutline.prototype.treeElementFromPoint = function(x, y)
310 { 323 {
311 var node = this._childrenListNode.ownerDocument.elementFromPoint(x, y); 324 var node = this._childrenListNode.ownerDocument.elementFromPoint(x, y);
312 if (!node) 325 if (!node)
313 return null; 326 return null;
314 327
315 var listNode = node.enclosingNodeOrSelfWithNodeNameInArray(["ol", "li"]); 328 var listNode = node.enclosingNodeOrSelfWithNodeNameInArray(["ol", "li"]);
316 if (listNode) 329 if (listNode)
317 return listNode.parentTreeElement || listNode.treeElement; 330 return listNode.parentTreeElement || listNode.treeElement;
318 return null; 331 return null;
(...skipping 606 matching lines...) Expand 10 before | Expand all | Expand 10 after
925 } 938 }
926 939
927 TreeElement.prototype.isEventWithinDisclosureTriangle = function(event) 940 TreeElement.prototype.isEventWithinDisclosureTriangle = function(event)
928 { 941 {
929 // FIXME: We should not use getComputedStyle(). For that we need to get rid of using ::before for disclosure triangle. (http://webk.it/74446) 942 // FIXME: We should not use getComputedStyle(). For that we need to get rid of using ::before for disclosure triangle. (http://webk.it/74446)
930 var paddingLeftValue = window.getComputedStyle(this._listItemNode).getProper tyCSSValue("padding-left"); 943 var paddingLeftValue = window.getComputedStyle(this._listItemNode).getProper tyCSSValue("padding-left");
931 var computedLeftPadding = paddingLeftValue ? paddingLeftValue.getFloatValue( CSSPrimitiveValue.CSS_PX) : 0; 944 var computedLeftPadding = paddingLeftValue ? paddingLeftValue.getFloatValue( CSSPrimitiveValue.CSS_PX) : 0;
932 var left = this._listItemNode.totalOffsetLeft() + computedLeftPadding; 945 var left = this._listItemNode.totalOffsetLeft() + computedLeftPadding;
933 return event.pageX >= left && event.pageX <= left + this.arrowToggleWidth && this.hasChildren; 946 return event.pageX >= left && event.pageX <= left + this.arrowToggleWidth && this.hasChildren;
934 } 947 }
OLDNEW
« no previous file with comments | « Source/devtools/front_end/ElementsTreeOutline.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698