| Index: third_party/WebKit/Source/devtools/front_end/sources/SourcesPanel.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/sources/SourcesPanel.js b/third_party/WebKit/Source/devtools/front_end/sources/SourcesPanel.js
|
| index 0a2d8db714e87a240de52a7269e22306bad54b79..4a0497dd552ecf1a6db7ea8fd971b00a429cbe79 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/sources/SourcesPanel.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/sources/SourcesPanel.js
|
| @@ -23,54 +23,62 @@
|
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| */
|
| -
|
| /**
|
| - * @constructor
|
| - * @extends {WebInspector.Panel}
|
| * @implements {WebInspector.ContextMenu.Provider}
|
| * @implements {WebInspector.TargetManager.Observer}
|
| * @implements {WebInspector.ViewLocationResolver}
|
| + * @unrestricted
|
| */
|
| -WebInspector.SourcesPanel = function()
|
| -{
|
| - WebInspector.Panel.call(this, "sources");
|
| +WebInspector.SourcesPanel = class extends WebInspector.Panel {
|
| + constructor() {
|
| + super('sources');
|
| WebInspector.SourcesPanel._instance = this;
|
| - this.registerRequiredCSS("sources/sourcesPanel.css");
|
| - new WebInspector.DropTarget(this.element, [WebInspector.DropTarget.Types.Files], WebInspector.UIString("Drop workspace folder here"), this._handleDrop.bind(this));
|
| + this.registerRequiredCSS('sources/sourcesPanel.css');
|
| + new WebInspector.DropTarget(
|
| + this.element, [WebInspector.DropTarget.Types.Files], WebInspector.UIString('Drop workspace folder here'),
|
| + this._handleDrop.bind(this));
|
|
|
| this._workspace = WebInspector.workspace;
|
| this._networkMapping = WebInspector.networkMapping;
|
|
|
| - this._runSnippetAction = /** @type {!WebInspector.Action }*/ (WebInspector.actionRegistry.action("debugger.run-snippet"));
|
| - this._togglePauseAction = /** @type {!WebInspector.Action }*/ (WebInspector.actionRegistry.action("debugger.toggle-pause"));
|
| - this._stepOverAction = /** @type {!WebInspector.Action }*/ (WebInspector.actionRegistry.action("debugger.step-over"));
|
| - this._stepIntoAction = /** @type {!WebInspector.Action }*/ (WebInspector.actionRegistry.action("debugger.step-into"));
|
| - this._stepOutAction = /** @type {!WebInspector.Action }*/ (WebInspector.actionRegistry.action("debugger.step-out"));
|
| - this._toggleBreakpointsActiveAction = /** @type {!WebInspector.Action }*/ (WebInspector.actionRegistry.action("debugger.toggle-breakpoints-active"));
|
| + this._runSnippetAction =
|
| + /** @type {!WebInspector.Action }*/ (WebInspector.actionRegistry.action('debugger.run-snippet'));
|
| + this._togglePauseAction =
|
| + /** @type {!WebInspector.Action }*/ (WebInspector.actionRegistry.action('debugger.toggle-pause'));
|
| + this._stepOverAction =
|
| + /** @type {!WebInspector.Action }*/ (WebInspector.actionRegistry.action('debugger.step-over'));
|
| + this._stepIntoAction =
|
| + /** @type {!WebInspector.Action }*/ (WebInspector.actionRegistry.action('debugger.step-into'));
|
| + this._stepOutAction = /** @type {!WebInspector.Action }*/ (WebInspector.actionRegistry.action('debugger.step-out'));
|
| + this._toggleBreakpointsActiveAction =
|
| + /** @type {!WebInspector.Action }*/ (WebInspector.actionRegistry.action('debugger.toggle-breakpoints-active'));
|
|
|
| this._debugToolbar = this._createDebugToolbar();
|
| this._debugToolbarDrawer = this._createDebugToolbarDrawer();
|
| this._debuggerPausedMessage = new WebInspector.DebuggerPausedMessage();
|
|
|
| const initialDebugSidebarWidth = 225;
|
| - this._splitWidget = new WebInspector.SplitWidget(true, true, "sourcesPanelSplitViewState", initialDebugSidebarWidth);
|
| + this._splitWidget =
|
| + new WebInspector.SplitWidget(true, true, 'sourcesPanelSplitViewState', initialDebugSidebarWidth);
|
| this._splitWidget.enableShowModeSaving();
|
| this._splitWidget.show(this.element);
|
|
|
| // Create scripts navigator
|
| const initialNavigatorWidth = 225;
|
| - this.editorView = new WebInspector.SplitWidget(true, false, "sourcesPanelNavigatorSplitViewState", initialNavigatorWidth);
|
| + this.editorView =
|
| + new WebInspector.SplitWidget(true, false, 'sourcesPanelNavigatorSplitViewState', initialNavigatorWidth);
|
| this.editorView.enableShowModeSaving();
|
| this.editorView.element.tabIndex = 0;
|
| this._splitWidget.setMainWidget(this.editorView);
|
|
|
| // Create navigator tabbed pane with toolbar.
|
| - this._navigatorTabbedLocation = WebInspector.viewManager.createTabbedLocation(this._revealNavigatorSidebar.bind(this), "navigator-view", true);
|
| + this._navigatorTabbedLocation =
|
| + WebInspector.viewManager.createTabbedLocation(this._revealNavigatorSidebar.bind(this), 'navigator-view', true);
|
| var tabbedPane = this._navigatorTabbedLocation.tabbedPane();
|
| tabbedPane.setMinimumSize(100, 25);
|
| - tabbedPane.element.classList.add("navigator-tabbed-pane");
|
| + tabbedPane.element.classList.add('navigator-tabbed-pane');
|
| var navigatorMenuButton = new WebInspector.ToolbarMenuButton(this._populateNavigatorMenu.bind(this), true);
|
| - navigatorMenuButton.setTitle(WebInspector.UIString("More options"));
|
| + navigatorMenuButton.setTitle(WebInspector.UIString('More options'));
|
| tabbedPane.rightToolbar().appendToolbarItem(navigatorMenuButton);
|
| this.editorView.setSidebarWidget(tabbedPane);
|
|
|
| @@ -79,1324 +87,1266 @@ WebInspector.SourcesPanel = function()
|
| this._sourcesView.addEventListener(WebInspector.SourcesView.Events.EditorClosed, this._editorClosed.bind(this));
|
| this._sourcesView.registerShortcuts(this.registerShortcuts.bind(this));
|
|
|
| - this._toggleNavigatorSidebarButton = this.editorView.createShowHideSidebarButton("navigator");
|
| - this._toggleDebuggerSidebarButton = this._splitWidget.createShowHideSidebarButton("debugger");
|
| + this._toggleNavigatorSidebarButton = this.editorView.createShowHideSidebarButton('navigator');
|
| + this._toggleDebuggerSidebarButton = this._splitWidget.createShowHideSidebarButton('debugger');
|
| this.editorView.setMainWidget(this._sourcesView);
|
| this._editorChanged(this._sourcesView.currentUISourceCode());
|
|
|
| this._threadsSidebarPane = null;
|
| - this._watchSidebarPane = /** @type {!WebInspector.View} */ (WebInspector.viewManager.view("sources.watch"));
|
| + this._watchSidebarPane = /** @type {!WebInspector.View} */ (WebInspector.viewManager.view('sources.watch'));
|
| // TODO: Force installing listeners from the model, not the UI.
|
| self.runtime.sharedInstance(WebInspector.XHRBreakpointsSidebarPane);
|
| this._callstackPane = self.runtime.sharedInstance(WebInspector.CallStackSidebarPane);
|
| this._callstackPane.registerShortcuts(this.registerShortcuts.bind(this));
|
|
|
| - WebInspector.moduleSetting("sidebarPosition").addChangeListener(this._updateSidebarPosition.bind(this));
|
| + WebInspector.moduleSetting('sidebarPosition').addChangeListener(this._updateSidebarPosition.bind(this));
|
| this._updateSidebarPosition();
|
|
|
| this._updateDebuggerButtonsAndStatus();
|
| this._pauseOnExceptionEnabledChanged();
|
| - WebInspector.moduleSetting("pauseOnExceptionEnabled").addChangeListener(this._pauseOnExceptionEnabledChanged, this);
|
| + WebInspector.moduleSetting('pauseOnExceptionEnabled').addChangeListener(this._pauseOnExceptionEnabledChanged, this);
|
|
|
| this._liveLocationPool = new WebInspector.LiveLocationPool();
|
|
|
| this._setTarget(WebInspector.context.flavor(WebInspector.Target));
|
| - WebInspector.breakpointManager.addEventListener(WebInspector.BreakpointManager.Events.BreakpointsActiveStateChanged, this._breakpointsActiveStateChanged, this);
|
| + WebInspector.breakpointManager.addEventListener(
|
| + WebInspector.BreakpointManager.Events.BreakpointsActiveStateChanged, this._breakpointsActiveStateChanged, this);
|
| WebInspector.context.addFlavorChangeListener(WebInspector.Target, this._onCurrentTargetChanged, this);
|
| WebInspector.context.addFlavorChangeListener(WebInspector.DebuggerModel.CallFrame, this._callFrameChanged, this);
|
| - WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.DebuggerWasEnabled, this._debuggerWasEnabled, this);
|
| - WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.DebuggerPaused, this._debuggerPaused, this);
|
| - WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.DebuggerResumed, this._debuggerResumed, this);
|
| - WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.GlobalObjectCleared, this._debuggerReset, this);
|
| + WebInspector.targetManager.addModelListener(
|
| + WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.DebuggerWasEnabled, this._debuggerWasEnabled,
|
| + this);
|
| + WebInspector.targetManager.addModelListener(
|
| + WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.DebuggerPaused, this._debuggerPaused, this);
|
| + WebInspector.targetManager.addModelListener(
|
| + WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.DebuggerResumed, this._debuggerResumed, this);
|
| + WebInspector.targetManager.addModelListener(
|
| + WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.GlobalObjectCleared, this._debuggerReset, this);
|
| new WebInspector.WorkspaceMappingTip(this, this._workspace);
|
| - WebInspector.extensionServer.addEventListener(WebInspector.ExtensionServer.Events.SidebarPaneAdded, this._extensionSidebarPaneAdded, this);
|
| + WebInspector.extensionServer.addEventListener(
|
| + WebInspector.ExtensionServer.Events.SidebarPaneAdded, this._extensionSidebarPaneAdded, this);
|
| WebInspector.DataSaverInfobar.maybeShowInPanel(this);
|
| WebInspector.targetManager.observeTargets(this);
|
| -};
|
| -
|
| -WebInspector.SourcesPanel._lastModificationTimeout = 200;
|
| -
|
| -WebInspector.SourcesPanel.minToolbarWidth = 215;
|
| -
|
| -WebInspector.SourcesPanel.prototype = {
|
| - /**
|
| - * @override
|
| - * @param {!WebInspector.Target} target
|
| - */
|
| - targetAdded: function(target)
|
| - {
|
| - var hasThreads = WebInspector.targetManager.targets(WebInspector.Target.Capability.JS).length > 1;
|
| - if (hasThreads && !this._threadsSidebarPane) {
|
| - this._threadsSidebarPane = /** @type {!WebInspector.View} */ (WebInspector.viewManager.view("sources.threads"));
|
| - if (this._sidebarPaneStack) {
|
| - this._sidebarPaneStack.showView(this._threadsSidebarPane, this._splitWidget.isVertical() ? this._watchSidebarPane : this._callstackPane);
|
| - }
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @override
|
| - * @param {!WebInspector.Target} target
|
| - */
|
| - targetRemoved: function(target)
|
| - {
|
| - },
|
| -
|
| - /**
|
| - * @param {?WebInspector.Target} target
|
| - */
|
| - _setTarget: function(target)
|
| - {
|
| - if (!target)
|
| - return;
|
| - var debuggerModel = WebInspector.DebuggerModel.fromTarget(target);
|
| - if (!debuggerModel)
|
| - return;
|
| -
|
| - if (debuggerModel.isPaused()) {
|
| - this._showDebuggerPausedDetails(/** @type {!WebInspector.DebuggerPausedDetails} */ (debuggerModel.debuggerPausedDetails()));
|
| - } else {
|
| - this._paused = false;
|
| - this._clearInterface();
|
| - this._toggleDebuggerSidebarButton.setEnabled(true);
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _onCurrentTargetChanged: function(event)
|
| - {
|
| - var target = /** @type {?WebInspector.Target} */ (event.data);
|
| - this._setTarget(target);
|
| - },
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - paused: function()
|
| - {
|
| - return this._paused;
|
| - },
|
| -
|
| - wasShown: function()
|
| - {
|
| - WebInspector.context.setFlavor(WebInspector.SourcesPanel, this);
|
| - WebInspector.Panel.prototype.wasShown.call(this);
|
| - var wrapper = WebInspector.SourcesPanel.WrapperView._instance;
|
| - if (wrapper && wrapper.isShowing()) {
|
| - WebInspector.inspectorView.setDrawerMinimized(true);
|
| - WebInspector.SourcesPanel.updateResizerAndSidebarButtons(this);
|
| - }
|
| - this.editorView.setMainWidget(this._sourcesView);
|
| - },
|
| -
|
| - willHide: function()
|
| - {
|
| - WebInspector.Panel.prototype.willHide.call(this);
|
| - WebInspector.context.setFlavor(WebInspector.SourcesPanel, null);
|
| - if (WebInspector.SourcesPanel.WrapperView.isShowing()) {
|
| - WebInspector.SourcesPanel.WrapperView._instance._showViewInWrapper();
|
| - WebInspector.inspectorView.setDrawerMinimized(false);
|
| - WebInspector.SourcesPanel.updateResizerAndSidebarButtons(this);
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @override
|
| - * @param {string} locationName
|
| - * @return {?WebInspector.ViewLocation}
|
| - */
|
| - resolveLocation: function(locationName)
|
| - {
|
| - if (locationName === "sources-sidebar")
|
| - return this._sidebarPaneStack;
|
| - else
|
| - return this._navigatorTabbedLocation;
|
| - },
|
| -
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - _ensureSourcesViewVisible: function()
|
| - {
|
| - if (WebInspector.SourcesPanel.WrapperView.isShowing())
|
| - return true;
|
| - if (!WebInspector.inspectorView.canSelectPanel("sources"))
|
| - return false;
|
| - WebInspector.viewManager.showView("sources");
|
| - return true;
|
| - },
|
| -
|
| - onResize: function()
|
| - {
|
| - if (WebInspector.moduleSetting("sidebarPosition").get() === "auto")
|
| - this.element.window().requestAnimationFrame(this._updateSidebarPosition.bind(this)); // Do not force layout.
|
| - },
|
| -
|
| - /**
|
| - * @override
|
| - * @return {!WebInspector.SearchableView}
|
| - */
|
| - searchableView: function()
|
| - {
|
| - return this._sourcesView.searchableView();
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _debuggerPaused: function(event)
|
| - {
|
| - var details = /** @type {!WebInspector.DebuggerPausedDetails} */ (event.data);
|
| - if (!this._paused)
|
| - this._setAsCurrentPanel();
|
| -
|
| - if (WebInspector.context.flavor(WebInspector.Target) === details.target())
|
| - this._showDebuggerPausedDetails(details);
|
| - else if (!this._paused)
|
| - WebInspector.context.setFlavor(WebInspector.Target, details.target());
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.DebuggerPausedDetails} details
|
| - */
|
| - _showDebuggerPausedDetails: function(details)
|
| - {
|
| - this._paused = true;
|
| - this._updateDebuggerButtonsAndStatus();
|
| - WebInspector.context.setFlavor(WebInspector.DebuggerPausedDetails, details);
|
| - this._toggleDebuggerSidebarButton.setEnabled(false);
|
| - window.focus();
|
| - InspectorFrontendHost.bringToFront();
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _debuggerResumed: function(event)
|
| - {
|
| - var debuggerModel = /** @type {!WebInspector.DebuggerModel} */ (event.target);
|
| - var target = debuggerModel.target();
|
| - if (WebInspector.context.flavor(WebInspector.Target) !== target)
|
| - return;
|
| - this._paused = false;
|
| - this._clearInterface();
|
| - this._toggleDebuggerSidebarButton.setEnabled(true);
|
| - this._switchToPausedTargetTimeout = setTimeout(this._switchToPausedTarget.bind(this, debuggerModel), 500);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _debuggerWasEnabled: function(event)
|
| - {
|
| - var target = /** @type {!WebInspector.Target} */ (event.target.target());
|
| - if (WebInspector.context.flavor(WebInspector.Target) !== target)
|
| - return;
|
| -
|
| - this._updateDebuggerButtonsAndStatus();
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _debuggerReset: function(event)
|
| - {
|
| - this._debuggerResumed(event);
|
| - },
|
| -
|
| - /**
|
| - * @return {!WebInspector.Widget}
|
| - */
|
| - get visibleView()
|
| - {
|
| - return this._sourcesView.visibleView();
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - * @param {number=} lineNumber 0-based
|
| - * @param {number=} columnNumber
|
| - * @param {boolean=} omitFocus
|
| - */
|
| - showUISourceCode: function(uiSourceCode, lineNumber, columnNumber, omitFocus)
|
| - {
|
| - if (omitFocus) {
|
| - var wrapperShowing = WebInspector.SourcesPanel.WrapperView._instance && WebInspector.SourcesPanel.WrapperView._instance.isShowing();
|
| - if (!this.isShowing() && !wrapperShowing)
|
| - return;
|
| - } else {
|
| - this._showEditor();
|
| - }
|
| - this._sourcesView.showSourceLocation(uiSourceCode, lineNumber, columnNumber, omitFocus);
|
| - },
|
| -
|
| - _showEditor: function()
|
| - {
|
| - if (WebInspector.SourcesPanel.WrapperView._instance && WebInspector.SourcesPanel.WrapperView._instance.isShowing())
|
| - return;
|
| - this._setAsCurrentPanel();
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UILocation} uiLocation
|
| - * @param {boolean=} omitFocus
|
| - */
|
| - showUILocation: function(uiLocation, omitFocus)
|
| - {
|
| - this.showUISourceCode(uiLocation.uiSourceCode, uiLocation.lineNumber, uiLocation.columnNumber, omitFocus);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - * @param {boolean=} skipReveal
|
| - */
|
| - _revealInNavigator: function(uiSourceCode, skipReveal)
|
| - {
|
| - var binding = WebInspector.persistence.binding(uiSourceCode);
|
| - if (binding && binding.network === uiSourceCode)
|
| - uiSourceCode = binding.fileSystem;
|
| -
|
| - var extensions = self.runtime.extensions(WebInspector.NavigatorView);
|
| - Promise.all(extensions.map(extension => extension.instance())).then(filterNavigators.bind(this));
|
| -
|
| - /**
|
| - * @this {WebInspector.SourcesPanel}
|
| - * @param {!Array.<!Object>} objects
|
| - */
|
| - function filterNavigators(objects)
|
| - {
|
| - for (var i = 0; i < objects.length; ++i) {
|
| - var navigatorView = /** @type {!WebInspector.NavigatorView} */ (objects[i]);
|
| - var viewId = extensions[i].descriptor()["viewId"];
|
| - if (navigatorView.accept(uiSourceCode)) {
|
| - navigatorView.revealUISourceCode(uiSourceCode, true);
|
| - if (skipReveal)
|
| - this._navigatorTabbedLocation.tabbedPane().selectTab(viewId);
|
| - else
|
| - WebInspector.viewManager.showView(viewId);
|
| - }
|
| - }
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.ContextMenu} contextMenu
|
| - */
|
| - _populateNavigatorMenu: function(contextMenu)
|
| - {
|
| - var groupByFolderSetting = WebInspector.moduleSetting("navigatorGroupByFolder");
|
| - contextMenu.appendItemsAtLocation("navigatorMenu");
|
| - contextMenu.appendSeparator();
|
| - contextMenu.appendCheckboxItem(WebInspector.UIString("Group by folder"), () => groupByFolderSetting.set(!groupByFolderSetting.get()), groupByFolderSetting.get());
|
| - },
|
| -
|
| - /**
|
| - * @param {boolean} ignoreExecutionLineEvents
|
| - */
|
| - setIgnoreExecutionLineEvents: function(ignoreExecutionLineEvents)
|
| - {
|
| - this._ignoreExecutionLineEvents = ignoreExecutionLineEvents;
|
| - },
|
| + }
|
|
|
| - updateLastModificationTime: function()
|
| - {
|
| - this._lastModificationTime = window.performance.now();
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.LiveLocation} liveLocation
|
| - */
|
| - _executionLineChanged: function(liveLocation)
|
| - {
|
| - var uiLocation = liveLocation.uiLocation();
|
| - if (!uiLocation)
|
| - return;
|
| - this._sourcesView.clearCurrentExecutionLine();
|
| - this._sourcesView.setExecutionLocation(uiLocation);
|
| - if (window.performance.now() - this._lastModificationTime < WebInspector.SourcesPanel._lastModificationTimeout)
|
| - return;
|
| - this._sourcesView.showSourceLocation(uiLocation.uiSourceCode, uiLocation.lineNumber, uiLocation.columnNumber, undefined, true);
|
| - },
|
| -
|
| - _lastModificationTimeoutPassedForTest: function()
|
| - {
|
| - WebInspector.SourcesPanel._lastModificationTimeout = Number.MIN_VALUE;
|
| - },
|
| -
|
| - _updateLastModificationTimeForTest: function()
|
| - {
|
| - WebInspector.SourcesPanel._lastModificationTimeout = Number.MAX_VALUE;
|
| - },
|
| -
|
| - _callFrameChanged: function()
|
| - {
|
| - var callFrame = WebInspector.context.flavor(WebInspector.DebuggerModel.CallFrame);
|
| - if (!callFrame)
|
| - return;
|
| - if (this._executionLineLocation)
|
| - this._executionLineLocation.dispose();
|
| - this._executionLineLocation = WebInspector.debuggerWorkspaceBinding.createCallFrameLiveLocation(callFrame.location(), this._executionLineChanged.bind(this), this._liveLocationPool);
|
| - },
|
| -
|
| - _pauseOnExceptionEnabledChanged: function()
|
| - {
|
| - var enabled = WebInspector.moduleSetting("pauseOnExceptionEnabled").get();
|
| - this._pauseOnExceptionButton.setToggled(enabled);
|
| - this._pauseOnExceptionButton.setTitle(WebInspector.UIString(enabled ? "Don't pause on exceptions" : "Pause on exceptions"));
|
| - this._debugToolbarDrawer.classList.toggle("expanded", enabled);
|
| - },
|
| -
|
| - _updateDebuggerButtonsAndStatus: function()
|
| - {
|
| - var currentTarget = WebInspector.context.flavor(WebInspector.Target);
|
| - var currentDebuggerModel = WebInspector.DebuggerModel.fromTarget(currentTarget);
|
| - if (!currentDebuggerModel) {
|
| - this._togglePauseAction.setEnabled(false);
|
| - this._stepOverAction.setEnabled(false);
|
| - this._stepIntoAction.setEnabled(false);
|
| - this._stepOutAction.setEnabled(false);
|
| - } else if (this._paused) {
|
| - this._togglePauseAction.setToggled(true);
|
| - this._togglePauseAction.setEnabled(true);
|
| - this._stepOverAction.setEnabled(true);
|
| - this._stepIntoAction.setEnabled(true);
|
| - this._stepOutAction.setEnabled(true);
|
| - } else {
|
| - this._togglePauseAction.setToggled(false);
|
| - this._togglePauseAction.setEnabled(!currentDebuggerModel.isPausing());
|
| - this._stepOverAction.setEnabled(false);
|
| - this._stepIntoAction.setEnabled(false);
|
| - this._stepOutAction.setEnabled(false);
|
| - }
|
| -
|
| - var details = currentDebuggerModel ? currentDebuggerModel.debuggerPausedDetails() : null;
|
| - this._debuggerPausedMessage.render(details, WebInspector.debuggerWorkspaceBinding, WebInspector.breakpointManager);
|
| - },
|
| + /**
|
| + * @return {!WebInspector.SourcesPanel}
|
| + */
|
| + static instance() {
|
| + if (WebInspector.SourcesPanel._instance)
|
| + return WebInspector.SourcesPanel._instance;
|
| + return /** @type {!WebInspector.SourcesPanel} */ (self.runtime.sharedInstance(WebInspector.SourcesPanel));
|
| + }
|
|
|
| - _clearInterface: function()
|
| - {
|
| - this._sourcesView.clearCurrentExecutionLine();
|
| - this._updateDebuggerButtonsAndStatus();
|
| - WebInspector.context.setFlavor(WebInspector.DebuggerPausedDetails, null);
|
| + /**
|
| + * @param {!WebInspector.SourcesPanel} panel
|
| + */
|
| + static updateResizerAndSidebarButtons(panel) {
|
| + panel._sourcesView.leftToolbar().removeToolbarItems();
|
| + panel._sourcesView.rightToolbar().removeToolbarItems();
|
| + panel._sourcesView.bottomToolbar().removeToolbarItems();
|
| + var isInWrapper =
|
| + WebInspector.SourcesPanel.WrapperView.isShowing() && !WebInspector.inspectorView.isDrawerMinimized();
|
| + if (panel._splitWidget.isVertical() || isInWrapper)
|
| + panel._splitWidget.uninstallResizer(panel._sourcesView.toolbarContainerElement());
|
| + else
|
| + panel._splitWidget.installResizer(panel._sourcesView.toolbarContainerElement());
|
| + if (!isInWrapper) {
|
| + panel._sourcesView.leftToolbar().appendToolbarItem(panel._toggleNavigatorSidebarButton);
|
| + if (panel._splitWidget.isVertical())
|
| + panel._sourcesView.rightToolbar().appendToolbarItem(panel._toggleDebuggerSidebarButton);
|
| + else
|
| + panel._sourcesView.bottomToolbar().appendToolbarItem(panel._toggleDebuggerSidebarButton);
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {!WebInspector.Target} target
|
| + */
|
| + targetAdded(target) {
|
| + var hasThreads = WebInspector.targetManager.targets(WebInspector.Target.Capability.JS).length > 1;
|
| + if (hasThreads && !this._threadsSidebarPane) {
|
| + this._threadsSidebarPane = /** @type {!WebInspector.View} */ (WebInspector.viewManager.view('sources.threads'));
|
| + if (this._sidebarPaneStack) {
|
| + this._sidebarPaneStack.showView(
|
| + this._threadsSidebarPane, this._splitWidget.isVertical() ? this._watchSidebarPane : this._callstackPane);
|
| + }
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {!WebInspector.Target} target
|
| + */
|
| + targetRemoved(target) {
|
| + }
|
| +
|
| + /**
|
| + * @param {?WebInspector.Target} target
|
| + */
|
| + _setTarget(target) {
|
| + if (!target)
|
| + return;
|
| + var debuggerModel = WebInspector.DebuggerModel.fromTarget(target);
|
| + if (!debuggerModel)
|
| + return;
|
| +
|
| + if (debuggerModel.isPaused()) {
|
| + this._showDebuggerPausedDetails(
|
| + /** @type {!WebInspector.DebuggerPausedDetails} */ (debuggerModel.debuggerPausedDetails()));
|
| + } else {
|
| + this._paused = false;
|
| + this._clearInterface();
|
| + this._toggleDebuggerSidebarButton.setEnabled(true);
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _onCurrentTargetChanged(event) {
|
| + var target = /** @type {?WebInspector.Target} */ (event.data);
|
| + this._setTarget(target);
|
| + }
|
| + /**
|
| + * @return {boolean}
|
| + */
|
| + paused() {
|
| + return this._paused;
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + wasShown() {
|
| + WebInspector.context.setFlavor(WebInspector.SourcesPanel, this);
|
| + super.wasShown();
|
| + var wrapper = WebInspector.SourcesPanel.WrapperView._instance;
|
| + if (wrapper && wrapper.isShowing()) {
|
| + WebInspector.inspectorView.setDrawerMinimized(true);
|
| + WebInspector.SourcesPanel.updateResizerAndSidebarButtons(this);
|
| + }
|
| + this.editorView.setMainWidget(this._sourcesView);
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + willHide() {
|
| + super.willHide();
|
| + WebInspector.context.setFlavor(WebInspector.SourcesPanel, null);
|
| + if (WebInspector.SourcesPanel.WrapperView.isShowing()) {
|
| + WebInspector.SourcesPanel.WrapperView._instance._showViewInWrapper();
|
| + WebInspector.inspectorView.setDrawerMinimized(false);
|
| + WebInspector.SourcesPanel.updateResizerAndSidebarButtons(this);
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {string} locationName
|
| + * @return {?WebInspector.ViewLocation}
|
| + */
|
| + resolveLocation(locationName) {
|
| + if (locationName === 'sources-sidebar')
|
| + return this._sidebarPaneStack;
|
| + else
|
| + return this._navigatorTabbedLocation;
|
| + }
|
| +
|
| + /**
|
| + * @return {boolean}
|
| + */
|
| + _ensureSourcesViewVisible() {
|
| + if (WebInspector.SourcesPanel.WrapperView.isShowing())
|
| + return true;
|
| + if (!WebInspector.inspectorView.canSelectPanel('sources'))
|
| + return false;
|
| + WebInspector.viewManager.showView('sources');
|
| + return true;
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + onResize() {
|
| + if (WebInspector.moduleSetting('sidebarPosition').get() === 'auto')
|
| + this.element.window().requestAnimationFrame(this._updateSidebarPosition.bind(this)); // Do not force layout.
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @return {!WebInspector.SearchableView}
|
| + */
|
| + searchableView() {
|
| + return this._sourcesView.searchableView();
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _debuggerPaused(event) {
|
| + var details = /** @type {!WebInspector.DebuggerPausedDetails} */ (event.data);
|
| + if (!this._paused)
|
| + this._setAsCurrentPanel();
|
| +
|
| + if (WebInspector.context.flavor(WebInspector.Target) === details.target())
|
| + this._showDebuggerPausedDetails(details);
|
| + else if (!this._paused)
|
| + WebInspector.context.setFlavor(WebInspector.Target, details.target());
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.DebuggerPausedDetails} details
|
| + */
|
| + _showDebuggerPausedDetails(details) {
|
| + this._paused = true;
|
| + this._updateDebuggerButtonsAndStatus();
|
| + WebInspector.context.setFlavor(WebInspector.DebuggerPausedDetails, details);
|
| + this._toggleDebuggerSidebarButton.setEnabled(false);
|
| + window.focus();
|
| + InspectorFrontendHost.bringToFront();
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _debuggerResumed(event) {
|
| + var debuggerModel = /** @type {!WebInspector.DebuggerModel} */ (event.target);
|
| + var target = debuggerModel.target();
|
| + if (WebInspector.context.flavor(WebInspector.Target) !== target)
|
| + return;
|
| + this._paused = false;
|
| + this._clearInterface();
|
| + this._toggleDebuggerSidebarButton.setEnabled(true);
|
| + this._switchToPausedTargetTimeout = setTimeout(this._switchToPausedTarget.bind(this, debuggerModel), 500);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _debuggerWasEnabled(event) {
|
| + var target = /** @type {!WebInspector.Target} */ (event.target.target());
|
| + if (WebInspector.context.flavor(WebInspector.Target) !== target)
|
| + return;
|
|
|
| - if (this._switchToPausedTargetTimeout)
|
| - clearTimeout(this._switchToPausedTargetTimeout);
|
| - this._liveLocationPool.disposeAll();
|
| - },
|
| + this._updateDebuggerButtonsAndStatus();
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _debuggerReset(event) {
|
| + this._debuggerResumed(event);
|
| + }
|
| +
|
| + /**
|
| + * @return {?WebInspector.Widget}
|
| + */
|
| + get visibleView() {
|
| + return this._sourcesView.visibleView();
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + * @param {number=} lineNumber 0-based
|
| + * @param {number=} columnNumber
|
| + * @param {boolean=} omitFocus
|
| + */
|
| + showUISourceCode(uiSourceCode, lineNumber, columnNumber, omitFocus) {
|
| + if (omitFocus) {
|
| + var wrapperShowing = WebInspector.SourcesPanel.WrapperView._instance &&
|
| + WebInspector.SourcesPanel.WrapperView._instance.isShowing();
|
| + if (!this.isShowing() && !wrapperShowing)
|
| + return;
|
| + } else {
|
| + this._showEditor();
|
| + }
|
| + this._sourcesView.showSourceLocation(uiSourceCode, lineNumber, columnNumber, omitFocus);
|
| + }
|
| +
|
| + _showEditor() {
|
| + if (WebInspector.SourcesPanel.WrapperView._instance && WebInspector.SourcesPanel.WrapperView._instance.isShowing())
|
| + return;
|
| + this._setAsCurrentPanel();
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UILocation} uiLocation
|
| + * @param {boolean=} omitFocus
|
| + */
|
| + showUILocation(uiLocation, omitFocus) {
|
| + this.showUISourceCode(uiLocation.uiSourceCode, uiLocation.lineNumber, uiLocation.columnNumber, omitFocus);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + * @param {boolean=} skipReveal
|
| + */
|
| + _revealInNavigator(uiSourceCode, skipReveal) {
|
| + var binding = WebInspector.persistence.binding(uiSourceCode);
|
| + if (binding && binding.network === uiSourceCode)
|
| + uiSourceCode = binding.fileSystem;
|
| +
|
| + var extensions = self.runtime.extensions(WebInspector.NavigatorView);
|
| + Promise.all(extensions.map(extension => extension.instance())).then(filterNavigators.bind(this));
|
|
|
| /**
|
| - * @param {!WebInspector.DebuggerModel} debuggerModel
|
| + * @this {WebInspector.SourcesPanel}
|
| + * @param {!Array.<!Object>} objects
|
| */
|
| - _switchToPausedTarget: function(debuggerModel)
|
| - {
|
| - delete this._switchToPausedTargetTimeout;
|
| - if (this._paused)
|
| - return;
|
| - var target = WebInspector.context.flavor(WebInspector.Target);
|
| - if (debuggerModel.isPaused())
|
| - return;
|
| - var debuggerModels = WebInspector.DebuggerModel.instances();
|
| - for (var i = 0; i < debuggerModels.length; ++i) {
|
| - if (debuggerModels[i].isPaused()) {
|
| - WebInspector.context.setFlavor(WebInspector.Target, debuggerModels[i].target());
|
| - break;
|
| - }
|
| + function filterNavigators(objects) {
|
| + for (var i = 0; i < objects.length; ++i) {
|
| + var navigatorView = /** @type {!WebInspector.NavigatorView} */ (objects[i]);
|
| + var viewId = extensions[i].descriptor()['viewId'];
|
| + if (navigatorView.accept(uiSourceCode)) {
|
| + navigatorView.revealUISourceCode(uiSourceCode, true);
|
| + if (skipReveal)
|
| + this._navigatorTabbedLocation.tabbedPane().selectTab(viewId);
|
| + else
|
| + WebInspector.viewManager.showView(viewId);
|
| }
|
| - },
|
| -
|
| - _togglePauseOnExceptions: function()
|
| - {
|
| - WebInspector.moduleSetting("pauseOnExceptionEnabled").set(!this._pauseOnExceptionButton.toggled());
|
| - },
|
| + }
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.ContextMenu} contextMenu
|
| + */
|
| + _populateNavigatorMenu(contextMenu) {
|
| + var groupByFolderSetting = WebInspector.moduleSetting('navigatorGroupByFolder');
|
| + contextMenu.appendItemsAtLocation('navigatorMenu');
|
| + contextMenu.appendSeparator();
|
| + contextMenu.appendCheckboxItem(
|
| + WebInspector.UIString('Group by folder'), () => groupByFolderSetting.set(!groupByFolderSetting.get()),
|
| + groupByFolderSetting.get());
|
| + }
|
| +
|
| + /**
|
| + * @param {boolean} ignoreExecutionLineEvents
|
| + */
|
| + setIgnoreExecutionLineEvents(ignoreExecutionLineEvents) {
|
| + this._ignoreExecutionLineEvents = ignoreExecutionLineEvents;
|
| + }
|
| +
|
| + updateLastModificationTime() {
|
| + this._lastModificationTime = window.performance.now();
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.LiveLocation} liveLocation
|
| + */
|
| + _executionLineChanged(liveLocation) {
|
| + var uiLocation = liveLocation.uiLocation();
|
| + if (!uiLocation)
|
| + return;
|
| + this._sourcesView.clearCurrentExecutionLine();
|
| + this._sourcesView.setExecutionLocation(uiLocation);
|
| + if (window.performance.now() - this._lastModificationTime < WebInspector.SourcesPanel._lastModificationTimeout)
|
| + return;
|
| + this._sourcesView.showSourceLocation(
|
| + uiLocation.uiSourceCode, uiLocation.lineNumber, uiLocation.columnNumber, undefined, true);
|
| + }
|
| +
|
| + _lastModificationTimeoutPassedForTest() {
|
| + WebInspector.SourcesPanel._lastModificationTimeout = Number.MIN_VALUE;
|
| + }
|
| +
|
| + _updateLastModificationTimeForTest() {
|
| + WebInspector.SourcesPanel._lastModificationTimeout = Number.MAX_VALUE;
|
| + }
|
| +
|
| + _callFrameChanged() {
|
| + var callFrame = WebInspector.context.flavor(WebInspector.DebuggerModel.CallFrame);
|
| + if (!callFrame)
|
| + return;
|
| + if (this._executionLineLocation)
|
| + this._executionLineLocation.dispose();
|
| + this._executionLineLocation = WebInspector.debuggerWorkspaceBinding.createCallFrameLiveLocation(
|
| + callFrame.location(), this._executionLineChanged.bind(this), this._liveLocationPool);
|
| + }
|
| +
|
| + _pauseOnExceptionEnabledChanged() {
|
| + var enabled = WebInspector.moduleSetting('pauseOnExceptionEnabled').get();
|
| + this._pauseOnExceptionButton.setToggled(enabled);
|
| + this._pauseOnExceptionButton.setTitle(
|
| + WebInspector.UIString(enabled ? 'Don\'t pause on exceptions' : 'Pause on exceptions'));
|
| + this._debugToolbarDrawer.classList.toggle('expanded', enabled);
|
| + }
|
| +
|
| + _updateDebuggerButtonsAndStatus() {
|
| + var currentTarget = WebInspector.context.flavor(WebInspector.Target);
|
| + var currentDebuggerModel = WebInspector.DebuggerModel.fromTarget(currentTarget);
|
| + if (!currentDebuggerModel) {
|
| + this._togglePauseAction.setEnabled(false);
|
| + this._stepOverAction.setEnabled(false);
|
| + this._stepIntoAction.setEnabled(false);
|
| + this._stepOutAction.setEnabled(false);
|
| + } else if (this._paused) {
|
| + this._togglePauseAction.setToggled(true);
|
| + this._togglePauseAction.setEnabled(true);
|
| + this._stepOverAction.setEnabled(true);
|
| + this._stepIntoAction.setEnabled(true);
|
| + this._stepOutAction.setEnabled(true);
|
| + } else {
|
| + this._togglePauseAction.setToggled(false);
|
| + this._togglePauseAction.setEnabled(!currentDebuggerModel.isPausing());
|
| + this._stepOverAction.setEnabled(false);
|
| + this._stepIntoAction.setEnabled(false);
|
| + this._stepOutAction.setEnabled(false);
|
| + }
|
|
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - _runSnippet: function()
|
| - {
|
| - var uiSourceCode = this._sourcesView.currentUISourceCode();
|
| - if (uiSourceCode.project().type() !== WebInspector.projectTypes.Snippets)
|
| - return false;
|
| + var details = currentDebuggerModel ? currentDebuggerModel.debuggerPausedDetails() : null;
|
| + this._debuggerPausedMessage.render(details, WebInspector.debuggerWorkspaceBinding, WebInspector.breakpointManager);
|
| + }
|
|
|
| - var currentExecutionContext = WebInspector.context.flavor(WebInspector.ExecutionContext);
|
| - if (!currentExecutionContext)
|
| - return false;
|
| + _clearInterface() {
|
| + this._sourcesView.clearCurrentExecutionLine();
|
| + this._updateDebuggerButtonsAndStatus();
|
| + WebInspector.context.setFlavor(WebInspector.DebuggerPausedDetails, null);
|
| +
|
| + if (this._switchToPausedTargetTimeout)
|
| + clearTimeout(this._switchToPausedTargetTimeout);
|
| + this._liveLocationPool.disposeAll();
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.DebuggerModel} debuggerModel
|
| + */
|
| + _switchToPausedTarget(debuggerModel) {
|
| + delete this._switchToPausedTargetTimeout;
|
| + if (this._paused)
|
| + return;
|
| + var target = WebInspector.context.flavor(WebInspector.Target);
|
| + if (debuggerModel.isPaused())
|
| + return;
|
| + var debuggerModels = WebInspector.DebuggerModel.instances();
|
| + for (var i = 0; i < debuggerModels.length; ++i) {
|
| + if (debuggerModels[i].isPaused()) {
|
| + WebInspector.context.setFlavor(WebInspector.Target, debuggerModels[i].target());
|
| + break;
|
| + }
|
| + }
|
| + }
|
| +
|
| + _togglePauseOnExceptions() {
|
| + WebInspector.moduleSetting('pauseOnExceptionEnabled').set(!this._pauseOnExceptionButton.toggled());
|
| + }
|
| +
|
| + /**
|
| + * @return {boolean}
|
| + */
|
| + _runSnippet() {
|
| + var uiSourceCode = this._sourcesView.currentUISourceCode();
|
| + if (uiSourceCode.project().type() !== WebInspector.projectTypes.Snippets)
|
| + return false;
|
| +
|
| + var currentExecutionContext = WebInspector.context.flavor(WebInspector.ExecutionContext);
|
| + if (!currentExecutionContext)
|
| + return false;
|
| +
|
| + WebInspector.scriptSnippetModel.evaluateScriptSnippet(currentExecutionContext, uiSourceCode);
|
| + return true;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _editorSelected(event) {
|
| + var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data);
|
| + this._editorChanged(uiSourceCode);
|
| + if (this.editorView.mainWidget() && WebInspector.moduleSetting('autoRevealInNavigator').get())
|
| + this._revealInNavigator(uiSourceCode, true);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _editorClosed(event) {
|
| + var wasSelected = /** @type {boolean} */ (event.data.wasSelected);
|
| + if (wasSelected)
|
| + this._editorChanged(null);
|
| + }
|
| +
|
| + /**
|
| + * @param {?WebInspector.UISourceCode} uiSourceCode
|
| + */
|
| + _editorChanged(uiSourceCode) {
|
| + var isSnippet = uiSourceCode && uiSourceCode.project().type() === WebInspector.projectTypes.Snippets;
|
| + this._runSnippetButton.setVisible(isSnippet);
|
| + }
|
| +
|
| + /**
|
| + * @return {boolean}
|
| + */
|
| + _togglePause() {
|
| + var target = WebInspector.context.flavor(WebInspector.Target);
|
| + if (!target)
|
| + return true;
|
| + var debuggerModel = WebInspector.DebuggerModel.fromTarget(target);
|
| + if (!debuggerModel)
|
| + return true;
|
| +
|
| + if (this._paused) {
|
| + this._paused = false;
|
| + debuggerModel.resume();
|
| + } else {
|
| + // Make sure pauses didn't stick skipped.
|
| + debuggerModel.pause();
|
| + }
|
|
|
| - WebInspector.scriptSnippetModel.evaluateScriptSnippet(currentExecutionContext, uiSourceCode);
|
| - return true;
|
| - },
|
| + this._clearInterface();
|
| + return true;
|
| + }
|
| +
|
| + /**
|
| + * @return {?WebInspector.DebuggerModel}
|
| + */
|
| + _prepareToResume() {
|
| + if (!this._paused)
|
| + return null;
|
| +
|
| + this._paused = false;
|
| +
|
| + this._clearInterface();
|
| + var target = WebInspector.context.flavor(WebInspector.Target);
|
| + return target ? WebInspector.DebuggerModel.fromTarget(target) : null;
|
| + }
|
| +
|
| + /**
|
| + * @return {boolean}
|
| + */
|
| + _longResume() {
|
| + var debuggerModel = this._prepareToResume();
|
| + if (!debuggerModel)
|
| + return true;
|
| +
|
| + debuggerModel.skipAllPausesUntilReloadOrTimeout(500);
|
| + debuggerModel.resume();
|
| + return true;
|
| + }
|
| +
|
| + /**
|
| + * @return {boolean}
|
| + */
|
| + _stepOver() {
|
| + var debuggerModel = this._prepareToResume();
|
| + if (!debuggerModel)
|
| + return true;
|
| +
|
| + debuggerModel.stepOver();
|
| + return true;
|
| + }
|
| +
|
| + /**
|
| + * @return {boolean}
|
| + */
|
| + _stepInto() {
|
| + var debuggerModel = this._prepareToResume();
|
| + if (!debuggerModel)
|
| + return true;
|
| +
|
| + debuggerModel.stepInto();
|
| + return true;
|
| + }
|
| +
|
| + /**
|
| + * @return {boolean}
|
| + */
|
| + _stepOut() {
|
| + var debuggerModel = this._prepareToResume();
|
| + if (!debuggerModel)
|
| + return true;
|
| +
|
| + debuggerModel.stepOut();
|
| + return true;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UILocation} uiLocation
|
| + */
|
| + _continueToLocation(uiLocation) {
|
| + var executionContext = WebInspector.context.flavor(WebInspector.ExecutionContext);
|
| + if (!executionContext)
|
| + return;
|
| +
|
| + // Always use 0 column.
|
| + var rawLocation = WebInspector.debuggerWorkspaceBinding.uiLocationToRawLocation(
|
| + executionContext.target(), uiLocation.uiSourceCode, uiLocation.lineNumber, 0);
|
| + if (!rawLocation)
|
| + return;
|
| +
|
| + if (!this._prepareToResume())
|
| + return;
|
| +
|
| + rawLocation.continueToLocation();
|
| + }
|
| +
|
| + _toggleBreakpointsActive() {
|
| + WebInspector.breakpointManager.setBreakpointsActive(!WebInspector.breakpointManager.breakpointsActive());
|
| + }
|
| +
|
| + _breakpointsActiveStateChanged(event) {
|
| + var active = event.data;
|
| + this._toggleBreakpointsActiveAction.setToggled(!active);
|
| + this._sourcesView.toggleBreakpointsActiveState(active);
|
| + }
|
| +
|
| + /**
|
| + * @return {!WebInspector.Toolbar}
|
| + */
|
| + _createDebugToolbar() {
|
| + var debugToolbar = new WebInspector.Toolbar('scripts-debug-toolbar');
|
| +
|
| + this._runSnippetButton = WebInspector.Toolbar.createActionButton(this._runSnippetAction);
|
| + debugToolbar.appendToolbarItem(this._runSnippetButton);
|
| + this._runSnippetButton.setVisible(false);
|
| +
|
| + var longResumeButton = new WebInspector.ToolbarButton(
|
| + WebInspector.UIString('Resume with all pauses blocked for 500 ms'), 'play-toolbar-item');
|
| + longResumeButton.addEventListener('click', this._longResume.bind(this), this);
|
| + debugToolbar.appendToolbarItem(
|
| + WebInspector.Toolbar.createActionButton(this._togglePauseAction, [longResumeButton], []));
|
| +
|
| + debugToolbar.appendToolbarItem(WebInspector.Toolbar.createActionButton(this._stepOverAction));
|
| + debugToolbar.appendToolbarItem(WebInspector.Toolbar.createActionButton(this._stepIntoAction));
|
| + debugToolbar.appendToolbarItem(WebInspector.Toolbar.createActionButton(this._stepOutAction));
|
| + debugToolbar.appendSeparator();
|
| + debugToolbar.appendToolbarItem(WebInspector.Toolbar.createActionButton(this._toggleBreakpointsActiveAction));
|
| +
|
| + this._pauseOnExceptionButton = new WebInspector.ToolbarToggle('', 'pause-on-exceptions-toolbar-item');
|
| + this._pauseOnExceptionButton.addEventListener('click', this._togglePauseOnExceptions, this);
|
| + debugToolbar.appendToolbarItem(this._pauseOnExceptionButton);
|
| +
|
| + debugToolbar.appendSeparator();
|
| + debugToolbar.appendToolbarItem(new WebInspector.ToolbarCheckbox(
|
| + WebInspector.UIString('Async'), WebInspector.UIString('Capture async stack traces'),
|
| + WebInspector.moduleSetting('enableAsyncStackTraces')));
|
| +
|
| + return debugToolbar;
|
| + }
|
| +
|
| + _createDebugToolbarDrawer() {
|
| + var debugToolbarDrawer = createElementWithClass('div', 'scripts-debug-toolbar-drawer');
|
| +
|
| + var label = WebInspector.UIString('Pause On Caught Exceptions');
|
| + var setting = WebInspector.moduleSetting('pauseOnCaughtException');
|
| + debugToolbarDrawer.appendChild(WebInspector.SettingsUI.createSettingCheckbox(label, setting, true));
|
| +
|
| + return debugToolbarDrawer;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + */
|
| + _showLocalHistory(uiSourceCode) {
|
| + WebInspector.RevisionHistoryView.showHistory(uiSourceCode);
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {!Event} event
|
| + * @param {!WebInspector.ContextMenu} contextMenu
|
| + * @param {!Object} target
|
| + */
|
| + appendApplicableItems(event, contextMenu, target) {
|
| + this._appendUISourceCodeItems(event, contextMenu, target);
|
| + this._appendUISourceCodeFrameItems(event, contextMenu, target);
|
| + this.appendUILocationItems(contextMenu, target);
|
| + this._appendRemoteObjectItems(contextMenu, target);
|
| + this._appendNetworkRequestItems(contextMenu, target);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + */
|
| + mapFileSystemToNetwork(uiSourceCode) {
|
| + WebInspector.SelectUISourceCodeForProjectTypesDialog.show(
|
| + uiSourceCode.name(), [WebInspector.projectTypes.Network, WebInspector.projectTypes.ContentScripts],
|
| + mapFileSystemToNetwork.bind(this));
|
|
|
| /**
|
| - * @param {!WebInspector.Event} event
|
| + * @param {?WebInspector.UISourceCode} networkUISourceCode
|
| + * @this {WebInspector.SourcesPanel}
|
| */
|
| - _editorSelected: function(event)
|
| - {
|
| - var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data);
|
| - this._editorChanged(uiSourceCode);
|
| - if (this.editorView.mainWidget() && WebInspector.moduleSetting("autoRevealInNavigator").get())
|
| - this._revealInNavigator(uiSourceCode, true);
|
| - },
|
| + function mapFileSystemToNetwork(networkUISourceCode) {
|
| + if (!networkUISourceCode)
|
| + return;
|
| + this._networkMapping.addMapping(networkUISourceCode, uiSourceCode);
|
| + }
|
| + }
|
|
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _editorClosed: function(event)
|
| - {
|
| - var wasSelected = /** @type {boolean} */ (event.data.wasSelected);
|
| - if (wasSelected)
|
| - this._editorChanged(null);
|
| - },
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} networkUISourceCode
|
| + */
|
| + mapNetworkToFileSystem(networkUISourceCode) {
|
| + WebInspector.SelectUISourceCodeForProjectTypesDialog.show(
|
| + networkUISourceCode.name(), [WebInspector.projectTypes.FileSystem], mapNetworkToFileSystem.bind(this));
|
|
|
| /**
|
| * @param {?WebInspector.UISourceCode} uiSourceCode
|
| + * @this {WebInspector.SourcesPanel}
|
| */
|
| - _editorChanged: function(uiSourceCode)
|
| - {
|
| - var isSnippet = uiSourceCode && uiSourceCode.project().type() === WebInspector.projectTypes.Snippets;
|
| - this._runSnippetButton.setVisible(isSnippet);
|
| - },
|
| -
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - _togglePause: function()
|
| - {
|
| - var target = WebInspector.context.flavor(WebInspector.Target);
|
| - if (!target)
|
| - return true;
|
| - var debuggerModel = WebInspector.DebuggerModel.fromTarget(target);
|
| - if (!debuggerModel)
|
| - return true;
|
| -
|
| - if (this._paused) {
|
| - this._paused = false;
|
| - debuggerModel.resume();
|
| - } else {
|
| - // Make sure pauses didn't stick skipped.
|
| - debuggerModel.pause();
|
| - }
|
| -
|
| - this._clearInterface();
|
| - return true;
|
| - },
|
| -
|
| - /**
|
| - * @return {?WebInspector.DebuggerModel}
|
| - */
|
| - _prepareToResume: function()
|
| - {
|
| - if (!this._paused)
|
| - return null;
|
| -
|
| - this._paused = false;
|
| -
|
| - this._clearInterface();
|
| - var target = WebInspector.context.flavor(WebInspector.Target);
|
| - return target ? WebInspector.DebuggerModel.fromTarget(target) : null;
|
| - },
|
| -
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - _longResume: function()
|
| - {
|
| - var debuggerModel = this._prepareToResume();
|
| - if (!debuggerModel)
|
| - return true;
|
| -
|
| - debuggerModel.skipAllPausesUntilReloadOrTimeout(500);
|
| - debuggerModel.resume();
|
| - return true;
|
| - },
|
| -
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - _stepOver: function()
|
| - {
|
| - var debuggerModel = this._prepareToResume();
|
| - if (!debuggerModel)
|
| - return true;
|
| -
|
| - debuggerModel.stepOver();
|
| - return true;
|
| - },
|
| -
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - _stepInto: function()
|
| - {
|
| - var debuggerModel = this._prepareToResume();
|
| - if (!debuggerModel)
|
| - return true;
|
| -
|
| - debuggerModel.stepInto();
|
| - return true;
|
| - },
|
| -
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - _stepOut: function()
|
| - {
|
| - var debuggerModel = this._prepareToResume();
|
| - if (!debuggerModel)
|
| - return true;
|
| -
|
| - debuggerModel.stepOut();
|
| - return true;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UILocation} uiLocation
|
| - */
|
| - _continueToLocation: function(uiLocation)
|
| - {
|
| - var executionContext = WebInspector.context.flavor(WebInspector.ExecutionContext);
|
| - if (!executionContext)
|
| - return;
|
| -
|
| - // Always use 0 column.
|
| - var rawLocation = WebInspector.debuggerWorkspaceBinding.uiLocationToRawLocation(executionContext.target(), uiLocation.uiSourceCode, uiLocation.lineNumber, 0);
|
| - if (!rawLocation)
|
| - return;
|
| -
|
| - if (!this._prepareToResume())
|
| - return;
|
| -
|
| - rawLocation.continueToLocation();
|
| - },
|
| -
|
| - _toggleBreakpointsActive: function()
|
| - {
|
| - WebInspector.breakpointManager.setBreakpointsActive(!WebInspector.breakpointManager.breakpointsActive());
|
| - },
|
| -
|
| - _breakpointsActiveStateChanged: function(event)
|
| - {
|
| - var active = event.data;
|
| - this._toggleBreakpointsActiveAction.setToggled(!active);
|
| - this._sourcesView.toggleBreakpointsActiveState(active);
|
| - },
|
| -
|
| - /**
|
| - * @return {!WebInspector.Toolbar}
|
| - */
|
| - _createDebugToolbar: function()
|
| - {
|
| - var debugToolbar = new WebInspector.Toolbar("scripts-debug-toolbar");
|
| -
|
| - this._runSnippetButton = WebInspector.Toolbar.createActionButton(this._runSnippetAction);
|
| - debugToolbar.appendToolbarItem(this._runSnippetButton);
|
| - this._runSnippetButton.setVisible(false);
|
| -
|
| - var longResumeButton = new WebInspector.ToolbarButton(WebInspector.UIString("Resume with all pauses blocked for 500 ms"), "play-toolbar-item");
|
| - longResumeButton.addEventListener("click", this._longResume.bind(this), this);
|
| - debugToolbar.appendToolbarItem(WebInspector.Toolbar.createActionButton(this._togglePauseAction, [longResumeButton], []));
|
| -
|
| - debugToolbar.appendToolbarItem(WebInspector.Toolbar.createActionButton(this._stepOverAction));
|
| - debugToolbar.appendToolbarItem(WebInspector.Toolbar.createActionButton(this._stepIntoAction));
|
| - debugToolbar.appendToolbarItem(WebInspector.Toolbar.createActionButton(this._stepOutAction));
|
| - debugToolbar.appendSeparator();
|
| - debugToolbar.appendToolbarItem(WebInspector.Toolbar.createActionButton(this._toggleBreakpointsActiveAction));
|
| -
|
| - this._pauseOnExceptionButton = new WebInspector.ToolbarToggle("", "pause-on-exceptions-toolbar-item");
|
| - this._pauseOnExceptionButton.addEventListener("click", this._togglePauseOnExceptions, this);
|
| - debugToolbar.appendToolbarItem(this._pauseOnExceptionButton);
|
| -
|
| - debugToolbar.appendSeparator();
|
| - debugToolbar.appendToolbarItem(new WebInspector.ToolbarCheckbox(WebInspector.UIString("Async"), WebInspector.UIString("Capture async stack traces"), WebInspector.moduleSetting("enableAsyncStackTraces")));
|
| -
|
| - return debugToolbar;
|
| - },
|
| -
|
| - _createDebugToolbarDrawer: function()
|
| - {
|
| - var debugToolbarDrawer = createElementWithClass("div", "scripts-debug-toolbar-drawer");
|
| -
|
| - var label = WebInspector.UIString("Pause On Caught Exceptions");
|
| - var setting = WebInspector.moduleSetting("pauseOnCaughtException");
|
| - debugToolbarDrawer.appendChild(WebInspector.SettingsUI.createSettingCheckbox(label, setting, true));
|
| -
|
| - return debugToolbarDrawer;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - */
|
| - _showLocalHistory: function(uiSourceCode)
|
| - {
|
| - WebInspector.RevisionHistoryView.showHistory(uiSourceCode);
|
| - },
|
| -
|
| - /**
|
| - * @override
|
| - * @param {!Event} event
|
| - * @param {!WebInspector.ContextMenu} contextMenu
|
| - * @param {!Object} target
|
| - */
|
| - appendApplicableItems: function(event, contextMenu, target)
|
| - {
|
| - this._appendUISourceCodeItems(event, contextMenu, target);
|
| - this._appendUISourceCodeFrameItems(event, contextMenu, target);
|
| - this.appendUILocationItems(contextMenu, target);
|
| - this._appendRemoteObjectItems(contextMenu, target);
|
| - this._appendNetworkRequestItems(contextMenu, target);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - */
|
| - mapFileSystemToNetwork: function(uiSourceCode)
|
| - {
|
| - WebInspector.SelectUISourceCodeForProjectTypesDialog.show(uiSourceCode.name(), [WebInspector.projectTypes.Network, WebInspector.projectTypes.ContentScripts], mapFileSystemToNetwork.bind(this));
|
| -
|
| - /**
|
| - * @param {?WebInspector.UISourceCode} networkUISourceCode
|
| - * @this {WebInspector.SourcesPanel}
|
| - */
|
| - function mapFileSystemToNetwork(networkUISourceCode)
|
| - {
|
| - if (!networkUISourceCode)
|
| - return;
|
| - this._networkMapping.addMapping(networkUISourceCode, uiSourceCode);
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UISourceCode} networkUISourceCode
|
| - */
|
| - mapNetworkToFileSystem: function(networkUISourceCode)
|
| - {
|
| - WebInspector.SelectUISourceCodeForProjectTypesDialog.show(networkUISourceCode.name(), [WebInspector.projectTypes.FileSystem], mapNetworkToFileSystem.bind(this));
|
| -
|
| - /**
|
| - * @param {?WebInspector.UISourceCode} uiSourceCode
|
| - * @this {WebInspector.SourcesPanel}
|
| - */
|
| - function mapNetworkToFileSystem(uiSourceCode)
|
| - {
|
| - if (!uiSourceCode)
|
| - return;
|
| - this._networkMapping.addMapping(networkUISourceCode, uiSourceCode);
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - */
|
| - _removeNetworkMapping: function(uiSourceCode)
|
| - {
|
| - this._networkMapping.removeMapping(uiSourceCode);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.ContextMenu} contextMenu
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - */
|
| - _appendUISourceCodeMappingItems: function(contextMenu, uiSourceCode)
|
| - {
|
| - WebInspector.NavigatorView.appendAddFolderItem(contextMenu);
|
| -
|
| - if (Runtime.experiments.isEnabled("persistence2"))
|
| - return;
|
| - if (uiSourceCode.project().type() === WebInspector.projectTypes.FileSystem) {
|
| - var binding = WebInspector.persistence.binding(uiSourceCode);
|
| - if (!binding)
|
| - contextMenu.appendItem(WebInspector.UIString.capitalize("Map to ^network ^resource\u2026"), this.mapFileSystemToNetwork.bind(this, uiSourceCode));
|
| - else
|
| - contextMenu.appendItem(WebInspector.UIString.capitalize("Remove ^network ^mapping"), this._removeNetworkMapping.bind(this, binding.network));
|
| - }
|
| -
|
| - /**
|
| - * @param {!WebInspector.Project} project
|
| - */
|
| - function filterProject(project)
|
| - {
|
| - return project.type() === WebInspector.projectTypes.FileSystem;
|
| - }
|
| -
|
| - if (uiSourceCode.project().type() === WebInspector.projectTypes.Network || uiSourceCode.project().type() === WebInspector.projectTypes.ContentScripts) {
|
| - if (!this._workspace.projects().filter(filterProject).length)
|
| - return;
|
| - if (this._networkMapping.uiSourceCodeForURLForAnyTarget(uiSourceCode.url()) === uiSourceCode)
|
| - contextMenu.appendItem(WebInspector.UIString.capitalize("Map to ^file ^system ^resource\u2026"), this.mapNetworkToFileSystem.bind(this, uiSourceCode));
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {!Event} event
|
| - * @param {!WebInspector.ContextMenu} contextMenu
|
| - * @param {!Object} target
|
| - */
|
| - _appendUISourceCodeItems: function(event, contextMenu, target)
|
| - {
|
| - if (!(target instanceof WebInspector.UISourceCode))
|
| - return;
|
| -
|
| - var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (target);
|
| - var projectType = uiSourceCode.project().type();
|
| -
|
| - if (projectType !== WebInspector.projectTypes.Debugger && !event.target.isSelfOrDescendant(this._navigatorTabbedLocation.widget().element)) {
|
| - contextMenu.appendItem(WebInspector.UIString.capitalize("Reveal in ^navigator"), this._handleContextMenuReveal.bind(this, uiSourceCode));
|
| - contextMenu.appendSeparator();
|
| - }
|
| - this._appendUISourceCodeMappingItems(contextMenu, uiSourceCode);
|
| - if (projectType !== WebInspector.projectTypes.FileSystem)
|
| - contextMenu.appendItem(WebInspector.UIString.capitalize("Local ^modifications\u2026"), this._showLocalHistory.bind(this, uiSourceCode));
|
| - },
|
| -
|
| - /**
|
| - * @param {!Event} event
|
| - * @param {!WebInspector.ContextMenu} contextMenu
|
| - * @param {!Object} target
|
| - */
|
| - _appendUISourceCodeFrameItems: function(event, contextMenu, target)
|
| - {
|
| - if (!(target instanceof WebInspector.UISourceCodeFrame))
|
| - return;
|
| - contextMenu.appendAction("debugger.evaluate-selection");
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.ContextMenu} contextMenu
|
| - * @param {!Object} object
|
| - */
|
| - appendUILocationItems: function(contextMenu, object)
|
| - {
|
| - if (!(object instanceof WebInspector.UILocation))
|
| - return;
|
| - var uiLocation = /** @type {!WebInspector.UILocation} */ (object);
|
| - var uiSourceCode = uiLocation.uiSourceCode;
|
| - var projectType = uiSourceCode.project().type();
|
| -
|
| - var contentType = uiSourceCode.contentType();
|
| - if (contentType.hasScripts()) {
|
| - var target = WebInspector.context.flavor(WebInspector.Target);
|
| - var debuggerModel = WebInspector.DebuggerModel.fromTarget(target);
|
| - if (debuggerModel && debuggerModel.isPaused())
|
| - contextMenu.appendItem(WebInspector.UIString.capitalize("Continue to ^here"), this._continueToLocation.bind(this, uiLocation));
|
| - }
|
| -
|
| - if (contentType.hasScripts() && projectType !== WebInspector.projectTypes.Snippets)
|
| - this._callstackPane.appendBlackboxURLContextMenuItems(contextMenu, uiSourceCode);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - */
|
| - _handleContextMenuReveal: function(uiSourceCode)
|
| - {
|
| - this.editorView.showBoth();
|
| - this._revealInNavigator(uiSourceCode);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.ContextMenu} contextMenu
|
| - * @param {!Object} target
|
| - */
|
| - _appendRemoteObjectItems: function(contextMenu, target)
|
| - {
|
| - if (!(target instanceof WebInspector.RemoteObject))
|
| - return;
|
| - var remoteObject = /** @type {!WebInspector.RemoteObject} */ (target);
|
| - contextMenu.appendItem(WebInspector.UIString.capitalize("Store as ^global ^variable"), this._saveToTempVariable.bind(this, remoteObject));
|
| - if (remoteObject.type === "function")
|
| - contextMenu.appendItem(WebInspector.UIString.capitalize("Show ^function ^definition"), this._showFunctionDefinition.bind(this, remoteObject));
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.ContextMenu} contextMenu
|
| - * @param {!Object} target
|
| - */
|
| - _appendNetworkRequestItems: function(contextMenu, target)
|
| - {
|
| - if (!(target instanceof WebInspector.NetworkRequest))
|
| - return;
|
| - var request = /** @type {!WebInspector.NetworkRequest} */ (target);
|
| - var uiSourceCode = this._networkMapping.uiSourceCodeForURLForAnyTarget(request.url);
|
| - if (!uiSourceCode)
|
| - return;
|
| - var openText = WebInspector.UIString.capitalize("Open in Sources ^panel");
|
| - contextMenu.appendItem(openText, this.showUILocation.bind(this, uiSourceCode.uiLocation(0, 0)));
|
| - },
|
| + function mapNetworkToFileSystem(uiSourceCode) {
|
| + if (!uiSourceCode)
|
| + return;
|
| + this._networkMapping.addMapping(networkUISourceCode, uiSourceCode);
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + */
|
| + _removeNetworkMapping(uiSourceCode) {
|
| + this._networkMapping.removeMapping(uiSourceCode);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.ContextMenu} contextMenu
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + */
|
| + _appendUISourceCodeMappingItems(contextMenu, uiSourceCode) {
|
| + WebInspector.NavigatorView.appendAddFolderItem(contextMenu);
|
| +
|
| + if (Runtime.experiments.isEnabled('persistence2'))
|
| + return;
|
| + if (uiSourceCode.project().type() === WebInspector.projectTypes.FileSystem) {
|
| + var binding = WebInspector.persistence.binding(uiSourceCode);
|
| + if (!binding)
|
| + contextMenu.appendItem(
|
| + WebInspector.UIString.capitalize('Map to ^network ^resource\u2026'),
|
| + this.mapFileSystemToNetwork.bind(this, uiSourceCode));
|
| + else
|
| + contextMenu.appendItem(
|
| + WebInspector.UIString.capitalize('Remove ^network ^mapping'),
|
| + this._removeNetworkMapping.bind(this, binding.network));
|
| + }
|
|
|
| /**
|
| - * @param {!WebInspector.RemoteObject} remoteObject
|
| + * @param {!WebInspector.Project} project
|
| */
|
| - _saveToTempVariable: function(remoteObject)
|
| - {
|
| - var currentExecutionContext = WebInspector.context.flavor(WebInspector.ExecutionContext);
|
| - if (!currentExecutionContext)
|
| - return;
|
| -
|
| - currentExecutionContext.globalObject("", false, didGetGlobalObject);
|
| - /**
|
| - * @param {?WebInspector.RemoteObject} global
|
| - * @param {!RuntimeAgent.ExceptionDetails=} exceptionDetails
|
| - */
|
| - function didGetGlobalObject(global, exceptionDetails)
|
| - {
|
| - /**
|
| - * @suppressReceiverCheck
|
| - * @this {Window}
|
| - */
|
| - function remoteFunction(value)
|
| - {
|
| - var prefix = "temp";
|
| - var index = 1;
|
| - while ((prefix + index) in this)
|
| - ++index;
|
| - var name = prefix + index;
|
| - this[name] = value;
|
| - return name;
|
| - }
|
| -
|
| - if (!!exceptionDetails || !global)
|
| - failedToSave(global);
|
| - else
|
| - global.callFunction(remoteFunction, [WebInspector.RemoteObject.toCallArgument(remoteObject)], didSave.bind(null, global));
|
| - }
|
| -
|
| - /**
|
| - * @param {!WebInspector.RemoteObject} global
|
| - * @param {?WebInspector.RemoteObject} result
|
| - * @param {boolean=} wasThrown
|
| - */
|
| - function didSave(global, result, wasThrown)
|
| - {
|
| - global.release();
|
| - if (wasThrown || !result || result.type !== "string")
|
| - failedToSave(result);
|
| - else
|
| - WebInspector.ConsoleModel.evaluateCommandInConsole(/** @type {!WebInspector.ExecutionContext} */ (currentExecutionContext), result.value);
|
| - }
|
| -
|
| - /**
|
| - * @param {?WebInspector.RemoteObject} result
|
| - */
|
| - function failedToSave(result)
|
| - {
|
| - var message = WebInspector.UIString("Failed to save to temp variable.");
|
| - if (result) {
|
| - message += " " + result.description;
|
| - result.release();
|
| - }
|
| - WebInspector.console.error(message);
|
| - }
|
| - },
|
| + function filterProject(project) {
|
| + return project.type() === WebInspector.projectTypes.FileSystem;
|
| + }
|
|
|
| - /**
|
| - * @param {!WebInspector.RemoteObject} remoteObject
|
| - */
|
| - _showFunctionDefinition: function(remoteObject)
|
| - {
|
| - remoteObject.debuggerModel().functionDetailsPromise(remoteObject).then(this._didGetFunctionDetails.bind(this));
|
| - },
|
| + if (uiSourceCode.project().type() === WebInspector.projectTypes.Network ||
|
| + uiSourceCode.project().type() === WebInspector.projectTypes.ContentScripts) {
|
| + if (!this._workspace.projects().filter(filterProject).length)
|
| + return;
|
| + if (this._networkMapping.uiSourceCodeForURLForAnyTarget(uiSourceCode.url()) === uiSourceCode)
|
| + contextMenu.appendItem(
|
| + WebInspector.UIString.capitalize('Map to ^file ^system ^resource\u2026'),
|
| + this.mapNetworkToFileSystem.bind(this, uiSourceCode));
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @param {!Event} event
|
| + * @param {!WebInspector.ContextMenu} contextMenu
|
| + * @param {!Object} target
|
| + */
|
| + _appendUISourceCodeItems(event, contextMenu, target) {
|
| + if (!(target instanceof WebInspector.UISourceCode))
|
| + return;
|
| +
|
| + var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (target);
|
| + var projectType = uiSourceCode.project().type();
|
| +
|
| + if (projectType !== WebInspector.projectTypes.Debugger &&
|
| + !event.target.isSelfOrDescendant(this._navigatorTabbedLocation.widget().element)) {
|
| + contextMenu.appendItem(
|
| + WebInspector.UIString.capitalize('Reveal in ^navigator'),
|
| + this._handleContextMenuReveal.bind(this, uiSourceCode));
|
| + contextMenu.appendSeparator();
|
| + }
|
| + this._appendUISourceCodeMappingItems(contextMenu, uiSourceCode);
|
| + if (projectType !== WebInspector.projectTypes.FileSystem)
|
| + contextMenu.appendItem(
|
| + WebInspector.UIString.capitalize('Local ^modifications\u2026'),
|
| + this._showLocalHistory.bind(this, uiSourceCode));
|
| + }
|
| +
|
| + /**
|
| + * @param {!Event} event
|
| + * @param {!WebInspector.ContextMenu} contextMenu
|
| + * @param {!Object} target
|
| + */
|
| + _appendUISourceCodeFrameItems(event, contextMenu, target) {
|
| + if (!(target instanceof WebInspector.UISourceCodeFrame))
|
| + return;
|
| + contextMenu.appendAction('debugger.evaluate-selection');
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.ContextMenu} contextMenu
|
| + * @param {!Object} object
|
| + */
|
| + appendUILocationItems(contextMenu, object) {
|
| + if (!(object instanceof WebInspector.UILocation))
|
| + return;
|
| + var uiLocation = /** @type {!WebInspector.UILocation} */ (object);
|
| + var uiSourceCode = uiLocation.uiSourceCode;
|
| + var projectType = uiSourceCode.project().type();
|
| +
|
| + var contentType = uiSourceCode.contentType();
|
| + if (contentType.hasScripts()) {
|
| + var target = WebInspector.context.flavor(WebInspector.Target);
|
| + var debuggerModel = WebInspector.DebuggerModel.fromTarget(target);
|
| + if (debuggerModel && debuggerModel.isPaused())
|
| + contextMenu.appendItem(
|
| + WebInspector.UIString.capitalize('Continue to ^here'), this._continueToLocation.bind(this, uiLocation));
|
| + }
|
|
|
| + if (contentType.hasScripts() && projectType !== WebInspector.projectTypes.Snippets)
|
| + this._callstackPane.appendBlackboxURLContextMenuItems(contextMenu, uiSourceCode);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + */
|
| + _handleContextMenuReveal(uiSourceCode) {
|
| + this.editorView.showBoth();
|
| + this._revealInNavigator(uiSourceCode);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.ContextMenu} contextMenu
|
| + * @param {!Object} target
|
| + */
|
| + _appendRemoteObjectItems(contextMenu, target) {
|
| + if (!(target instanceof WebInspector.RemoteObject))
|
| + return;
|
| + var remoteObject = /** @type {!WebInspector.RemoteObject} */ (target);
|
| + contextMenu.appendItem(
|
| + WebInspector.UIString.capitalize('Store as ^global ^variable'),
|
| + this._saveToTempVariable.bind(this, remoteObject));
|
| + if (remoteObject.type === 'function')
|
| + contextMenu.appendItem(
|
| + WebInspector.UIString.capitalize('Show ^function ^definition'),
|
| + this._showFunctionDefinition.bind(this, remoteObject));
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.ContextMenu} contextMenu
|
| + * @param {!Object} target
|
| + */
|
| + _appendNetworkRequestItems(contextMenu, target) {
|
| + if (!(target instanceof WebInspector.NetworkRequest))
|
| + return;
|
| + var request = /** @type {!WebInspector.NetworkRequest} */ (target);
|
| + var uiSourceCode = this._networkMapping.uiSourceCodeForURLForAnyTarget(request.url);
|
| + if (!uiSourceCode)
|
| + return;
|
| + var openText = WebInspector.UIString.capitalize('Open in Sources ^panel');
|
| + contextMenu.appendItem(openText, this.showUILocation.bind(this, uiSourceCode.uiLocation(0, 0)));
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.RemoteObject} remoteObject
|
| + */
|
| + _saveToTempVariable(remoteObject) {
|
| + var currentExecutionContext = WebInspector.context.flavor(WebInspector.ExecutionContext);
|
| + if (!currentExecutionContext)
|
| + return;
|
| +
|
| + currentExecutionContext.globalObject('', false, didGetGlobalObject);
|
| /**
|
| - * @param {?{location: ?WebInspector.DebuggerModel.Location}} response
|
| + * @param {?WebInspector.RemoteObject} global
|
| + * @param {!RuntimeAgent.ExceptionDetails=} exceptionDetails
|
| */
|
| - _didGetFunctionDetails: function(response)
|
| - {
|
| - if (!response || !response.location)
|
| - return;
|
| -
|
| - var location = response.location;
|
| - if (!location)
|
| - return;
|
| -
|
| - var uiLocation = WebInspector.debuggerWorkspaceBinding.rawLocationToUILocation(location);
|
| - if (uiLocation)
|
| - this.showUILocation(uiLocation);
|
| - },
|
| -
|
| - showGoToSourceDialog: function()
|
| - {
|
| - this._sourcesView.showOpenResourceDialog();
|
| - },
|
| -
|
| - _revealNavigatorSidebar: function()
|
| - {
|
| - this._setAsCurrentPanel();
|
| - this.editorView.showBoth(true);
|
| - },
|
| -
|
| - _revealDebuggerSidebar: function()
|
| - {
|
| - this._setAsCurrentPanel();
|
| - this._splitWidget.showBoth(true);
|
| - },
|
| -
|
| - _updateSidebarPosition: function()
|
| - {
|
| - var vertically;
|
| - var position = WebInspector.moduleSetting("sidebarPosition").get();
|
| - if (position === "right")
|
| - vertically = false;
|
| - else if (position === "bottom")
|
| - vertically = true;
|
| - else
|
| - vertically = WebInspector.inspectorView.element.offsetWidth < 680;
|
| -
|
| - if (this.sidebarPaneView && vertically === !this._splitWidget.isVertical())
|
| - return;
|
| -
|
| - if (this.sidebarPaneView && this.sidebarPaneView.shouldHideOnDetach())
|
| - return; // We can't reparent extension iframes.
|
| -
|
| - if (this.sidebarPaneView)
|
| - this.sidebarPaneView.detach();
|
| -
|
| - this._splitWidget.setVertical(!vertically);
|
| - this._splitWidget.element.classList.toggle("sources-split-view-vertical", vertically);
|
| -
|
| - WebInspector.SourcesPanel.updateResizerAndSidebarButtons(this);
|
| -
|
| - // Create vertical box with stack.
|
| - var vbox = new WebInspector.VBox();
|
| - vbox.element.appendChild(this._debugToolbarDrawer);
|
| - vbox.setMinimumAndPreferredSizes(25, 25, WebInspector.SourcesPanel.minToolbarWidth, 100);
|
| - this._sidebarPaneStack = WebInspector.viewManager.createStackLocation(this._revealDebuggerSidebar.bind(this));
|
| - this._sidebarPaneStack.widget().element.classList.add("overflow-auto");
|
| - this._sidebarPaneStack.widget().show(vbox.element);
|
| - this._sidebarPaneStack.widget().element.appendChild(this._debuggerPausedMessage.element());
|
| - vbox.element.appendChild(this._debugToolbar.element);
|
| -
|
| - if (this._threadsSidebarPane)
|
| - this._sidebarPaneStack.showView(this._threadsSidebarPane);
|
| -
|
| - if (!vertically)
|
| - this._sidebarPaneStack.appendView(this._watchSidebarPane);
|
| -
|
| - this._sidebarPaneStack.showView(this._callstackPane);
|
| - var jsBreakpoints = /** @type {!WebInspector.View} */ (WebInspector.viewManager.view("sources.jsBreakpoints"));
|
| - var scopeChainView = /** @type {!WebInspector.View} */ (WebInspector.viewManager.view("sources.scopeChain"));
|
| -
|
| - if (!vertically) {
|
| - // Populate the rest of the stack.
|
| - this._sidebarPaneStack.showView(scopeChainView);
|
| - this._sidebarPaneStack.showView(jsBreakpoints);
|
| - this._extensionSidebarPanesContainer = this._sidebarPaneStack;
|
| - this.sidebarPaneView = vbox;
|
| - } else {
|
| - var splitWidget = new WebInspector.SplitWidget(true, true, "sourcesPanelDebuggerSidebarSplitViewState", 0.5);
|
| - splitWidget.setMainWidget(vbox);
|
| -
|
| - // Populate the left stack.
|
| - this._sidebarPaneStack.showView(jsBreakpoints);
|
| -
|
| - var tabbedLocation = WebInspector.viewManager.createTabbedLocation(this._revealDebuggerSidebar.bind(this));
|
| - splitWidget.setSidebarWidget(tabbedLocation.tabbedPane());
|
| - tabbedLocation.appendView(scopeChainView);
|
| - tabbedLocation.appendView(this._watchSidebarPane);
|
| - this._extensionSidebarPanesContainer = tabbedLocation;
|
| - this.sidebarPaneView = splitWidget;
|
| - }
|
| -
|
| - this._sidebarPaneStack.appendApplicableItems("sources-sidebar");
|
| - var extensionSidebarPanes = WebInspector.extensionServer.sidebarPanes();
|
| - for (var i = 0; i < extensionSidebarPanes.length; ++i)
|
| - this._addExtensionSidebarPane(extensionSidebarPanes[i]);
|
| -
|
| - this._splitWidget.setSidebarWidget(this.sidebarPaneView);
|
| - },
|
| + function didGetGlobalObject(global, exceptionDetails) {
|
| + /**
|
| + * @suppressReceiverCheck
|
| + * @this {Window}
|
| + */
|
| + function remoteFunction(value) {
|
| + var prefix = 'temp';
|
| + var index = 1;
|
| + while ((prefix + index) in this)
|
| + ++index;
|
| + var name = prefix + index;
|
| + this[name] = value;
|
| + return name;
|
| + }
|
| +
|
| + if (!!exceptionDetails || !global)
|
| + failedToSave(global);
|
| + else
|
| + global.callFunction(
|
| + remoteFunction, [WebInspector.RemoteObject.toCallArgument(remoteObject)], didSave.bind(null, global));
|
| + }
|
|
|
| /**
|
| - * @return {!Promise}
|
| + * @param {!WebInspector.RemoteObject} global
|
| + * @param {?WebInspector.RemoteObject} result
|
| + * @param {boolean=} wasThrown
|
| */
|
| - _setAsCurrentPanel: function()
|
| - {
|
| - return WebInspector.viewManager.showView("sources");
|
| - },
|
| + function didSave(global, result, wasThrown) {
|
| + global.release();
|
| + if (wasThrown || !result || result.type !== 'string')
|
| + failedToSave(result);
|
| + else
|
| + WebInspector.ConsoleModel.evaluateCommandInConsole(
|
| + /** @type {!WebInspector.ExecutionContext} */ (currentExecutionContext), result.value);
|
| + }
|
|
|
| /**
|
| - * @param {!WebInspector.Event} event
|
| + * @param {?WebInspector.RemoteObject} result
|
| */
|
| - _extensionSidebarPaneAdded: function(event)
|
| - {
|
| - var pane = /** @type {!WebInspector.ExtensionSidebarPane} */ (event.data);
|
| - this._addExtensionSidebarPane(pane);
|
| - },
|
| + function failedToSave(result) {
|
| + var message = WebInspector.UIString('Failed to save to temp variable.');
|
| + if (result) {
|
| + message += ' ' + result.description;
|
| + result.release();
|
| + }
|
| + WebInspector.console.error(message);
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.RemoteObject} remoteObject
|
| + */
|
| + _showFunctionDefinition(remoteObject) {
|
| + remoteObject.debuggerModel().functionDetailsPromise(remoteObject).then(this._didGetFunctionDetails.bind(this));
|
| + }
|
| +
|
| + /**
|
| + * @param {?{location: ?WebInspector.DebuggerModel.Location}} response
|
| + */
|
| + _didGetFunctionDetails(response) {
|
| + if (!response || !response.location)
|
| + return;
|
| +
|
| + var location = response.location;
|
| + if (!location)
|
| + return;
|
| +
|
| + var uiLocation = WebInspector.debuggerWorkspaceBinding.rawLocationToUILocation(location);
|
| + if (uiLocation)
|
| + this.showUILocation(uiLocation);
|
| + }
|
| +
|
| + showGoToSourceDialog() {
|
| + this._sourcesView.showOpenResourceDialog();
|
| + }
|
| +
|
| + _revealNavigatorSidebar() {
|
| + this._setAsCurrentPanel();
|
| + this.editorView.showBoth(true);
|
| + }
|
| +
|
| + _revealDebuggerSidebar() {
|
| + this._setAsCurrentPanel();
|
| + this._splitWidget.showBoth(true);
|
| + }
|
| +
|
| + _updateSidebarPosition() {
|
| + var vertically;
|
| + var position = WebInspector.moduleSetting('sidebarPosition').get();
|
| + if (position === 'right')
|
| + vertically = false;
|
| + else if (position === 'bottom')
|
| + vertically = true;
|
| + else
|
| + vertically = WebInspector.inspectorView.element.offsetWidth < 680;
|
| +
|
| + if (this.sidebarPaneView && vertically === !this._splitWidget.isVertical())
|
| + return;
|
| +
|
| + if (this.sidebarPaneView && this.sidebarPaneView.shouldHideOnDetach())
|
| + return; // We can't reparent extension iframes.
|
| +
|
| + if (this.sidebarPaneView)
|
| + this.sidebarPaneView.detach();
|
| +
|
| + this._splitWidget.setVertical(!vertically);
|
| + this._splitWidget.element.classList.toggle('sources-split-view-vertical', vertically);
|
| +
|
| + WebInspector.SourcesPanel.updateResizerAndSidebarButtons(this);
|
| +
|
| + // Create vertical box with stack.
|
| + var vbox = new WebInspector.VBox();
|
| + vbox.element.appendChild(this._debugToolbarDrawer);
|
| + vbox.setMinimumAndPreferredSizes(25, 25, WebInspector.SourcesPanel.minToolbarWidth, 100);
|
| + this._sidebarPaneStack = WebInspector.viewManager.createStackLocation(this._revealDebuggerSidebar.bind(this));
|
| + this._sidebarPaneStack.widget().element.classList.add('overflow-auto');
|
| + this._sidebarPaneStack.widget().show(vbox.element);
|
| + this._sidebarPaneStack.widget().element.appendChild(this._debuggerPausedMessage.element());
|
| + vbox.element.appendChild(this._debugToolbar.element);
|
| +
|
| + if (this._threadsSidebarPane)
|
| + this._sidebarPaneStack.showView(this._threadsSidebarPane);
|
| +
|
| + if (!vertically)
|
| + this._sidebarPaneStack.appendView(this._watchSidebarPane);
|
| +
|
| + this._sidebarPaneStack.showView(this._callstackPane);
|
| + var jsBreakpoints = /** @type {!WebInspector.View} */ (WebInspector.viewManager.view('sources.jsBreakpoints'));
|
| + var scopeChainView = /** @type {!WebInspector.View} */ (WebInspector.viewManager.view('sources.scopeChain'));
|
| +
|
| + if (!vertically) {
|
| + // Populate the rest of the stack.
|
| + this._sidebarPaneStack.showView(scopeChainView);
|
| + this._sidebarPaneStack.showView(jsBreakpoints);
|
| + this._extensionSidebarPanesContainer = this._sidebarPaneStack;
|
| + this.sidebarPaneView = vbox;
|
| + } else {
|
| + var splitWidget = new WebInspector.SplitWidget(true, true, 'sourcesPanelDebuggerSidebarSplitViewState', 0.5);
|
| + splitWidget.setMainWidget(vbox);
|
| +
|
| + // Populate the left stack.
|
| + this._sidebarPaneStack.showView(jsBreakpoints);
|
| +
|
| + var tabbedLocation = WebInspector.viewManager.createTabbedLocation(this._revealDebuggerSidebar.bind(this));
|
| + splitWidget.setSidebarWidget(tabbedLocation.tabbedPane());
|
| + tabbedLocation.appendView(scopeChainView);
|
| + tabbedLocation.appendView(this._watchSidebarPane);
|
| + this._extensionSidebarPanesContainer = tabbedLocation;
|
| + this.sidebarPaneView = splitWidget;
|
| + }
|
|
|
| - /**
|
| - * @param {!WebInspector.ExtensionSidebarPane} pane
|
| - */
|
| - _addExtensionSidebarPane: function(pane)
|
| - {
|
| - if (pane.panelName() === this.name)
|
| - this._extensionSidebarPanesContainer.appendView(pane);
|
| - },
|
| + this._sidebarPaneStack.appendApplicableItems('sources-sidebar');
|
| + var extensionSidebarPanes = WebInspector.extensionServer.sidebarPanes();
|
| + for (var i = 0; i < extensionSidebarPanes.length; ++i)
|
| + this._addExtensionSidebarPane(extensionSidebarPanes[i]);
|
| +
|
| + this._splitWidget.setSidebarWidget(this.sidebarPaneView);
|
| + }
|
| +
|
| + /**
|
| + * @return {!Promise}
|
| + */
|
| + _setAsCurrentPanel() {
|
| + return WebInspector.viewManager.showView('sources');
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _extensionSidebarPaneAdded(event) {
|
| + var pane = /** @type {!WebInspector.ExtensionSidebarPane} */ (event.data);
|
| + this._addExtensionSidebarPane(pane);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.ExtensionSidebarPane} pane
|
| + */
|
| + _addExtensionSidebarPane(pane) {
|
| + if (pane.panelName() === this.name)
|
| + this._extensionSidebarPanesContainer.appendView(pane);
|
| + }
|
| +
|
| + /**
|
| + * @return {!WebInspector.SourcesView}
|
| + */
|
| + sourcesView() {
|
| + return this._sourcesView;
|
| + }
|
| +
|
| + /**
|
| + * @param {!DataTransfer} dataTransfer
|
| + */
|
| + _handleDrop(dataTransfer) {
|
| + var items = dataTransfer.items;
|
| + if (!items.length)
|
| + return;
|
| + var entry = items[0].webkitGetAsEntry();
|
| + if (!entry.isDirectory)
|
| + return;
|
| + InspectorFrontendHost.upgradeDraggedFileSystemPermissions(entry.filesystem);
|
| + }
|
| +};
|
|
|
| - /**
|
| - * @return {!WebInspector.SourcesView}
|
| - */
|
| - sourcesView: function()
|
| - {
|
| - return this._sourcesView;
|
| - },
|
| +WebInspector.SourcesPanel._lastModificationTimeout = 200;
|
|
|
| - /**
|
| - * @param {!DataTransfer} dataTransfer
|
| - */
|
| - _handleDrop: function(dataTransfer)
|
| - {
|
| - var items = dataTransfer.items;
|
| - if (!items.length)
|
| - return;
|
| - var entry = items[0].webkitGetAsEntry();
|
| - if (!entry.isDirectory)
|
| - return;
|
| - InspectorFrontendHost.upgradeDraggedFileSystemPermissions(entry.filesystem);
|
| - },
|
| -
|
| - __proto__: WebInspector.Panel.prototype
|
| -};
|
| +WebInspector.SourcesPanel.minToolbarWidth = 215;
|
|
|
| /**
|
| - * @constructor
|
| * @implements {WebInspector.Revealer}
|
| + * @unrestricted
|
| */
|
| -WebInspector.SourcesPanel.UILocationRevealer = function()
|
| -{
|
| -};
|
| -
|
| -WebInspector.SourcesPanel.UILocationRevealer.prototype = {
|
| - /**
|
| - * @override
|
| - * @param {!Object} uiLocation
|
| - * @param {boolean=} omitFocus
|
| - * @return {!Promise}
|
| - */
|
| - reveal: function(uiLocation, omitFocus)
|
| - {
|
| - if (!(uiLocation instanceof WebInspector.UILocation))
|
| - return Promise.reject(new Error("Internal error: not a ui location"));
|
| - WebInspector.SourcesPanel.instance().showUILocation(uiLocation, omitFocus);
|
| - return Promise.resolve();
|
| - }
|
| +WebInspector.SourcesPanel.UILocationRevealer = class {
|
| + /**
|
| + * @override
|
| + * @param {!Object} uiLocation
|
| + * @param {boolean=} omitFocus
|
| + * @return {!Promise}
|
| + */
|
| + reveal(uiLocation, omitFocus) {
|
| + if (!(uiLocation instanceof WebInspector.UILocation))
|
| + return Promise.reject(new Error('Internal error: not a ui location'));
|
| + WebInspector.SourcesPanel.instance().showUILocation(uiLocation, omitFocus);
|
| + return Promise.resolve();
|
| + }
|
| };
|
|
|
| /**
|
| - * @constructor
|
| * @implements {WebInspector.Revealer}
|
| + * @unrestricted
|
| */
|
| -WebInspector.SourcesPanel.DebuggerLocationRevealer = function()
|
| -{
|
| -};
|
| -
|
| -WebInspector.SourcesPanel.DebuggerLocationRevealer.prototype = {
|
| - /**
|
| - * @override
|
| - * @param {!Object} rawLocation
|
| - * @param {boolean=} omitFocus
|
| - * @return {!Promise}
|
| - */
|
| - reveal: function(rawLocation, omitFocus)
|
| - {
|
| - if (!(rawLocation instanceof WebInspector.DebuggerModel.Location))
|
| - return Promise.reject(new Error("Internal error: not a debugger location"));
|
| - WebInspector.SourcesPanel.instance().showUILocation(WebInspector.debuggerWorkspaceBinding.rawLocationToUILocation(rawLocation), omitFocus);
|
| - return Promise.resolve();
|
| - }
|
| +WebInspector.SourcesPanel.DebuggerLocationRevealer = class {
|
| + /**
|
| + * @override
|
| + * @param {!Object} rawLocation
|
| + * @param {boolean=} omitFocus
|
| + * @return {!Promise}
|
| + */
|
| + reveal(rawLocation, omitFocus) {
|
| + if (!(rawLocation instanceof WebInspector.DebuggerModel.Location))
|
| + return Promise.reject(new Error('Internal error: not a debugger location'));
|
| + WebInspector.SourcesPanel.instance().showUILocation(
|
| + WebInspector.debuggerWorkspaceBinding.rawLocationToUILocation(rawLocation), omitFocus);
|
| + return Promise.resolve();
|
| + }
|
| };
|
|
|
| /**
|
| - * @constructor
|
| * @implements {WebInspector.Revealer}
|
| + * @unrestricted
|
| */
|
| -WebInspector.SourcesPanel.UISourceCodeRevealer = function()
|
| -{
|
| -};
|
| -
|
| -WebInspector.SourcesPanel.UISourceCodeRevealer.prototype = {
|
| - /**
|
| - * @override
|
| - * @param {!Object} uiSourceCode
|
| - * @param {boolean=} omitFocus
|
| - * @return {!Promise}
|
| - */
|
| - reveal: function(uiSourceCode, omitFocus)
|
| - {
|
| - if (!(uiSourceCode instanceof WebInspector.UISourceCode))
|
| - return Promise.reject(new Error("Internal error: not a ui source code"));
|
| - WebInspector.SourcesPanel.instance().showUISourceCode(uiSourceCode, undefined, undefined, omitFocus);
|
| - return Promise.resolve();
|
| - }
|
| +WebInspector.SourcesPanel.UISourceCodeRevealer = class {
|
| + /**
|
| + * @override
|
| + * @param {!Object} uiSourceCode
|
| + * @param {boolean=} omitFocus
|
| + * @return {!Promise}
|
| + */
|
| + reveal(uiSourceCode, omitFocus) {
|
| + if (!(uiSourceCode instanceof WebInspector.UISourceCode))
|
| + return Promise.reject(new Error('Internal error: not a ui source code'));
|
| + WebInspector.SourcesPanel.instance().showUISourceCode(uiSourceCode, undefined, undefined, omitFocus);
|
| + return Promise.resolve();
|
| + }
|
| };
|
|
|
| /**
|
| - * @constructor
|
| * @implements {WebInspector.Revealer}
|
| + * @unrestricted
|
| */
|
| -WebInspector.SourcesPanel.DebuggerPausedDetailsRevealer = function()
|
| -{
|
| -};
|
| -
|
| -WebInspector.SourcesPanel.DebuggerPausedDetailsRevealer.prototype = {
|
| - /**
|
| - * @override
|
| - * @param {!Object} object
|
| - * @return {!Promise}
|
| - */
|
| - reveal: function(object)
|
| - {
|
| - return WebInspector.SourcesPanel.instance()._setAsCurrentPanel();
|
| - }
|
| +WebInspector.SourcesPanel.DebuggerPausedDetailsRevealer = class {
|
| + /**
|
| + * @override
|
| + * @param {!Object} object
|
| + * @return {!Promise}
|
| + */
|
| + reveal(object) {
|
| + return WebInspector.SourcesPanel.instance()._setAsCurrentPanel();
|
| + }
|
| };
|
|
|
| /**
|
| - * @constructor
|
| * @implements {WebInspector.ActionDelegate}
|
| + * @unrestricted
|
| */
|
| -WebInspector.SourcesPanel.RevealingActionDelegate = function() {};
|
| -
|
| -WebInspector.SourcesPanel.RevealingActionDelegate.prototype = {
|
| - /**
|
| - * @override
|
| - * @param {!WebInspector.Context} context
|
| - * @param {string} actionId
|
| - * @return {boolean}
|
| - */
|
| - handleAction: function(context, actionId)
|
| - {
|
| - var panel = WebInspector.SourcesPanel.instance();
|
| - if (!panel._ensureSourcesViewVisible())
|
| - return false;
|
| - switch (actionId) {
|
| - case "debugger.toggle-pause":
|
| - panel._togglePause();
|
| - return true;
|
| - case "sources.go-to-source":
|
| - panel.showGoToSourceDialog();
|
| - return true;
|
| - }
|
| - return false;
|
| +WebInspector.SourcesPanel.RevealingActionDelegate = class {
|
| + /**
|
| + * @override
|
| + * @param {!WebInspector.Context} context
|
| + * @param {string} actionId
|
| + * @return {boolean}
|
| + */
|
| + handleAction(context, actionId) {
|
| + var panel = WebInspector.SourcesPanel.instance();
|
| + if (!panel._ensureSourcesViewVisible())
|
| + return false;
|
| + switch (actionId) {
|
| + case 'debugger.toggle-pause':
|
| + panel._togglePause();
|
| + return true;
|
| + case 'sources.go-to-source':
|
| + panel.showGoToSourceDialog();
|
| + return true;
|
| }
|
| + return false;
|
| + }
|
| };
|
|
|
| /**
|
| - * @constructor
|
| * @implements {WebInspector.ActionDelegate}
|
| + * @unrestricted
|
| */
|
| -WebInspector.SourcesPanel.DebuggingActionDelegate = function()
|
| -{
|
| -};
|
| -
|
| -WebInspector.SourcesPanel.DebuggingActionDelegate.prototype = {
|
| - /**
|
| - * @override
|
| - * @param {!WebInspector.Context} context
|
| - * @param {string} actionId
|
| - * @return {boolean}
|
| - */
|
| - handleAction: function(context, actionId)
|
| - {
|
| - var panel = WebInspector.SourcesPanel.instance();
|
| - switch (actionId) {
|
| - case "debugger.step-over":
|
| - panel._stepOver();
|
| - return true;
|
| - case "debugger.step-into":
|
| - panel._stepInto();
|
| - return true;
|
| - case "debugger.step-out":
|
| - panel._stepOut();
|
| - return true;
|
| - case "debugger.run-snippet":
|
| - panel._runSnippet();
|
| - return true;
|
| - case "debugger.toggle-breakpoints-active":
|
| - panel._toggleBreakpointsActive();
|
| - return true;
|
| - case "debugger.evaluate-selection":
|
| - var frame = WebInspector.context.flavor(WebInspector.UISourceCodeFrame);
|
| - if (frame) {
|
| - var text = frame.textEditor.text(frame.textEditor.selection());
|
| - var executionContext = WebInspector.context.flavor(WebInspector.ExecutionContext);
|
| - if (executionContext)
|
| - WebInspector.ConsoleModel.evaluateCommandInConsole(executionContext, text);
|
| - }
|
| - return true;
|
| +WebInspector.SourcesPanel.DebuggingActionDelegate = class {
|
| + /**
|
| + * @override
|
| + * @param {!WebInspector.Context} context
|
| + * @param {string} actionId
|
| + * @return {boolean}
|
| + */
|
| + handleAction(context, actionId) {
|
| + var panel = WebInspector.SourcesPanel.instance();
|
| + switch (actionId) {
|
| + case 'debugger.step-over':
|
| + panel._stepOver();
|
| + return true;
|
| + case 'debugger.step-into':
|
| + panel._stepInto();
|
| + return true;
|
| + case 'debugger.step-out':
|
| + panel._stepOut();
|
| + return true;
|
| + case 'debugger.run-snippet':
|
| + panel._runSnippet();
|
| + return true;
|
| + case 'debugger.toggle-breakpoints-active':
|
| + panel._toggleBreakpointsActive();
|
| + return true;
|
| + case 'debugger.evaluate-selection':
|
| + var frame = WebInspector.context.flavor(WebInspector.UISourceCodeFrame);
|
| + if (frame) {
|
| + var text = frame.textEditor.text(frame.textEditor.selection());
|
| + var executionContext = WebInspector.context.flavor(WebInspector.ExecutionContext);
|
| + if (executionContext)
|
| + WebInspector.ConsoleModel.evaluateCommandInConsole(executionContext, text);
|
| }
|
| - return false;
|
| + return true;
|
| }
|
| + return false;
|
| + }
|
| };
|
|
|
| -/**
|
| - * @return {!WebInspector.SourcesPanel}
|
| - */
|
| -WebInspector.SourcesPanel.instance = function()
|
| -{
|
| - if (WebInspector.SourcesPanel._instance)
|
| - return WebInspector.SourcesPanel._instance;
|
| - return /** @type {!WebInspector.SourcesPanel} */ (self.runtime.sharedInstance(WebInspector.SourcesPanel));
|
| -};
|
| -
|
| -/**
|
| - * @param {!WebInspector.SourcesPanel} panel
|
| - */
|
| -WebInspector.SourcesPanel.updateResizerAndSidebarButtons = function(panel)
|
| -{
|
| - panel._sourcesView.leftToolbar().removeToolbarItems();
|
| - panel._sourcesView.rightToolbar().removeToolbarItems();
|
| - panel._sourcesView.bottomToolbar().removeToolbarItems();
|
| - var isInWrapper = WebInspector.SourcesPanel.WrapperView.isShowing() && !WebInspector.inspectorView.isDrawerMinimized();
|
| - if (panel._splitWidget.isVertical() || isInWrapper)
|
| - panel._splitWidget.uninstallResizer(panel._sourcesView.toolbarContainerElement());
|
| - else
|
| - panel._splitWidget.installResizer(panel._sourcesView.toolbarContainerElement());
|
| - if (!isInWrapper) {
|
| - panel._sourcesView.leftToolbar().appendToolbarItem(panel._toggleNavigatorSidebarButton);
|
| - if (panel._splitWidget.isVertical())
|
| - panel._sourcesView.rightToolbar().appendToolbarItem(panel._toggleDebuggerSidebarButton);
|
| - else
|
| - panel._sourcesView.bottomToolbar().appendToolbarItem(panel._toggleDebuggerSidebarButton);
|
| - }
|
| -};
|
|
|
| /**
|
| - * @constructor
|
| - * @extends {WebInspector.VBox}
|
| + * @unrestricted
|
| */
|
| -WebInspector.SourcesPanel.WrapperView = function()
|
| -{
|
| - WebInspector.VBox.call(this);
|
| - this.element.classList.add("sources-view-wrapper");
|
| +WebInspector.SourcesPanel.WrapperView = class extends WebInspector.VBox {
|
| + constructor() {
|
| + super();
|
| + this.element.classList.add('sources-view-wrapper');
|
| WebInspector.SourcesPanel.WrapperView._instance = this;
|
| this._view = WebInspector.SourcesPanel.instance()._sourcesView;
|
| + }
|
| +
|
| + /**
|
| + * @return {boolean}
|
| + */
|
| + static isShowing() {
|
| + return !!WebInspector.SourcesPanel.WrapperView._instance &&
|
| + WebInspector.SourcesPanel.WrapperView._instance.isShowing();
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + wasShown() {
|
| + if (!WebInspector.SourcesPanel.instance().isShowing())
|
| + this._showViewInWrapper();
|
| + else
|
| + WebInspector.inspectorView.setDrawerMinimized(true);
|
| + WebInspector.SourcesPanel.updateResizerAndSidebarButtons(WebInspector.SourcesPanel.instance());
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + willHide() {
|
| + WebInspector.inspectorView.setDrawerMinimized(false);
|
| + setImmediate(() => WebInspector.SourcesPanel.updateResizerAndSidebarButtons(WebInspector.SourcesPanel.instance()));
|
| + }
|
| +
|
| + _showViewInWrapper() {
|
| + this._view.show(this.element);
|
| + }
|
| };
|
|
|
| -WebInspector.SourcesPanel.WrapperView.prototype = {
|
| - wasShown: function()
|
| - {
|
| - if (!WebInspector.SourcesPanel.instance().isShowing())
|
| - this._showViewInWrapper();
|
| - else
|
| - WebInspector.inspectorView.setDrawerMinimized(true);
|
| - WebInspector.SourcesPanel.updateResizerAndSidebarButtons(WebInspector.SourcesPanel.instance());
|
| - },
|
| -
|
| - willHide: function()
|
| - {
|
| - WebInspector.inspectorView.setDrawerMinimized(false);
|
| - setImmediate(() => WebInspector.SourcesPanel.updateResizerAndSidebarButtons(WebInspector.SourcesPanel.instance()));
|
| - },
|
| -
|
| - _showViewInWrapper: function()
|
| - {
|
| - this._view.show(this.element);
|
| - },
|
| -
|
| - __proto__: WebInspector.VBox.prototype
|
| -};
|
|
|
| -/**
|
| - * @return {boolean}
|
| - */
|
| -WebInspector.SourcesPanel.WrapperView.isShowing = function()
|
| -{
|
| - return !!WebInspector.SourcesPanel.WrapperView._instance && WebInspector.SourcesPanel.WrapperView._instance.isShowing();
|
| -};
|
|
|