| Index: third_party/WebKit/Source/devtools/front_end/components/InspectElementModeController.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/components/InspectElementModeController.js b/third_party/WebKit/Source/devtools/front_end/components/InspectElementModeController.js
|
| index 344a04695741074ec5a18152808592ea78037819..7f747b1d8f9700a6319381daea64f2769c09d218 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/components/InspectElementModeController.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/components/InspectElementModeController.js
|
| @@ -33,7 +33,13 @@
|
| WebInspector.InspectElementModeController = function()
|
| {
|
| this._toggleSearchButton = new WebInspector.ToolbarButton(WebInspector.UIString("Select an element in the page to inspect it"), "node-search-toolbar-item");
|
| - InspectorFrontendHost.events.addEventListener(InspectorFrontendHostAPI.Events.EnterInspectElementMode, this._toggleSearch, this);
|
| + if (Runtime.experiments.isEnabled("layoutEditor")) {
|
| + this._layoutEditorButton = new WebInspector.ToolbarButton(WebInspector.UIString("Toggle Layout Editor"), "layout-editor-toolbar-item");
|
| + this._layoutEditorButton.addEventListener("click", this._toggleLayoutEditor, this);
|
| + }
|
| +
|
| + this._mode = DOMAgent.InspectMode.None;
|
| + InspectorFrontendHost.events.addEventListener(InspectorFrontendHostAPI.Events.EnterInspectElementMode, this._toggleInspectMode, this);
|
| WebInspector.targetManager.addEventListener(WebInspector.TargetManager.Events.SuspendStateChanged, this._suspendStateChanged, this);
|
| WebInspector.targetManager.observeTargets(this, WebInspector.Target.Type.Page);
|
| }
|
| @@ -55,10 +61,10 @@ WebInspector.InspectElementModeController.prototype = {
|
| {
|
| // When DevTools are opening in the inspect element mode, the first target comes in
|
| // much later than the InspectorFrontendAPI.enterInspectElementMode event.
|
| - if (!this.started())
|
| + if (this._mode === DOMAgent.InspectMode.None)
|
| return;
|
| var domModel = WebInspector.DOMModel.fromTarget(target);
|
| - domModel.setInspectMode(WebInspector.moduleSetting("showUAShadowDOM").get() ? DOMAgent.InspectMode.SearchForUAShadowDOM : DOMAgent.InspectMode.SearchForNode);
|
| + domModel.setInspectMode(this._mode);
|
| },
|
|
|
| /**
|
| @@ -72,53 +78,72 @@ WebInspector.InspectElementModeController.prototype = {
|
| /**
|
| * @return {boolean}
|
| */
|
| - started: function()
|
| + isInInspectElementMode: function()
|
| {
|
| - return this._toggleSearchButton.toggled();
|
| + return this._mode === DOMAgent.InspectMode.SearchForNode || this._mode === DOMAgent.InspectMode.SearchForUAShadowDOM;
|
| },
|
|
|
| - stop: function()
|
| + /**
|
| + * @return {boolean}
|
| + */
|
| + isInLayoutEditorMode: function()
|
| {
|
| - if (this.started())
|
| - this._toggleSearch();
|
| + return this._mode === DOMAgent.InspectMode.ShowLayoutEditor;
|
| },
|
|
|
| - disable: function()
|
| + stopInspection: function()
|
| {
|
| - this.stop();
|
| - this._toggleSearchButton.setEnabled(false);
|
| + if (this._mode && this._mode !== DOMAgent.InspectMode.None)
|
| + this._toggleInspectMode();
|
| },
|
|
|
| - enable: function()
|
| + _toggleLayoutEditor: function()
|
| {
|
| - this._toggleSearchButton.setEnabled(true);
|
| + var mode = this.isInLayoutEditorMode() ? DOMAgent.InspectMode.None : DOMAgent.InspectMode.ShowLayoutEditor;
|
| + this._setMode(mode);
|
| },
|
|
|
| - _toggleSearch: function()
|
| + _toggleInspectMode: function()
|
| {
|
| - if (!this._toggleSearchButton.enabled())
|
| + if (WebInspector.targetManager.allTargetsSuspended())
|
| return;
|
|
|
| - var shouldEnable = !this.started();
|
| - this._toggleSearchButton.setToggled(shouldEnable);
|
| + var mode;
|
| + if (this.isInInspectElementMode())
|
| + mode = DOMAgent.InspectMode.None;
|
| + else
|
| + mode = WebInspector.moduleSetting("showUAShadowDOM").get() ? DOMAgent.InspectMode.SearchForUAShadowDOM : DOMAgent.InspectMode.SearchForNode;
|
|
|
| - for (var domModel of WebInspector.DOMModel.instances()) {
|
| - var mode;
|
| - if (!shouldEnable)
|
| - mode = DOMAgent.InspectMode.None;
|
| - else if (WebInspector.moduleSetting("showUAShadowDOM").get())
|
| - mode = DOMAgent.InspectMode.SearchForUAShadowDOM;
|
| - else
|
| - mode = DOMAgent.InspectMode.SearchForNode;
|
| + this._setMode(mode);
|
| + },
|
|
|
| + /**
|
| + * @param {!DOMAgent.InspectMode} mode
|
| + */
|
| + _setMode: function(mode)
|
| + {
|
| + this._mode = mode;
|
| + for (var domModel of WebInspector.DOMModel.instances())
|
| domModel.setInspectMode(mode);
|
| +
|
| + if (this._layoutEditorButton) {
|
| + this._layoutEditorButton.setEnabled(!this.isInInspectElementMode());
|
| + this._layoutEditorButton.setToggled(this.isInLayoutEditorMode());
|
| }
|
| +
|
| + this._toggleSearchButton.setEnabled(!this.isInLayoutEditorMode());
|
| + this._toggleSearchButton.setToggled(this.isInInspectElementMode());
|
| },
|
|
|
| _suspendStateChanged: function()
|
| {
|
| - if (WebInspector.targetManager.allTargetsSuspended())
|
| - this._toggleSearchButton.setToggled(false);
|
| + if (!WebInspector.targetManager.allTargetsSuspended())
|
| + return;
|
| +
|
| + this._mode = DOMAgent.InspectMode.None;
|
| + this._toggleSearchButton.setToggled(false);
|
| + if (this._layoutEditorButton)
|
| + this._layoutEditorButton.setToggled(false);
|
| }
|
| }
|
|
|
| @@ -140,7 +165,7 @@ WebInspector.InspectElementModeController.ToggleSearchActionDelegate.prototype =
|
| {
|
| if (!WebInspector.inspectElementModeController)
|
| return;
|
| - WebInspector.inspectElementModeController._toggleSearch();
|
| + WebInspector.inspectElementModeController._toggleInspectMode();
|
| }
|
| }
|
|
|
| @@ -166,5 +191,27 @@ WebInspector.InspectElementModeController.ToggleButtonProvider.prototype = {
|
| }
|
| }
|
|
|
| +/**
|
| + * @constructor
|
| + * @implements {WebInspector.ToolbarItem.Provider}
|
| + */
|
| +WebInspector.InspectElementModeController.LayoutEditorButtonProvider = function()
|
| +{
|
| +}
|
| +
|
| +WebInspector.InspectElementModeController.LayoutEditorButtonProvider.prototype = {
|
| + /**
|
| + * @override
|
| + * @return {?WebInspector.ToolbarItem}
|
| + */
|
| + item: function()
|
| + {
|
| + if (!WebInspector.inspectElementModeController)
|
| + return null;
|
| +
|
| + return WebInspector.inspectElementModeController._layoutEditorButton;
|
| + }
|
| +}
|
| +
|
| /** @type {?WebInspector.InspectElementModeController} */
|
| WebInspector.inspectElementModeController = null;
|
|
|