Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(762)

Unified Diff: third_party/WebKit/Source/devtools/front_end/sources/CallStackSidebarPane.js

Issue 2466123002: DevTools: reformat front-end code to match chromium style. (Closed)
Patch Set: all done Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/sources/CallStackSidebarPane.js
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/CallStackSidebarPane.js b/third_party/WebKit/Source/devtools/front_end/sources/CallStackSidebarPane.js
index 176fa664b1c2da65693f164aa76cb6df16f3eacb..a103086bce4c8ce9ce7a9b5af1c41e21e45cb63d 100644
--- a/third_party/WebKit/Source/devtools/front_end/sources/CallStackSidebarPane.js
+++ b/third_party/WebKit/Source/devtools/front_end/sources/CallStackSidebarPane.js
@@ -22,441 +22,432 @@
* (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.SimpleView}
* @implements {WebInspector.ContextFlavorListener}
+ * @unrestricted
*/
-WebInspector.CallStackSidebarPane = function()
-{
- WebInspector.SimpleView.call(this, WebInspector.UIString("Call Stack"));
- this.element.addEventListener("keydown", this._keyDown.bind(this), true);
+WebInspector.CallStackSidebarPane = class extends WebInspector.SimpleView {
+ constructor() {
+ super(WebInspector.UIString('Call Stack'));
+ this.element.addEventListener('keydown', this._keyDown.bind(this), true);
this.element.tabIndex = 0;
this.callFrameList = new WebInspector.UIList();
this.callFrameList.show(this.element);
this._linkifier = new WebInspector.Linkifier();
- WebInspector.moduleSetting("enableAsyncStackTraces").addChangeListener(this._asyncStackTracesStateChanged, this);
- WebInspector.moduleSetting("skipStackFramesPattern").addChangeListener(this._update, this);
+ WebInspector.moduleSetting('enableAsyncStackTraces').addChangeListener(this._asyncStackTracesStateChanged, this);
+ WebInspector.moduleSetting('skipStackFramesPattern').addChangeListener(this._update, this);
/** @type {!Array<!WebInspector.CallStackSidebarPane.CallFrame>} */
this.callFrames = [];
this._locationPool = new WebInspector.LiveLocationPool();
this._update();
-};
+ }
+
+ /**
+ * @override
+ * @param {?Object} object
+ */
+ flavorChanged(object) {
+ this._update();
+ }
+
+ _update() {
+ var details = WebInspector.context.flavor(WebInspector.DebuggerPausedDetails);
-WebInspector.CallStackSidebarPane.prototype = {
- /**
- * @override
- * @param {?Object} object
- */
- flavorChanged: function(object)
- {
- this._update();
- },
-
- _update: function()
- {
- var details = WebInspector.context.flavor(WebInspector.DebuggerPausedDetails);
-
- this.callFrameList.detach();
- this.callFrameList.clear();
- this._linkifier.reset();
- this.element.removeChildren();
- this._locationPool.disposeAll();
-
- this.callFrameList.show(this.element);
- delete this._hiddenCallFramesMessageElement;
- this.callFrames = [];
- this._hiddenCallFrames = 0;
-
- if (!details) {
- var infoElement = this.element.createChild("div", "gray-info-message");
- infoElement.textContent = WebInspector.UIString("Not Paused");
- WebInspector.context.setFlavor(WebInspector.DebuggerModel.CallFrame, null);
- return;
- }
- this._debuggerModel = details.debuggerModel;
- var asyncStackTrace = details.asyncStackTrace;
-
- this._appendSidebarCallFrames(this._callFramesFromDebugger(details.callFrames));
- var topStackHidden = (this._hiddenCallFrames === this.callFrames.length);
-
- var peviousStackTrace = details.callFrames;
- while (asyncStackTrace) {
- var title = "";
- if (asyncStackTrace.description === "async function") {
- var lastPreviousFrame = peviousStackTrace[peviousStackTrace.length - 1];
- var topFrame = asyncStackTrace.callFrames[0];
- var lastPreviousFrameName = WebInspector.beautifyFunctionName(lastPreviousFrame.functionName);
- var topFrameName = WebInspector.beautifyFunctionName(topFrame.functionName);
- title = topFrameName + " awaits " + lastPreviousFrameName;
- } else {
- title = WebInspector.asyncStackTraceLabel(asyncStackTrace.description);
- }
- var asyncCallFrame = new WebInspector.UIList.Item(title, "", true);
- asyncCallFrame.setHoverable(false);
- asyncCallFrame.element.addEventListener("contextmenu", this._asyncCallFrameContextMenu.bind(this, this.callFrames.length), true);
- this._appendSidebarCallFrames(this._callFramesFromRuntime(asyncStackTrace.callFrames, asyncCallFrame), asyncCallFrame);
- peviousStackTrace = asyncStackTrace.callFrames;
- asyncStackTrace = asyncStackTrace.parent;
- }
-
- if (topStackHidden)
- this._revealHiddenCallFrames();
- if (this._hiddenCallFrames) {
- var element = createElementWithClass("div", "hidden-callframes-message");
- if (this._hiddenCallFrames === 1)
- element.textContent = WebInspector.UIString("1 stack frame is hidden (black-boxed).");
- else
- element.textContent = WebInspector.UIString("%d stack frames are hidden (black-boxed).", this._hiddenCallFrames);
- element.createTextChild(" ");
- var showAllLink = element.createChild("span", "link");
- showAllLink.textContent = WebInspector.UIString("Show");
- showAllLink.addEventListener("click", this._revealHiddenCallFrames.bind(this), false);
- this.element.insertBefore(element, this.element.firstChild);
- this._hiddenCallFramesMessageElement = element;
- }
- this._selectNextVisibleCallFrame(0);
- this.revealView();
- },
-
- /**
- * @param {!Array.<!WebInspector.DebuggerModel.CallFrame>} callFrames
- * @return {!Array<!WebInspector.CallStackSidebarPane.CallFrame>}
- */
- _callFramesFromDebugger: function(callFrames)
- {
- var callFrameItems = [];
- for (var i = 0, n = callFrames.length; i < n; ++i) {
- var callFrame = callFrames[i];
- var callFrameItem = new WebInspector.CallStackSidebarPane.CallFrame(callFrame.functionName, callFrame.location(), this._linkifier, callFrame, this._locationPool);
- callFrameItem.element.addEventListener("click", this._callFrameSelected.bind(this, callFrameItem), false);
- callFrameItems.push(callFrameItem);
- }
- return callFrameItems;
- },
-
- /**
- * @param {!Array<!RuntimeAgent.CallFrame>} callFrames
- * @param {!WebInspector.UIList.Item} asyncCallFrameItem
- * @return {!Array<!WebInspector.CallStackSidebarPane.CallFrame>}
- */
- _callFramesFromRuntime: function(callFrames, asyncCallFrameItem)
- {
- var callFrameItems = [];
- for (var i = 0, n = callFrames.length; i < n; ++i) {
- var callFrame = callFrames[i];
- var location = new WebInspector.DebuggerModel.Location(this._debuggerModel, callFrame.scriptId, callFrame.lineNumber, callFrame.columnNumber);
- var callFrameItem = new WebInspector.CallStackSidebarPane.CallFrame(callFrame.functionName, location, this._linkifier, null, this._locationPool, asyncCallFrameItem);
- callFrameItem.element.addEventListener("click", this._asyncCallFrameClicked.bind(this, callFrameItem), false);
- callFrameItems.push(callFrameItem);
- }
- return callFrameItems;
- },
-
- /**
- * @param {!Array.<!WebInspector.CallStackSidebarPane.CallFrame>} callFrames
- * @param {!WebInspector.UIList.Item=} asyncCallFrameItem
- */
- _appendSidebarCallFrames: function(callFrames, asyncCallFrameItem)
- {
- if (asyncCallFrameItem)
- this.callFrameList.addItem(asyncCallFrameItem);
-
- var allCallFramesHidden = true;
- for (var i = 0, n = callFrames.length; i < n; ++i) {
- var callFrameItem = callFrames[i];
- callFrameItem.element.addEventListener("contextmenu", this._callFrameContextMenu.bind(this, callFrameItem), true);
- this.callFrames.push(callFrameItem);
-
- if (WebInspector.blackboxManager.isBlackboxedRawLocation(callFrameItem._location)) {
- callFrameItem.setHidden(true);
- callFrameItem.setDimmed(true);
- ++this._hiddenCallFrames;
- } else {
- this.callFrameList.addItem(callFrameItem);
- allCallFramesHidden = false;
- }
- }
- if (allCallFramesHidden && asyncCallFrameItem) {
- asyncCallFrameItem.setHidden(true);
- asyncCallFrameItem.element.remove();
- }
- },
-
- _revealHiddenCallFrames: function()
- {
- if (!this._hiddenCallFrames)
- return;
- this._hiddenCallFrames = 0;
- this.callFrameList.clear();
- for (var i = 0; i < this.callFrames.length; ++i) {
- var callFrame = this.callFrames[i];
- if (callFrame._asyncCallFrame) {
- callFrame._asyncCallFrame.setHidden(false);
- if (i && callFrame._asyncCallFrame !== this.callFrames[i - 1]._asyncCallFrame)
- this.callFrameList.addItem(callFrame._asyncCallFrame);
- }
- callFrame.setHidden(false);
- this.callFrameList.addItem(callFrame);
- }
- if (this._hiddenCallFramesMessageElement) {
- this._hiddenCallFramesMessageElement.remove();
- delete this._hiddenCallFramesMessageElement;
- }
- },
-
- /**
- * @param {!WebInspector.CallStackSidebarPane.CallFrame} callFrame
- * @param {!Event} event
- */
- _callFrameContextMenu: function(callFrame, event)
- {
- var contextMenu = new WebInspector.ContextMenu(event);
- var debuggerCallFrame = callFrame._debuggerCallFrame;
- if (debuggerCallFrame)
- contextMenu.appendItem(WebInspector.UIString.capitalize("Restart ^frame"), debuggerCallFrame.restart.bind(debuggerCallFrame));
-
- contextMenu.appendItem(WebInspector.UIString.capitalize("Copy ^stack ^trace"), this._copyStackTrace.bind(this));
-
- var uiLocation = WebInspector.debuggerWorkspaceBinding.rawLocationToUILocation(callFrame._location);
- this.appendBlackboxURLContextMenuItems(contextMenu, uiLocation.uiSourceCode);
-
- contextMenu.show();
- },
-
- /**
- * @param {number} index
- * @param {!Event} event
- */
- _asyncCallFrameContextMenu: function(index, event)
- {
- for (; index < this.callFrames.length; ++index) {
- var callFrame = this.callFrames[index];
- if (!callFrame.isHidden()) {
- this._callFrameContextMenu(callFrame, event);
- break;
- }
- }
- },
-
- /**
- * @param {!WebInspector.ContextMenu} contextMenu
- * @param {!WebInspector.UISourceCode} uiSourceCode
- */
- appendBlackboxURLContextMenuItems: function(contextMenu, uiSourceCode)
- {
- var binding = WebInspector.persistence.binding(uiSourceCode);
- if (binding)
- uiSourceCode = binding.network;
- if (uiSourceCode.project().type() === WebInspector.projectTypes.FileSystem)
- return;
- var canBlackbox = WebInspector.blackboxManager.canBlackboxUISourceCode(uiSourceCode);
- var isBlackboxed = WebInspector.blackboxManager.isBlackboxedUISourceCode(uiSourceCode);
- var isContentScript = uiSourceCode.project().type() === WebInspector.projectTypes.ContentScripts;
-
- var manager = WebInspector.blackboxManager;
- if (canBlackbox) {
- if (isBlackboxed)
- contextMenu.appendItem(WebInspector.UIString.capitalize("Stop ^blackboxing"), manager.unblackboxUISourceCode.bind(manager, uiSourceCode));
- else
- contextMenu.appendItem(WebInspector.UIString.capitalize("Blackbox ^script"), manager.blackboxUISourceCode.bind(manager, uiSourceCode));
- }
- if (isContentScript) {
- if (isBlackboxed)
- contextMenu.appendItem(WebInspector.UIString.capitalize("Stop blackboxing ^all ^content ^scripts"), manager.blackboxContentScripts.bind(manager));
- else
- contextMenu.appendItem(WebInspector.UIString.capitalize("Blackbox ^all ^content ^scripts"), manager.unblackboxContentScripts.bind(manager));
- }
- },
-
- _asyncStackTracesStateChanged: function()
- {
- var enabled = WebInspector.moduleSetting("enableAsyncStackTraces").get();
- if (!enabled && this.callFrames)
- this._removeAsyncCallFrames();
- },
-
- _removeAsyncCallFrames: function()
- {
- var shouldSelectTopFrame = false;
- var lastSyncCallFrameIndex = -1;
- for (var i = 0; i < this.callFrames.length; ++i) {
- var callFrame = this.callFrames[i];
- if (callFrame._asyncCallFrame) {
- if (callFrame.isSelected())
- shouldSelectTopFrame = true;
- callFrame._asyncCallFrame.element.remove();
- callFrame.element.remove();
- } else {
- lastSyncCallFrameIndex = i;
- }
- }
- this.callFrames.length = lastSyncCallFrameIndex + 1;
- if (shouldSelectTopFrame)
- this._selectNextVisibleCallFrame(0);
- },
-
- /**
- * @return {boolean}
- */
- _selectNextCallFrameOnStack: function()
- {
- var index = this._selectedCallFrameIndex();
- if (index === -1)
- return false;
- return this._selectNextVisibleCallFrame(index + 1);
- },
-
- /**
- * @return {boolean}
- */
- _selectPreviousCallFrameOnStack: function()
- {
- var index = this._selectedCallFrameIndex();
- if (index === -1)
- return false;
- return this._selectNextVisibleCallFrame(index - 1, true);
- },
-
- /**
- * @param {number} index
- * @param {boolean=} backward
- * @return {boolean}
- */
- _selectNextVisibleCallFrame: function(index, backward)
- {
- while (0 <= index && index < this.callFrames.length) {
- var callFrame = this.callFrames[index];
- if (!callFrame.isHidden() && !callFrame.isLabel() && !callFrame._asyncCallFrame) {
- this._callFrameSelected(callFrame);
- return true;
- }
- index += backward ? -1 : 1;
- }
- return false;
- },
-
- /**
- * @return {number}
- */
- _selectedCallFrameIndex: function()
- {
- if (!this._debuggerModel)
- return -1;
- var selectedCallFrame = this._debuggerModel.selectedCallFrame();
- if (!selectedCallFrame)
- return -1;
- for (var i = 0; i < this.callFrames.length; ++i) {
- if (this.callFrames[i]._debuggerCallFrame === selectedCallFrame)
- return i;
- }
- return -1;
- },
-
- /**
- * @param {!WebInspector.CallStackSidebarPane.CallFrame} callFrameItem
- */
- _asyncCallFrameClicked: function(callFrameItem)
- {
- var uiLocation = WebInspector.debuggerWorkspaceBinding.rawLocationToUILocation(callFrameItem._location);
- WebInspector.Revealer.reveal(uiLocation);
- },
-
- /**
- * @param {!WebInspector.CallStackSidebarPane.CallFrame} selectedCallFrame
- */
- _callFrameSelected: function(selectedCallFrame)
- {
- selectedCallFrame.element.scrollIntoViewIfNeeded();
- var callFrame = selectedCallFrame._debuggerCallFrame;
-
- for (var i = 0; i < this.callFrames.length; ++i) {
- var callFrameItem = this.callFrames[i];
- callFrameItem.setSelected(callFrameItem === selectedCallFrame);
- if (callFrameItem.isSelected() && callFrameItem.isHidden())
- this._revealHiddenCallFrames();
- }
-
- var oldCallFrame = WebInspector.context.flavor(WebInspector.DebuggerModel.CallFrame);
- if (oldCallFrame === callFrame) {
- var uiLocation = WebInspector.debuggerWorkspaceBinding.rawLocationToUILocation(callFrame.location());
- WebInspector.Revealer.reveal(uiLocation);
- return;
- }
-
- WebInspector.context.setFlavor(WebInspector.DebuggerModel.CallFrame, callFrame);
- callFrame.debuggerModel.setSelectedCallFrame(callFrame);
- },
-
- _copyStackTrace: function()
- {
- var text = "";
- var lastCallFrame = null;
- for (var i = 0; i < this.callFrames.length; ++i) {
- var callFrame = this.callFrames[i];
- if (callFrame.isHidden())
- continue;
- if (lastCallFrame && callFrame._asyncCallFrame !== lastCallFrame._asyncCallFrame)
- text += callFrame._asyncCallFrame.title() + "\n";
- text += callFrame.title() + " (" + callFrame.subtitle() + ")\n";
- lastCallFrame = callFrame;
- }
- InspectorFrontendHost.copyText(text);
- },
-
- /**
- * @param {function(!Array.<!WebInspector.KeyboardShortcut.Descriptor>, function(!Event=):boolean)} registerShortcutDelegate
- */
- registerShortcuts: function(registerShortcutDelegate)
- {
- registerShortcutDelegate(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.NextCallFrame, this._selectNextCallFrameOnStack.bind(this));
- registerShortcutDelegate(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.PrevCallFrame, this._selectPreviousCallFrameOnStack.bind(this));
- },
-
- _keyDown: function(event)
- {
- if (event.altKey || event.shiftKey || event.metaKey || event.ctrlKey)
- return;
- if (event.key === "ArrowUp" && this._selectPreviousCallFrameOnStack() || event.key === "ArrowDown" && this._selectNextCallFrameOnStack())
- event.consume(true);
- },
-
- __proto__: WebInspector.SimpleView.prototype
+ this.callFrameList.detach();
+ this.callFrameList.clear();
+ this._linkifier.reset();
+ this.element.removeChildren();
+ this._locationPool.disposeAll();
+
+ this.callFrameList.show(this.element);
+ delete this._hiddenCallFramesMessageElement;
+ this.callFrames = [];
+ this._hiddenCallFrames = 0;
+
+ if (!details) {
+ var infoElement = this.element.createChild('div', 'gray-info-message');
+ infoElement.textContent = WebInspector.UIString('Not Paused');
+ WebInspector.context.setFlavor(WebInspector.DebuggerModel.CallFrame, null);
+ return;
+ }
+ this._debuggerModel = details.debuggerModel;
+ var asyncStackTrace = details.asyncStackTrace;
+
+ this._appendSidebarCallFrames(this._callFramesFromDebugger(details.callFrames));
+ var topStackHidden = (this._hiddenCallFrames === this.callFrames.length);
+
+ var peviousStackTrace = details.callFrames;
+ while (asyncStackTrace) {
+ var title = '';
+ if (asyncStackTrace.description === 'async function') {
+ var lastPreviousFrame = peviousStackTrace[peviousStackTrace.length - 1];
+ var topFrame = asyncStackTrace.callFrames[0];
+ var lastPreviousFrameName = WebInspector.beautifyFunctionName(lastPreviousFrame.functionName);
+ var topFrameName = WebInspector.beautifyFunctionName(topFrame.functionName);
+ title = topFrameName + ' awaits ' + lastPreviousFrameName;
+ } else {
+ title = WebInspector.asyncStackTraceLabel(asyncStackTrace.description);
+ }
+ var asyncCallFrame = new WebInspector.UIList.Item(title, '', true);
+ asyncCallFrame.setHoverable(false);
+ asyncCallFrame.element.addEventListener(
+ 'contextmenu', this._asyncCallFrameContextMenu.bind(this, this.callFrames.length), true);
+ this._appendSidebarCallFrames(
+ this._callFramesFromRuntime(asyncStackTrace.callFrames, asyncCallFrame), asyncCallFrame);
+ peviousStackTrace = asyncStackTrace.callFrames;
+ asyncStackTrace = asyncStackTrace.parent;
+ }
+
+ if (topStackHidden)
+ this._revealHiddenCallFrames();
+ if (this._hiddenCallFrames) {
+ var element = createElementWithClass('div', 'hidden-callframes-message');
+ if (this._hiddenCallFrames === 1)
+ element.textContent = WebInspector.UIString('1 stack frame is hidden (black-boxed).');
+ else
+ element.textContent =
+ WebInspector.UIString('%d stack frames are hidden (black-boxed).', this._hiddenCallFrames);
+ element.createTextChild(' ');
+ var showAllLink = element.createChild('span', 'link');
+ showAllLink.textContent = WebInspector.UIString('Show');
+ showAllLink.addEventListener('click', this._revealHiddenCallFrames.bind(this), false);
+ this.element.insertBefore(element, this.element.firstChild);
+ this._hiddenCallFramesMessageElement = element;
+ }
+ this._selectNextVisibleCallFrame(0);
+ this.revealView();
+ }
+
+ /**
+ * @param {!Array.<!WebInspector.DebuggerModel.CallFrame>} callFrames
+ * @return {!Array<!WebInspector.CallStackSidebarPane.CallFrame>}
+ */
+ _callFramesFromDebugger(callFrames) {
+ var callFrameItems = [];
+ for (var i = 0, n = callFrames.length; i < n; ++i) {
+ var callFrame = callFrames[i];
+ var callFrameItem = new WebInspector.CallStackSidebarPane.CallFrame(
+ callFrame.functionName, callFrame.location(), this._linkifier, callFrame, this._locationPool);
+ callFrameItem.element.addEventListener('click', this._callFrameSelected.bind(this, callFrameItem), false);
+ callFrameItems.push(callFrameItem);
+ }
+ return callFrameItems;
+ }
+
+ /**
+ * @param {!Array<!RuntimeAgent.CallFrame>} callFrames
+ * @param {!WebInspector.UIList.Item} asyncCallFrameItem
+ * @return {!Array<!WebInspector.CallStackSidebarPane.CallFrame>}
+ */
+ _callFramesFromRuntime(callFrames, asyncCallFrameItem) {
+ var callFrameItems = [];
+ for (var i = 0, n = callFrames.length; i < n; ++i) {
+ var callFrame = callFrames[i];
+ var location = new WebInspector.DebuggerModel.Location(
+ this._debuggerModel, callFrame.scriptId, callFrame.lineNumber, callFrame.columnNumber);
+ var callFrameItem = new WebInspector.CallStackSidebarPane.CallFrame(
+ callFrame.functionName, location, this._linkifier, null, this._locationPool, asyncCallFrameItem);
+ callFrameItem.element.addEventListener('click', this._asyncCallFrameClicked.bind(this, callFrameItem), false);
+ callFrameItems.push(callFrameItem);
+ }
+ return callFrameItems;
+ }
+
+ /**
+ * @param {!Array.<!WebInspector.CallStackSidebarPane.CallFrame>} callFrames
+ * @param {!WebInspector.UIList.Item=} asyncCallFrameItem
+ */
+ _appendSidebarCallFrames(callFrames, asyncCallFrameItem) {
+ if (asyncCallFrameItem)
+ this.callFrameList.addItem(asyncCallFrameItem);
+
+ var allCallFramesHidden = true;
+ for (var i = 0, n = callFrames.length; i < n; ++i) {
+ var callFrameItem = callFrames[i];
+ callFrameItem.element.addEventListener('contextmenu', this._callFrameContextMenu.bind(this, callFrameItem), true);
+ this.callFrames.push(callFrameItem);
+
+ if (WebInspector.blackboxManager.isBlackboxedRawLocation(callFrameItem._location)) {
+ callFrameItem.setHidden(true);
+ callFrameItem.setDimmed(true);
+ ++this._hiddenCallFrames;
+ } else {
+ this.callFrameList.addItem(callFrameItem);
+ allCallFramesHidden = false;
+ }
+ }
+ if (allCallFramesHidden && asyncCallFrameItem) {
+ asyncCallFrameItem.setHidden(true);
+ asyncCallFrameItem.element.remove();
+ }
+ }
+
+ _revealHiddenCallFrames() {
+ if (!this._hiddenCallFrames)
+ return;
+ this._hiddenCallFrames = 0;
+ this.callFrameList.clear();
+ for (var i = 0; i < this.callFrames.length; ++i) {
+ var callFrame = this.callFrames[i];
+ if (callFrame._asyncCallFrame) {
+ callFrame._asyncCallFrame.setHidden(false);
+ if (i && callFrame._asyncCallFrame !== this.callFrames[i - 1]._asyncCallFrame)
+ this.callFrameList.addItem(callFrame._asyncCallFrame);
+ }
+ callFrame.setHidden(false);
+ this.callFrameList.addItem(callFrame);
+ }
+ if (this._hiddenCallFramesMessageElement) {
+ this._hiddenCallFramesMessageElement.remove();
+ delete this._hiddenCallFramesMessageElement;
+ }
+ }
+
+ /**
+ * @param {!WebInspector.CallStackSidebarPane.CallFrame} callFrame
+ * @param {!Event} event
+ */
+ _callFrameContextMenu(callFrame, event) {
+ var contextMenu = new WebInspector.ContextMenu(event);
+ var debuggerCallFrame = callFrame._debuggerCallFrame;
+ if (debuggerCallFrame)
+ contextMenu.appendItem(
+ WebInspector.UIString.capitalize('Restart ^frame'), debuggerCallFrame.restart.bind(debuggerCallFrame));
+
+ contextMenu.appendItem(WebInspector.UIString.capitalize('Copy ^stack ^trace'), this._copyStackTrace.bind(this));
+
+ var uiLocation = WebInspector.debuggerWorkspaceBinding.rawLocationToUILocation(callFrame._location);
+ this.appendBlackboxURLContextMenuItems(contextMenu, uiLocation.uiSourceCode);
+
+ contextMenu.show();
+ }
+
+ /**
+ * @param {number} index
+ * @param {!Event} event
+ */
+ _asyncCallFrameContextMenu(index, event) {
+ for (; index < this.callFrames.length; ++index) {
+ var callFrame = this.callFrames[index];
+ if (!callFrame.isHidden()) {
+ this._callFrameContextMenu(callFrame, event);
+ break;
+ }
+ }
+ }
+
+ /**
+ * @param {!WebInspector.ContextMenu} contextMenu
+ * @param {!WebInspector.UISourceCode} uiSourceCode
+ */
+ appendBlackboxURLContextMenuItems(contextMenu, uiSourceCode) {
+ var binding = WebInspector.persistence.binding(uiSourceCode);
+ if (binding)
+ uiSourceCode = binding.network;
+ if (uiSourceCode.project().type() === WebInspector.projectTypes.FileSystem)
+ return;
+ var canBlackbox = WebInspector.blackboxManager.canBlackboxUISourceCode(uiSourceCode);
+ var isBlackboxed = WebInspector.blackboxManager.isBlackboxedUISourceCode(uiSourceCode);
+ var isContentScript = uiSourceCode.project().type() === WebInspector.projectTypes.ContentScripts;
+
+ var manager = WebInspector.blackboxManager;
+ if (canBlackbox) {
+ if (isBlackboxed)
+ contextMenu.appendItem(
+ WebInspector.UIString.capitalize('Stop ^blackboxing'),
+ manager.unblackboxUISourceCode.bind(manager, uiSourceCode));
+ else
+ contextMenu.appendItem(
+ WebInspector.UIString.capitalize('Blackbox ^script'),
+ manager.blackboxUISourceCode.bind(manager, uiSourceCode));
+ }
+ if (isContentScript) {
+ if (isBlackboxed)
+ contextMenu.appendItem(
+ WebInspector.UIString.capitalize('Stop blackboxing ^all ^content ^scripts'),
+ manager.blackboxContentScripts.bind(manager));
+ else
+ contextMenu.appendItem(
+ WebInspector.UIString.capitalize('Blackbox ^all ^content ^scripts'),
+ manager.unblackboxContentScripts.bind(manager));
+ }
+ }
+
+ _asyncStackTracesStateChanged() {
+ var enabled = WebInspector.moduleSetting('enableAsyncStackTraces').get();
+ if (!enabled && this.callFrames)
+ this._removeAsyncCallFrames();
+ }
+
+ _removeAsyncCallFrames() {
+ var shouldSelectTopFrame = false;
+ var lastSyncCallFrameIndex = -1;
+ for (var i = 0; i < this.callFrames.length; ++i) {
+ var callFrame = this.callFrames[i];
+ if (callFrame._asyncCallFrame) {
+ if (callFrame.isSelected())
+ shouldSelectTopFrame = true;
+ callFrame._asyncCallFrame.element.remove();
+ callFrame.element.remove();
+ } else {
+ lastSyncCallFrameIndex = i;
+ }
+ }
+ this.callFrames.length = lastSyncCallFrameIndex + 1;
+ if (shouldSelectTopFrame)
+ this._selectNextVisibleCallFrame(0);
+ }
+
+ /**
+ * @return {boolean}
+ */
+ _selectNextCallFrameOnStack() {
+ var index = this._selectedCallFrameIndex();
+ if (index === -1)
+ return false;
+ return this._selectNextVisibleCallFrame(index + 1);
+ }
+
+ /**
+ * @return {boolean}
+ */
+ _selectPreviousCallFrameOnStack() {
+ var index = this._selectedCallFrameIndex();
+ if (index === -1)
+ return false;
+ return this._selectNextVisibleCallFrame(index - 1, true);
+ }
+
+ /**
+ * @param {number} index
+ * @param {boolean=} backward
+ * @return {boolean}
+ */
+ _selectNextVisibleCallFrame(index, backward) {
+ while (0 <= index && index < this.callFrames.length) {
+ var callFrame = this.callFrames[index];
+ if (!callFrame.isHidden() && !callFrame.isLabel() && !callFrame._asyncCallFrame) {
+ this._callFrameSelected(callFrame);
+ return true;
+ }
+ index += backward ? -1 : 1;
+ }
+ return false;
+ }
+
+ /**
+ * @return {number}
+ */
+ _selectedCallFrameIndex() {
+ if (!this._debuggerModel)
+ return -1;
+ var selectedCallFrame = this._debuggerModel.selectedCallFrame();
+ if (!selectedCallFrame)
+ return -1;
+ for (var i = 0; i < this.callFrames.length; ++i) {
+ if (this.callFrames[i]._debuggerCallFrame === selectedCallFrame)
+ return i;
+ }
+ return -1;
+ }
+
+ /**
+ * @param {!WebInspector.CallStackSidebarPane.CallFrame} callFrameItem
+ */
+ _asyncCallFrameClicked(callFrameItem) {
+ var uiLocation = WebInspector.debuggerWorkspaceBinding.rawLocationToUILocation(callFrameItem._location);
+ WebInspector.Revealer.reveal(uiLocation);
+ }
+
+ /**
+ * @param {!WebInspector.CallStackSidebarPane.CallFrame} selectedCallFrame
+ */
+ _callFrameSelected(selectedCallFrame) {
+ selectedCallFrame.element.scrollIntoViewIfNeeded();
+ var callFrame = selectedCallFrame._debuggerCallFrame;
+
+ for (var i = 0; i < this.callFrames.length; ++i) {
+ var callFrameItem = this.callFrames[i];
+ callFrameItem.setSelected(callFrameItem === selectedCallFrame);
+ if (callFrameItem.isSelected() && callFrameItem.isHidden())
+ this._revealHiddenCallFrames();
+ }
+
+ var oldCallFrame = WebInspector.context.flavor(WebInspector.DebuggerModel.CallFrame);
+ if (oldCallFrame === callFrame) {
+ var uiLocation = WebInspector.debuggerWorkspaceBinding.rawLocationToUILocation(callFrame.location());
+ WebInspector.Revealer.reveal(uiLocation);
+ return;
+ }
+
+ WebInspector.context.setFlavor(WebInspector.DebuggerModel.CallFrame, callFrame);
+ callFrame.debuggerModel.setSelectedCallFrame(callFrame);
+ }
+
+ _copyStackTrace() {
+ var text = '';
+ var lastCallFrame = null;
+ for (var i = 0; i < this.callFrames.length; ++i) {
+ var callFrame = this.callFrames[i];
+ if (callFrame.isHidden())
+ continue;
+ if (lastCallFrame && callFrame._asyncCallFrame !== lastCallFrame._asyncCallFrame)
+ text += callFrame._asyncCallFrame.title() + '\n';
+ text += callFrame.title() + ' (' + callFrame.subtitle() + ')\n';
+ lastCallFrame = callFrame;
+ }
+ InspectorFrontendHost.copyText(text);
+ }
+
+ /**
+ * @param {function(!Array.<!WebInspector.KeyboardShortcut.Descriptor>, function(!Event=):boolean)} registerShortcutDelegate
+ */
+ registerShortcuts(registerShortcutDelegate) {
+ registerShortcutDelegate(
+ WebInspector.ShortcutsScreen.SourcesPanelShortcuts.NextCallFrame, this._selectNextCallFrameOnStack.bind(this));
+ registerShortcutDelegate(
+ WebInspector.ShortcutsScreen.SourcesPanelShortcuts.PrevCallFrame,
+ this._selectPreviousCallFrameOnStack.bind(this));
+ }
+
+ _keyDown(event) {
+ if (event.altKey || event.shiftKey || event.metaKey || event.ctrlKey)
+ return;
+ if (event.key === 'ArrowUp' && this._selectPreviousCallFrameOnStack() ||
+ event.key === 'ArrowDown' && this._selectNextCallFrameOnStack())
+ event.consume(true);
+ }
};
/**
- * @constructor
- * @extends {WebInspector.UIList.Item}
- * @param {string} functionName
- * @param {!WebInspector.DebuggerModel.Location} location
- * @param {!WebInspector.Linkifier} linkifier
- * @param {?WebInspector.DebuggerModel.CallFrame} debuggerCallFrame
- * @param {!WebInspector.LiveLocationPool} locationPool
- * @param {!WebInspector.UIList.Item=} asyncCallFrame
+ * @unrestricted
*/
-WebInspector.CallStackSidebarPane.CallFrame = function(functionName, location, linkifier, debuggerCallFrame, locationPool, asyncCallFrame)
-{
- WebInspector.UIList.Item.call(this, WebInspector.beautifyFunctionName(functionName), "");
+WebInspector.CallStackSidebarPane.CallFrame = class extends WebInspector.UIList.Item {
+ /**
+ * @param {string} functionName
+ * @param {!WebInspector.DebuggerModel.Location} location
+ * @param {!WebInspector.Linkifier} linkifier
+ * @param {?WebInspector.DebuggerModel.CallFrame} debuggerCallFrame
+ * @param {!WebInspector.LiveLocationPool} locationPool
+ * @param {!WebInspector.UIList.Item=} asyncCallFrame
+ */
+ constructor(functionName, location, linkifier, debuggerCallFrame, locationPool, asyncCallFrame) {
+ super(WebInspector.beautifyFunctionName(functionName), '');
this._location = location;
this._debuggerCallFrame = debuggerCallFrame;
this._asyncCallFrame = asyncCallFrame;
WebInspector.debuggerWorkspaceBinding.createCallFrameLiveLocation(location, this._update.bind(this), locationPool);
-};
-
-WebInspector.CallStackSidebarPane.CallFrame.prototype = {
- /**
- * @param {!WebInspector.LiveLocation} liveLocation
- */
- _update: function(liveLocation)
- {
- var uiLocation = liveLocation.uiLocation();
- if (!uiLocation)
- return;
- var text = uiLocation.linkText();
- this.setSubtitle(text.trimMiddle(30));
- this.subtitleElement.title = text;
- },
-
- __proto__: WebInspector.UIList.Item.prototype
+ }
+
+ /**
+ * @param {!WebInspector.LiveLocation} liveLocation
+ */
+ _update(liveLocation) {
+ var uiLocation = liveLocation.uiLocation();
+ if (!uiLocation)
+ return;
+ var text = uiLocation.linkText();
+ this.setSubtitle(text.trimMiddle(30));
+ this.subtitleElement.title = text;
+ }
};

Powered by Google App Engine
This is Rietveld 408576698