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

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

Issue 2609653002: [DevTools] Migrate CallStackSidebarPane to UI.ListControl. (Closed)
Patch Set: Created 4 years 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 1d3619c5337d2f3b17a06d795c7b662e047aab65..ea1ea7e5f67f8c264bc0c168a1e41c8cdfafb256 100644
--- a/third_party/WebKit/Source/devtools/front_end/sources/CallStackSidebarPane.js
+++ b/third_party/WebKit/Source/devtools/front_end/sources/CallStackSidebarPane.js
@@ -22,22 +22,33 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
/**
* @implements {UI.ContextFlavorListener}
+ * @implements {UI.ListDelegate<!Sources.CallStackSidebarPane.Item>}
* @unrestricted
*/
Sources.CallStackSidebarPane = class extends UI.SimpleView {
constructor() {
- super(Common.UIString('Call Stack'));
- this.callFrameList = new Sources.UIList();
- this.callFrameList.show(this.element);
- this._linkifier = new Components.Linkifier();
- Common.moduleSetting('enableAsyncStackTraces').addChangeListener(this._asyncStackTracesStateChanged, this);
- Common.moduleSetting('skipStackFramesPattern').addChangeListener(this._update, this);
- /** @type {!Array<!Sources.CallStackSidebarPane.CallFrame>} */
- this.callFrames = [];
+ super(Common.UIString('Call Stack'), true);
+ this.registerRequiredCSS('sources/callStackSidebarPane.css');
+
+ this._blackboxedMessageElement = this._createBlackboxedMessageElement();
+ this.contentElement.appendChild(this._blackboxedMessageElement);
+
+ this._notPausedMessageElement = this.contentElement.createChild('div', 'gray-info-message');
+ this._notPausedMessageElement.textContent = Common.UIString('Not Paused');
+
+ /** @type {!UI.ListControl<!Sources.CallStackSidebarPane.Item>} */
+ this._list = new UI.ListControl(this, UI.ListMode.Grow);
+ this._list.setHandleInput(true);
+ this.contentElement.appendChild(this._list.element);
+
+ Common.moduleSetting('enableAsyncStackTraces').addChangeListener(this._update.bind(this, false));
+ Common.moduleSetting('skipStackFramesPattern').addChangeListener(this._update.bind(this, false));
this._locationPool = new Bindings.LiveLocationPool();
- this._update();
+
+ this._update(false);
}
/**
@@ -45,35 +56,54 @@ Sources.CallStackSidebarPane = class extends UI.SimpleView {
* @param {?Object} object
*/
flavorChanged(object) {
- this._update();
+ this._update(false);
}
- _update() {
- var details = UI.context.flavor(SDK.DebuggerPausedDetails);
-
- this.callFrameList.detach();
- this.callFrameList.clear();
- this._linkifier.reset();
- this.element.removeChildren();
+ /**
+ * @param {boolean} showBlackboxed
+ */
+ _update(showBlackboxed) {
this._locationPool.disposeAll();
- this.callFrameList.show(this.element);
- delete this._hiddenCallFramesMessageElement;
- this.callFrames = [];
- this._hiddenCallFrames = 0;
-
+ var details = UI.context.flavor(SDK.DebuggerPausedDetails);
if (!details) {
- var infoElement = this.element.createChild('div', 'gray-info-message');
- infoElement.textContent = Common.UIString('Not Paused');
+ this._notPausedMessageElement.classList.remove('hidden');
+ this._blackboxedMessageElement.classList.add('hidden');
+ this._list.replaceAllItems([]);
+ this._debuggerModel = null;
UI.context.setFlavor(SDK.DebuggerModel.CallFrame, null);
return;
}
+
this._debuggerModel = details.debuggerModel;
- var asyncStackTrace = details.asyncStackTrace;
+ this._notPausedMessageElement.classList.add('hidden');
+
+ if (!showBlackboxed) {
caseq 2016/12/30 01:54:43 showBlackboxed = showBlackboxed || details.callFra
dgozman 2017/01/18 23:14:24 Done.
+ var topFrameHidden = true;
+ for (var i = 0; i < details.callFrames.length; i++) {
+ if (!Bindings.blackboxManager.isBlackboxedRawLocation(details.callFrames[i].location())) {
+ topFrameHidden = false;
+ break;
+ }
+ }
+ if (topFrameHidden)
+ showBlackboxed = true;
+ }
+
+ var hiddenCallFramesCount = 0;
+ var items = [];
- this._appendSidebarCallFrames(this._callFramesFromDebugger(details.callFrames));
- var topStackHidden = (this._hiddenCallFrames === this.callFrames.length);
+ for (var i = 0; i < details.callFrames.length; i++) {
caseq 2016/12/30 01:54:43 var items = details.callFrames.map(frame => ({debu
dgozman 2017/01/18 23:14:25 Done.
+ var item = {debuggerCallFrame: details.callFrames[i]};
+ var location = this._itemLocation(item);
+ if (!showBlackboxed && location && Bindings.blackboxManager.isBlackboxedRawLocation(location)) {
+ hiddenCallFramesCount++;
+ continue;
+ }
+ items.push(item);
+ }
+ var asyncStackTrace = details.asyncStackTrace;
var peviousStackTrace = details.callFrames;
while (asyncStackTrace) {
var title = '';
@@ -86,151 +116,183 @@ Sources.CallStackSidebarPane = class extends UI.SimpleView {
} else {
title = UI.asyncStackTraceLabel(asyncStackTrace.description);
}
- var asyncCallFrame = new Sources.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);
+
+ var asyncItems = [];
+ for (var i = 0; i < asyncStackTrace.callFrames.length; i++) {
+ var item = {runtimeCallFrame: asyncStackTrace.callFrames[i]};
+ var location = this._itemLocation(item);
+ if (!showBlackboxed && location && Bindings.blackboxManager.isBlackboxedRawLocation(location)) {
+ hiddenCallFramesCount++;
+ continue;
+ }
+ asyncItems.push(item);
+ }
+
+ if (asyncItems.length) {
+ items.push({asyncStackHeader: title});
+ for (var i = 0; i < asyncItems.length; i++)
+ items.push(asyncItems[i]);
+ }
+
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 = Common.UIString('1 stack frame is hidden (black-boxed).');
- else
- element.textContent = Common.UIString('%d stack frames are hidden (black-boxed).', this._hiddenCallFrames);
- element.createTextChild(' ');
- var showAllLink = element.createChild('span', 'link');
- showAllLink.textContent = Common.UIString('Show');
- showAllLink.addEventListener('click', this._revealHiddenCallFrames.bind(this), false);
- this.element.insertBefore(element, this.element.firstChild);
- this._hiddenCallFramesMessageElement = element;
+ if (!hiddenCallFramesCount) {
+ this._blackboxedMessageElement.classList.add('hidden');
+ } else {
+ if (hiddenCallFramesCount === 1) {
+ this._blackboxedMessageElement.firstChild.textContent =
+ Common.UIString('1 stack frame is hidden (black-boxed).');
+ } else {
+ this._blackboxedMessageElement.firstChild.textContent =
+ Common.UIString('%d stack frames are hidden (black-boxed).', hiddenCallFramesCount);
+ }
+ this._blackboxedMessageElement.classList.remove('hidden');
}
- this._selectNextVisibleCallFrame(0);
+
+ this._list.replaceAllItems(items);
+ this._list.selectNextItem(true, true);
}
/**
- * @param {!Array.<!SDK.DebuggerModel.CallFrame>} callFrames
- * @return {!Array<!Sources.CallStackSidebarPane.CallFrame>}
+ * @override
+ * @param {!Sources.CallStackSidebarPane.Item} item
+ * @return {!Element}
*/
- _callFramesFromDebugger(callFrames) {
- var callFrameItems = [];
- for (var i = 0, n = callFrames.length; i < n; ++i) {
- var callFrame = callFrames[i];
- var callFrameItem = new Sources.CallStackSidebarPane.CallFrame(
- callFrame.functionName, callFrame.location(), this._linkifier, callFrame, this._locationPool);
- callFrameItem.element.addEventListener('click', this._callFrameSelected.bind(this, callFrameItem), false);
- callFrameItems.push(callFrameItem);
+ createElementForItem(item) {
+ var element = createElementWithClass('div', 'call-frame-item');
+ element.addEventListener('contextmenu', this._onContextMenu.bind(this, item), true);
caseq 2016/12/30 01:54:43 can we have just one event listener for the entire
dgozman 2017/01/18 23:14:25 Done.
+ element.createChild('div', 'call-frame-item-title').textContent = this._itemTitle(item);
+ if (item.asyncStackHeader)
+ element.classList.add('async-header');
+
+ var location = this._itemLocation(item);
+ if (location) {
+ if (item.runtimeCallFrame) {
+ element.addEventListener('click', event => {
caseq 2016/12/30 01:54:43 ditto.
dgozman 2017/01/18 23:14:25 Done.
+ Common.Revealer.reveal(Bindings.debuggerWorkspaceBinding.rawLocationToUILocation(
+ /** @type {!SDK.DebuggerModel.Location} */ (location)));
+ }, false);
+ }
+
+ if (Bindings.blackboxManager.isBlackboxedRawLocation(location))
+ element.classList.add('blackboxed-call-frame');
+
+ var linkElement = element.createChild('div', 'call-frame-location');
+ Bindings.debuggerWorkspaceBinding.createCallFrameLiveLocation(location, liveLocation => {
caseq 2016/12/30 01:54:43 nit: extract a named function
dgozman 2017/01/18 23:14:25 Done.
+ var uiLocation = liveLocation.uiLocation();
+ if (!uiLocation)
+ return;
+ var text = uiLocation.linkText();
+ linkElement.textContent = text.trimMiddle(30);
+ linkElement.title = text;
+ }, this._locationPool);
}
- return callFrameItems;
+
+ return element;
}
/**
- * @param {!Array<!Protocol.Runtime.CallFrame>} callFrames
- * @param {!Sources.UIList.Item} asyncCallFrameItem
- * @return {!Array<!Sources.CallStackSidebarPane.CallFrame>}
+ * @override
+ * @param {!Sources.CallStackSidebarPane.Item} item
+ * @return {number}
*/
- _callFramesFromRuntime(callFrames, asyncCallFrameItem) {
- var callFrameItems = [];
- for (var i = 0, n = callFrames.length; i < n; ++i) {
- var callFrame = callFrames[i];
- var location = new SDK.DebuggerModel.Location(
- this._debuggerModel, callFrame.scriptId, callFrame.lineNumber, callFrame.columnNumber);
- var callFrameItem = new Sources.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;
+ heightForItem(item) {
+ return 0;
caseq 2016/12/30 01:54:43 throw 'Not implemented'?
dgozman 2017/01/18 23:14:25 Done.
}
/**
- * @param {!Array.<!Sources.CallStackSidebarPane.CallFrame>} callFrames
- * @param {!Sources.UIList.Item=} asyncCallFrameItem
+ * @override
+ * @param {!Sources.CallStackSidebarPane.Item} item
+ * @return {boolean}
*/
- _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 (Bindings.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();
- }
+ isItemSelectable(item) {
+ return !!item.debuggerCallFrame;
}
- _revealHiddenCallFrames() {
- if (!this._hiddenCallFrames)
+ /**
+ * @override
+ * @param {?Sources.CallStackSidebarPane.Item} from
+ * @param {?Sources.CallStackSidebarPane.Item} to
+ * @param {?Element} fromElement
+ * @param {?Element} toElement
+ */
+ selectedItemChanged(from, to, fromElement, toElement) {
+ if (fromElement)
+ fromElement.removeChild(fromElement.lastElementChild);
caseq 2016/12/30 01:54:43 can we toggle a class instead?
dgozman 2017/01/18 23:14:25 Done.
+ if (toElement)
+ toElement.appendChild(UI.Icon.create('smallicon-thick-right-arrow', 'selected-call-frame-icon'));
+
+ if (!to)
+ return;
+
+ var oldCallFrame = UI.context.flavor(SDK.DebuggerModel.CallFrame);
+ if (oldCallFrame === to.debuggerCallFrame) {
+ var uiLocation = Bindings.debuggerWorkspaceBinding.rawLocationToUILocation(oldCallFrame.location());
+ Common.Revealer.reveal(uiLocation);
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;
}
+
+ UI.context.setFlavor(SDK.DebuggerModel.CallFrame, to.debuggerCallFrame);
+ this._debuggerModel.setSelectedCallFrame(to.debuggerCallFrame);
}
/**
- * @param {!Sources.CallStackSidebarPane.CallFrame} callFrame
- * @param {!Event} event
+ * @param {!Sources.CallStackSidebarPane.Item} item
+ * @return {string}
*/
- _callFrameContextMenu(callFrame, event) {
- var contextMenu = new UI.ContextMenu(event);
- var debuggerCallFrame = callFrame._debuggerCallFrame;
- if (debuggerCallFrame) {
- contextMenu.appendItem(
- Common.UIString.capitalize('Restart ^frame'), debuggerCallFrame.restart.bind(debuggerCallFrame));
- }
-
- contextMenu.appendItem(Common.UIString.capitalize('Copy ^stack ^trace'), this._copyStackTrace.bind(this));
+ _itemTitle(item) {
+ if (item.debuggerCallFrame)
+ return UI.beautifyFunctionName(item.debuggerCallFrame.functionName);
+ if (item.runtimeCallFrame)
+ return UI.beautifyFunctionName(item.runtimeCallFrame.functionName);
+ return item.asyncStackHeader || '';
+ }
- var uiLocation = Bindings.debuggerWorkspaceBinding.rawLocationToUILocation(callFrame._location);
- this.appendBlackboxURLContextMenuItems(contextMenu, uiLocation.uiSourceCode);
+ /**
+ * @param {!Sources.CallStackSidebarPane.Item} item
+ * @return {?SDK.DebuggerModel.Location}
+ */
+ _itemLocation(item) {
+ if (item.debuggerCallFrame)
+ return item.debuggerCallFrame.location();
+ if (item.runtimeCallFrame) {
+ return new SDK.DebuggerModel.Location(
+ this._debuggerModel, item.runtimeCallFrame.scriptId, item.runtimeCallFrame.lineNumber,
+ item.runtimeCallFrame.columnNumber);
+ }
+ return null;
+ }
- contextMenu.show();
+ /**
+ * @return {!Element}
+ */
+ _createBlackboxedMessageElement() {
+ var element = createElementWithClass('div', 'blackboxed-message');
+ element.createTextChild('');
+ element.createTextChild(' ');
caseq 2016/12/30 01:54:43 Let's not have multiple adjacent text nodes.
dgozman 2017/01/18 23:14:25 Done.
+ var showAllLink = element.createChild('span', 'link');
+ showAllLink.textContent = Common.UIString('Show');
+ showAllLink.addEventListener('click', this._update.bind(this, true), false);
+ return element;
}
/**
- * @param {number} index
+ * @param {!Sources.CallStackSidebarPane.Item} item
* @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;
- }
+ _onContextMenu(item, event) {
+ var contextMenu = new UI.ContextMenu(event);
+ if (item.debuggerCallFrame)
+ contextMenu.appendItem(Common.UIString.capitalize('Restart ^frame'), () => item.debuggerCallFrame.restart());
+ contextMenu.appendItem(Common.UIString.capitalize('Copy ^stack ^trace'), this._copyStackTrace.bind(this));
+ var location = this._itemLocation(item);
+ if (location) {
+ var uiLocation = Bindings.debuggerWorkspaceBinding.rawLocationToUILocation(location);
+ this.appendBlackboxURLContextMenuItems(contextMenu, uiLocation.uiSourceCode);
}
+ contextMenu.show();
}
/**
@@ -271,130 +333,33 @@ Sources.CallStackSidebarPane = class extends UI.SimpleView {
}
}
- _asyncStackTracesStateChanged() {
- var enabled = Common.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 this._list.selectNextItem(false, true);
}
/**
* @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 {!Sources.CallStackSidebarPane.CallFrame} callFrameItem
- */
- _asyncCallFrameClicked(callFrameItem) {
- var uiLocation = Bindings.debuggerWorkspaceBinding.rawLocationToUILocation(callFrameItem._location);
- Common.Revealer.reveal(uiLocation);
- }
-
- /**
- * @param {!Sources.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 = UI.context.flavor(SDK.DebuggerModel.CallFrame);
- if (oldCallFrame === callFrame) {
- var uiLocation = Bindings.debuggerWorkspaceBinding.rawLocationToUILocation(callFrame.location());
- Common.Revealer.reveal(uiLocation);
- return;
- }
-
- UI.context.setFlavor(SDK.DebuggerModel.CallFrame, callFrame);
- callFrame.debuggerModel.setSelectedCallFrame(callFrame);
+ return this._list.selectPreviousItem(false, true);
}
_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;
+ var text = [];
+ for (var i = 0; i < this._list.length(); i++) {
+ var item = this._list.itemAtIndex(i);
+ var itemText = this._itemTitle(item);
+ var location = this._itemLocation(item);
+ if (location) {
+ var uiLocation = Bindings.debuggerWorkspaceBinding.rawLocationToUILocation(location);
+ itemText += ' (' + uiLocation.linkText() + ')';
+ }
+ text.push(itemText);
}
- InspectorFrontendHost.copyText(text);
+ InspectorFrontendHost.copyText(text.join('\n'));
}
/**
@@ -410,34 +375,10 @@ Sources.CallStackSidebarPane = class extends UI.SimpleView {
};
/**
- * @unrestricted
+ * @typedef {{
+ * debuggerCallFrame: (SDK.DebuggerModel.CallFrame|undefined),
+ * asyncStackHeader: (string|undefined),
+ * runtimeCallFrame: (Protocol.Runtime.CallFrame|undefined)
+ * }}
*/
-Sources.CallStackSidebarPane.CallFrame = class extends Sources.UIList.Item {
- /**
- * @param {string} functionName
- * @param {!SDK.DebuggerModel.Location} location
- * @param {!Components.Linkifier} linkifier
- * @param {?SDK.DebuggerModel.CallFrame} debuggerCallFrame
- * @param {!Bindings.LiveLocationPool} locationPool
- * @param {!Sources.UIList.Item=} asyncCallFrame
- */
- constructor(functionName, location, linkifier, debuggerCallFrame, locationPool, asyncCallFrame) {
- super(UI.beautifyFunctionName(functionName), '');
- this._location = location;
- this._debuggerCallFrame = debuggerCallFrame;
- this._asyncCallFrame = asyncCallFrame;
- Bindings.debuggerWorkspaceBinding.createCallFrameLiveLocation(location, this._update.bind(this), locationPool);
- }
-
- /**
- * @param {!Bindings.LiveLocation} liveLocation
- */
- _update(liveLocation) {
- var uiLocation = liveLocation.uiLocation();
- if (!uiLocation)
- return;
- var text = uiLocation.linkText();
- this.setSubtitle(text.trimMiddle(30));
- this.subtitleElement.title = text;
- }
-};
+Sources.CallStackSidebarPane.Item;

Powered by Google App Engine
This is Rietveld 408576698