RESOLVED FIXED 93090
Web Inspector: requests filtering in network tab
https://bugs.webkit.org/show_bug.cgi?id=93090
Summary Web Inspector: requests filtering in network tab
Pavel Chadnov
Reported 2012-08-03 04:52:05 PDT
Created attachment 156327 [details] Screenshot In network tab search is replaced with filtering
Attachments
Screenshot (92.24 KB, image/png)
2012-08-03 04:52 PDT, Pavel Chadnov
no flags
Patch (20.40 KB, patch)
2012-08-03 04:56 PDT, Pavel Chadnov
no flags
Patch (25.32 KB, patch)
2012-08-03 08:14 PDT, Pavel Chadnov
no flags
Patch (26.40 KB, patch)
2012-08-06 06:16 PDT, Pavel Chadnov
no flags
Patch (16.94 KB, patch)
2012-08-06 07:06 PDT, Pavel Chadnov
no flags
Patch (16.60 KB, patch)
2012-08-06 08:00 PDT, Pavel Chadnov
no flags
Patch (16.91 KB, patch)
2012-08-07 02:12 PDT, Pavel Chadnov
no flags
Patch (25.70 KB, patch)
2012-08-07 04:36 PDT, Pavel Chadnov
no flags
Patch (18.49 KB, patch)
2012-08-07 05:51 PDT, Pavel Chadnov
no flags
Patch (18.73 KB, patch)
2012-08-14 03:33 PDT, Pavel Chadnov
no flags
Patch (18.72 KB, patch)
2012-08-14 04:38 PDT, Pavel Chadnov
no flags
Patch (16.43 KB, patch)
2012-08-14 08:34 PDT, Pavel Chadnov
no flags
Patch (15.91 KB, patch)
2012-08-14 10:17 PDT, Pavel Chadnov
no flags
Patch (15.16 KB, patch)
2012-08-15 02:39 PDT, Pavel Chadnov
no flags
Patch (21.81 KB, patch)
2012-08-16 05:00 PDT, Pavel Chadnov
no flags
Patch (22.05 KB, patch)
2012-08-16 06:05 PDT, Pavel Chadnov
no flags
Screenshot (85.87 KB, image/png)
2012-08-16 07:06 PDT, Pavel Chadnov
no flags
Screenshot (94.49 KB, image/png)
2012-08-16 07:07 PDT, Pavel Chadnov
no flags
Patch (21.94 KB, patch)
2012-08-16 09:46 PDT, Pavel Chadnov
no flags
Patch (21.81 KB, patch)
2012-08-16 10:00 PDT, Pavel Chadnov
no flags
Patch (21.81 KB, patch)
2012-08-17 01:53 PDT, Pavel Chadnov
no flags
Patch (21.90 KB, patch)
2012-08-17 02:32 PDT, Pavel Chadnov
no flags
Pavel Chadnov
Comment 1 2012-08-03 04:56:12 PDT
Vsevolod Vlasov
Comment 2 2012-08-03 05:20:52 PDT
Comment on attachment 156328 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=156328&action=review Please provide a ChangeLog and fix style. > Source/WebCore/WebCore.gypi:11 > + 'Modules/geolocation/Geoposition.h', Why did it move? > Source/WebCore/WebCore.vcproj/WebCore.vcproj:2520 > + Please remove these extra lines > Source/WebCore/inspector/front-end/FilterController.js:2 > + * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved. Copyright (C) 2012 only. Please use Google copyright. See SettingsScreen.js for an example. > Source/WebCore/inspector/front-end/FilterController.js:33 > +WebInspector.FilterController = function() { Wrong indent. > Source/WebCore/inspector/front-end/FilterController.js:34 > + this._element = document.createElement("table"); I don't think you need to use table for such a simple component. > Source/WebCore/inspector/front-end/FilterController.js:39 > + this._secondRowElement = this._element.createChild("tr", "hidden"); Please remove this second row element, you don't need it here. > Source/WebCore/inspector/front-end/FilterController.js:47 > + this._filterInputElement.addEventListener("mousedown", null, false); What's the point? > Source/WebCore/inspector/front-end/FilterController.js:60 > + Remove this line > Source/WebCore/inspector/front-end/FilterController.js:70 > + One line between methods, please. > Source/WebCore/inspector/front-end/FilterController.js:79 > + _onKeyDown : function(event) { No space before : > Source/WebCore/inspector/front-end/FilterController.js:83 > + WebInspector.setCurrentFocusElement(WebInspector.previousFocusElement()); I don't think you saved previous focus element, so it makes no sense to set it back. You should save it in showFilterField > Source/WebCore/inspector/front-end/FilterController.js:100 > + showFilterField : function() { Ditto > Source/WebCore/inspector/front-end/FilterController.js:111 > + if (event.keyIdentifier === "U+0046") { What is that? Please add an inline comment. > Source/WebCore/inspector/front-end/NetworkPanel.js:51 > + this._isRequestVisible = new Map(); This field needs a better name. I would actually call it _filteredOutRequests and store only requests that were filtered out. > Source/WebCore/inspector/front-end/NetworkPanel.js:441 > + _filterByContent: function(content){ Weird indent (4 spaces indent in webkit) > Source/WebCore/inspector/front-end/NetworkPanel.js:444 > + node.element.removeStyleClass("hidden"); I wouldn't use global hidden class here since it says nothing about the reason why the row is not visible. I would add .network-log-grid.data-grid tr.filtered-out instead > Source/WebCore/inspector/front-end/NetworkPanel.js:446 > + if (node.element.children[0].innerText.indexOf(content)==-1){ Please add spaces near ==. Also we use === in WebInspector. > Source/WebCore/inspector/front-end/NetworkPanel.js:1143 > +// performSearch: function(searchQuery) Please remove commented out code. > Source/WebCore/inspector/front-end/SearchController.js:158 > + if (typeof WebInspector.inspectorView.currentPanel().performSearch !== "function") Weird indent
Pavel Chadnov
Comment 3 2012-08-03 08:14:33 PDT
Vsevolod Vlasov
Comment 4 2012-08-06 00:35:32 PDT
Comment on attachment 156384 [details] Patch Please make sure you address all the review comments. Also please rebaseline your patch so that bots could try it.
Pavel Chadnov
Comment 5 2012-08-06 06:16:38 PDT
Vsevolod Vlasov
Comment 6 2012-08-06 06:28:41 PDT
Comment on attachment 156677 [details] Patch Please make sure you address all the review comments.
Pavel Chadnov
Comment 7 2012-08-06 07:06:11 PDT
Vsevolod Vlasov
Comment 8 2012-08-06 07:33:47 PDT
Comment on attachment 156685 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=156685&action=review > Source/WebCore/ChangeLog:3 > + A new feature added: filtering in the network panel. This line should be equal to the bug summary. > Source/WebCore/ChangeLog:5 > + Reviewed by NOBODY (OOPS!). Please add a blank line before this line. > Source/WebCore/ChangeLog:6 > + Please add a change description here. See previous changes's ChangeLogs for the reference > Source/WebCore/inspector/front-end/FilterController.js:5 > + * modification, are permitted provided that the following conditions are met: * Please fix formatting of the license text, there should be new lines before '*'. It should look the same as in the other files. > Source/WebCore/inspector/front-end/FilterController.js:33 > + this._element.cellSpacing = 0; Please remove this. > Source/WebCore/inspector/front-end/FilterController.js:35 > + // Column 1 Please remove these comments. > Source/WebCore/inspector/front-end/NetworkPanel.js:-754 > - Please revert this change. > Source/WebCore/inspector/front-end/NetworkPanel.js:1757 > + if (!this._parentView._hiddenCategories.all && !this._parentView._filteredOutRequests.get(this._request)) It is enough to look at _filteredOutRequests once. if (this._parentView._filteredOutRequests.get(this._request)) return true; if (!this._parentView._hiddenCategories.all) return false; return this._request.type.name() in this._parentView._hiddenCategories;
Pavel Chadnov
Comment 9 2012-08-06 08:00:00 PDT
Vsevolod Vlasov
Comment 10 2012-08-06 08:52:40 PDT
Comment on attachment 156696 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=156696&action=review > Source/WebCore/ChangeLog:11 > + No new tests (OOPS!). Please remove this line (and 1 blank line). > Source/WebCore/inspector/front-end/FilterController.js:50 > + cancelFilter: function() { Here and everywhere: we put open bracket { to the next line after the function name. > Source/WebCore/inspector/front-end/FilterController.js:60 > + _performFilter: function(query) { Please add compiler annotations to this function. > Source/WebCore/inspector/front-end/NetworkPanel.js:443 > + for(var i = 0; i < this._dataGrid.rootNode().children.length; ++i){ Please add space after for and a space before bracket. > Source/WebCore/inspector/front-end/NetworkPanel.js:447 > + if (node.element.children[0].innerText.indexOf(content) === -1){ Please use createPlainTextSearchRegex like it is done in performSearch. Also a space before bracket please. > Source/WebCore/inspector/front-end/NetworkPanel.js:1175 > + performFilter: function(query) { Please add compiler annotations to this function. > Source/WebCore/inspector/front-end/NetworkPanel.js:1442 > + performFilter: function(query){ Please add compiler annotations to this function.
Pavel Chadnov
Comment 11 2012-08-07 02:12:42 PDT
Vsevolod Vlasov
Comment 12 2012-08-07 02:30:58 PDT
Comment on attachment 156897 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=156897&action=review > Source/WebCore/inspector/front-end/FilterController.js:38 > + this._filterControlElement = this._element.createChild("span", "toolbar-filter-control"); This element is redundant. > Source/WebCore/inspector/front-end/FilterController.js:59 > + this._performFilter(''); Please use double quotes. > Source/WebCore/inspector/front-end/FilterController.js:60 > + this._filterInputElement.value = ''; Please use double quotes. > Source/WebCore/inspector/front-end/FilterController.js:63 > + _performFilter: function(query) Compiler annotations please. > Source/WebCore/inspector/front-end/FilterController.js:66 > + if (typeof currentPanel.performFilter === 'function') Please use double quotes. > Source/WebCore/inspector/front-end/FilterController.js:78 > + return false; return; > Source/WebCore/inspector/front-end/FilterController.js:81 > + if (isEnterKey(event)) { No need to handle enter since we perform filtering on input event anyway. > Source/WebCore/inspector/front-end/FilterController.js:104 > + var isMac = WebInspector.isMac(); isMac is used only once, please inline. > Source/WebCore/inspector/front-end/FilterController.js:107 > + var isFindKey = event.metaKey && !event.ctrlKey && !event.altKey && !event.shiftKey; isFilterKey > Source/WebCore/inspector/front-end/NetworkPanel.js:447 > + this._filteredOutRequests.put(this._requests[i], true); Just clear the map before the loop and fill it with non matching requests below. Otherwise it looks confusing: you remove "hidden" style and mark request as filtered out at the same time. > Source/WebCore/inspector/front-end/NetworkPanel.js:448 > + if (!_match) _match is never defined and is probably redundant. Also wrong indent here and below. > Source/WebCore/inspector/front-end/NetworkPanel.js:450 > + node.element.addStyleClass("hidden"); I wouldn't use global hidden class here since it says nothing about the reason why the row is not visible. I would add .network-log-grid.data-grid tr.filtered-out instead > Source/WebCore/inspector/front-end/NetworkPanel.js:1174 > + this.performFilter(''); Please use double quotes. > Source/WebCore/inspector/front-end/NetworkPanel.js:1181 > + this._filterByContent(query); What is the difference between performFilter and filterByContent? There is no need to extract one from another. > Source/WebCore/inspector/front-end/NetworkPanel.js:1450 > + performFilter: function(query){ Compiler annotations please.
Pavel Chadnov
Comment 13 2012-08-07 04:36:24 PDT
Vsevolod Vlasov
Comment 14 2012-08-07 05:39:04 PDT
Comment on attachment 156911 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=156911&action=review > Source/WebCore/inspector/front-end/NetworkPanel.js:-1554 > - // of a specific event. If startAtZero is set, then this is useless, and we Why did this change? Please revert weird formatting changes.
Pavel Chadnov
Comment 15 2012-08-07 05:51:40 PDT
Vsevolod Vlasov
Comment 16 2012-08-07 06:10:47 PDT
Comment on attachment 156920 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=156920&action=review > Source/WebCore/inspector/front-end/NetworkPanel.js:1169 > + node.element.removeStyleClass("filtered-out"); I'd move this below: if (node._request.displayName.match(filterRegExp)) node.element.removeStyleClass("filtered-out"); else { node.element.addStyleClass("filtered-out"); this._filteredOutRequests.put(this._requests[i], true); } > Source/WebCore/inspector/front-end/NetworkPanel.js:1445 > + performFilter: function(query){ Annotations are still missing.
Vsevolod Vlasov
Comment 17 2012-08-09 01:46:48 PDT
Comment on attachment 156920 [details] Patch As discussed offline let's get rid of FilterController and implement filtering as a checkbox on search pane.
Pavel Chadnov
Comment 18 2012-08-14 03:33:52 PDT
Pavel Chadnov
Comment 19 2012-08-14 04:38:51 PDT
Vsevolod Vlasov
Comment 20 2012-08-14 06:52:56 PDT
Comment on attachment 158293 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=158293&action=review Considering the scope of this patch the search controller change looks too complicated to me. I think this complexity is the result of hiding inspector footer and showing again each time the checkbox state is changed. We should update already shown footer instead. > Source/WebCore/inspector/front-end/InspectorView.js:85 > + WebInspector.searchController.panelChanged(); cancelSearch call should be enough.
Pavel Chadnov
Comment 21 2012-08-14 08:34:20 PDT
Pavel Chadnov
Comment 22 2012-08-14 10:17:10 PDT
Vsevolod Vlasov
Comment 23 2012-08-14 23:51:25 PDT
Comment on attachment 158360 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=158360&action=review > Source/WebCore/ChangeLog:8 > + New feature: there are both search bar and filter bar in network tabw. One can swich them using checkbox "filtering". Please fix typos. > Source/WebCore/inspector/front-end/SearchController.js:46 > + this._firstRowElement.createChild("td"); Why is this needed? > Source/WebCore/inspector/front-end/SearchController.js:57 > + Extra blank line. > Source/WebCore/inspector/front-end/SearchController.js:74 > + this._filterInputElement.addEventListener("keydown", this._onKeyDown.bind(this), true); keydown handler has some search specific logic that should be treated carefully. > Source/WebCore/inspector/front-end/SearchController.js:79 > + this._secondRowElement.createChild("td"); Why is this needed? > Source/WebCore/inspector/front-end/SearchController.js:125 > + Extra blank line. > Source/WebCore/inspector/front-end/SearchController.js:136 > + this._searchOrFilterQuery = ""; unused > Source/WebCore/inspector/front-end/SearchController.js:255 > + this._performSearch(this._searchInputElement.value); Please remove this line, we don't want to change search behavior. > Source/WebCore/inspector/front-end/SearchController.js:432 > + this._performSearch(this._filterInputElement.value, false, false); Please use this._searchInputElement for consistency.
Pavel Chadnov
Comment 24 2012-08-15 02:39:01 PDT
Vsevolod Vlasov
Comment 25 2012-08-16 01:12:20 PDT
Comment on attachment 158532 [details] Patch As discussed please add match highlighting for filtering. Please attach a screenshot for the new implementation also.
Pavel Chadnov
Comment 26 2012-08-16 05:00:14 PDT
Vsevolod Vlasov
Comment 27 2012-08-16 05:13:21 PDT
Comment on attachment 158779 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=158779&action=review > Source/WebCore/inspector/front-end/NetworkPanel.js:1072 > + this._highlightMatchedRequests([], false, ""); "" doesn't look like a regexp to me. Please annotate new methods to make sure we catch such errors. > Source/WebCore/inspector/front-end/NetworkPanel.js:1106 > + if (regExp.test("")) I don't think this is needed. > Source/WebCore/inspector/front-end/NetworkPanel.js:1155 > + this._toggleLargerRequests(); This should be in highlight... method because it's needed both for search and filtering.
Pavel Chadnov
Comment 28 2012-08-16 06:05:43 PDT
Pavel Chadnov
Comment 29 2012-08-16 07:06:16 PDT
Created attachment 158807 [details] Screenshot
Pavel Chadnov
Comment 30 2012-08-16 07:07:36 PDT
Created attachment 158808 [details] Screenshot
Vsevolod Vlasov
Comment 31 2012-08-16 09:19:48 PDT
Comment on attachment 158792 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=158792&action=review > Source/WebCore/inspector/front-end/NetworkPanel.js:1072 > + this._highlightMatchedRequests([], false, createPlainTextSearchRegex("")); Let's always use ...ForSearch method for search. > Source/WebCore/inspector/front-end/NetworkPanel.js:1136 > + _highlightNthMatchedRequestForSearch: function(matchedRequestIndex, reveal, regExp) Please remove regExp parameter here, for search it is always this._searchRegExp
Pavel Chadnov
Comment 32 2012-08-16 09:46:29 PDT
Pavel Chadnov
Comment 33 2012-08-16 10:00:45 PDT
Pavel Chadnov
Comment 34 2012-08-17 01:53:45 PDT
Pavel Chadnov
Comment 35 2012-08-17 02:32:09 PDT
WebKit Review Bot
Comment 36 2012-08-17 03:55:12 PDT
Comment on attachment 159057 [details] Patch Clearing flags on attachment: 159057 Committed r125879: <http://trac.webkit.org/changeset/125879>
WebKit Review Bot
Comment 37 2012-08-17 03:55:20 PDT
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.