diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebInspectorUI/UserInterface/Views/DebuggerDashboardView.js | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebInspectorUI/UserInterface/Views/DebuggerDashboardView.js')
-rw-r--r-- | Source/WebInspectorUI/UserInterface/Views/DebuggerDashboardView.js | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/Source/WebInspectorUI/UserInterface/Views/DebuggerDashboardView.js b/Source/WebInspectorUI/UserInterface/Views/DebuggerDashboardView.js new file mode 100644 index 000000000..90b9b52df --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Views/DebuggerDashboardView.js @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2014-2015 Apple 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. AND ITS CONTRIBUTORS ``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 ITS 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. + */ + +WebInspector.DebuggerDashboardView = class DebuggerDashboardView extends WebInspector.DashboardView +{ + constructor(representedObject) + { + super(representedObject, "debugger"); + + WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ActiveCallFrameDidChange, this._rebuildLocation, this); + + this._navigationBar = new WebInspector.NavigationBar; + this.element.appendChild(this._navigationBar.element); + + var tooltip = WebInspector.UIString("Continue script execution (%s or %s)").format(WebInspector.pauseOrResumeKeyboardShortcut.displayName, WebInspector.pauseOrResumeAlternateKeyboardShortcut.displayName); + this._debuggerResumeButtonItem = new WebInspector.ActivateButtonNavigationItem("debugger-dashboard-pause", tooltip, tooltip, "Images/Resume.svg", 15, 15); + this._debuggerResumeButtonItem.activated = true; + this._debuggerResumeButtonItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked, this._resumeButtonClicked, this); + this._navigationBar.addNavigationItem(this._debuggerResumeButtonItem); + + var message = this._messageElement = document.createElement("div"); + message.classList.add("message"); + message.title = message.textContent = WebInspector.UIString("Debugger Paused"); + this.element.appendChild(message); + + var dividerElement = document.createElement("div"); + dividerElement.classList.add("divider"); + this.element.appendChild(dividerElement); + + var locationElement = this._locationElement = document.createElement("div"); + locationElement.classList.add("location"); + this.element.appendChild(locationElement); + + this._rebuildLocation(); + } + + // Private + + _rebuildLocation() + { + if (!WebInspector.debuggerManager.activeCallFrame) + return; + + this._locationElement.removeChildren(); + + var callFrame = WebInspector.debuggerManager.activeCallFrame; + var functionName = callFrame.functionName || WebInspector.UIString("(anonymous function)"); + + var iconClassName = WebInspector.DebuggerDashboardView.FunctionIconStyleClassName; + + // This is more than likely an event listener function with an "on" prefix and it is + // as long or longer than the shortest event listener name -- "oncut". + if (callFrame.functionName && callFrame.functionName.startsWith("on") && callFrame.functionName.length >= 5) + iconClassName = WebInspector.DebuggerDashboardView.EventListenerIconStyleClassName; + + var iconElement = document.createElement("div"); + iconElement.classList.add(iconClassName); + this._locationElement.appendChild(iconElement); + + var iconImageElement = document.createElement("img"); + iconImageElement.className = "icon"; + iconElement.appendChild(iconImageElement); + + var nameElement = document.createElement("div"); + nameElement.append(functionName); + nameElement.classList.add("function-name"); + this._locationElement.appendChild(nameElement); + + var sourceCodeLocation = WebInspector.debuggerManager.activeCallFrame.sourceCodeLocation; + var shouldPreventLinkFloat = true; + var linkElement = WebInspector.createSourceCodeLocationLink(sourceCodeLocation, shouldPreventLinkFloat); + this._locationElement.appendChild(linkElement); + } + + _resumeButtonClicked() + { + WebInspector.debuggerManager.resume(); + } +}; + +WebInspector.DebuggerDashboardView.FunctionIconStyleClassName = WebInspector.CallFrameView.FunctionIconStyleClassName; +WebInspector.DebuggerDashboardView.EventListenerIconStyleClassName = WebInspector.CallFrameView.EventListenerIconStyleClassName; |