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

Side by Side Diff: Source/devtools/front_end/elements/ElementsTreeOutline.js

Issue 662793002: [DevTools] Replace usages of document with custom functions. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 2 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
3 * Copyright (C) 2008 Matt Lilek <webkit@mattlilek.com> 3 * Copyright (C) 2008 Matt Lilek <webkit@mattlilek.com>
4 * Copyright (C) 2009 Joseph Pecoraro 4 * Copyright (C) 2009 Joseph Pecoraro
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 9 *
10 * 1. Redistributions of source code must retain the above copyright 10 * 1. Redistributions of source code must retain the above copyright
(...skipping 22 matching lines...) Expand all
33 * @extends {TreeOutline} 33 * @extends {TreeOutline}
34 * @param {!WebInspector.Target} target 34 * @param {!WebInspector.Target} target
35 * @param {boolean=} omitRootDOMNode 35 * @param {boolean=} omitRootDOMNode
36 * @param {boolean=} selectEnabled 36 * @param {boolean=} selectEnabled
37 * @param {function(!WebInspector.DOMNode, string, boolean)=} setPseudoClassCall back 37 * @param {function(!WebInspector.DOMNode, string, boolean)=} setPseudoClassCall back
38 */ 38 */
39 WebInspector.ElementsTreeOutline = function(target, omitRootDOMNode, selectEnabl ed, setPseudoClassCallback) 39 WebInspector.ElementsTreeOutline = function(target, omitRootDOMNode, selectEnabl ed, setPseudoClassCallback)
40 { 40 {
41 this._target = target; 41 this._target = target;
42 this._domModel = target.domModel; 42 this._domModel = target.domModel;
43 var element = document.createElement("div"); 43 var element = createElement("div");
44 44
45 this._shadowRoot = element.createShadowRoot(); 45 this._shadowRoot = element.createShadowRoot();
46 this._shadowRoot.appendChild(WebInspector.View.createStyleElement("elementsT reeOutline.css")); 46 this._shadowRoot.appendChild(WebInspector.View.createStyleElement("elementsT reeOutline.css"));
47 47
48 var outlineDisclosureElement = this._shadowRoot.createChild("div", "componen t-root outline-disclosure source-code"); 48 var outlineDisclosureElement = this._shadowRoot.createChild("div", "componen t-root outline-disclosure source-code");
49 this._element = outlineDisclosureElement.createChild("ol", "elements-tree-ou tline"); 49 this._element = outlineDisclosureElement.createChild("ol", "elements-tree-ou tline");
50 this._element.addEventListener("mousedown", this._onmousedown.bind(this), fa lse); 50 this._element.addEventListener("mousedown", this._onmousedown.bind(this), fa lse);
51 this._element.addEventListener("mousemove", this._onmousemove.bind(this), fa lse); 51 this._element.addEventListener("mousemove", this._onmousemove.bind(this), fa lse);
52 this._element.addEventListener("mouseout", this._onmouseout.bind(this), fals e); 52 this._element.addEventListener("mouseout", this._onmouseout.bind(this), fals e);
53 this._element.addEventListener("dragstart", this._ondragstart.bind(this), fa lse); 53 this._element.addEventListener("dragstart", this._ondragstart.bind(this), fa lse);
(...skipping 1131 matching lines...) Expand 10 before | Expand all | Expand 10 after
1185 if (document.body.offsetWidth > 0) 1185 if (document.body.offsetWidth > 0)
1186 this._readyToUpdateSelection = true; 1186 this._readyToUpdateSelection = true;
1187 else { 1187 else {
1188 // The stylesheet hasn't loaded yet or the window is closed, 1188 // The stylesheet hasn't loaded yet or the window is closed,
1189 // so we can't calculate what we need. Return early. 1189 // so we can't calculate what we need. Return early.
1190 return; 1190 return;
1191 } 1191 }
1192 } 1192 }
1193 1193
1194 if (!this.selectionElement) { 1194 if (!this.selectionElement) {
1195 this.selectionElement = document.createElement("div"); 1195 this.selectionElement = createElement("div");
1196 this.selectionElement.className = "selection selected"; 1196 this.selectionElement.className = "selection selected";
1197 listItemElement.insertBefore(this.selectionElement, listItemElement. firstChild); 1197 listItemElement.insertBefore(this.selectionElement, listItemElement. firstChild);
1198 } 1198 }
1199 1199
1200 this.selectionElement.style.height = listItemElement.offsetHeight + "px" ; 1200 this.selectionElement.style.height = listItemElement.offsetHeight + "px" ;
1201 }, 1201 },
1202 1202
1203 onattach: function() 1203 onattach: function()
1204 { 1204 {
1205 if (this._hovered) { 1205 if (this._hovered) {
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
1376 const childNodeCount = visibleChildren.length; 1376 const childNodeCount = visibleChildren.length;
1377 1377
1378 // In case some nodes from the expanded range were removed, pull some no des from the collapsed range into the expanded range at the bottom. 1378 // In case some nodes from the expanded range were removed, pull some no des from the collapsed range into the expanded range at the bottom.
1379 for (var i = this.expandedChildCount, limit = Math.min(this.expandedChil drenLimit, childNodeCount); i < limit; ++i) 1379 for (var i = this.expandedChildCount, limit = Math.min(this.expandedChil drenLimit, childNodeCount); i < limit; ++i)
1380 this.insertChildElement(visibleChildren[i], i); 1380 this.insertChildElement(visibleChildren[i], i);
1381 1381
1382 const expandedChildCount = this.expandedChildCount; 1382 const expandedChildCount = this.expandedChildCount;
1383 if (childNodeCount > this.expandedChildCount) { 1383 if (childNodeCount > this.expandedChildCount) {
1384 var targetButtonIndex = expandedChildCount; 1384 var targetButtonIndex = expandedChildCount;
1385 if (!this.expandAllButtonElement) { 1385 if (!this.expandAllButtonElement) {
1386 var button = document.createElement("button"); 1386 var button = createElement("button");
1387 button.className = "text-button"; 1387 button.className = "text-button";
1388 button.value = ""; 1388 button.value = "";
1389 var item = new TreeElement(button, null, false); 1389 var item = new TreeElement(button, null, false);
1390 item.selectable = false; 1390 item.selectable = false;
1391 item.expandAllButton = true; 1391 item.expandAllButton = true;
1392 this.insertChild(item, targetButtonIndex); 1392 this.insertChild(item, targetButtonIndex);
1393 this.expandAllButtonElement = item.listItemElement.firstChild; 1393 this.expandAllButtonElement = item.listItemElement.firstChild;
1394 this.expandAllButtonElement.__treeElement = item; 1394 this.expandAllButtonElement.__treeElement = item;
1395 this.expandAllButtonElement.addEventListener("click", this.handl eLoadAllChildren.bind(this), false); 1395 this.expandAllButtonElement.addEventListener("click", this.handl eLoadAllChildren.bind(this), false);
1396 } else if (!this.expandAllButtonElement.__treeElement.parent) 1396 } else if (!this.expandAllButtonElement.__treeElement.parent)
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after
1701 if (textNode) 1701 if (textNode)
1702 return this._startEditingTextNode(textNode); 1702 return this._startEditingTextNode(textNode);
1703 return; 1703 return;
1704 } 1704 }
1705 }, 1705 },
1706 1706
1707 _addNewAttribute: function() 1707 _addNewAttribute: function()
1708 { 1708 {
1709 // Cannot just convert the textual html into an element without 1709 // Cannot just convert the textual html into an element without
1710 // a parent node. Use a temporary span container for the HTML. 1710 // a parent node. Use a temporary span container for the HTML.
1711 var container = document.createElement("span"); 1711 var container = createElement("span");
1712 this._buildAttributeDOM(container, " ", ""); 1712 this._buildAttributeDOM(container, " ", "");
1713 var attr = container.firstElementChild; 1713 var attr = container.firstElementChild;
1714 attr.style.marginLeft = "2px"; // overrides the .editing margin rule 1714 attr.style.marginLeft = "2px"; // overrides the .editing margin rule
1715 attr.style.marginRight = "2px"; // overrides the .editing margin rule 1715 attr.style.marginRight = "2px"; // overrides the .editing margin rule
1716 1716
1717 var tag = this.listItemElement.getElementsByClassName("webkit-html-tag") [0]; 1717 var tag = this.listItemElement.getElementsByClassName("webkit-html-tag") [0];
1718 this._insertInLastAttributePosition(tag, attr); 1718 this._insertInLastAttributePosition(tag, attr);
1719 attr.scrollIntoViewIfNeeded(true); 1719 attr.scrollIntoViewIfNeeded(true);
1720 return this._startEditingAttribute(attr, attr); 1720 return this._startEditingAttribute(attr, attr);
1721 }, 1721 },
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
1895 return; 1895 return;
1896 1896
1897 function consume(event) 1897 function consume(event)
1898 { 1898 {
1899 if (event.eventPhase === Event.AT_TARGET) 1899 if (event.eventPhase === Event.AT_TARGET)
1900 event.consume(true); 1900 event.consume(true);
1901 } 1901 }
1902 1902
1903 initialValue = this._convertWhitespaceToEntities(initialValue).text; 1903 initialValue = this._convertWhitespaceToEntities(initialValue).text;
1904 1904
1905 this._htmlEditElement = document.createElement("div"); 1905 this._htmlEditElement = createElement("div");
1906 this._htmlEditElement.className = "source-code elements-tree-editor"; 1906 this._htmlEditElement.className = "source-code elements-tree-editor";
1907 1907
1908 // Hide header items. 1908 // Hide header items.
1909 var child = this.listItemElement.firstChild; 1909 var child = this.listItemElement.firstChild;
1910 while (child) { 1910 while (child) {
1911 child.style.display = "none"; 1911 child.style.display = "none";
1912 child = child.nextSibling; 1912 child = child.nextSibling;
1913 } 1913 }
1914 // Hide children item. 1914 // Hide children item.
1915 if (this._childrenListNode) 1915 if (this._childrenListNode)
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
2158 if (this._editing) 2158 if (this._editing)
2159 return; 2159 return;
2160 2160
2161 if (onlySearchQueryChanged) { 2161 if (onlySearchQueryChanged) {
2162 if (this._highlightResult) 2162 if (this._highlightResult)
2163 this._updateSearchHighlight(false); 2163 this._updateSearchHighlight(false);
2164 } else { 2164 } else {
2165 var nodeInfo = this._nodeTitleInfo(WebInspector.linkifyURLAsNode); 2165 var nodeInfo = this._nodeTitleInfo(WebInspector.linkifyURLAsNode);
2166 if (nodeInfo.shadowRoot) 2166 if (nodeInfo.shadowRoot)
2167 this.listItemElement.classList.add("shadow-root"); 2167 this.listItemElement.classList.add("shadow-root");
2168 var highlightElement = document.createElement("span"); 2168 var highlightElement = createElement("span");
2169 highlightElement.className = "highlight"; 2169 highlightElement.className = "highlight";
2170 highlightElement.appendChild(nodeInfo.titleDOM); 2170 highlightElement.appendChild(nodeInfo.titleDOM);
2171 this.title = highlightElement; 2171 this.title = highlightElement;
2172 this._updateDecorations(); 2172 this._updateDecorations();
2173 delete this._highlightResult; 2173 delete this._highlightResult;
2174 } 2174 }
2175 2175
2176 delete this.selectionElement; 2176 delete this.selectionElement;
2177 if (this.selected) 2177 if (this.selected)
2178 this.updateSelection(); 2178 this.updateSelection();
(...skipping 20 matching lines...) Expand all
2199 if (this.expanded || this._elementCloseTag) 2199 if (this.expanded || this._elementCloseTag)
2200 continue; 2200 continue;
2201 2201
2202 message = decorator.decorateAncestor(node); 2202 message = decorator.decorateAncestor(node);
2203 if (message) 2203 if (message)
2204 parentDecoratorMessages.push(message) 2204 parentDecoratorMessages.push(message)
2205 } 2205 }
2206 if (!decoratorMessages.length && !parentDecoratorMessages.length) 2206 if (!decoratorMessages.length && !parentDecoratorMessages.length)
2207 return null; 2207 return null;
2208 2208
2209 var decoratorElement = document.createElement("div"); 2209 var decoratorElement = createElement("div");
2210 decoratorElement.classList.add("elements-gutter-decoration"); 2210 decoratorElement.classList.add("elements-gutter-decoration");
2211 if (!decoratorMessages.length) 2211 if (!decoratorMessages.length)
2212 decoratorElement.classList.add("elements-has-decorated-children"); 2212 decoratorElement.classList.add("elements-has-decorated-children");
2213 decoratorElement.title = decoratorMessages.concat(parentDecoratorMessage s).join("\n"); 2213 decoratorElement.title = decoratorMessages.concat(parentDecoratorMessage s).join("\n");
2214 return decoratorElement; 2214 return decoratorElement;
2215 }, 2215 },
2216 2216
2217 _updateDecorations: function() 2217 _updateDecorations: function()
2218 { 2218 {
2219 if (this._decoratorElement) 2219 if (this._decoratorElement)
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
2283 2283
2284 /** 2284 /**
2285 * @this {WebInspector.ElementsTreeElement} 2285 * @this {WebInspector.ElementsTreeElement}
2286 * @param {string} value 2286 * @param {string} value
2287 * @return {!Element} 2287 * @return {!Element}
2288 */ 2288 */
2289 function linkifyValue(value) 2289 function linkifyValue(value)
2290 { 2290 {
2291 var rewrittenHref = node.resolveURL(value); 2291 var rewrittenHref = node.resolveURL(value);
2292 if (rewrittenHref === null) { 2292 if (rewrittenHref === null) {
2293 var span = document.createElement("span"); 2293 var span = createElement("span");
2294 setValueWithEntities.call(this, span, value); 2294 setValueWithEntities.call(this, span, value);
2295 return span; 2295 return span;
2296 } 2296 }
2297 value = value.replace(closingPunctuationRegex, "$&\u200B"); 2297 value = value.replace(closingPunctuationRegex, "$&\u200B");
2298 if (value.startsWith("data:")) 2298 if (value.startsWith("data:"))
2299 value = value.trimMiddle(60); 2299 value = value.trimMiddle(60);
2300 return linkify(rewrittenHref, value, "", node.nodeName().toLowerCase () === "a"); 2300 return linkify(rewrittenHref, value, "", node.nodeName().toLowerCase () === "a");
2301 } 2301 }
2302 2302
2303 if (linkify && (name === "src" || name === "href")) { 2303 if (linkify && (name === "src" || name === "href")) {
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
2387 result += text.substring(lastIndexAfterEntity); 2387 result += text.substring(lastIndexAfterEntity);
2388 return {text: result || text, entityRanges: entityRanges}; 2388 return {text: result || text, entityRanges: entityRanges};
2389 }, 2389 },
2390 2390
2391 /** 2391 /**
2392 * @param {function(string, string, string, boolean=, string=)=} linkify 2392 * @param {function(string, string, string, boolean=, string=)=} linkify
2393 */ 2393 */
2394 _nodeTitleInfo: function(linkify) 2394 _nodeTitleInfo: function(linkify)
2395 { 2395 {
2396 var node = this._node; 2396 var node = this._node;
2397 var info = {titleDOM: document.createDocumentFragment(), hasChildren: th is.hasChildren}; 2397 var info = {titleDOM: createDocumentFragment(), hasChildren: this.hasChi ldren};
2398 2398
2399 switch (node.nodeType()) { 2399 switch (node.nodeType()) {
2400 case Node.ATTRIBUTE_NODE: 2400 case Node.ATTRIBUTE_NODE:
2401 this._buildAttributeDOM(info.titleDOM, /** @type {string} */ (no de.name), /** @type {string} */ (node.value), true); 2401 this._buildAttributeDOM(info.titleDOM, /** @type {string} */ (no de.name), /** @type {string} */ (node.value), true);
2402 break; 2402 break;
2403 2403
2404 case Node.ELEMENT_NODE: 2404 case Node.ELEMENT_NODE:
2405 var pseudoType = node.pseudoType(); 2405 var pseudoType = node.pseudoType();
2406 if (pseudoType) { 2406 if (pseudoType) {
2407 this._buildPseudoElementDOM(info.titleDOM, pseudoType); 2407 this._buildPseudoElementDOM(info.titleDOM, pseudoType);
(...skipping 542 matching lines...) Expand 10 before | Expand all | Expand 10 after
2950 treeOutline.rootDOMNode = node; 2950 treeOutline.rootDOMNode = node;
2951 if (!treeOutline.children[0].hasChildren) 2951 if (!treeOutline.children[0].hasChildren)
2952 treeOutline._element.classList.add("single-node"); 2952 treeOutline._element.classList.add("single-node");
2953 treeOutline.setVisible(true); 2953 treeOutline.setVisible(true);
2954 treeOutline.element.treeElementForTest = treeOutline.children[0] ; 2954 treeOutline.element.treeElementForTest = treeOutline.children[0] ;
2955 resolve(treeOutline.element); 2955 resolve(treeOutline.element);
2956 } 2956 }
2957 } 2957 }
2958 } 2958 }
2959 } 2959 }
OLDNEW
« no previous file with comments | « Source/devtools/front_end/elements/ElementsPanel.js ('k') | Source/devtools/front_end/elements/MetricsSidebarPane.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698