blob: 1d7652c5fb6b87fa9f91a29f1d78fc4d78f97e75 [file] [log] [blame]
/*
* 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);
const options = {
dontFloat: true,
ignoreNetworkTab: true,
ignoreSearchTab: true,
};
let linkElement = WebInspector.createSourceCodeLocationLink(WebInspector.debuggerManager.activeCallFrame.sourceCodeLocation, options);
this._locationElement.appendChild(linkElement);
}
_resumeButtonClicked()
{
WebInspector.debuggerManager.resume();
}
};
WebInspector.DebuggerDashboardView.FunctionIconStyleClassName = WebInspector.CallFrameView.FunctionIconStyleClassName;
WebInspector.DebuggerDashboardView.EventListenerIconStyleClassName = WebInspector.CallFrameView.EventListenerIconStyleClassName;