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

Unified Diff: third_party/WebKit/Source/devtools/front_end/network/ResourceWebSocketFrameView.js

Issue 2806993002: DevTools: WebSocketFrameView - Add frames display control toolbar (Closed)
Patch Set: wip Created 3 years, 8 months 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
« no previous file with comments | « AUTHORS ('k') | third_party/WebKit/Source/devtools/front_end/network/webSocketFrameView.css » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/devtools/front_end/network/ResourceWebSocketFrameView.js
diff --git a/third_party/WebKit/Source/devtools/front_end/network/ResourceWebSocketFrameView.js b/third_party/WebKit/Source/devtools/front_end/network/ResourceWebSocketFrameView.js
index acf15e9b77ae55d1a9aab2e8d607352b07eaefdc..1ef8e0ed7457d2895510beb5f6faf0dbe3943b88 100644
--- a/third_party/WebKit/Source/devtools/front_end/network/ResourceWebSocketFrameView.js
+++ b/third_party/WebKit/Source/devtools/front_end/network/ResourceWebSocketFrameView.js
@@ -44,7 +44,7 @@ Network.ResourceWebSocketFrameView = class extends UI.VBox {
]);
this._dataGrid = new DataGrid.SortableDataGrid(columns);
- this._dataGrid.setRowContextMenuCallback(onRowContextMenu);
+ this._dataGrid.setRowContextMenuCallback(onRowContextMenu.bind(this));
this._dataGrid.setStickToBottom(true);
this._dataGrid.setCellClass('websocket-frame-view-td');
this._timeComparator =
@@ -57,10 +57,38 @@ Network.ResourceWebSocketFrameView = class extends UI.VBox {
this._dataGrid.setName('ResourceWebSocketFrameView');
this._dataGrid.addEventListener(DataGrid.DataGrid.Events.SelectedNode, this._onFrameSelected, this);
this._dataGrid.addEventListener(DataGrid.DataGrid.Events.DeselectedNode, this._onFrameDeselected, this);
- this._splitWidget.setMainWidget(this._dataGrid.asWidget());
- var view = new UI.EmptyWidget('Select frame to browse its content.');
- this._splitWidget.setSidebarWidget(view);
+ this._clearAllButton = new UI.ToolbarButton(Common.UIString('Clear All'), 'largeicon-clear');
+ this._clearAllButton.addEventListener(UI.ToolbarButton.Events.Click, this._onClearAllWidgetClicked, this);
+ this._clearFrameOffset = 0;
+
+ this._textFilterUI = new UI.TextFilterUI(true);
+ this._textFilterUI.addEventListener(UI.FilterUI.Events.FilterChanged, this._onFilterUIChanged, this);
allada 2017/04/17 21:11:19 Lets inline "_onFilterUIChanged" ie: this.refresh
+
+ var typeFilterItems = [
allada 2017/04/17 21:11:19 Lets move this to near the bottom of the file. So
+ {name: 'send', label: Common.UIString('Send')},
+ {name: 'receive', label: Common.UIString('Receive')},
+ ];
+ this._typeFilterSetting = Common.settings.createSetting('resourceWebSocketFrameViewTypeFilters', {});
allada 2017/04/17 21:11:19 lets make this a local variable since it's not nee
+ this._typeFilterUI = new UI.NamedBitSetFilterUI(typeFilterItems, this._typeFilterSetting);
+ this._typeFilterUI.addEventListener(UI.FilterUI.Events.FilterChanged, this._onFilterUIChanged, this);
allada 2017/04/17 21:11:19 Same here... inline "_onFilterUIChanged" ie: this
+
+ this._filterBar = new UI.FilterBar('resourceWebSocketFrameView', true);
allada 2017/04/17 21:11:19 lets rename this just "websocketFrameView". (resou
+ this._filterBar.addFilter(this._textFilterUI);
allada 2017/04/17 21:11:19 Did you mean to add this twice?
muzuiget 2017/04/20 09:40:01 Sorry, I didn't get your point. One is "_textFilte
allada 2017/04/24 18:28:14 I see.
+ this._filterBar.addFilter(this._typeFilterUI);
+
+ this._mainToolbar = new UI.Toolbar('');
+ this._mainToolbar.appendToolbarItem(this._clearAllButton);
+ this._mainToolbar.appendToolbarItem(this._filterBar.filterButton());
+
+ var mainContainer = new UI.VBox();
+ mainContainer.element.appendChild(this._mainToolbar.element);
+ this._filterBar.show(mainContainer.element);
+ this._dataGrid.asWidget().show(mainContainer.element);
+ this._splitWidget.setMainWidget(mainContainer);
+
+ this._frameEmptyWidget = new UI.EmptyWidget('Select frame to browse its content.');
allada 2017/04/17 21:11:19 I know this was not how it was originally, but can
+ this._splitWidget.setSidebarWidget(this._frameEmptyWidget);
/** @type {?Network.ResourceWebSocketFrameNode} */
this._selectedNode = null;
@@ -68,11 +96,14 @@ Network.ResourceWebSocketFrameView = class extends UI.VBox {
/**
* @param {!UI.ContextMenu} contextMenu
* @param {!DataGrid.DataGridNode} node
+ * @this {Network.ResourceWebSocketFrameView}
*/
function onRowContextMenu(contextMenu, node) {
contextMenu.appendItem(
Common.UIString.capitalize('Copy ^message'),
InspectorFrontendHost.copyText.bind(InspectorFrontendHost, node.data.data));
+ contextMenu.appendSeparator();
+ contextMenu.appendItem(Common.UIString.capitalize('Clear ^all'), this._onClearAllWidgetClicked.bind(this));
}
}
@@ -107,10 +138,47 @@ Network.ResourceWebSocketFrameView = class extends UI.VBox {
*/
_frameAdded(event) {
var frame = /** @type {!SDK.NetworkRequest.WebSocketFrame} */ (event.data);
+ if (!this._frameFilter(frame))
+ return;
this._dataGrid.insertChild(new Network.ResourceWebSocketFrameNode(this._request.url(), frame));
}
/**
+ * @param {!SDK.NetworkRequest.WebSocketFrame} frame
+ */
+ _frameFilter(frame) {
+ var regex = this._textFilterUI.regex();
allada 2017/04/17 21:11:19 In this case regex should be the tester used for b
+ if (regex) {
+ if (!regex.test(frame.text))
+ return false;
+ } else {
+ var text = this._textFilterUI.value();
+ if (!frame.text.includes(text))
+ return false;
+ }
+
+ if (!this._typeFilterUI.accept(frame.type))
+ return false;
+
+ return true;
+ }
+
+ /**
+ * @param {!Common.Event} event
+ */
+ _onClearAllWidgetClicked(event) {
allada 2017/04/17 21:11:19 Lets rename this "_clearFrames" and remove the eve
+ this._clearFrameOffset = this._request.frames().length;
+ this.refresh();
+ }
+
+ /**
+ * @param {!Common.Event} event
+ */
+ _onFilterUIChanged(event) {
+ this.refresh();
+ }
+
+ /**
* @param {!Common.Event} event
*/
_onFrameSelected(event) {
@@ -148,13 +216,20 @@ Network.ResourceWebSocketFrameView = class extends UI.VBox {
*/
_onFrameDeselected(event) {
this._currentSelectedNode = null;
+ this._splitWidget.setSidebarWidget(this._frameEmptyWidget);
}
refresh() {
this._dataGrid.rootNode().removeChildren();
+
+ var url = this._request.url();
var frames = this._request.frames();
- for (var i = 0; i < frames.length; ++i)
- this._dataGrid.insertChild(new Network.ResourceWebSocketFrameNode(this._request.url(), frames[i]));
+ var start = this._clearFrameOffset;
+ for (var i = start; i < frames.length; ++i) {
allada 2017/04/17 21:11:19 Can we change this to: frames = frames.slice(this
+ var frame = frames[i];
+ if (this._frameFilter(frame))
+ this._dataGrid.insertChild(new Network.ResourceWebSocketFrameNode(url, frame));
+ }
}
_sortItems() {
« no previous file with comments | « AUTHORS ('k') | third_party/WebKit/Source/devtools/front_end/network/webSocketFrameView.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698