| Index: third_party/WebKit/Source/devtools/front_end/sources/DebuggerPausedMessage.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/sources/DebuggerPausedMessage.js b/third_party/WebKit/Source/devtools/front_end/sources/DebuggerPausedMessage.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d65bc0eca04f1637530ab8eeb705a0a66d783e98
|
| --- /dev/null
|
| +++ b/third_party/WebKit/Source/devtools/front_end/sources/DebuggerPausedMessage.js
|
| @@ -0,0 +1,92 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +/**
|
| + * @constructor
|
| + */
|
| +WebInspector.DebuggerPausedMessage = function()
|
| +{
|
| + this._element = createElementWithClass("div", "paused-message flex-none");
|
| + var root = WebInspector.createShadowRootWithCoreStyles(this._element, "sources/debuggerPausedMessage.css");
|
| + this._contentElement = root.createChild("div", "paused-status");
|
| +}
|
| +
|
| +WebInspector.DebuggerPausedMessage.prototype = {
|
| + /**
|
| + * @return {!Element}
|
| + */
|
| + element: function()
|
| + {
|
| + return this._element;
|
| + },
|
| +
|
| + /**
|
| + * @param {?WebInspector.DebuggerPausedDetails} details
|
| + * @param {!WebInspector.DebuggerWorkspaceBinding} debuggerWorkspaceBinding
|
| + * @param {!WebInspector.BreakpointManager} breakpointManager
|
| + */
|
| + render: function(details, debuggerWorkspaceBinding, breakpointManager)
|
| + {
|
| + var status = this._contentElement;
|
| + status.hidden = !details;
|
| + status.removeChildren();
|
| + if (!details)
|
| + return;
|
| +
|
| + var messageWrapper;
|
| + if (details.reason === WebInspector.DebuggerModel.BreakReason.DOM) {
|
| + messageWrapper = WebInspector.DOMBreakpointsSidebarPane.createBreakpointHitMessage(details);
|
| + } else if (details.reason === WebInspector.DebuggerModel.BreakReason.EventListener) {
|
| + var eventName = details.auxData["eventName"];
|
| + var eventNameForUI = WebInspector.EventListenerBreakpointsSidebarPane.eventNameForUI(eventName, details.auxData);
|
| + messageWrapper = buildWrapper(WebInspector.UIString("Paused on event listener"), eventNameForUI);
|
| + } else if (details.reason === WebInspector.DebuggerModel.BreakReason.XHR) {
|
| + messageWrapper = buildWrapper(WebInspector.UIString("Paused on XMLHttpRequest"), details.auxData["url"] || "");
|
| + } else if (details.reason === WebInspector.DebuggerModel.BreakReason.Exception) {
|
| + var description = details.auxData["description"] || details.auxData["value"] || "";
|
| + var descriptionFirstLine = description.split("\n", 1)[0];
|
| + messageWrapper = buildWrapper(WebInspector.UIString("Paused on exception"), descriptionFirstLine, description);
|
| + } else if (details.reason === WebInspector.DebuggerModel.BreakReason.PromiseRejection) {
|
| + var description = details.auxData["description"] || details.auxData["value"] || "";
|
| + var descriptionFirstLine = description.split("\n", 1)[0];
|
| + messageWrapper = buildWrapper(WebInspector.UIString("Paused on promise rejection"), descriptionFirstLine, description);
|
| + } else if (details.reason === WebInspector.DebuggerModel.BreakReason.Assert) {
|
| + messageWrapper = buildWrapper(WebInspector.UIString("Paused on assertion"));
|
| + } else if (details.reason === WebInspector.DebuggerModel.BreakReason.DebugCommand) {
|
| + messageWrapper = buildWrapper(WebInspector.UIString("Paused on debugged function"));
|
| + } else if (details.callFrames.length) {
|
| + var uiLocation = debuggerWorkspaceBinding.rawLocationToUILocation(details.callFrames[0].location());
|
| + var breakpoint = uiLocation ? breakpointManager.findBreakpointOnLine(uiLocation.uiSourceCode, uiLocation.lineNumber) : null;
|
| + var defaultText = breakpoint ? WebInspector.UIString("Paused on breakpoint") : WebInspector.UIString("Debugger paused");
|
| + messageWrapper = buildWrapper(defaultText);
|
| + } else {
|
| + console.warn("ScriptsPanel paused, but callFrames.length is zero."); // TODO remove this once we understand this case better
|
| + }
|
| +
|
| + var errorLike = details.reason === WebInspector.DebuggerModel.BreakReason.Exception || details.reason === WebInspector.DebuggerModel.BreakReason.PromiseRejection || details.reason === WebInspector.DebuggerModel.BreakReason.Assert;
|
| + status.classList.toggle("error-reason", errorLike);
|
| + if (messageWrapper)
|
| + status.appendChild(messageWrapper);
|
| +
|
| + /**
|
| + * @param {string} mainText
|
| + * @param {string=} subText
|
| + * @param {string=} title
|
| + * @return {!Element}
|
| + */
|
| + function buildWrapper(mainText, subText, title)
|
| + {
|
| + var messageWrapper = createElement("span");
|
| + var mainElement = messageWrapper.createChild("div", "status-main");
|
| + mainElement.textContent = mainText;
|
| + if (subText) {
|
| + var subElement = messageWrapper.createChild("div", "status-sub monospace");
|
| + subElement.textContent = subText;
|
| + }
|
| + if (title)
|
| + messageWrapper.title = title;
|
| + return messageWrapper;
|
| + }
|
| + }
|
| +}
|
|
|