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

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

Issue 1304173004: Devtools UI: Add node-specific actions into a ghost toolbar in DOM (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase; remove material breadcrumb from experiment Created 5 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | Source/devtools/front_end/elements/ElementsTreeElement.js » ('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 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 this._splitWidget.show(this.element); 44 this._splitWidget.show(this.element);
45 45
46 this._searchableView = new WebInspector.SearchableView(this); 46 this._searchableView = new WebInspector.SearchableView(this);
47 this._searchableView.setMinimumSize(25, 28); 47 this._searchableView.setMinimumSize(25, 28);
48 this._searchableView.setPlaceholder(WebInspector.UIString("Find by string, s elector, or XPath")); 48 this._searchableView.setPlaceholder(WebInspector.UIString("Find by string, s elector, or XPath"));
49 var stackElement = this._searchableView.element; 49 var stackElement = this._searchableView.element;
50 50
51 this._contentElement = createElement("div"); 51 this._contentElement = createElement("div");
52 var crumbsContainer = createElement("div"); 52 var crumbsContainer = createElement("div");
53 this._showLayoutEditor = false; 53 this._showLayoutEditor = false;
54 if (Runtime.experiments.isEnabled("materialDesign")) { 54 if (Runtime.experiments.isEnabled("materialDesign"))
55 this._toolbar = this._createElementsToolbar(); 55 this._initializeActionsToolbar();
56 var toolbar = stackElement.createChild("div", "elements-topbar hbox"); 56 stackElement.appendChild(this._contentElement);
57 toolbar.appendChild(this._toolbar.element); 57 stackElement.appendChild(crumbsContainer);
58 toolbar.appendChild(crumbsContainer);
59 stackElement.appendChild(this._contentElement);
60 } else {
61 stackElement.appendChild(this._contentElement);
62 stackElement.appendChild(crumbsContainer);
63 }
64 58
65 this._elementsPanelTreeOutilneSplit = new WebInspector.SplitWidget(false, tr ue, "treeOutlineAnimationTimelineWidget", 300, 300); 59 this._elementsPanelTreeOutilneSplit = new WebInspector.SplitWidget(false, tr ue, "treeOutlineAnimationTimelineWidget", 300, 300);
66 this._elementsPanelTreeOutilneSplit.hideSidebar(); 60 this._elementsPanelTreeOutilneSplit.hideSidebar();
67 this._elementsPanelTreeOutilneSplit.setMainWidget(this._searchableView); 61 this._elementsPanelTreeOutilneSplit.setMainWidget(this._searchableView);
68 this._splitWidget.setMainWidget(this._elementsPanelTreeOutilneSplit); 62 this._splitWidget.setMainWidget(this._elementsPanelTreeOutilneSplit);
69 63
70 this._contentElement.id = "elements-content"; 64 this._contentElement.id = "elements-content";
71 // FIXME: crbug.com/425984 65 // FIXME: crbug.com/425984
72 if (WebInspector.moduleSetting("domWordWrap").get()) 66 if (WebInspector.moduleSetting("domWordWrap").get())
73 this._contentElement.classList.add("elements-wrap"); 67 this._contentElement.classList.add("elements-wrap");
(...skipping 25 matching lines...) Expand all
99 this._updateSidebarPosition(); 93 this._updateSidebarPosition();
100 this._loadSidebarViews(); 94 this._loadSidebarViews();
101 95
102 /** @type {!Array.<!WebInspector.ElementsTreeOutline>} */ 96 /** @type {!Array.<!WebInspector.ElementsTreeOutline>} */
103 this._treeOutlines = []; 97 this._treeOutlines = [];
104 /** @type {!Map.<!WebInspector.DOMModel, !WebInspector.ElementsTreeOutline>} */ 98 /** @type {!Map.<!WebInspector.DOMModel, !WebInspector.ElementsTreeOutline>} */
105 this._modelToTreeOutline = new Map(); 99 this._modelToTreeOutline = new Map();
106 WebInspector.targetManager.observeTargets(this); 100 WebInspector.targetManager.observeTargets(this);
107 WebInspector.moduleSetting("showUAShadowDOM").addChangeListener(this._showUA ShadowDOMChanged.bind(this)); 101 WebInspector.moduleSetting("showUAShadowDOM").addChangeListener(this._showUA ShadowDOMChanged.bind(this));
108 WebInspector.targetManager.addModelListener(WebInspector.DOMModel, WebInspec tor.DOMModel.Events.DocumentUpdated, this._documentUpdatedEvent, this); 102 WebInspector.targetManager.addModelListener(WebInspector.DOMModel, WebInspec tor.DOMModel.Events.DocumentUpdated, this._documentUpdatedEvent, this);
109 if (Runtime.experiments.isEnabled("materialDesign"))
110 WebInspector.targetManager.addModelListener(WebInspector.DOMModel, WebIn spector.DOMModel.Events.MarkersChanged, this._updateToolbarButtons, this);
111 WebInspector.extensionServer.addEventListener(WebInspector.ExtensionServer.E vents.SidebarPaneAdded, this._extensionSidebarPaneAdded, this); 103 WebInspector.extensionServer.addEventListener(WebInspector.ExtensionServer.E vents.SidebarPaneAdded, this._extensionSidebarPaneAdded, this);
112 } 104 }
113 105
114 WebInspector.ElementsPanel._elementsSidebarViewTitleSymbol = Symbol("title"); 106 WebInspector.ElementsPanel._elementsSidebarViewTitleSymbol = Symbol("title");
115 107
116 WebInspector.ElementsPanel.prototype = { 108 WebInspector.ElementsPanel.prototype = {
117 /** 109 _initializeActionsToolbar: function()
118 * @return {!WebInspector.Toolbar}
119 */
120 _createElementsToolbar: function()
121 { 110 {
122 var toolbar = new WebInspector.ExtensibleToolbar("elements-toolbar"); 111 this._nodeActionsElement = createElementWithClass("div", "node-actions-c ontainer");
123 toolbar.element.classList.add("elements-toolbar"); 112 var button = this._nodeActionsElement.createChild("div", "node-actions-t oggle");
124 this._hideElementButton = new WebInspector.ToolbarButton(WebInspector.UI String("Hide element"), "visibility-off-toolbar-item"); 113 button.addEventListener("click", this._toggleActionsToolbar.bind(this, u ndefined));
125 this._hideElementButton.setAction("elements.hide-element"); 114 this._nodeActionsToolbar = new WebInspector.Toolbar();
126 toolbar.appendToolbarItem(this._hideElementButton); 115 this._nodeActionsElement.appendChild(this._nodeActionsToolbar.element);
116 this._nodeActionsToolbar.element.addEventListener("mousedown", consumeEv ent);
117 WebInspector.targetManager.addModelListener(WebInspector.DOMModel, WebIn spector.DOMModel.Events.MarkersChanged, this._markersChanged, this);
127 118
128 this._editAsHTMLButton = new WebInspector.ToolbarButton(WebInspector.UIS tring("Edit as HTML"), "edit-toolbar-item"); 119 this._editAsHTMLButton = new WebInspector.ToolbarButton(WebInspector.UIS tring("Edit as HTML"), "edit-toolbar-item");
129 this._editAsHTMLButton.setAction("elements.edit-as-html"); 120 this._editAsHTMLButton.setAction("elements.edit-as-html");
130 toolbar.appendToolbarItem(this._editAsHTMLButton); 121 this._nodeActionsToolbar.appendToolbarItem(this._editAsHTMLButton);
131 toolbar.appendSeparator(); 122 this._nodeActionsToolbar.element.classList.add("node-actions-toolbar");
132 123 this._hideElementButton = new WebInspector.ToolbarButton(WebInspector.UI String("Hide element"), "visibility-off-toolbar-item");
124 this._hideElementButton.setAction("elements.hide-element");
125 this._nodeActionsToolbar.appendToolbarItem(this._hideElementButton);
133 this._forceElementStateButton = new WebInspector.ToolbarMenuButton(WebIn spector.UIString("Force element state"), "pin-toolbar-item", this._showForceElem entStateMenu.bind(this)); 126 this._forceElementStateButton = new WebInspector.ToolbarMenuButton(WebIn spector.UIString("Force element state"), "pin-toolbar-item", this._showForceElem entStateMenu.bind(this));
134 toolbar.appendToolbarItem(this._forceElementStateButton); 127 this._nodeActionsToolbar.appendToolbarItem(this._forceElementStateButton );
135 this._breakpointsButton = new WebInspector.ToolbarMenuButton(WebInspecto r.UIString("Toggle breakpoints"), "add-breakpoint-toolbar-item", this._showBreak pointsMenu.bind(this)); 128 this._breakpointsButton = new WebInspector.ToolbarMenuButton(WebInspecto r.UIString("Toggle breakpoints"), "add-breakpoint-toolbar-item", this._showBreak pointsMenu.bind(this));
136 toolbar.appendToolbarItem(this._breakpointsButton); 129 this._nodeActionsToolbar.appendToolbarItem(this._breakpointsButton);
137
138 toolbar.appendSeparator();
139 if (Runtime.experiments.isEnabled("layoutEditor") && !Runtime.queryParam ("remoteFrontend")) {
140 this._layoutEditorButton = new WebInspector.ToolbarButton(WebInspect or.UIString("Toggle Layout Editor"), "layout-editor-toolbar-item");
141 toolbar.appendToolbarItem(this._layoutEditorButton);
142 this._layoutEditorButton.addEventListener("click", this._toggleLayou tEditor, this);
143 toolbar.appendSeparator();
144 }
145 return toolbar;
146 }, 130 },
147 131
148 _toggleHideElement: function() 132 _toggleHideElement: function()
149 { 133 {
150 var node = this.selectedDOMNode(); 134 var node = this.selectedDOMNode();
151 var treeOutline = this._treeOutlineForNode(node); 135 var treeOutline = this._treeOutlineForNode(node);
152 if (!node || !treeOutline) 136 if (!node || !treeOutline)
153 return; 137 return;
154 treeOutline.toggleHideElement(node); 138 treeOutline.toggleHideElement(node);
155 }, 139 },
156 140
157 _updateToolbarButtons: function() 141 /**
142 * @param {!WebInspector.DOMNode} node
143 */
144 _updateActionsToolbar: function(node)
158 { 145 {
159 if (!Runtime.experiments.isEnabled("materialDesign")) 146 if (!Runtime.experiments.isEnabled("materialDesign"))
160 return; 147 return;
161 var node = this.selectedDOMNode();
162 if (!node)
163 return;
164 var classText = node.getAttribute("class"); 148 var classText = node.getAttribute("class");
165 var treeOutline = this._treeOutlineForNode(node); 149 var treeOutline = this._treeOutlineForNode(node);
166 this._hideElementButton.setToggled(treeOutline && treeOutline.isToggledT oHidden(node)); 150 this._hideElementButton.setToggled(treeOutline && treeOutline.isToggledT oHidden(node));
167 this._editAsHTMLButton.setToggled(false); 151 this._editAsHTMLButton.setToggled(false);
168 this._breakpointsButton.setEnabled(!node.pseudoType()); 152 this._breakpointsButton.setEnabled(!node.pseudoType());
169 this._breakpointsButton.setToggled(WebInspector.domBreakpointsSidebarPan e.hasBreakpoints(node)); 153 this._breakpointsButton.setToggled(WebInspector.domBreakpointsSidebarPan e.hasBreakpoints(node));
170 this._forceElementStateButton.setEnabled(node.nodeType() === Node.ELEMEN T_NODE && !node.pseudoType()); 154 this._forceElementStateButton.setEnabled(node.nodeType() === Node.ELEMEN T_NODE && !node.pseudoType());
171 this._forceElementStateButton.setToggled(!!WebInspector.CSSStyleModel.fr omNode(node).pseudoState(node).length); 155 this._forceElementStateButton.setToggled(!!WebInspector.CSSStyleModel.fr omNode(node).pseudoState(node).length);
156
157 var treeElement = this._treeOutlineForNode(node).selectedTreeElement;
158 if (!treeElement)
159 return;
160 if (node.nodeType() !== Node.ELEMENT_NODE) {
161 this._nodeActionsElement.remove();
162 return;
163 }
164
165 var actionsToolbar = this._nodeActionsElement;
166 if (actionsToolbar.__node !== node) {
167 treeElement.gutterElement().appendChild(actionsToolbar);
168 this._positionActionsToolbar();
169 actionsToolbar.__node = node;
170 this._toggleActionsToolbar(false);
171 }
172 }, 172 },
173 173
174 _toggleEditAsHTML: function() 174 _toggleEditAsHTML: function()
175 { 175 {
176 var node = this.selectedDOMNode(); 176 var node = this.selectedDOMNode();
177 var treeOutline = this._treeOutlineForNode(node); 177 var treeOutline = this._treeOutlineForNode(node);
178 if (!node || !treeOutline) 178 if (!node || !treeOutline)
179 return; 179 return;
180 180
181 var startEditing = true; 181 var startEditing = true;
182 if (Runtime.experiments.isEnabled("materialDesign")) { 182 if (Runtime.experiments.isEnabled("materialDesign")) {
183 startEditing = !this._editAsHTMLButton.toggled(); 183 startEditing = !this._editAsHTMLButton.toggled();
184 this._editAsHTMLButton.setToggled(startEditing); 184 this._editAsHTMLButton.setToggled(startEditing);
185 } 185 }
186 treeOutline.toggleEditAsHTML(node, startEditing, this._updateToolbarButt ons.bind(this)); 186 treeOutline.toggleEditAsHTML(node, startEditing, this._updateActionsTool bar.bind(this, node));
187 }, 187 },
188 188
189 /** 189 /**
190 * @param {!WebInspector.ContextMenu} contextMenu 190 * @param {!WebInspector.ContextMenu} contextMenu
191 */ 191 */
192 _showBreakpointsMenu: function(contextMenu) 192 _showBreakpointsMenu: function(contextMenu)
193 { 193 {
194 var node = this.selectedDOMNode(); 194 var node = this.selectedDOMNode();
195 if (!node) 195 if (!node)
196 return; 196 return;
197 WebInspector.domBreakpointsSidebarPane.populateNodeContextMenu(node, con textMenu, false); 197 WebInspector.domBreakpointsSidebarPane.populateNodeContextMenu(node, con textMenu, false);
198 }, 198 },
199 199
200 /** 200 /**
201 * @param {!WebInspector.ContextMenu} contextMenu 201 * @param {!WebInspector.ContextMenu} contextMenu
202 */ 202 */
203 _showForceElementStateMenu: function(contextMenu) 203 _showForceElementStateMenu: function(contextMenu)
204 { 204 {
205 var node = this.selectedDOMNode(); 205 var node = this.selectedDOMNode();
206 if (!node) 206 if (!node)
207 return; 207 return;
208 WebInspector.ElementsTreeElement.populateForcedPseudoStateItems(contextM enu, node); 208 WebInspector.ElementsTreeElement.populateForcedPseudoStateItems(contextM enu, node);
209 }, 209 },
210 210
211 /**
212 * @param {!WebInspector.Event} event
213 */
214 _decorationsClicked: function(event)
215 {
216 var node = /** @type {!WebInspector.DOMNode} */(event.data);
217 this.selectDOMNode(node, true);
218 this._toggleActionsToolbar(true);
219 },
220
221 /**
222 * @param {boolean=} toggled
223 */
224 _toggleActionsToolbar: function(toggled)
225 {
226 if (toggled === undefined)
227 toggled = !this._actionsToolbarShown();
228 this._nodeActionsElement.classList.toggle("expanded", toggled);
229 this._positionActionsToolbar();
230 },
231
232 _positionActionsToolbar: function()
233 {
234 if (!this._actionsToolbarShown())
235 return;
236 var toolbarElement = this._nodeActionsToolbar.element;
237 if (toolbarElement.totalOffsetTop() < this.element.totalOffsetTop()) {
238 toolbarElement.style.top = this._nodeActionsElement.parentElement.of fsetHeight + "px";
239 toolbarElement.classList.add("node-actions-toolbar-below");
240 } else {
241 toolbarElement.style.top = "";
242 toolbarElement.classList.remove("node-actions-toolbar-below");
243 }
244 },
245
246 /**
247 * @return {boolean}
248 */
249 _actionsToolbarShown: function()
250 {
251 return this._nodeActionsElement.classList.contains("expanded");
252 },
253
254 /**
255 * @param {!WebInspector.Event} event
256 */
257 _markersChanged: function(event)
258 {
259 var node = /** @type {!WebInspector.DOMNode} */ (event.data);
260 if (node !== this.selectedDOMNode())
261 return;
262 this._updateActionsToolbar(node);
263 },
264
211 _loadSidebarViews: function() 265 _loadSidebarViews: function()
212 { 266 {
213 var extensions = self.runtime.extensions("@WebInspector.Widget"); 267 var extensions = self.runtime.extensions("@WebInspector.Widget");
214 268
215 for (var i = 0; i < extensions.length; ++i) { 269 for (var i = 0; i < extensions.length; ++i) {
216 var descriptor = extensions[i].descriptor(); 270 var descriptor = extensions[i].descriptor();
217 if (descriptor["location"] !== "elements-panel") 271 if (descriptor["location"] !== "elements-panel")
218 continue; 272 continue;
219 273
220 var title = WebInspector.UIString(descriptor["title"]); 274 var title = WebInspector.UIString(descriptor["title"]);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 { 311 {
258 var domModel = WebInspector.DOMModel.fromTarget(target); 312 var domModel = WebInspector.DOMModel.fromTarget(target);
259 if (!domModel) 313 if (!domModel)
260 return; 314 return;
261 var treeOutline = new WebInspector.ElementsTreeOutline(domModel, true, t rue); 315 var treeOutline = new WebInspector.ElementsTreeOutline(domModel, true, t rue);
262 treeOutline.setWordWrap(WebInspector.moduleSetting("domWordWrap").get()) ; 316 treeOutline.setWordWrap(WebInspector.moduleSetting("domWordWrap").get()) ;
263 treeOutline.wireToDOMModel(); 317 treeOutline.wireToDOMModel();
264 treeOutline.addEventListener(WebInspector.ElementsTreeOutline.Events.Sel ectedNodeChanged, this._selectedNodeChanged, this); 318 treeOutline.addEventListener(WebInspector.ElementsTreeOutline.Events.Sel ectedNodeChanged, this._selectedNodeChanged, this);
265 treeOutline.addEventListener(WebInspector.ElementsTreeOutline.Events.Nod ePicked, this._onNodePicked, this); 319 treeOutline.addEventListener(WebInspector.ElementsTreeOutline.Events.Nod ePicked, this._onNodePicked, this);
266 treeOutline.addEventListener(WebInspector.ElementsTreeOutline.Events.Ele mentsTreeUpdated, this._updateBreadcrumbIfNeeded, this); 320 treeOutline.addEventListener(WebInspector.ElementsTreeOutline.Events.Ele mentsTreeUpdated, this._updateBreadcrumbIfNeeded, this);
321 treeOutline.addEventListener(WebInspector.ElementsTreeOutline.Events.Dec orationsClicked, this._decorationsClicked, this);
267 this._treeOutlines.push(treeOutline); 322 this._treeOutlines.push(treeOutline);
268 this._modelToTreeOutline.set(domModel, treeOutline); 323 this._modelToTreeOutline.set(domModel, treeOutline);
269 324
270 // Perform attach if necessary. 325 // Perform attach if necessary.
271 if (this.isShowing()) 326 if (this.isShowing())
272 this.wasShown(); 327 this.wasShown();
273 328
274 }, 329 },
275 330
276 /** 331 /**
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 if (!selectedNode && this._lastValidSelectedNode) 446 if (!selectedNode && this._lastValidSelectedNode)
392 this._selectedPathOnReset = this._lastValidSelectedNode.path(); 447 this._selectedPathOnReset = this._lastValidSelectedNode.path();
393 448
394 this._breadcrumbs.setSelectedNode(selectedNode); 449 this._breadcrumbs.setSelectedNode(selectedNode);
395 450
396 WebInspector.context.setFlavor(WebInspector.DOMNode, selectedNode); 451 WebInspector.context.setFlavor(WebInspector.DOMNode, selectedNode);
397 452
398 if (selectedNode) { 453 if (selectedNode) {
399 selectedNode.setAsInspectedNode(); 454 selectedNode.setAsInspectedNode();
400 this._lastValidSelectedNode = selectedNode; 455 this._lastValidSelectedNode = selectedNode;
456 this._updateActionsToolbar(selectedNode);
401 } 457 }
402 WebInspector.notifications.dispatchEventToListeners(WebInspector.Notific ationService.Events.SelectedNodeChanged); 458 WebInspector.notifications.dispatchEventToListeners(WebInspector.Notific ationService.Events.SelectedNodeChanged);
403 this._selectedNodeChangedForTest(); 459 this._selectedNodeChangedForTest();
404 if (Runtime.experiments.isEnabled("materialDesign"))
405 this._updateToolbarButtons();
406 }, 460 },
407 461
408 _selectedNodeChangedForTest: function() { }, 462 _selectedNodeChangedForTest: function() { },
409 463
410 _reset: function() 464 _reset: function()
411 { 465 {
412 delete this.currentQuery; 466 delete this.currentQuery;
413 }, 467 },
414 468
415 /** 469 /**
(...skipping 668 matching lines...) Expand 10 before | Expand all | Expand 10 after
1084 setWidgetBelowDOM: function(widget) 1138 setWidgetBelowDOM: function(widget)
1085 { 1139 {
1086 if (widget) { 1140 if (widget) {
1087 this._elementsPanelTreeOutilneSplit.setSidebarWidget(widget); 1141 this._elementsPanelTreeOutilneSplit.setSidebarWidget(widget);
1088 this._elementsPanelTreeOutilneSplit.showBoth(true); 1142 this._elementsPanelTreeOutilneSplit.showBoth(true);
1089 } else { 1143 } else {
1090 this._elementsPanelTreeOutilneSplit.hideSidebar(true); 1144 this._elementsPanelTreeOutilneSplit.hideSidebar(true);
1091 } 1145 }
1092 }, 1146 },
1093 1147
1094 _toggleLayoutEditor: function()
1095 {
1096 this._showLayoutEditor = !this._showLayoutEditor;
1097 this._layoutEditorButton.setToggled(this._showLayoutEditor);
1098 var targets = WebInspector.targetManager.targets();
1099
1100 if (this._showLayoutEditor)
1101 WebInspector.inspectElementModeController.disable();
1102 else
1103 WebInspector.inspectElementModeController.enable();
1104
1105 var mode = this._showLayoutEditor ? DOMAgent.InspectMode.ShowLayoutEdito r : DOMAgent.InspectMode.None;
1106 for (var domModel of WebInspector.DOMModel.instances())
1107 domModel.setInspectMode(mode);
1108 },
1109
1110 __proto__: WebInspector.Panel.prototype 1148 __proto__: WebInspector.Panel.prototype
1111 } 1149 }
1112 1150
1113 /** 1151 /**
1114 * @constructor 1152 * @constructor
1115 * @implements {WebInspector.ContextMenu.Provider} 1153 * @implements {WebInspector.ContextMenu.Provider}
1116 */ 1154 */
1117 WebInspector.ElementsPanel.ContextMenuProvider = function() 1155 WebInspector.ElementsPanel.ContextMenuProvider = function()
1118 { 1156 {
1119 } 1157 }
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
1278 WebInspector.ElementsPanel.HiddenMarkerDecorator.prototype = { 1316 WebInspector.ElementsPanel.HiddenMarkerDecorator.prototype = {
1279 /** 1317 /**
1280 * @override 1318 * @override
1281 * @param {!WebInspector.DOMNode} node 1319 * @param {!WebInspector.DOMNode} node
1282 * @return {?{title: string, color: string}} 1320 * @return {?{title: string, color: string}}
1283 */ 1321 */
1284 decorate: function(node) 1322 decorate: function(node)
1285 { 1323 {
1286 return { color: "#555", title: WebInspector.UIString("Element is hidden" ) }; 1324 return { color: "#555", title: WebInspector.UIString("Element is hidden" ) };
1287 } 1325 }
1288 } 1326 }
OLDNEW
« no previous file with comments | « no previous file | Source/devtools/front_end/elements/ElementsTreeElement.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698