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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/elements/ElementsPanel.js

Issue 2715663005: [DevTools] Add header for OOPIF's elements trees. (Closed)
Patch Set: Created 3 years, 9 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
« no previous file with comments | « no previous file | third_party/WebKit/Source/devtools/front_end/elements/elementsPanel.css » ('j') | 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, 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 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 this._computedStyleWidget = new Elements.ComputedStyleWidget(); 72 this._computedStyleWidget = new Elements.ComputedStyleWidget();
73 this._metricsWidget = new Elements.MetricsSidebarPane(); 73 this._metricsWidget = new Elements.MetricsSidebarPane();
74 74
75 this._stylesSidebarToolbar = this._createStylesSidebarToolbar(); 75 this._stylesSidebarToolbar = this._createStylesSidebarToolbar();
76 76
77 Common.moduleSetting('sidebarPosition').addChangeListener(this._updateSideba rPosition.bind(this)); 77 Common.moduleSetting('sidebarPosition').addChangeListener(this._updateSideba rPosition.bind(this));
78 this._updateSidebarPosition(); 78 this._updateSidebarPosition();
79 79
80 /** @type {!Array.<!Elements.ElementsTreeOutline>} */ 80 /** @type {!Array.<!Elements.ElementsTreeOutline>} */
81 this._treeOutlines = []; 81 this._treeOutlines = [];
82 /** @type {!Map<!Elements.ElementsTreeOutline, !Element>} */
83 this._treeOutlineHeaders = new Map();
pfeldman 2017/02/23 23:49:41 Why you no use symbols?
82 SDK.targetManager.observeTargets(this); 84 SDK.targetManager.observeTargets(this);
85 SDK.targetManager.addEventListener(
86 SDK.TargetManager.Events.NameChanged,
pfeldman 2017/02/23 23:49:41 What is TargetManager name?
87 event => this._targetNameChanged(/** @type {!SDK.Target} */ (event.data) ));
83 Common.moduleSetting('showUAShadowDOM').addChangeListener(this._showUAShadow DOMChanged.bind(this)); 88 Common.moduleSetting('showUAShadowDOM').addChangeListener(this._showUAShadow DOMChanged.bind(this));
84 SDK.targetManager.addModelListener( 89 SDK.targetManager.addModelListener(
85 SDK.DOMModel, SDK.DOMModel.Events.DocumentUpdated, this._documentUpdated Event, this); 90 SDK.DOMModel, SDK.DOMModel.Events.DocumentUpdated, this._documentUpdated Event, this);
86 Extensions.extensionServer.addEventListener( 91 Extensions.extensionServer.addEventListener(
87 Extensions.ExtensionServer.Events.SidebarPaneAdded, this._extensionSideb arPaneAdded, this); 92 Extensions.ExtensionServer.Events.SidebarPaneAdded, this._extensionSideb arPaneAdded, this);
88 } 93 }
89 94
90 /** 95 /**
91 * @return {!Elements.ElementsPanel} 96 * @return {!Elements.ElementsPanel}
92 */ 97 */
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 return; 215 return;
211 var treeOutline = new Elements.ElementsTreeOutline(domModel, true, true); 216 var treeOutline = new Elements.ElementsTreeOutline(domModel, true, true);
212 treeOutline.setWordWrap(Common.moduleSetting('domWordWrap').get()); 217 treeOutline.setWordWrap(Common.moduleSetting('domWordWrap').get());
213 treeOutline.wireToDOMModel(); 218 treeOutline.wireToDOMModel();
214 treeOutline.addEventListener( 219 treeOutline.addEventListener(
215 Elements.ElementsTreeOutline.Events.SelectedNodeChanged, this._selectedN odeChanged, this); 220 Elements.ElementsTreeOutline.Events.SelectedNodeChanged, this._selectedN odeChanged, this);
216 treeOutline.addEventListener( 221 treeOutline.addEventListener(
217 Elements.ElementsTreeOutline.Events.ElementsTreeUpdated, this._updateBre adcrumbIfNeeded, this); 222 Elements.ElementsTreeOutline.Events.ElementsTreeUpdated, this._updateBre adcrumbIfNeeded, this);
218 new Elements.ElementsTreeElementHighlighter(treeOutline); 223 new Elements.ElementsTreeElementHighlighter(treeOutline);
219 this._treeOutlines.push(treeOutline); 224 this._treeOutlines.push(treeOutline);
225 if (target.parentTarget()) {
226 this._treeOutlineHeaders.set(treeOutline, createElementWithClass('div', 'e lements-tree-header'));
227 this._targetNameChanged(target);
228 }
220 229
221 // Perform attach if necessary. 230 // Perform attach if necessary.
222 if (this.isShowing()) 231 if (this.isShowing())
223 this.wasShown(); 232 this.wasShown();
224 } 233 }
225 234
226 /** 235 /**
227 * @override 236 * @override
228 * @param {!SDK.Target} target 237 * @param {!SDK.Target} target
229 */ 238 */
230 targetRemoved(target) { 239 targetRemoved(target) {
231 var domModel = SDK.DOMModel.fromTarget(target); 240 var domModel = SDK.DOMModel.fromTarget(target);
232 if (!domModel) 241 if (!domModel)
233 return; 242 return;
234 var treeOutline = Elements.ElementsTreeOutline.forDOMModel(domModel); 243 var treeOutline = Elements.ElementsTreeOutline.forDOMModel(domModel);
235 treeOutline.unwireFromDOMModel(); 244 treeOutline.unwireFromDOMModel();
236 this._treeOutlines.remove(treeOutline); 245 this._treeOutlines.remove(treeOutline);
246 var header = this._treeOutlineHeaders.get(treeOutline);
247 if (header)
248 header.remove();
249 this._treeOutlineHeaders.delete(treeOutline);
237 treeOutline.element.remove(); 250 treeOutline.element.remove();
238 } 251 }
239 252
253 /**
254 * @param {!SDK.Target} target
255 */
256 _targetNameChanged(target) {
257 var domModel = SDK.DOMModel.fromTarget(target);
258 if (!domModel)
259 return;
260 var treeOutline = Elements.ElementsTreeOutline.forDOMModel(domModel);
261 if (!treeOutline)
262 return;
263 var header = this._treeOutlineHeaders.get(treeOutline);
264 if (!header)
265 return;
266 header.removeChildren();
267 header.createChild('div', 'elements-tree-header-frame').textContent = Common .UIString('Frame');
pfeldman 2017/02/24 19:39:38 You can use .formatLocalized.
268 header.appendChild(Components.Linkifier.linkifyURL(target.inspectedURL(), ta rget.name()));
269 }
270
240 _updateTreeOutlineVisibleWidth() { 271 _updateTreeOutlineVisibleWidth() {
241 if (!this._treeOutlines.length) 272 if (!this._treeOutlines.length)
242 return; 273 return;
243 274
244 var width = this._splitWidget.element.offsetWidth; 275 var width = this._splitWidget.element.offsetWidth;
245 if (this._splitWidget.isVertical()) 276 if (this._splitWidget.isVertical())
246 width -= this._splitWidget.sidebarSize(); 277 width -= this._splitWidget.sidebarSize();
247 for (var i = 0; i < this._treeOutlines.length; ++i) 278 for (var i = 0; i < this._treeOutlines.length; ++i)
248 this._treeOutlines[i].setVisibleWidth(width); 279 this._treeOutlines[i].setVisibleWidth(width);
249 280
(...skipping 18 matching lines...) Expand all
268 299
269 /** 300 /**
270 * @override 301 * @override
271 */ 302 */
272 wasShown() { 303 wasShown() {
273 UI.context.setFlavor(Elements.ElementsPanel, this); 304 UI.context.setFlavor(Elements.ElementsPanel, this);
274 305
275 for (var i = 0; i < this._treeOutlines.length; ++i) { 306 for (var i = 0; i < this._treeOutlines.length; ++i) {
276 var treeOutline = this._treeOutlines[i]; 307 var treeOutline = this._treeOutlines[i];
277 // Attach heavy component lazily 308 // Attach heavy component lazily
278 if (treeOutline.element.parentElement !== this._contentElement) 309 if (treeOutline.element.parentElement !== this._contentElement) {
310 var header = this._treeOutlineHeaders.get(treeOutline);
311 if (header)
312 this._contentElement.appendChild(header);
279 this._contentElement.appendChild(treeOutline.element); 313 this._contentElement.appendChild(treeOutline.element);
314 }
280 } 315 }
281 super.wasShown(); 316 super.wasShown();
282 this._breadcrumbs.update(); 317 this._breadcrumbs.update();
283 318
284 for (var i = 0; i < this._treeOutlines.length; ++i) { 319 for (var i = 0; i < this._treeOutlines.length; ++i) {
285 var treeOutline = this._treeOutlines[i]; 320 var treeOutline = this._treeOutlines[i];
286 treeOutline.setVisible(true); 321 treeOutline.setVisible(true);
287 322
288 if (!treeOutline.rootDOMNode) { 323 if (!treeOutline.rootDOMNode) {
289 if (treeOutline.domModel().existingDocument()) 324 if (treeOutline.domModel().existingDocument())
(...skipping 10 matching lines...) Expand all
300 */ 335 */
301 willHide() { 336 willHide() {
302 UI.context.setFlavor(Elements.ElementsPanel, null); 337 UI.context.setFlavor(Elements.ElementsPanel, null);
303 338
304 SDK.DOMModel.hideDOMNodeHighlight(); 339 SDK.DOMModel.hideDOMNodeHighlight();
305 for (var i = 0; i < this._treeOutlines.length; ++i) { 340 for (var i = 0; i < this._treeOutlines.length; ++i) {
306 var treeOutline = this._treeOutlines[i]; 341 var treeOutline = this._treeOutlines[i];
307 treeOutline.setVisible(false); 342 treeOutline.setVisible(false);
308 // Detach heavy component on hide 343 // Detach heavy component on hide
309 this._contentElement.removeChild(treeOutline.element); 344 this._contentElement.removeChild(treeOutline.element);
345 var header = this._treeOutlineHeaders.get(treeOutline);
346 if (header)
347 this._contentElement.removeChild(header);
310 } 348 }
311 if (this._popoverHelper) 349 if (this._popoverHelper)
312 this._popoverHelper.hidePopover(); 350 this._popoverHelper.hidePopover();
313 super.willHide(); 351 super.willHide();
314 } 352 }
315 353
316 /** 354 /**
317 * @override 355 * @override
318 */ 356 */
319 onResize() { 357 onResize() {
(...skipping 749 matching lines...) Expand 10 before | Expand all | Expand 10 after
1069 * @param {!SDK.DOMNode} node 1107 * @param {!SDK.DOMNode} node
1070 * @return {?{title: string, color: string}} 1108 * @return {?{title: string, color: string}}
1071 */ 1109 */
1072 decorate(node) { 1110 decorate(node) {
1073 return { 1111 return {
1074 color: 'orange', 1112 color: 'orange',
1075 title: Common.UIString('Element state: %s', ':' + SDK.CSSModel.fromNode(no de).pseudoState(node).join(', :')) 1113 title: Common.UIString('Element state: %s', ':' + SDK.CSSModel.fromNode(no de).pseudoState(node).join(', :'))
1076 }; 1114 };
1077 } 1115 }
1078 }; 1116 };
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/devtools/front_end/elements/elementsPanel.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698