| Index: Source/devtools/front_end/ScriptsPanel.js
|
| diff --git a/Source/devtools/front_end/ScriptsPanel.js b/Source/devtools/front_end/ScriptsPanel.js
|
| deleted file mode 100644
|
| index ce36439414a959f644d93fddc46d8ffa97d0a768..0000000000000000000000000000000000000000
|
| --- a/Source/devtools/front_end/ScriptsPanel.js
|
| +++ /dev/null
|
| @@ -1,1488 +0,0 @@
|
| -/*
|
| - * Copyright (C) 2008 Apple Inc. All Rights Reserved.
|
| - * Copyright (C) 2011 Google Inc. All rights reserved.
|
| - *
|
| - * Redistribution and use in source and binary forms, with or without
|
| - * modification, are permitted provided that the following conditions
|
| - * are met:
|
| - * 1. Redistributions of source code must retain the above copyright
|
| - * notice, this list of conditions and the following disclaimer.
|
| - * 2. Redistributions in binary form must reproduce the above copyright
|
| - * notice, this list of conditions and the following disclaimer in the
|
| - * documentation and/or other materials provided with the distribution.
|
| - *
|
| - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
|
| - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
| - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
| - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
|
| - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
| - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
| - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
| - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
| - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| - */
|
| -
|
| -importScript("BreakpointsSidebarPane.js");
|
| -importScript("CallStackSidebarPane.js");
|
| -importScript("FilePathScoreFunction.js");
|
| -importScript("FilteredItemSelectionDialog.js");
|
| -importScript("UISourceCodeFrame.js");
|
| -importScript("JavaScriptSourceFrame.js");
|
| -importScript("NavigatorOverlayController.js");
|
| -importScript("NavigatorView.js");
|
| -importScript("RevisionHistoryView.js");
|
| -importScript("ScopeChainSidebarPane.js");
|
| -importScript("ScriptsNavigator.js");
|
| -importScript("ScriptsSearchScope.js");
|
| -importScript("StyleSheetOutlineDialog.js");
|
| -importScript("TabbedEditorContainer.js");
|
| -importScript("WatchExpressionsSidebarPane.js");
|
| -importScript("WorkersSidebarPane.js");
|
| -
|
| -/**
|
| - * @constructor
|
| - * @implements {WebInspector.TabbedEditorContainerDelegate}
|
| - * @implements {WebInspector.ContextMenu.Provider}
|
| - * @extends {WebInspector.Panel}
|
| - * @param {WebInspector.Workspace=} workspaceForTest
|
| - */
|
| -WebInspector.ScriptsPanel = function(workspaceForTest)
|
| -{
|
| - WebInspector.Panel.call(this, "scripts");
|
| - this.registerRequiredCSS("scriptsPanel.css");
|
| - this.registerRequiredCSS("textPrompt.css"); // Watch Expressions autocomplete.
|
| -
|
| - WebInspector.settings.navigatorWasOnceHidden = WebInspector.settings.createSetting("navigatorWasOnceHidden", false);
|
| - WebInspector.settings.debuggerSidebarHidden = WebInspector.settings.createSetting("debuggerSidebarHidden", false);
|
| -
|
| - this._workspace = workspaceForTest || WebInspector.workspace;
|
| -
|
| - function viewGetter()
|
| - {
|
| - return this.visibleView;
|
| - }
|
| - WebInspector.GoToLineDialog.install(this, viewGetter.bind(this));
|
| -
|
| - var helpSection = WebInspector.shortcutsScreen.section(WebInspector.UIString("Sources Panel"));
|
| - this.debugToolbar = this._createDebugToolbar();
|
| -
|
| - const initialDebugSidebarWidth = 225;
|
| - const minimumDebugSidebarWidthPercent = 0.5;
|
| - this.createSidebarView(this.element, WebInspector.SidebarView.SidebarPosition.End, initialDebugSidebarWidth);
|
| - this.splitView.element.id = "scripts-split-view";
|
| - this.splitView.setSidebarElementConstraints(Preferences.minScriptsSidebarWidth);
|
| - this.splitView.setMainElementConstraints(minimumDebugSidebarWidthPercent);
|
| -
|
| - // Create scripts navigator
|
| - const initialNavigatorWidth = 225;
|
| - const minimumViewsContainerWidthPercent = 0.5;
|
| - this.editorView = new WebInspector.SidebarView(WebInspector.SidebarView.SidebarPosition.Start, "scriptsPanelNavigatorSidebarWidth", initialNavigatorWidth);
|
| - this.editorView.element.tabIndex = 0;
|
| -
|
| - this.editorView.setSidebarElementConstraints(Preferences.minScriptsSidebarWidth);
|
| - this.editorView.setMainElementConstraints(minimumViewsContainerWidthPercent);
|
| - this.editorView.show(this.splitView.mainElement);
|
| -
|
| - this._navigator = new WebInspector.ScriptsNavigator();
|
| - this._navigator.view.show(this.editorView.sidebarElement);
|
| -
|
| - var tabbedEditorPlaceholderText = WebInspector.isMac() ? WebInspector.UIString("Hit Cmd+O to open a file") : WebInspector.UIString("Hit Ctrl+O to open a file");
|
| -
|
| - this._editorContentsElement = this.editorView.mainElement.createChild("div", "fill");
|
| - this._editorFooterElement = this.editorView.mainElement.createChild("div", "inspector-footer status-bar hidden");
|
| - this._editorContainer = new WebInspector.TabbedEditorContainer(this, "previouslyViewedFiles", tabbedEditorPlaceholderText);
|
| - this._editorContainer.show(this._editorContentsElement);
|
| -
|
| - this._navigatorController = new WebInspector.NavigatorOverlayController(this.editorView, this._navigator.view, this._editorContainer.view);
|
| -
|
| - this._navigator.addEventListener(WebInspector.ScriptsNavigator.Events.ScriptSelected, this._scriptSelected, this);
|
| - this._navigator.addEventListener(WebInspector.ScriptsNavigator.Events.ItemSearchStarted, this._itemSearchStarted, this);
|
| - this._navigator.addEventListener(WebInspector.ScriptsNavigator.Events.ItemCreationRequested, this._itemCreationRequested, this);
|
| - this._navigator.addEventListener(WebInspector.ScriptsNavigator.Events.ItemRenamingRequested, this._itemRenamingRequested, this);
|
| -
|
| - this._editorContainer.addEventListener(WebInspector.TabbedEditorContainer.Events.EditorSelected, this._editorSelected, this);
|
| - this._editorContainer.addEventListener(WebInspector.TabbedEditorContainer.Events.EditorClosed, this._editorClosed, this);
|
| -
|
| - this._debugSidebarResizeWidgetElement = this.splitView.mainElement.createChild("div", "resizer-widget");
|
| - this._debugSidebarResizeWidgetElement.id = "scripts-debug-sidebar-resizer-widget";
|
| - this.splitView.installResizer(this._debugSidebarResizeWidgetElement);
|
| -
|
| - this.sidebarPanes = {};
|
| - this.sidebarPanes.watchExpressions = new WebInspector.WatchExpressionsSidebarPane();
|
| - this.sidebarPanes.callstack = new WebInspector.CallStackSidebarPane();
|
| - this.sidebarPanes.callstack.addEventListener(WebInspector.CallStackSidebarPane.Events.CallFrameSelected, this._callFrameSelectedInSidebar.bind(this));
|
| -
|
| - this.sidebarPanes.scopechain = new WebInspector.ScopeChainSidebarPane();
|
| - this.sidebarPanes.jsBreakpoints = new WebInspector.JavaScriptBreakpointsSidebarPane(WebInspector.breakpointManager, this._showSourceLocation.bind(this));
|
| - this.sidebarPanes.domBreakpoints = WebInspector.domBreakpointsSidebarPane.createProxy(this);
|
| - this.sidebarPanes.xhrBreakpoints = new WebInspector.XHRBreakpointsSidebarPane();
|
| - this.sidebarPanes.eventListenerBreakpoints = new WebInspector.EventListenerBreakpointsSidebarPane();
|
| -
|
| - if (Capabilities.canInspectWorkers && !WebInspector.WorkerManager.isWorkerFrontend()) {
|
| - WorkerAgent.enable();
|
| - this.sidebarPanes.workerList = new WebInspector.WorkersSidebarPane(WebInspector.workerManager);
|
| - }
|
| -
|
| - this.sidebarPanes.callstack.registerShortcuts(this.registerShortcuts.bind(this));
|
| - this.registerShortcuts(WebInspector.ScriptsPanelDescriptor.ShortcutKeys.GoToMember, this._showOutlineDialog.bind(this));
|
| - this.registerShortcuts(WebInspector.ScriptsPanelDescriptor.ShortcutKeys.ToggleBreakpoint, this._toggleBreakpoint.bind(this));
|
| -
|
| - this._toggleFormatSourceButton = new WebInspector.StatusBarButton(WebInspector.UIString("Pretty print"), "scripts-toggle-pretty-print-status-bar-item");
|
| - this._toggleFormatSourceButton.toggled = false;
|
| - this._toggleFormatSourceButton.addEventListener("click", this._toggleFormatSource, this);
|
| -
|
| - this._scriptViewStatusBarItemsContainer = document.createElement("div");
|
| - this._scriptViewStatusBarItemsContainer.className = "inline-block";
|
| -
|
| - this._scriptViewStatusBarTextContainer = document.createElement("div");
|
| - this._scriptViewStatusBarTextContainer.className = "inline-block";
|
| -
|
| - this._installDebuggerSidebarController();
|
| -
|
| - WebInspector.dockController.addEventListener(WebInspector.DockController.Events.DockSideChanged, this._dockSideChanged.bind(this));
|
| - WebInspector.settings.splitVerticallyWhenDockedToRight.addChangeListener(this._dockSideChanged.bind(this));
|
| - this._dockSideChanged();
|
| -
|
| - /** @type {!Map.<!WebInspector.UISourceCode, !WebInspector.SourceFrame>} */
|
| - this._sourceFramesByUISourceCode = new Map();
|
| - this._updateDebuggerButtons();
|
| - this._pauseOnExceptionStateChanged();
|
| - if (WebInspector.debuggerModel.isPaused())
|
| - this._debuggerPaused();
|
| -
|
| - WebInspector.settings.pauseOnExceptionStateString.addChangeListener(this._pauseOnExceptionStateChanged, this);
|
| - WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.DebuggerWasEnabled, this._debuggerWasEnabled, this);
|
| - WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.DebuggerWasDisabled, this._debuggerWasDisabled, this);
|
| - WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.DebuggerPaused, this._debuggerPaused, this);
|
| - WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.DebuggerResumed, this._debuggerResumed, this);
|
| - WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.CallFrameSelected, this._callFrameSelected, this);
|
| - WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.ConsoleCommandEvaluatedInSelectedCallFrame, this._consoleCommandEvaluatedInSelectedCallFrame, this);
|
| - WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.BreakpointsActiveStateChanged, this._breakpointsActiveStateChanged, this);
|
| -
|
| - WebInspector.startBatchUpdate();
|
| - this._workspace.uiSourceCodes().forEach(this._addUISourceCode.bind(this));
|
| - WebInspector.endBatchUpdate();
|
| -
|
| - this._workspace.addEventListener(WebInspector.Workspace.Events.UISourceCodeAdded, this._uiSourceCodeAdded, this);
|
| - this._workspace.addEventListener(WebInspector.Workspace.Events.UISourceCodeRemoved, this._uiSourceCodeRemoved, this);
|
| - this._workspace.addEventListener(WebInspector.Workspace.Events.ProjectWillReset, this._projectWillReset.bind(this), this);
|
| - WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.GlobalObjectCleared, this._debuggerReset, this);
|
| -
|
| - WebInspector.advancedSearchController.registerSearchScope(new WebInspector.ScriptsSearchScope(this._workspace));
|
| -
|
| - this._boundOnKeyUp = this._onKeyUp.bind(this);
|
| - this._boundOnKeyDown = this._onKeyDown.bind(this);
|
| -}
|
| -
|
| -WebInspector.ScriptsPanel.prototype = {
|
| - get statusBarItems()
|
| - {
|
| - return [this._toggleFormatSourceButton.element, this._scriptViewStatusBarItemsContainer];
|
| - },
|
| -
|
| - /**
|
| - * @return {?Element}
|
| - */
|
| - statusBarText: function()
|
| - {
|
| - return this._scriptViewStatusBarTextContainer;
|
| - },
|
| -
|
| - defaultFocusedElement: function()
|
| - {
|
| - return this._editorContainer.view.defaultFocusedElement() || this._navigator.view.defaultFocusedElement();
|
| - },
|
| -
|
| - get paused()
|
| - {
|
| - return this._paused;
|
| - },
|
| -
|
| - wasShown: function()
|
| - {
|
| - WebInspector.Panel.prototype.wasShown.call(this);
|
| - this._navigatorController.wasShown();
|
| -
|
| - this.element.addEventListener("keydown", this._boundOnKeyDown, false);
|
| - this.element.addEventListener("keyup", this._boundOnKeyUp, false);
|
| - },
|
| -
|
| - willHide: function()
|
| - {
|
| - this.element.removeEventListener("keydown", this._boundOnKeyDown, false);
|
| - this.element.removeEventListener("keyup", this._boundOnKeyUp, false);
|
| -
|
| - WebInspector.Panel.prototype.willHide.call(this);
|
| - WebInspector.closeViewInDrawer();
|
| - },
|
| -
|
| - /**
|
| - * @param {WebInspector.Event} event
|
| - */
|
| - _uiSourceCodeAdded: function(event)
|
| - {
|
| - var uiSourceCode = /** @type {WebInspector.UISourceCode} */ (event.data);
|
| - this._addUISourceCode(uiSourceCode);
|
| - },
|
| -
|
| - /**
|
| - * @param {WebInspector.UISourceCode} uiSourceCode
|
| - */
|
| - _addUISourceCode: function(uiSourceCode)
|
| - {
|
| - if (this._toggleFormatSourceButton.toggled)
|
| - uiSourceCode.setFormatted(true);
|
| - if (uiSourceCode.project().isServiceProject())
|
| - return;
|
| - this._navigator.addUISourceCode(uiSourceCode);
|
| - this._editorContainer.addUISourceCode(uiSourceCode);
|
| - // Replace debugger script-based uiSourceCode with a network-based one.
|
| - var currentUISourceCode = this._currentUISourceCode;
|
| - if (currentUISourceCode && currentUISourceCode.project().isServiceProject() && currentUISourceCode !== uiSourceCode && currentUISourceCode.url === uiSourceCode.url) {
|
| - this._showFile(uiSourceCode);
|
| - this._editorContainer.removeUISourceCode(currentUISourceCode);
|
| - }
|
| - },
|
| -
|
| - _uiSourceCodeRemoved: function(event)
|
| - {
|
| - var uiSourceCode = /** @type {WebInspector.UISourceCode} */ (event.data);
|
| - this._removeUISourceCodes([uiSourceCode]);
|
| - },
|
| -
|
| - /**
|
| - * @param {Array.<WebInspector.UISourceCode>} uiSourceCodes
|
| - */
|
| - _removeUISourceCodes: function(uiSourceCodes)
|
| - {
|
| - for (var i = 0; i < uiSourceCodes.length; ++i) {
|
| - this._navigator.removeUISourceCode(uiSourceCodes[i]);
|
| - this._removeSourceFrame(uiSourceCodes[i]);
|
| - }
|
| - this._editorContainer.removeUISourceCodes(uiSourceCodes);
|
| - },
|
| -
|
| - _consoleCommandEvaluatedInSelectedCallFrame: function(event)
|
| - {
|
| - this.sidebarPanes.scopechain.update(WebInspector.debuggerModel.selectedCallFrame());
|
| - },
|
| -
|
| - _debuggerPaused: function()
|
| - {
|
| - var details = WebInspector.debuggerModel.debuggerPausedDetails();
|
| -
|
| - this._paused = true;
|
| - this._waitingToPause = false;
|
| - this._stepping = false;
|
| -
|
| - this._updateDebuggerButtons();
|
| -
|
| - WebInspector.inspectorView.setCurrentPanel(this);
|
| - this.sidebarPanes.callstack.update(details.callFrames);
|
| -
|
| - if (details.reason === WebInspector.DebuggerModel.BreakReason.DOM) {
|
| - WebInspector.domBreakpointsSidebarPane.highlightBreakpoint(details.auxData);
|
| - function didCreateBreakpointHitStatusMessage(element)
|
| - {
|
| - this.sidebarPanes.callstack.setStatus(element);
|
| - }
|
| - WebInspector.domBreakpointsSidebarPane.createBreakpointHitStatusMessage(details.auxData, didCreateBreakpointHitStatusMessage.bind(this));
|
| - } else if (details.reason === WebInspector.DebuggerModel.BreakReason.EventListener) {
|
| - var eventName = details.auxData.eventName;
|
| - this.sidebarPanes.eventListenerBreakpoints.highlightBreakpoint(details.auxData.eventName);
|
| - var eventNameForUI = WebInspector.EventListenerBreakpointsSidebarPane.eventNameForUI(eventName, details.auxData);
|
| - this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on a \"%s\" Event Listener.", eventNameForUI));
|
| - } else if (details.reason === WebInspector.DebuggerModel.BreakReason.XHR) {
|
| - this.sidebarPanes.xhrBreakpoints.highlightBreakpoint(details.auxData["breakpointURL"]);
|
| - this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on a XMLHttpRequest."));
|
| - } else if (details.reason === WebInspector.DebuggerModel.BreakReason.Exception)
|
| - this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on exception: '%s'.", details.auxData.description));
|
| - else if (details.reason === WebInspector.DebuggerModel.BreakReason.Assert)
|
| - this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on assertion."));
|
| - else if (details.reason === WebInspector.DebuggerModel.BreakReason.CSPViolation)
|
| - this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on a script blocked due to Content Security Policy directive: \"%s\".", details.auxData["directiveText"]));
|
| - else if (details.reason === WebInspector.DebuggerModel.BreakReason.DebugCommand)
|
| - this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on a debugged function"));
|
| - else {
|
| - function didGetUILocation(uiLocation)
|
| - {
|
| - var breakpoint = WebInspector.breakpointManager.findBreakpoint(uiLocation.uiSourceCode, uiLocation.lineNumber);
|
| - if (!breakpoint)
|
| - return;
|
| - this.sidebarPanes.jsBreakpoints.highlightBreakpoint(breakpoint);
|
| - this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on a JavaScript breakpoint."));
|
| - }
|
| - if (details.callFrames.length)
|
| - details.callFrames[0].createLiveLocation(didGetUILocation.bind(this));
|
| - else
|
| - console.warn("ScriptsPanel paused, but callFrames.length is zero."); // TODO remove this once we understand this case better
|
| - }
|
| -
|
| - this._enableDebuggerSidebar(true);
|
| - this._toggleDebuggerSidebarButton.setEnabled(false);
|
| - window.focus();
|
| - InspectorFrontendHost.bringToFront();
|
| - },
|
| -
|
| - _debuggerResumed: function()
|
| - {
|
| - this._paused = false;
|
| - this._waitingToPause = false;
|
| - this._stepping = false;
|
| -
|
| - this._clearInterface();
|
| - this._toggleDebuggerSidebarButton.setEnabled(true);
|
| - },
|
| -
|
| - _debuggerWasEnabled: function()
|
| - {
|
| - this._updateDebuggerButtons();
|
| - },
|
| -
|
| - _debuggerWasDisabled: function()
|
| - {
|
| - this._debuggerReset();
|
| - },
|
| -
|
| - _debuggerReset: function()
|
| - {
|
| - this._debuggerResumed();
|
| - this.sidebarPanes.watchExpressions.reset();
|
| - delete this._skipExecutionLineRevealing;
|
| - },
|
| -
|
| - _projectWillReset: function(event)
|
| - {
|
| - var project = event.data;
|
| - var uiSourceCodes = project.uiSourceCodes();
|
| - this._removeUISourceCodes(uiSourceCodes);
|
| - if (project.type() === WebInspector.projectTypes.Network)
|
| - this._editorContainer.reset();
|
| - },
|
| -
|
| - get visibleView()
|
| - {
|
| - return this._editorContainer.visibleView;
|
| - },
|
| -
|
| - _updateScriptViewStatusBarItems: function()
|
| - {
|
| - this._scriptViewStatusBarItemsContainer.removeChildren();
|
| - this._scriptViewStatusBarTextContainer.removeChildren();
|
| -
|
| - var sourceFrame = this.visibleView;
|
| - if (sourceFrame) {
|
| - var statusBarItems = sourceFrame.statusBarItems() || [];
|
| - for (var i = 0; i < statusBarItems.length; ++i)
|
| - this._scriptViewStatusBarItemsContainer.appendChild(statusBarItems[i]);
|
| - var statusBarText = sourceFrame.statusBarText();
|
| - if (statusBarText)
|
| - this._scriptViewStatusBarTextContainer.appendChild(statusBarText);
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {Element} anchor
|
| - */
|
| - canShowAnchorLocation: function(anchor)
|
| - {
|
| - if (WebInspector.debuggerModel.debuggerEnabled() && anchor.uiSourceCode)
|
| - return true;
|
| - var uiSourceCode = WebInspector.workspace.uiSourceCodeForURL(anchor.href);
|
| - if (uiSourceCode) {
|
| - anchor.uiSourceCode = uiSourceCode;
|
| - return true;
|
| - }
|
| - return false;
|
| - },
|
| -
|
| - /**
|
| - * @param {Element} anchor
|
| - */
|
| - showAnchorLocation: function(anchor)
|
| - {
|
| - this._showSourceLocation(anchor.uiSourceCode, anchor.lineNumber, anchor.columnNumber);
|
| - },
|
| -
|
| - /**
|
| - * @param {WebInspector.UISourceCode} uiSourceCode
|
| - * @param {number=} lineNumber
|
| - * @param {number=} columnNumber
|
| - */
|
| - showUISourceCode: function(uiSourceCode, lineNumber, columnNumber)
|
| - {
|
| - this._showSourceLocation(uiSourceCode, lineNumber, columnNumber);
|
| - },
|
| -
|
| - /**
|
| - * @return {?WebInspector.UISourceCode}
|
| - */
|
| - currentUISourceCode: function()
|
| - {
|
| - return this._currentUISourceCode;
|
| - },
|
| -
|
| - /**
|
| - * @param {WebInspector.UILocation} uiLocation
|
| - */
|
| - showUILocation: function(uiLocation)
|
| - {
|
| - this._showSourceLocation(uiLocation.uiSourceCode, uiLocation.lineNumber, uiLocation.columnNumber);
|
| - },
|
| -
|
| - /**
|
| - * @param {WebInspector.UISourceCode} uiSourceCode
|
| - * @param {number=} lineNumber
|
| - * @param {number=} columnNumber
|
| - */
|
| - _showSourceLocation: function(uiSourceCode, lineNumber, columnNumber)
|
| - {
|
| - var sourceFrame = this._showFile(uiSourceCode);
|
| - if (typeof lineNumber === "number")
|
| - sourceFrame.highlightPosition(lineNumber, columnNumber);
|
| - sourceFrame.focus();
|
| -
|
| - WebInspector.notifications.dispatchEventToListeners(WebInspector.UserMetrics.UserAction, {
|
| - action: WebInspector.UserMetrics.UserActionNames.OpenSourceLink,
|
| - url: uiSourceCode.originURL(),
|
| - lineNumber: lineNumber
|
| - });
|
| - },
|
| -
|
| - /**
|
| - * @param {WebInspector.UISourceCode} uiSourceCode
|
| - * @return {WebInspector.SourceFrame}
|
| - */
|
| - _showFile: function(uiSourceCode)
|
| - {
|
| - var sourceFrame = this._getOrCreateSourceFrame(uiSourceCode);
|
| - if (this._currentUISourceCode === uiSourceCode)
|
| - return sourceFrame;
|
| - this._currentUISourceCode = uiSourceCode;
|
| - if (!uiSourceCode.project().isServiceProject())
|
| - this._navigator.revealUISourceCode(uiSourceCode, true);
|
| - this._editorContainer.showFile(uiSourceCode);
|
| - this._updateScriptViewStatusBarItems();
|
| -
|
| - if (this._currentUISourceCode.project().type() === WebInspector.projectTypes.Snippets)
|
| - this._runSnippetButton.element.removeStyleClass("hidden");
|
| - else
|
| - this._runSnippetButton.element.addStyleClass("hidden");
|
| -
|
| - return sourceFrame;
|
| - },
|
| -
|
| - /**
|
| - * @param {WebInspector.UISourceCode} uiSourceCode
|
| - * @return {WebInspector.SourceFrame}
|
| - */
|
| - _createSourceFrame: function(uiSourceCode)
|
| - {
|
| - var sourceFrame;
|
| - switch (uiSourceCode.contentType()) {
|
| - case WebInspector.resourceTypes.Script:
|
| - sourceFrame = new WebInspector.JavaScriptSourceFrame(this, uiSourceCode);
|
| - break;
|
| - case WebInspector.resourceTypes.Document:
|
| - sourceFrame = new WebInspector.JavaScriptSourceFrame(this, uiSourceCode);
|
| - break;
|
| - case WebInspector.resourceTypes.Stylesheet:
|
| - default:
|
| - sourceFrame = new WebInspector.UISourceCodeFrame(uiSourceCode);
|
| - break;
|
| - }
|
| - this._sourceFramesByUISourceCode.put(uiSourceCode, sourceFrame);
|
| - return sourceFrame;
|
| - },
|
| -
|
| - /**
|
| - * @param {WebInspector.UISourceCode} uiSourceCode
|
| - * @return {WebInspector.SourceFrame}
|
| - */
|
| - _getOrCreateSourceFrame: function(uiSourceCode)
|
| - {
|
| - return this._sourceFramesByUISourceCode.get(uiSourceCode) || this._createSourceFrame(uiSourceCode);
|
| - },
|
| -
|
| - /**
|
| - * @param {WebInspector.UISourceCode} uiSourceCode
|
| - * @return {WebInspector.SourceFrame}
|
| - */
|
| - viewForFile: function(uiSourceCode)
|
| - {
|
| - return this._getOrCreateSourceFrame(uiSourceCode);
|
| - },
|
| -
|
| - /**
|
| - * @param {WebInspector.UISourceCode} uiSourceCode
|
| - */
|
| - _removeSourceFrame: function(uiSourceCode)
|
| - {
|
| - var sourceFrame = this._sourceFramesByUISourceCode.get(uiSourceCode);
|
| - if (!sourceFrame)
|
| - return;
|
| - this._sourceFramesByUISourceCode.remove(uiSourceCode);
|
| - sourceFrame.dispose();
|
| - },
|
| -
|
| - _clearCurrentExecutionLine: function()
|
| - {
|
| - if (this._executionSourceFrame)
|
| - this._executionSourceFrame.clearExecutionLine();
|
| - delete this._executionSourceFrame;
|
| - },
|
| -
|
| - _setExecutionLine: function(uiLocation)
|
| - {
|
| - var callFrame = WebInspector.debuggerModel.selectedCallFrame()
|
| - var sourceFrame = this._getOrCreateSourceFrame(uiLocation.uiSourceCode);
|
| - sourceFrame.setExecutionLine(uiLocation.lineNumber, callFrame);
|
| - this._executionSourceFrame = sourceFrame;
|
| - },
|
| -
|
| - _executionLineChanged: function(uiLocation)
|
| - {
|
| - this._clearCurrentExecutionLine();
|
| - this._setExecutionLine(uiLocation);
|
| -
|
| - var uiSourceCode = uiLocation.uiSourceCode;
|
| - var scriptFile = this._currentUISourceCode ? this._currentUISourceCode.scriptFile() : null;
|
| - if (this._skipExecutionLineRevealing)
|
| - return;
|
| - this._skipExecutionLineRevealing = true;
|
| - var sourceFrame = this._showFile(uiSourceCode);
|
| - sourceFrame.revealLine(uiLocation.lineNumber);
|
| - if (sourceFrame.canEditSource())
|
| - sourceFrame.setSelection(WebInspector.TextRange.createFromLocation(uiLocation.lineNumber, 0));
|
| - sourceFrame.focus();
|
| - },
|
| -
|
| - _callFrameSelected: function(event)
|
| - {
|
| - var callFrame = event.data;
|
| -
|
| - if (!callFrame)
|
| - return;
|
| -
|
| - this.sidebarPanes.scopechain.update(callFrame);
|
| - this.sidebarPanes.watchExpressions.refreshExpressions();
|
| - this.sidebarPanes.callstack.setSelectedCallFrame(callFrame);
|
| - callFrame.createLiveLocation(this._executionLineChanged.bind(this));
|
| - },
|
| -
|
| - _editorClosed: function(event)
|
| - {
|
| - this._navigatorController.hideNavigatorOverlay();
|
| - var uiSourceCode = /** @type {WebInspector.UISourceCode} */ (event.data);
|
| -
|
| - if (this._currentUISourceCode === uiSourceCode)
|
| - delete this._currentUISourceCode;
|
| -
|
| - // ScriptsNavigator does not need to update on EditorClosed.
|
| - this._updateScriptViewStatusBarItems();
|
| - WebInspector.searchController.resetSearch();
|
| - },
|
| -
|
| - _editorSelected: function(event)
|
| - {
|
| - var uiSourceCode = /** @type {WebInspector.UISourceCode} */ (event.data);
|
| - var sourceFrame = this._showFile(uiSourceCode);
|
| - this._navigatorController.hideNavigatorOverlay();
|
| - if (!this._navigatorController.isNavigatorPinned())
|
| - sourceFrame.focus();
|
| - WebInspector.searchController.resetSearch();
|
| - },
|
| -
|
| - _scriptSelected: function(event)
|
| - {
|
| - var uiSourceCode = /** @type {WebInspector.UISourceCode} */ (event.data.uiSourceCode);
|
| - var sourceFrame = this._showFile(uiSourceCode);
|
| - this._navigatorController.hideNavigatorOverlay();
|
| - if (sourceFrame && (!this._navigatorController.isNavigatorPinned() || event.data.focusSource))
|
| - sourceFrame.focus();
|
| - },
|
| -
|
| - _itemSearchStarted: function(event)
|
| - {
|
| - var searchText = /** @type {string} */ (event.data);
|
| - WebInspector.OpenResourceDialog.show(this, this.editorView.mainElement, searchText);
|
| - },
|
| -
|
| - _pauseOnExceptionStateChanged: function()
|
| - {
|
| - var pauseOnExceptionsState = WebInspector.settings.pauseOnExceptionStateString.get();
|
| - switch (pauseOnExceptionsState) {
|
| - case WebInspector.DebuggerModel.PauseOnExceptionsState.DontPauseOnExceptions:
|
| - this._pauseOnExceptionButton.title = WebInspector.UIString("Don't pause on exceptions.\nClick to Pause on all exceptions.");
|
| - break;
|
| - case WebInspector.DebuggerModel.PauseOnExceptionsState.PauseOnAllExceptions:
|
| - this._pauseOnExceptionButton.title = WebInspector.UIString("Pause on all exceptions.\nClick to Pause on uncaught exceptions.");
|
| - break;
|
| - case WebInspector.DebuggerModel.PauseOnExceptionsState.PauseOnUncaughtExceptions:
|
| - this._pauseOnExceptionButton.title = WebInspector.UIString("Pause on uncaught exceptions.\nClick to Not pause on exceptions.");
|
| - break;
|
| - }
|
| - this._pauseOnExceptionButton.state = pauseOnExceptionsState;
|
| - },
|
| -
|
| - _updateDebuggerButtons: function()
|
| - {
|
| - if (this._paused) {
|
| - this._updateButtonTitle(this._pauseButton, WebInspector.UIString("Resume script execution (%s)."))
|
| - this._pauseButton.state = true;
|
| - this._pauseButton.setLongClickOptionsEnabled((function() { return [ this._longResumeButton ] }).bind(this));
|
| -
|
| - this._pauseButton.setEnabled(true);
|
| - this._stepOverButton.setEnabled(true);
|
| - this._stepIntoButton.setEnabled(true);
|
| - this._stepOutButton.setEnabled(true);
|
| -
|
| - this.debuggerStatusElement.textContent = WebInspector.UIString("Paused");
|
| - } else {
|
| - this._updateButtonTitle(this._pauseButton, WebInspector.UIString("Pause script execution (%s)."))
|
| - this._pauseButton.state = false;
|
| - this._pauseButton.setLongClickOptionsEnabled(null);
|
| -
|
| - this._pauseButton.setEnabled(!this._waitingToPause);
|
| - this._stepOverButton.setEnabled(false);
|
| - this._stepIntoButton.setEnabled(false);
|
| - this._stepOutButton.setEnabled(false);
|
| -
|
| - if (this._waitingToPause)
|
| - this.debuggerStatusElement.textContent = WebInspector.UIString("Pausing");
|
| - else if (this._stepping)
|
| - this.debuggerStatusElement.textContent = WebInspector.UIString("Stepping");
|
| - else
|
| - this.debuggerStatusElement.textContent = "";
|
| - }
|
| - },
|
| -
|
| - _clearInterface: function()
|
| - {
|
| - this.sidebarPanes.callstack.update(null);
|
| - this.sidebarPanes.scopechain.update(null);
|
| - this.sidebarPanes.jsBreakpoints.clearBreakpointHighlight();
|
| - WebInspector.domBreakpointsSidebarPane.clearBreakpointHighlight();
|
| - this.sidebarPanes.eventListenerBreakpoints.clearBreakpointHighlight();
|
| - this.sidebarPanes.xhrBreakpoints.clearBreakpointHighlight();
|
| -
|
| - this._clearCurrentExecutionLine();
|
| - this._updateDebuggerButtons();
|
| - },
|
| -
|
| - _togglePauseOnExceptions: function()
|
| - {
|
| - var nextStateMap = {};
|
| - var stateEnum = WebInspector.DebuggerModel.PauseOnExceptionsState;
|
| - nextStateMap[stateEnum.DontPauseOnExceptions] = stateEnum.PauseOnAllExceptions;
|
| - nextStateMap[stateEnum.PauseOnAllExceptions] = stateEnum.PauseOnUncaughtExceptions;
|
| - nextStateMap[stateEnum.PauseOnUncaughtExceptions] = stateEnum.DontPauseOnExceptions;
|
| - WebInspector.settings.pauseOnExceptionStateString.set(nextStateMap[this._pauseOnExceptionButton.state]);
|
| - },
|
| -
|
| - /**
|
| - * @param {Event=} event
|
| - * @return {boolean}
|
| - */
|
| - _runSnippet: function(event)
|
| - {
|
| - if (this._currentUISourceCode.project().type() !== WebInspector.projectTypes.Snippets)
|
| - return false;
|
| - WebInspector.scriptSnippetModel.evaluateScriptSnippet(this._currentUISourceCode);
|
| - return true;
|
| - },
|
| -
|
| - /**
|
| - * @param {Event=} event
|
| - * @return {boolean}
|
| - */
|
| - _togglePause: function(event)
|
| - {
|
| - if (this._paused) {
|
| - delete this._skipExecutionLineRevealing;
|
| - this._paused = false;
|
| - this._waitingToPause = false;
|
| - DebuggerAgent.resume();
|
| - } else {
|
| - this._stepping = false;
|
| - this._waitingToPause = true;
|
| - // Make sure pauses didn't stick skipped.
|
| - DebuggerAgent.setSkipAllPauses(false);
|
| - DebuggerAgent.pause();
|
| - }
|
| -
|
| - this._clearInterface();
|
| - return true;
|
| - },
|
| -
|
| - /**
|
| - * @param {WebInspector.Event=} event
|
| - * @return {boolean}
|
| - */
|
| - _longResume: function(event)
|
| - {
|
| - if (!this._paused)
|
| - return true;
|
| -
|
| - this._paused = false;
|
| - this._waitingToPause = false;
|
| - DebuggerAgent.setSkipAllPauses(true, true);
|
| - setTimeout(DebuggerAgent.setSkipAllPauses.bind(DebuggerAgent, false), 500);
|
| - DebuggerAgent.resume();
|
| -
|
| - this._clearInterface();
|
| - return true;
|
| - },
|
| -
|
| - /**
|
| - * @param {Event=} event
|
| - * @return {boolean}
|
| - */
|
| - _stepOverClicked: function(event)
|
| - {
|
| - if (!this._paused)
|
| - return true;
|
| -
|
| - delete this._skipExecutionLineRevealing;
|
| - this._paused = false;
|
| - this._stepping = true;
|
| -
|
| - this._clearInterface();
|
| -
|
| - DebuggerAgent.stepOver();
|
| - return true;
|
| - },
|
| -
|
| - /**
|
| - * @param {Event=} event
|
| - * @return {boolean}
|
| - */
|
| - _stepIntoClicked: function(event)
|
| - {
|
| - if (!this._paused)
|
| - return true;
|
| -
|
| - delete this._skipExecutionLineRevealing;
|
| - this._paused = false;
|
| - this._stepping = true;
|
| -
|
| - this._clearInterface();
|
| -
|
| - DebuggerAgent.stepInto();
|
| - return true;
|
| - },
|
| -
|
| - /**
|
| - * @param {Event=} event
|
| - * @return {boolean}
|
| - */
|
| - _stepIntoSelectionClicked: function(event)
|
| - {
|
| - if (!this._paused)
|
| - return true;
|
| -
|
| - if (this._executionSourceFrame) {
|
| - var stepIntoMarkup = this._executionSourceFrame.stepIntoMarkup();
|
| - if (stepIntoMarkup)
|
| - stepIntoMarkup.iterateSelection(event.shiftKey);
|
| - }
|
| - return true;
|
| - },
|
| -
|
| - doStepIntoSelection: function(rawLocation)
|
| - {
|
| - if (!this._paused)
|
| - return;
|
| -
|
| - delete this._skipExecutionLineRevealing;
|
| - this._paused = false;
|
| - this._stepping = true;
|
| - this._clearInterface();
|
| - WebInspector.debuggerModel.stepIntoSelection(rawLocation);
|
| - },
|
| -
|
| - /**
|
| - * @param {Event=} event
|
| - * @return {boolean}
|
| - */
|
| - _stepOutClicked: function(event)
|
| - {
|
| - if (!this._paused)
|
| - return true;
|
| -
|
| - delete this._skipExecutionLineRevealing;
|
| - this._paused = false;
|
| - this._stepping = true;
|
| -
|
| - this._clearInterface();
|
| -
|
| - DebuggerAgent.stepOut();
|
| - return true;
|
| - },
|
| -
|
| - /**
|
| - * @param {WebInspector.Event} event
|
| - */
|
| - _callFrameSelectedInSidebar: function(event)
|
| - {
|
| - var callFrame = /** @type {WebInspector.DebuggerModel.CallFrame} */ (event.data);
|
| - delete this._skipExecutionLineRevealing;
|
| - WebInspector.debuggerModel.setSelectedCallFrame(callFrame);
|
| - },
|
| -
|
| - continueToLocation: function(rawLocation)
|
| - {
|
| - if (!this._paused)
|
| - return;
|
| -
|
| - delete this._skipExecutionLineRevealing;
|
| - this._paused = false;
|
| - this._stepping = true;
|
| - this._clearInterface();
|
| - WebInspector.debuggerModel.continueToLocation(rawLocation);
|
| - },
|
| -
|
| - _toggleBreakpointsClicked: function(event)
|
| - {
|
| - WebInspector.debuggerModel.setBreakpointsActive(!WebInspector.debuggerModel.breakpointsActive());
|
| - },
|
| -
|
| - _breakpointsActiveStateChanged: function(event)
|
| - {
|
| - var active = event.data;
|
| - this._toggleBreakpointsButton.toggled = !active;
|
| - if (active) {
|
| - this._toggleBreakpointsButton.title = WebInspector.UIString("Deactivate breakpoints.");
|
| - WebInspector.inspectorView.element.removeStyleClass("breakpoints-deactivated");
|
| - this.sidebarPanes.jsBreakpoints.listElement.removeStyleClass("breakpoints-list-deactivated");
|
| - } else {
|
| - this._toggleBreakpointsButton.title = WebInspector.UIString("Activate breakpoints.");
|
| - WebInspector.inspectorView.element.addStyleClass("breakpoints-deactivated");
|
| - this.sidebarPanes.jsBreakpoints.listElement.addStyleClass("breakpoints-list-deactivated");
|
| - }
|
| - },
|
| -
|
| - _createDebugToolbar: function()
|
| - {
|
| - var debugToolbar = document.createElement("div");
|
| - debugToolbar.className = "status-bar";
|
| - debugToolbar.id = "scripts-debug-toolbar";
|
| -
|
| - var title, handler;
|
| - var platformSpecificModifier = WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta;
|
| -
|
| - // Run snippet.
|
| - title = WebInspector.UIString("Run snippet (%s).");
|
| - handler = this._runSnippet.bind(this);
|
| - this._runSnippetButton = this._createButtonAndRegisterShortcuts("scripts-run-snippet", title, handler, WebInspector.ScriptsPanelDescriptor.ShortcutKeys.RunSnippet);
|
| - debugToolbar.appendChild(this._runSnippetButton.element);
|
| - this._runSnippetButton.element.addStyleClass("hidden");
|
| -
|
| - // Continue.
|
| - handler = this._togglePause.bind(this);
|
| - this._pauseButton = this._createButtonAndRegisterShortcuts("scripts-pause", "", handler, WebInspector.ScriptsPanelDescriptor.ShortcutKeys.PauseContinue);
|
| - debugToolbar.appendChild(this._pauseButton.element);
|
| -
|
| - // Long resume.
|
| - title = WebInspector.UIString("Resume with all pauses blocked for 500 ms");
|
| - this._longResumeButton = new WebInspector.StatusBarButton(title, "scripts-long-resume");
|
| - this._longResumeButton.addEventListener("click", this._longResume.bind(this), this);
|
| -
|
| - // Step over.
|
| - title = WebInspector.UIString("Step over next function call (%s).");
|
| - handler = this._stepOverClicked.bind(this);
|
| - this._stepOverButton = this._createButtonAndRegisterShortcuts("scripts-step-over", title, handler, WebInspector.ScriptsPanelDescriptor.ShortcutKeys.StepOver);
|
| - debugToolbar.appendChild(this._stepOverButton.element);
|
| -
|
| - // Step into.
|
| - title = WebInspector.UIString("Step into next function call (%s).");
|
| - handler = this._stepIntoClicked.bind(this);
|
| - this._stepIntoButton = this._createButtonAndRegisterShortcuts("scripts-step-into", title, handler, WebInspector.ScriptsPanelDescriptor.ShortcutKeys.StepInto);
|
| - debugToolbar.appendChild(this._stepIntoButton.element);
|
| -
|
| - // Step into selection (keyboard shortcut only).
|
| - this.registerShortcuts(WebInspector.ScriptsPanelDescriptor.ShortcutKeys.StepIntoSelection, this._stepIntoSelectionClicked.bind(this))
|
| -
|
| - // Step out.
|
| - title = WebInspector.UIString("Step out of current function (%s).");
|
| - handler = this._stepOutClicked.bind(this);
|
| - this._stepOutButton = this._createButtonAndRegisterShortcuts("scripts-step-out", title, handler, WebInspector.ScriptsPanelDescriptor.ShortcutKeys.StepOut);
|
| - debugToolbar.appendChild(this._stepOutButton.element);
|
| -
|
| - // Toggle Breakpoints
|
| - this._toggleBreakpointsButton = new WebInspector.StatusBarButton(WebInspector.UIString("Deactivate breakpoints."), "scripts-toggle-breakpoints");
|
| - this._toggleBreakpointsButton.toggled = false;
|
| - this._toggleBreakpointsButton.addEventListener("click", this._toggleBreakpointsClicked, this);
|
| - debugToolbar.appendChild(this._toggleBreakpointsButton.element);
|
| -
|
| - // Pause on Exception
|
| - this._pauseOnExceptionButton = new WebInspector.StatusBarButton("", "scripts-pause-on-exceptions-status-bar-item", 3);
|
| - this._pauseOnExceptionButton.addEventListener("click", this._togglePauseOnExceptions, this);
|
| - debugToolbar.appendChild(this._pauseOnExceptionButton.element);
|
| -
|
| - this.debuggerStatusElement = document.createElement("div");
|
| - this.debuggerStatusElement.id = "scripts-debugger-status";
|
| - debugToolbar.appendChild(this.debuggerStatusElement);
|
| -
|
| - return debugToolbar;
|
| - },
|
| -
|
| - /**
|
| - * @param {WebInspector.StatusBarButton} button
|
| - * @param {string} buttonTitle
|
| - */
|
| - _updateButtonTitle: function(button, buttonTitle)
|
| - {
|
| - var hasShortcuts = button.shortcuts && button.shortcuts.length;
|
| - if (hasShortcuts)
|
| - button.title = String.vsprintf(buttonTitle, [button.shortcuts[0].name]);
|
| - else
|
| - button.title = buttonTitle;
|
| - },
|
| -
|
| - /**
|
| - * @param {string} buttonId
|
| - * @param {string} buttonTitle
|
| - * @param {function(Event=):boolean} handler
|
| - * @param {!Array.<!WebInspector.KeyboardShortcut.Descriptor>} shortcuts
|
| - * @return {WebInspector.StatusBarButton}
|
| - */
|
| - _createButtonAndRegisterShortcuts: function(buttonId, buttonTitle, handler, shortcuts)
|
| - {
|
| - var button = new WebInspector.StatusBarButton(buttonTitle, buttonId);
|
| - button.element.addEventListener("click", handler, false);
|
| - button.shortcuts = shortcuts;
|
| - this._updateButtonTitle(button, buttonTitle);
|
| - this.registerShortcuts(shortcuts, handler);
|
| - return button;
|
| - },
|
| -
|
| - searchCanceled: function()
|
| - {
|
| - if (this._searchView)
|
| - this._searchView.searchCanceled();
|
| -
|
| - delete this._searchView;
|
| - delete this._searchQuery;
|
| - },
|
| -
|
| - /**
|
| - * @param {string} query
|
| - * @param {boolean} shouldJump
|
| - */
|
| - performSearch: function(query, shouldJump)
|
| - {
|
| - WebInspector.searchController.updateSearchMatchesCount(0, this);
|
| -
|
| - if (!this.visibleView)
|
| - return;
|
| -
|
| - this._searchView = this.visibleView;
|
| - this._searchQuery = query;
|
| -
|
| - function finishedCallback(view, searchMatches)
|
| - {
|
| - if (!searchMatches)
|
| - return;
|
| -
|
| - WebInspector.searchController.updateSearchMatchesCount(searchMatches, this);
|
| - }
|
| -
|
| - function currentMatchChanged(currentMatchIndex)
|
| - {
|
| - WebInspector.searchController.updateCurrentMatchIndex(currentMatchIndex, this);
|
| - }
|
| -
|
| - this._searchView.performSearch(query, shouldJump, finishedCallback.bind(this), currentMatchChanged.bind(this));
|
| - },
|
| -
|
| - /**
|
| - * @return {number}
|
| - */
|
| - minimalSearchQuerySize: function()
|
| - {
|
| - return 0;
|
| - },
|
| -
|
| - jumpToNextSearchResult: function()
|
| - {
|
| - if (!this._searchView)
|
| - return;
|
| -
|
| - if (this._searchView !== this.visibleView) {
|
| - this.performSearch(this._searchQuery, true);
|
| - return;
|
| - }
|
| -
|
| - this._searchView.jumpToNextSearchResult();
|
| - return true;
|
| - },
|
| -
|
| - jumpToPreviousSearchResult: function()
|
| - {
|
| - if (!this._searchView)
|
| - return;
|
| -
|
| - if (this._searchView !== this.visibleView) {
|
| - this.performSearch(this._searchQuery, true);
|
| - if (this._searchView)
|
| - this._searchView.jumpToLastSearchResult();
|
| - return;
|
| - }
|
| -
|
| - this._searchView.jumpToPreviousSearchResult();
|
| - },
|
| -
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - canSearchAndReplace: function()
|
| - {
|
| - var view = /** @type {WebInspector.SourceFrame} */ (this.visibleView);
|
| - return !!view && view.canEditSource();
|
| - },
|
| -
|
| - /**
|
| - * @param {string} text
|
| - */
|
| - replaceSelectionWith: function(text)
|
| - {
|
| - var view = /** @type {WebInspector.SourceFrame} */ (this.visibleView);
|
| - view.replaceSearchMatchWith(text);
|
| - },
|
| -
|
| - /**
|
| - * @param {string} query
|
| - * @param {string} text
|
| - */
|
| - replaceAllWith: function(query, text)
|
| - {
|
| - var view = /** @type {WebInspector.SourceFrame} */ (this.visibleView);
|
| - view.replaceAllWith(query, text);
|
| - },
|
| -
|
| - _onKeyDown: function(event)
|
| - {
|
| - if (event.keyCode !== WebInspector.KeyboardShortcut.Keys.CtrlOrMeta.code)
|
| - return;
|
| - if (!this._paused || !this._executionSourceFrame)
|
| - return;
|
| - var stepIntoMarkup = this._executionSourceFrame.stepIntoMarkup();
|
| - if (stepIntoMarkup)
|
| - stepIntoMarkup.startIteratingSelection();
|
| - },
|
| -
|
| - _onKeyUp: function(event)
|
| - {
|
| - if (event.keyCode !== WebInspector.KeyboardShortcut.Keys.CtrlOrMeta.code)
|
| - return;
|
| - if (!this._paused || !this._executionSourceFrame)
|
| - return;
|
| - var stepIntoMarkup = this._executionSourceFrame.stepIntoMarkup();
|
| - if (!stepIntoMarkup)
|
| - return;
|
| - var currentPosition = stepIntoMarkup.getSelectedItemIndex();
|
| - if (typeof currentPosition === "undefined") {
|
| - stepIntoMarkup.stopIteratingSelection();
|
| - } else {
|
| - var rawLocation = stepIntoMarkup.getRawPosition(currentPosition);
|
| - this.doStepIntoSelection(rawLocation);
|
| - }
|
| - },
|
| -
|
| - _toggleFormatSource: function()
|
| - {
|
| - delete this._skipExecutionLineRevealing;
|
| - this._toggleFormatSourceButton.toggled = !this._toggleFormatSourceButton.toggled;
|
| - var uiSourceCodes = this._workspace.uiSourceCodes();
|
| - for (var i = 0; i < uiSourceCodes.length; ++i)
|
| - uiSourceCodes[i].setFormatted(this._toggleFormatSourceButton.toggled);
|
| -
|
| - var currentFile = this._editorContainer.currentFile();
|
| -
|
| - WebInspector.notifications.dispatchEventToListeners(WebInspector.UserMetrics.UserAction, {
|
| - action: WebInspector.UserMetrics.UserActionNames.TogglePrettyPrint,
|
| - enabled: this._toggleFormatSourceButton.toggled,
|
| - url: currentFile ? currentFile.originURL() : null
|
| - });
|
| - },
|
| -
|
| - addToWatch: function(expression)
|
| - {
|
| - this.sidebarPanes.watchExpressions.addExpression(expression);
|
| - },
|
| -
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - _toggleBreakpoint: function()
|
| - {
|
| - var sourceFrame = this.visibleView;
|
| - if (!sourceFrame)
|
| - return false;
|
| -
|
| - if (sourceFrame instanceof WebInspector.JavaScriptSourceFrame) {
|
| - var javaScriptSourceFrame = /** @type {WebInspector.JavaScriptSourceFrame} */ (sourceFrame);
|
| - javaScriptSourceFrame.toggleBreakpointOnCurrentLine();
|
| - return true;
|
| - }
|
| - return false;
|
| - },
|
| -
|
| - /**
|
| - * @param {Event=} event
|
| - * @return {boolean}
|
| - */
|
| - _showOutlineDialog: function(event)
|
| - {
|
| - var uiSourceCode = this._editorContainer.currentFile();
|
| - if (!uiSourceCode)
|
| - return false;
|
| -
|
| - switch (uiSourceCode.contentType()) {
|
| - case WebInspector.resourceTypes.Document:
|
| - case WebInspector.resourceTypes.Script:
|
| - WebInspector.JavaScriptOutlineDialog.show(this.visibleView, uiSourceCode);
|
| - return true;
|
| - case WebInspector.resourceTypes.Stylesheet:
|
| - WebInspector.StyleSheetOutlineDialog.show(this.visibleView, uiSourceCode);
|
| - return true;
|
| - }
|
| - return false;
|
| - },
|
| -
|
| - _installDebuggerSidebarController: function()
|
| - {
|
| - this._toggleDebuggerSidebarButton = new WebInspector.StatusBarButton("", "right-sidebar-show-hide-button scripts-debugger-show-hide-button", 3);
|
| - this._toggleDebuggerSidebarButton.addEventListener("click", clickHandler, this);
|
| - this.editorView.element.appendChild(this._toggleDebuggerSidebarButton.element);
|
| - this._enableDebuggerSidebar(!WebInspector.settings.debuggerSidebarHidden.get());
|
| -
|
| - function clickHandler()
|
| - {
|
| - this._enableDebuggerSidebar(this._toggleDebuggerSidebarButton.state === "left");
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {boolean} show
|
| - */
|
| - _enableDebuggerSidebar: function(show)
|
| - {
|
| - this._toggleDebuggerSidebarButton.state = show ? "right" : "left";
|
| - this._toggleDebuggerSidebarButton.title = show ? WebInspector.UIString("Hide debugger") : WebInspector.UIString("Show debugger");
|
| - if (show)
|
| - this.splitView.showSidebarElement();
|
| - else
|
| - this.splitView.hideSidebarElement();
|
| - this._debugSidebarResizeWidgetElement.enableStyleClass("hidden", !show);
|
| - WebInspector.settings.debuggerSidebarHidden.set(!show);
|
| - },
|
| -
|
| - /**
|
| - * @param {WebInspector.Event} event
|
| - */
|
| - _itemCreationRequested: function(event)
|
| - {
|
| - var project = event.data.project;
|
| - var path = event.data.path;
|
| - var filePath;
|
| - var shouldHideNavigator;
|
| - var uiSourceCode;
|
| - project.createFile(path, null, fileCreated.bind(this));
|
| -
|
| - /**
|
| - * @param {?string} path
|
| - */
|
| - function fileCreated(path)
|
| - {
|
| - if (!path)
|
| - return;
|
| - filePath = path;
|
| - uiSourceCode = project.uiSourceCode(filePath);
|
| - this._showSourceLocation(uiSourceCode);
|
| -
|
| - shouldHideNavigator = !this._navigatorController.isNavigatorPinned();
|
| - if (this._navigatorController.isNavigatorHidden())
|
| - this._navigatorController.showNavigatorOverlay();
|
| - this._navigator.rename(uiSourceCode, callback.bind(this));
|
| - }
|
| -
|
| - /**
|
| - * @param {boolean} committed
|
| - */
|
| - function callback(committed)
|
| - {
|
| - if (shouldHideNavigator)
|
| - this._navigatorController.hideNavigatorOverlay();
|
| -
|
| - if (!committed) {
|
| - project.deleteFile(uiSourceCode);
|
| - return;
|
| - }
|
| -
|
| - this._showSourceLocation(uiSourceCode);
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {WebInspector.Event} event
|
| - */
|
| - _itemRenamingRequested: function(event)
|
| - {
|
| - var uiSourceCode = /** @type {WebInspector.UISourceCode} */ (event.data);
|
| -
|
| - var shouldHideNavigator = !this._navigatorController.isNavigatorPinned();
|
| - if (this._navigatorController.isNavigatorHidden())
|
| - this._navigatorController.showNavigatorOverlay();
|
| - this._navigator.rename(uiSourceCode, callback.bind(this));
|
| -
|
| - /**
|
| - * @param {boolean} committed
|
| - */
|
| - function callback(committed)
|
| - {
|
| - if (shouldHideNavigator && committed) {
|
| - this._navigatorController.hideNavigatorOverlay();
|
| - this._showSourceLocation(uiSourceCode);
|
| - }
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {WebInspector.UISourceCode} uiSourceCode
|
| - */
|
| - _showLocalHistory: function(uiSourceCode)
|
| - {
|
| - WebInspector.RevisionHistoryView.showHistory(uiSourceCode);
|
| - },
|
| -
|
| - /**
|
| - * @param {WebInspector.ContextMenu} contextMenu
|
| - * @param {Object} target
|
| - */
|
| - appendApplicableItems: function(event, contextMenu, target)
|
| - {
|
| - this._appendUISourceCodeItems(contextMenu, target);
|
| - this._appendFunctionItems(contextMenu, target);
|
| - },
|
| -
|
| - /**
|
| - * @param {WebInspector.UISourceCode} uiSourceCode
|
| - */
|
| - _mapFileSystemToNetwork: function(uiSourceCode)
|
| - {
|
| - WebInspector.SelectUISourceCodeForProjectTypeDialog.show(uiSourceCode.name(), WebInspector.projectTypes.Network, mapFileSystemToNetwork.bind(this), this.editorView.mainElement)
|
| -
|
| - /**
|
| - * @param {WebInspector.UISourceCode} networkUISourceCode
|
| - */
|
| - function mapFileSystemToNetwork(networkUISourceCode)
|
| - {
|
| - this._workspace.addMapping(networkUISourceCode, uiSourceCode, WebInspector.fileSystemWorkspaceProvider);
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {WebInspector.UISourceCode} uiSourceCode
|
| - */
|
| - _removeNetworkMapping: function(uiSourceCode)
|
| - {
|
| - if (confirm(WebInspector.UIString("Are you sure you want to remove network mapping?")))
|
| - this._workspace.removeMapping(uiSourceCode);
|
| - },
|
| -
|
| - /**
|
| - * @param {WebInspector.UISourceCode} networkUISourceCode
|
| - */
|
| - _mapNetworkToFileSystem: function(networkUISourceCode)
|
| - {
|
| - WebInspector.SelectUISourceCodeForProjectTypeDialog.show(networkUISourceCode.name(), WebInspector.projectTypes.FileSystem, mapNetworkToFileSystem.bind(this), this.editorView.mainElement)
|
| -
|
| - /**
|
| - * @param {WebInspector.UISourceCode} uiSourceCode
|
| - */
|
| - function mapNetworkToFileSystem(uiSourceCode)
|
| - {
|
| - this._workspace.addMapping(networkUISourceCode, uiSourceCode, WebInspector.fileSystemWorkspaceProvider);
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {WebInspector.ContextMenu} contextMenu
|
| - * @param {WebInspector.UISourceCode} uiSourceCode
|
| - */
|
| - _appendUISourceCodeMappingItems: function(contextMenu, uiSourceCode)
|
| - {
|
| - if (uiSourceCode.project().type() === WebInspector.projectTypes.FileSystem) {
|
| - var hasMappings = !!uiSourceCode.url;
|
| - if (!hasMappings)
|
| - contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Map to network resource\u2026" : "Map to Network Resource\u2026"), this._mapFileSystemToNetwork.bind(this, uiSourceCode));
|
| - else
|
| - contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Remove network mapping" : "Remove Network Mapping"), this._removeNetworkMapping.bind(this, uiSourceCode));
|
| - }
|
| -
|
| - if (uiSourceCode.project().type() === WebInspector.projectTypes.Network) {
|
| - /**
|
| - * @param {WebInspector.Project} project
|
| - */
|
| - function filterProject(project)
|
| - {
|
| - return project.type() === WebInspector.projectTypes.FileSystem;
|
| - }
|
| -
|
| - if (!this._workspace.projects().filter(filterProject).length)
|
| - return;
|
| - if (this._workspace.uiSourceCodeForURL(uiSourceCode.url) === uiSourceCode)
|
| - contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Map to file system resource\u2026" : "Map to File System Resource\u2026"), this._mapNetworkToFileSystem.bind(this, uiSourceCode));
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {WebInspector.ContextMenu} contextMenu
|
| - * @param {Object} target
|
| - */
|
| - _appendUISourceCodeItems: function(contextMenu, target)
|
| - {
|
| - if (!(target instanceof WebInspector.UISourceCode))
|
| - return;
|
| -
|
| - var uiSourceCode = /** @type {WebInspector.UISourceCode} */ (target);
|
| - contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Local modifications\u2026" : "Local Modifications\u2026"), this._showLocalHistory.bind(this, uiSourceCode));
|
| -
|
| - if (WebInspector.isolatedFileSystemManager.supportsFileSystems())
|
| - this._appendUISourceCodeMappingItems(contextMenu, uiSourceCode);
|
| - },
|
| -
|
| - /**
|
| - * @param {WebInspector.ContextMenu} contextMenu
|
| - * @param {Object} target
|
| - */
|
| - _appendFunctionItems: function(contextMenu, target)
|
| - {
|
| - if (!(target instanceof WebInspector.RemoteObject))
|
| - return;
|
| - var remoteObject = /** @type {WebInspector.RemoteObject} */ (target);
|
| - if (remoteObject.type !== "function")
|
| - return;
|
| -
|
| - function didGetDetails(error, response)
|
| - {
|
| - if (error) {
|
| - console.error(error);
|
| - return;
|
| - }
|
| -
|
| - WebInspector.inspectorView.setCurrentPanel(this);
|
| - var uiLocation = WebInspector.debuggerModel.rawLocationToUILocation(response.location);
|
| - this._showSourceLocation(uiLocation.uiSourceCode, uiLocation.lineNumber, uiLocation.columnNumber);
|
| - }
|
| -
|
| - function revealFunction()
|
| - {
|
| - DebuggerAgent.getFunctionDetails(remoteObject.objectId, didGetDetails.bind(this));
|
| - }
|
| -
|
| - contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Show function definition" : "Show Function Definition"), revealFunction.bind(this));
|
| - },
|
| -
|
| - showGoToSourceDialog: function()
|
| - {
|
| - var uiSourceCodes = this._editorContainer.historyUISourceCodes();
|
| - /** @type {!Map.<WebInspector.UISourceCode, number>} */
|
| - var defaultScores = new Map();
|
| - for (var i = 1; i < uiSourceCodes.length; ++i) // Skip current element
|
| - defaultScores.put(uiSourceCodes[i], uiSourceCodes.length - i);
|
| - WebInspector.OpenResourceDialog.show(this, this.editorView.mainElement, undefined, defaultScores);
|
| - },
|
| -
|
| - _dockSideChanged: function()
|
| - {
|
| - var dockSide = WebInspector.dockController.dockSide();
|
| - var vertically = dockSide === WebInspector.DockController.State.DockedToRight && WebInspector.settings.splitVerticallyWhenDockedToRight.get();
|
| - this._splitVertically(vertically);
|
| - },
|
| -
|
| - /**
|
| - * @param {boolean} vertically
|
| - */
|
| - _splitVertically: function(vertically)
|
| - {
|
| - if (this.sidebarPaneView && vertically === !this.splitView.isVertical())
|
| - return;
|
| -
|
| - if (this.sidebarPaneView)
|
| - this.sidebarPaneView.detach();
|
| -
|
| - this.splitView.setVertical(!vertically);
|
| -
|
| - if (!vertically) {
|
| - this.sidebarPaneView = new WebInspector.SidebarPaneStack();
|
| - for (var pane in this.sidebarPanes)
|
| - this.sidebarPaneView.addPane(this.sidebarPanes[pane]);
|
| -
|
| - this.sidebarElement.appendChild(this.debugToolbar);
|
| - } else {
|
| - this._enableDebuggerSidebar(true);
|
| -
|
| - this.sidebarPaneView = new WebInspector.SplitView(true, this.name + "PanelSplitSidebarRatio", 0.5);
|
| -
|
| - var group1 = new WebInspector.SidebarPaneStack();
|
| - group1.show(this.sidebarPaneView.firstElement());
|
| - group1.element.id = "scripts-sidebar-stack-pane";
|
| - group1.addPane(this.sidebarPanes.callstack);
|
| - group1.addPane(this.sidebarPanes.jsBreakpoints);
|
| - group1.addPane(this.sidebarPanes.domBreakpoints);
|
| - group1.addPane(this.sidebarPanes.xhrBreakpoints);
|
| - group1.addPane(this.sidebarPanes.eventListenerBreakpoints);
|
| - if (this.sidebarPanes.workerList)
|
| - group1.addPane(this.sidebarPanes.workerList);
|
| -
|
| - var group2 = new WebInspector.SidebarTabbedPane();
|
| - group2.show(this.sidebarPaneView.secondElement());
|
| - group2.addPane(this.sidebarPanes.scopechain);
|
| - group2.addPane(this.sidebarPanes.watchExpressions);
|
| -
|
| - this.sidebarPaneView.firstElement().appendChild(this.debugToolbar);
|
| - }
|
| -
|
| - this.sidebarPaneView.element.id = "scripts-debug-sidebar-contents";
|
| - this.sidebarPaneView.show(this.splitView.sidebarElement);
|
| -
|
| - this.sidebarPanes.scopechain.expand();
|
| - this.sidebarPanes.jsBreakpoints.expand();
|
| - this.sidebarPanes.callstack.expand();
|
| -
|
| - if (WebInspector.settings.watchExpressions.get().length > 0)
|
| - this.sidebarPanes.watchExpressions.expand();
|
| - },
|
| -
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - canSetFooterElement: function()
|
| - {
|
| - return true;
|
| - },
|
| -
|
| - /**
|
| - * @param {Element?} element
|
| - */
|
| - setFooterElement: function(element)
|
| - {
|
| - if (element) {
|
| - this._editorFooterElement.removeStyleClass("hidden");
|
| - this._editorFooterElement.appendChild(element);
|
| - this._editorContentsElement.style.bottom = this._editorFooterElement.offsetHeight + "px";
|
| - } else {
|
| - this._editorFooterElement.addStyleClass("hidden");
|
| - this._editorFooterElement.removeChildren();
|
| - this._editorContentsElement.style.bottom = 0;
|
| - }
|
| - this.doResize();
|
| - },
|
| -
|
| - __proto__: WebInspector.Panel.prototype
|
| -}
|
|
|