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

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

Issue 2118663002: [Devtools] Seperate columns out of NetworkLogView into own file (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Cleanup NetworkLogView Created 4 years, 6 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
Index: third_party/WebKit/Source/devtools/front_end/network/NetworkLogView.js
diff --git a/third_party/WebKit/Source/devtools/front_end/network/NetworkLogView.js b/third_party/WebKit/Source/devtools/front_end/network/NetworkLogView.js
index 36fcba3765cc5b1922d7e09bfcb10bb48f173a16..8f3b0f54c9ecb87c8dd45c98951fbfb2beafc08f 100644
--- a/third_party/WebKit/Source/devtools/front_end/network/NetworkLogView.js
+++ b/third_party/WebKit/Source/devtools/front_end/network/NetworkLogView.js
@@ -51,13 +51,7 @@ WebInspector.NetworkLogView = function(filterBar, progressBarContainer, networkL
this._progressBarContainer = progressBarContainer;
this._networkLogLargeRowsSetting = networkLogLargeRowsSetting;
- var defaultColumnsVisibility = WebInspector.NetworkLogView._defaultColumnsVisibility;
- this._columnsVisibilitySetting = WebInspector.settings.createSetting("networkLogColumnsVisibility", defaultColumnsVisibility);
- var savedColumnsVisibility = this._columnsVisibilitySetting.get();
- var columnsVisibility = {};
- for (var columnId in defaultColumnsVisibility)
- columnsVisibility[columnId] = savedColumnsVisibility.hasOwnProperty(columnId) ? savedColumnsVisibility[columnId] : defaultColumnsVisibility[columnId];
- this._columnsVisibilitySetting.set(columnsVisibility);
+ this._columnsView = new WebInspector.NetworkLogViewColumns(this);
dgozman 2016/07/01 00:54:23 this._columns
Allada-Google 2016/07/01 01:28:39 Done.
/** @type {!Map.<string, !WebInspector.NetworkDataGridNode>} */
this._nodesByRequestId = new Map();
@@ -68,8 +62,6 @@ WebInspector.NetworkLogView = function(filterBar, progressBarContainer, networkL
/** @type {number} */
this._mainRequestDOMContentLoadedTime = -1;
this._matchedRequestCount = 0;
- /** @type {!Array<{time: number, element: !Element}>} */
- this._eventDividers = [];
this._highlightedSubstringChanges = [];
/** @type {!Array.<!WebInspector.NetworkLogView.Filter>} */
@@ -81,11 +73,8 @@ WebInspector.NetworkLogView = function(filterBar, progressBarContainer, networkL
this._currentMatchedRequestIndex = -1;
/** @type {!WebInspector.Linkifier} */
- this._popupLinkifier = new WebInspector.Linkifier();
- /** @type {!WebInspector.Linkifier} */
this.linkifier = new WebInspector.Linkifier();
- this._gridMode = true;
this._recording = false;
this._preserveLog = false;
@@ -109,11 +98,7 @@ WebInspector.NetworkLogView._isFilteredOutSymbol = Symbol("isFilteredOut");
WebInspector.NetworkLogView._isMatchingSearchQuerySymbol = Symbol("isMatchingSearchQuery");
WebInspector.NetworkLogView.HTTPSchemas = {"http": true, "https": true, "ws": true, "wss": true};
-WebInspector.NetworkLogView._responseHeaderColumns = ["Cache-Control", "Connection", "Content-Encoding", "Content-Length", "ETag", "Keep-Alive", "Last-Modified", "Server", "Vary"];
-WebInspector.NetworkLogView._defaultColumnsVisibility = {
- method: false, status: true, protocol: false, scheme: false, domain: false, remoteAddress: false, type: true, initiator: true, cookies: false, setCookies: false, size: true, time: true, priority: false, connectionId: false,
- "Cache-Control": false, "Connection": false, "Content-Encoding": false, "Content-Length": false, "ETag": false, "Keep-Alive": false, "Last-Modified": false, "Server": false, "Vary": false
-};
+
WebInspector.NetworkLogView._defaultRefreshDelay = 200;
WebInspector.NetworkLogView._waterfallMinOvertime = 1;
@@ -151,37 +136,6 @@ WebInspector.NetworkLogView.IsFilterType = {
/** @type {!Array.<string>} */
WebInspector.NetworkLogView._searchKeys = Object.values(WebInspector.NetworkLogView.FilterType);
-/** @type {!Object.<string, string>} */
-WebInspector.NetworkLogView._columnTitles = {
- "name": WebInspector.UIString("Name"),
- "method": WebInspector.UIString("Method"),
- "status": WebInspector.UIString("Status"),
- "protocol": WebInspector.UIString("Protocol"),
- "scheme": WebInspector.UIString("Scheme"),
- "domain": WebInspector.UIString("Domain"),
- "remoteAddress": WebInspector.UIString("Remote Address"),
- "type": WebInspector.UIString("Type"),
- "initiator": WebInspector.UIString("Initiator"),
- "cookies": WebInspector.UIString("Cookies"),
- "setCookies": WebInspector.UIString("Set-Cookies"),
- "size": WebInspector.UIString("Size"),
- "time": WebInspector.UIString("Time"),
- "connectionId": WebInspector.UIString("Connection Id"),
- "priority": WebInspector.UIString("Priority"),
- "timeline": WebInspector.UIString("Timeline"),
-
- // Response header columns
- "Cache-Control": WebInspector.UIString("Cache-Control"),
- "Connection": WebInspector.UIString("Connection"),
- "Content-Encoding": WebInspector.UIString("Content-Encoding"),
- "Content-Length": WebInspector.UIString("Content-Length"),
- "ETag": WebInspector.UIString("ETag"),
- "Keep-Alive": WebInspector.UIString("Keep-Alive"),
- "Last-Modified": WebInspector.UIString("Last-Modified"),
- "Server": WebInspector.UIString("Server"),
- "Vary": WebInspector.UIString("Vary")
-};
-
WebInspector.NetworkLogView.prototype = {
/**
* @param {boolean} recording
@@ -240,7 +194,7 @@ WebInspector.NetworkLogView.prototype = {
this._timeFilter = WebInspector.NetworkLogView._requestTimeFilter.bind(null, start, end);
this._timeCalculator.setWindow(new WebInspector.NetworkTimeBoundary(start, end));
}
- this._updateDividersIfNeeded();
+ this._columnsView.updateDividersIfNeeded();
this._filterRequests();
},
@@ -286,7 +240,7 @@ WebInspector.NetworkLogView.prototype = {
*/
_filterChanged: function(event)
{
- this._removeAllNodeHighlights();
+ this.removeAllNodeHighlights();
this._parseFilterQuery(this._textFilterUI.value());
this._filterRequests();
},
@@ -295,16 +249,13 @@ WebInspector.NetworkLogView.prototype = {
{
this.element.id = "network-container";
- this._createSortingFunctions();
+ this._columnsView.initializeView();
this._createCalculators();
+ this._columnsView.setupColumns();
dgozman 2016/07/01 00:54:23 Let's combine initializeView with setupColumns?
Allada-Google 2016/07/01 01:28:39 Done.
this._createTable();
- this._createTimelineGrid();
this._summaryBarElement = this.element.createChild("div", "network-summary-bar");
this._updateRowsSize();
-
- this._popoverHelper = new WebInspector.PopoverHelper(this.element, this._getPopoverAnchor.bind(this), this._showPopover.bind(this), this._onHidePopover.bind(this));
- this.switchViewMode(true);
},
_showRecordingHint: function()
@@ -345,144 +296,10 @@ WebInspector.NetworkLogView.prototype = {
return [this._dataGrid.scrollContainer];
},
- _createTimelineGrid: function()
- {
- this._timelineGrid = new WebInspector.TimelineGrid();
- this._timelineGrid.element.classList.add("network-timeline-grid");
- this._dataGrid.element.appendChild(this._timelineGrid.element);
- },
-
_createTable: function()
{
- var columns = [];
- columns.push({
- id: "name",
- titleDOMFragment: this._makeHeaderFragment(WebInspector.UIString("Name"), WebInspector.UIString("Path")),
- title: WebInspector.NetworkLogView._columnTitles["name"],
- weight: 20
- });
-
- columns.push({
- id: "method",
- title: WebInspector.NetworkLogView._columnTitles["method"],
- weight: 6
- });
-
- columns.push({
- id: "status",
- titleDOMFragment: this._makeHeaderFragment(WebInspector.UIString("Status"), WebInspector.UIString("Text")),
- title: WebInspector.NetworkLogView._columnTitles["status"],
- weight: 6
- });
-
- columns.push({
- id: "protocol",
- title: WebInspector.NetworkLogView._columnTitles["protocol"],
- weight: 6
- });
-
- columns.push({
- id: "scheme",
- title: WebInspector.NetworkLogView._columnTitles["scheme"],
- weight: 6
- });
-
- columns.push({
- id: "domain",
- title: WebInspector.NetworkLogView._columnTitles["domain"],
- weight: 6
- });
-
- columns.push({
- id: "remoteAddress",
- title: WebInspector.NetworkLogView._columnTitles["remoteAddress"],
- weight: 10,
- align: WebInspector.DataGrid.Align.Right
- });
-
- columns.push({
- id: "type",
- title: WebInspector.NetworkLogView._columnTitles["type"],
- weight: 6
- });
-
- columns.push({
- id: "initiator",
- title: WebInspector.NetworkLogView._columnTitles["initiator"],
- weight: 10
- });
-
- columns.push({
- id: "cookies",
- title: WebInspector.NetworkLogView._columnTitles["cookies"],
- weight: 6,
- align: WebInspector.DataGrid.Align.Right
- });
-
- columns.push({
- id: "setCookies",
- title: WebInspector.NetworkLogView._columnTitles["setCookies"],
- weight: 6,
- align: WebInspector.DataGrid.Align.Right
- });
-
- columns.push({
- id: "size",
- titleDOMFragment: this._makeHeaderFragment(WebInspector.UIString("Size"), WebInspector.UIString("Content")),
- title: WebInspector.NetworkLogView._columnTitles["size"],
- weight: 6,
- align: WebInspector.DataGrid.Align.Right
- });
-
- columns.push({
- id: "time",
- titleDOMFragment: this._makeHeaderFragment(WebInspector.UIString("Time"), WebInspector.UIString("Latency")),
- title: WebInspector.NetworkLogView._columnTitles["time"],
- weight: 6,
- align: WebInspector.DataGrid.Align.Right
- });
-
- columns.push({
- id: "priority",
- title: WebInspector.NetworkLogView._columnTitles["priority"],
- weight: 6
- });
-
- columns.push({
- id: "connectionId",
- title: WebInspector.NetworkLogView._columnTitles["connectionId"],
- weight: 6
- });
-
- var responseHeaderColumns = WebInspector.NetworkLogView._responseHeaderColumns;
- for (var i = 0; i < responseHeaderColumns.length; ++i) {
- var headerName = responseHeaderColumns[i];
- var descriptor = {
- id: headerName,
- title: WebInspector.NetworkLogView._columnTitles[headerName],
- weight: 6
- };
- if (headerName === "Content-Length")
- descriptor.align = WebInspector.DataGrid.Align.Right;
- columns.push(descriptor);
- }
-
- columns.push({
- id: "timeline",
- title: WebInspector.NetworkLogView._columnTitles["timeline"],
- sortable: false,
- weight: 40,
- sort: WebInspector.DataGrid.Order.Ascending
- });
-
- for (var column of columns) {
- column.sortable = column.id !== "timeline";
- column.nonSelectable = column.id !== "name";
- }
-
- this._dataGrid = new WebInspector.SortableDataGrid(columns);
+ this._dataGrid = this._columnsView.createGrid();
this._dataGrid.setStickToBottom(true);
- this._updateColumns();
this._dataGrid.setName("networkLog");
this._dataGrid.setResizeMethod(WebInspector.DataGrid.ResizeMethod.Last);
this._dataGrid.element.classList.add("network-log-grid");
@@ -493,11 +310,7 @@ WebInspector.NetworkLogView.prototype = {
this._dataGrid.asWidget().show(this.element);
// Event listeners need to be added _after_ we attach to the document, so that owner document is properly update.
- this._dataGrid.addEventListener(WebInspector.DataGrid.Events.SortingChanged, this._sortItems, this);
- this._dataGrid.addEventListener(WebInspector.DataGrid.Events.ColumnsResized, this._updateDividersIfNeeded, this);
-
- this._patchTimelineHeader();
- this._dataGrid.sortNodes(this._sortingFunctions.startTime, false);
+ this._columnsView.setDataGrid(this._dataGrid);
dgozman 2016/07/01 00:54:23 DataGrid was created by columns, no need to set it
Allada-Google 2016/07/01 01:28:39 Done.
},
/**
@@ -554,106 +367,6 @@ WebInspector.NetworkLogView.prototype = {
}
},
- /**
- * @param {string} title
- * @param {string} subtitle
- * @return {!DocumentFragment}
- */
- _makeHeaderFragment: function(title, subtitle)
- {
- var fragment = createDocumentFragment();
- fragment.createTextChild(title);
- var subtitleDiv = fragment.createChild("div", "network-header-subtitle");
- subtitleDiv.createTextChild(subtitle);
- return fragment;
- },
-
- _patchTimelineHeader: function()
- {
- var timelineSorting = createElement("select");
-
- var option = createElement("option");
- option.value = "startTime";
- option.label = WebInspector.UIString("Timeline");
- option.disabled = true;
- timelineSorting.appendChild(option);
-
- option = createElement("option");
- option.value = "startTime";
- option.label = WebInspector.UIString("Timeline \u2013 Start Time");
- option.sortOrder = WebInspector.DataGrid.Order.Ascending;
- timelineSorting.appendChild(option);
-
- option = createElement("option");
- option.value = "responseTime";
- option.label = WebInspector.UIString("Timeline \u2013 Response Time");
- option.sortOrder = WebInspector.DataGrid.Order.Ascending;
- timelineSorting.appendChild(option);
-
- option = createElement("option");
- option.value = "endTime";
- option.label = WebInspector.UIString("Timeline \u2013 End Time");
- option.sortOrder = WebInspector.DataGrid.Order.Ascending;
- timelineSorting.appendChild(option);
-
- option = createElement("option");
- option.value = "duration";
- option.label = WebInspector.UIString("Timeline \u2013 Total Duration");
- option.sortOrder = WebInspector.DataGrid.Order.Descending;
- timelineSorting.appendChild(option);
-
- option = createElement("option");
- option.value = "latency";
- option.label = WebInspector.UIString("Timeline \u2013 Latency");
- option.sortOrder = WebInspector.DataGrid.Order.Descending;
- timelineSorting.appendChild(option);
-
- var header = this._dataGrid.headerTableHeader("timeline");
- header.replaceChild(timelineSorting, header.firstChild);
- header.createChild("div", "sort-order-icon-container").createChild("div", "sort-order-icon");
-
- timelineSorting.selectedIndex = 1;
- timelineSorting.addEventListener("click", function(event) { event.consume(); }, false);
- timelineSorting.addEventListener("change", this._sortByTimeline.bind(this), false);
- this._timelineSortSelector = timelineSorting;
- },
-
- _createSortingFunctions: function()
- {
- this._sortingFunctions = {};
- this._sortingFunctions.name = WebInspector.NetworkDataGridNode.NameComparator;
- this._sortingFunctions.method = WebInspector.NetworkDataGridNode.RequestPropertyComparator.bind(null, "requestMethod");
- this._sortingFunctions.status = WebInspector.NetworkDataGridNode.RequestPropertyComparator.bind(null, "statusCode");
- this._sortingFunctions.protocol = WebInspector.NetworkDataGridNode.RequestPropertyComparator.bind(null, "protocol");
- this._sortingFunctions.scheme = WebInspector.NetworkDataGridNode.RequestPropertyComparator.bind(null, "scheme");
- this._sortingFunctions.domain = WebInspector.NetworkDataGridNode.RequestPropertyComparator.bind(null, "domain");
- this._sortingFunctions.remoteAddress = WebInspector.NetworkDataGridNode.RemoteAddressComparator;
- this._sortingFunctions.type = WebInspector.NetworkDataGridNode.TypeComparator;
- this._sortingFunctions.initiator = WebInspector.NetworkDataGridNode.InitiatorComparator;
- this._sortingFunctions.cookies = WebInspector.NetworkDataGridNode.RequestCookiesCountComparator;
- this._sortingFunctions.setCookies = WebInspector.NetworkDataGridNode.ResponseCookiesCountComparator;
- this._sortingFunctions.size = WebInspector.NetworkDataGridNode.SizeComparator;
- this._sortingFunctions.time = WebInspector.NetworkDataGridNode.RequestPropertyComparator.bind(null, "duration");
- this._sortingFunctions.connectionId = WebInspector.NetworkDataGridNode.RequestPropertyComparator.bind(null, "connectionId");
- this._sortingFunctions.priority = WebInspector.NetworkDataGridNode.InitialPriorityComparator;
- this._sortingFunctions.timeline = WebInspector.NetworkDataGridNode.RequestPropertyComparator.bind(null, "startTime");
- this._sortingFunctions.startTime = WebInspector.NetworkDataGridNode.RequestPropertyComparator.bind(null, "startTime");
- this._sortingFunctions.endTime = WebInspector.NetworkDataGridNode.RequestPropertyComparator.bind(null, "endTime");
- this._sortingFunctions.responseTime = WebInspector.NetworkDataGridNode.RequestPropertyComparator.bind(null, "responseReceivedTime");
- this._sortingFunctions.duration = WebInspector.NetworkDataGridNode.RequestPropertyComparator.bind(null, "duration");
- this._sortingFunctions.latency = WebInspector.NetworkDataGridNode.RequestPropertyComparator.bind(null, "latency");
-
- this._sortingFunctions["Cache-Control"] = WebInspector.NetworkDataGridNode.ResponseHeaderStringComparator.bind(null, "Cache-Control");
- this._sortingFunctions["Connection"] = WebInspector.NetworkDataGridNode.ResponseHeaderStringComparator.bind(null, "Connection");
- this._sortingFunctions["Content-Encoding"] = WebInspector.NetworkDataGridNode.ResponseHeaderStringComparator.bind(null, "Content-Encoding");
- this._sortingFunctions["Content-Length"] = WebInspector.NetworkDataGridNode.ResponseHeaderNumberComparator.bind(null, "Content-Length");
- this._sortingFunctions["ETag"] = WebInspector.NetworkDataGridNode.ResponseHeaderStringComparator.bind(null, "ETag");
- this._sortingFunctions["Keep-Alive"] = WebInspector.NetworkDataGridNode.ResponseHeaderStringComparator.bind(null, "Keep-Alive");
- this._sortingFunctions["Last-Modified"] = WebInspector.NetworkDataGridNode.ResponseHeaderDateComparator.bind(null, "Last-Modified");
- this._sortingFunctions["Server"] = WebInspector.NetworkDataGridNode.ResponseHeaderStringComparator.bind(null, "Server");
- this._sortingFunctions["Vary"] = WebInspector.NetworkDataGridNode.ResponseHeaderStringComparator.bind(null, "Vary");
- },
-
_createCalculators: function()
dgozman 2016/07/01 00:54:23 Let's inline this function.
Allada-Google 2016/07/01 01:28:39 Done.
{
/** @type {!WebInspector.NetworkTransferTimeCalculator} */
@@ -661,51 +374,9 @@ WebInspector.NetworkLogView.prototype = {
/** @type {!WebInspector.NetworkTransferDurationCalculator} */
this._durationCalculator = new WebInspector.NetworkTransferDurationCalculator();
- /** @type {!Object.<string, !WebInspector.NetworkTimeCalculator>} */
- this._calculators = {};
- this._calculators.timeline = this._timeCalculator;
- this._calculators.startTime = this._timeCalculator;
- this._calculators.endTime = this._timeCalculator;
- this._calculators.responseTime = this._timeCalculator;
- this._calculators.duration = this._durationCalculator;
- this._calculators.latency = this._durationCalculator;
-
this._calculator = this._timeCalculator;
},
- _sortItems: function()
- {
- this._removeAllNodeHighlights();
- var columnIdentifier = this._dataGrid.sortColumnIdentifier();
- if (columnIdentifier === "timeline") {
- this._sortByTimeline();
- return;
- }
- var sortingFunction = this._sortingFunctions[columnIdentifier];
- if (!sortingFunction)
- return;
-
- this._dataGrid.sortNodes(sortingFunction, !this._dataGrid.isSortOrderAscending());
- this._highlightNthMatchedRequestForSearch(this._updateMatchCountAndFindMatchIndex(this._currentMatchedRequestNode), false);
- this._timelineSortSelector.selectedIndex = 0;
- },
-
- _sortByTimeline: function()
- {
- this._removeAllNodeHighlights();
- var selectedIndex = this._timelineSortSelector.selectedIndex;
- if (!selectedIndex)
- selectedIndex = 1; // Sort by start time by default.
- var selectedOption = this._timelineSortSelector[selectedIndex];
- var value = selectedOption.value;
-
- this._setCalculator(this._calculators[value]);
- var sortingFunction = this._sortingFunctions[value];
- this._dataGrid.sortNodes(sortingFunction);
- this._highlightNthMatchedRequestForSearch(this._updateMatchCountAndFindMatchIndex(this._currentMatchedRequestNode), false);
- this._dataGrid.markColumnAsSortedBy("timeline", selectedOption.sortOrder);
- },
-
_updateSummaryBar: function()
{
var requestsNumber = this._nodesByRequestId.size;
@@ -778,7 +449,7 @@ WebInspector.NetworkLogView.prototype = {
summaryBar.title = text;
},
- _scheduleRefresh: function()
+ scheduleRefresh: function()
{
if (this._needsRefresh)
return;
@@ -789,38 +460,12 @@ WebInspector.NetworkLogView.prototype = {
this._refreshTimeout = setTimeout(this.refresh.bind(this), WebInspector.NetworkLogView._defaultRefreshDelay);
},
- _updateDividersIfNeeded: function()
- {
- if (!this.isShowing()) {
- this._scheduleRefresh();
- return;
- }
-
- var timelineOffset = this._dataGrid.columnOffset("timeline");
- // Position timline grid location.
- if (timelineOffset)
- this._timelineGrid.element.style.left = timelineOffset + "px";
-
- var calculator = this.calculator();
- calculator.setDisplayWindow(this._timelineGrid.dividersElement.clientWidth);
- this._timelineGrid.updateDividers(calculator, 75);
-
- if (calculator.startAtZero) {
- // If our current sorting method starts at zero, that means it shows all
- // requests starting at the same point, and so onLoad event and DOMContent
- // event lines really wouldn't make much sense here, so don't render them.
- return;
- }
-
- this._updateEventDividers();
- },
-
/**
* @param {!Array<number>} times
*/
addFilmStripFrames: function(times)
{
- this._addEventDividers(times, "network-frame-divider");
+ this._columnsView.addEventDividers(times, "network-frame-divider");
},
/**
@@ -838,33 +483,6 @@ WebInspector.NetworkLogView.prototype = {
divider.element.classList.toggle("network-frame-divider-selected", false);
},
- /**
- * @param {!Array<number>} times
- * @param {string} className
- */
- _addEventDividers: function(times, className)
- {
- for (var i = 0; i < times.length; ++i) {
- var element = createElementWithClass("div", "network-event-divider " + className);
- this._timelineGrid.addEventDivider(element);
- this._eventDividers.push({time: times[i], element: element});
- }
- // Update event dividers immediately
- this._updateEventDividers();
- // Schedule refresh in case dividers change the calculator span.
- this._scheduleRefresh();
- },
-
- _updateEventDividers: function()
- {
- var calculator = this.calculator();
- for (var divider of this._eventDividers) {
- var timePercent = calculator.computePercentageFromEventTime(divider.time);
- divider.element.classList.toggle("invisible", timePercent < 0);
- divider.element.style.left = timePercent + "%";
- }
- },
-
_refreshIfNeeded: function()
{
if (this._needsRefresh)
@@ -890,6 +508,14 @@ WebInspector.NetworkLogView.prototype = {
/**
* @return {!WebInspector.NetworkTimeCalculator}
*/
+ durationCalculator: function()
+ {
+ return this._durationCalculator;
+ },
+
+ /**
+ * @return {!WebInspector.NetworkTimeCalculator}
+ */
calculator: function()
{
return this._calculator;
@@ -898,7 +524,7 @@ WebInspector.NetworkLogView.prototype = {
/**
* @param {!WebInspector.NetworkTimeCalculator} x
*/
- _setCalculator: function(x)
+ setCalculator: function(x)
{
if (!x || this._calculator === x)
return;
@@ -907,9 +533,9 @@ WebInspector.NetworkLogView.prototype = {
this._calculator.reset();
if (this._calculator.startAtZero)
- this._timelineGrid.hideEventDividers();
+ this._columnsView.hideEventDividers();
else
- this._timelineGrid.showEventDividers();
+ this._columnsView.showEventDividers();
this._invalidateAllItems();
},
@@ -925,7 +551,7 @@ WebInspector.NetworkLogView.prototype = {
var data = /** @type {number} */ (event.data);
if (data) {
this._mainRequestLoadTime = data;
- this._addEventDividers([data], "network-red-divider");
+ this._columnsView.addEventDividers([data], "network-red-divider");
}
},
@@ -939,7 +565,7 @@ WebInspector.NetworkLogView.prototype = {
var data = /** @type {number} */ (event.data);
if (data) {
this._mainRequestDOMContentLoadedTime = data;
- this._addEventDividers([data], "network-blue-divider");
+ this._columnsView.addEventDividers([data], "network-blue-divider");
}
},
@@ -950,7 +576,7 @@ WebInspector.NetworkLogView.prototype = {
willHide: function()
{
- this._popoverHelper.hidePopover();
+ this._columnsView.willHide();
},
refresh: function()
@@ -961,7 +587,7 @@ WebInspector.NetworkLogView.prototype = {
delete this._refreshTimeout;
}
- this._removeAllNodeHighlights();
+ this.removeAllNodeHighlights();
var oldBoundary = this.calculator().boundary();
this._timeCalculator.updateBoundariesForEventTime(this._mainRequestLoadTime);
@@ -1010,7 +636,7 @@ WebInspector.NetworkLogView.prototype = {
if (!this.calculator().boundary().equals(oldBoundary)) {
// The boundaries changed, so all item graphs are stale.
- this._updateDividersIfNeeded();
+ this._columnsView.updateDividersIfNeeded();
var nodes = this._nodesByRequestId.valuesArray();
for (var i = 0; i < nodes.length; ++i)
nodes[i].refreshGraph();
@@ -1026,8 +652,8 @@ WebInspector.NetworkLogView.prototype = {
this.dispatchEventToListeners(WebInspector.NetworkLogView.EventTypes.RequestSelected, null);
this._clearSearchMatchedList();
- if (this._popoverHelper)
- this._popoverHelper.hidePopover();
+
+ this._columnsView.reset();
this._timeFilter = null;
this._calculator.reset();
@@ -1045,11 +671,9 @@ WebInspector.NetworkLogView.prototype = {
this._mainRequestLoadTime = -1;
this._mainRequestDOMContentLoadedTime = -1;
this._eventDividers = [];
- this._timelineGrid.removeEventDividers();
if (this._dataGrid) {
this._dataGrid.rootNode().removeChildren();
- this._updateDividersIfNeeded();
this._updateSummaryBar();
}
},
@@ -1150,7 +774,7 @@ WebInspector.NetworkLogView.prototype = {
this._staleRequestIds[request.requestId] = true;
this.dispatchEventToListeners(WebInspector.NetworkLogView.EventTypes.UpdateRequest, request);
- this._scheduleRefresh();
+ this.scheduleRefresh();
},
/**
@@ -1193,20 +817,7 @@ WebInspector.NetworkLogView.prototype = {
*/
switchViewMode: function(gridMode)
{
- if (this._gridMode === gridMode)
- return;
- this._gridMode = gridMode;
-
- if (gridMode) {
- if (this._dataGrid.selectedNode)
- this._dataGrid.selectedNode.selected = false;
- } else {
- this._removeAllNodeHighlights();
- this._popoverHelper.hidePopover();
- }
-
- this.element.classList.toggle("brief-mode", !gridMode);
- this._updateColumns();
+ this._columnsView.switchViewMode(gridMode);
},
/**
@@ -1222,120 +833,18 @@ WebInspector.NetworkLogView.prototype = {
var largeRows = !!this._networkLogLargeRowsSetting.get();
this._rowHeight = largeRows ? 41 : 21;
this._dataGrid.element.classList.toggle("small", !largeRows);
- this._timelineGrid.element.classList.toggle("small", !largeRows);
+ this._columnsView.rowSizeUpdated(largeRows);
this._dataGrid.scheduleUpdate();
},
/**
- * @param {!Element} element
- * @param {!Event} event
- * @return {!Element|!AnchorBox|undefined}
- */
- _getPopoverAnchor: function(element, event)
- {
- if (!this._gridMode)
- return;
- var anchor = element.enclosingNodeOrSelfWithClass("network-graph-bar") || element.enclosingNodeOrSelfWithClass("network-graph-label");
- if (anchor && anchor.parentElement.request && anchor.parentElement.request.timing)
- return anchor;
- anchor = element.enclosingNodeOrSelfWithClass("network-script-initiated");
- if (anchor && anchor.request) {
- var initiator = /** @type {!WebInspector.NetworkRequest} */ (anchor.request).initiator();
- if (initiator && initiator.stack)
- return anchor;
- }
- },
-
- /**
- * @param {!Element} anchor
- * @param {!WebInspector.Popover} popover
- */
- _showPopover: function(anchor, popover)
- {
- var content;
- if (anchor.classList.contains("network-script-initiated")) {
- var request = /** @type {!WebInspector.NetworkRequest} */ (anchor.request);
- var initiator = /** @type {!NetworkAgent.Initiator} */ (request.initiator());
- content = WebInspector.DOMPresentationUtils.buildStackTracePreviewContents(request.target(), this._popupLinkifier, initiator.stack);
- popover.setCanShrink(true);
- } else {
- content = WebInspector.RequestTimingView.createTimingTable(anchor.parentElement.request, this._timeCalculator.minimumBoundary());
- popover.setCanShrink(false);
- }
- popover.showForAnchor(content, anchor);
- },
-
- _onHidePopover: function()
- {
- this._popupLinkifier.reset();
- },
-
- _updateColumns: function()
- {
- if (!this._dataGrid)
- return;
- var gridMode = this._gridMode;
- var visibleColumns = {"name": true};
- if (gridMode)
- visibleColumns["timeline"] = true;
- if (gridMode) {
- var columnsVisibility = this._columnsVisibilitySetting.get();
- for (var columnIdentifier in columnsVisibility)
- visibleColumns[columnIdentifier] = columnsVisibility[columnIdentifier];
- }
-
- this._dataGrid.setColumnsVisiblity(visibleColumns);
- },
-
- /**
- * @param {string} columnIdentifier
- */
- _toggleColumnVisibility: function(columnIdentifier)
- {
- var columnsVisibility = this._columnsVisibilitySetting.get();
- columnsVisibility[columnIdentifier] = !columnsVisibility[columnIdentifier];
- this._columnsVisibilitySetting.set(columnsVisibility);
-
- this._updateColumns();
- },
-
- /**
- * @return {!Array.<string>}
- */
- _getConfigurableColumnIDs: function()
- {
- if (this._configurableColumnIDs)
- return this._configurableColumnIDs;
-
- var columnTitles = WebInspector.NetworkLogView._columnTitles;
- function compare(id1, id2)
- {
- return columnTitles[id1].compareTo(columnTitles[id2]);
- }
-
- var columnIDs = Object.keys(this._columnsVisibilitySetting.get());
- this._configurableColumnIDs = columnIDs.sort(compare);
- return this._configurableColumnIDs;
- },
-
- /**
* @param {!Event} event
*/
_contextMenu: function(event)
{
- var contextMenu = new WebInspector.ContextMenu(event);
-
- if (this._gridMode && event.target.isSelfOrDescendant(this._dataGrid.headerTableBody)) {
- var columnsVisibility = this._columnsVisibilitySetting.get();
- var columnIDs = this._getConfigurableColumnIDs();
- var columnTitles = WebInspector.NetworkLogView._columnTitles;
- for (var i = 0; i < columnIDs.length; ++i) {
- var columnIdentifier = columnIDs[i];
- contextMenu.appendCheckboxItem(columnTitles[columnIdentifier], this._toggleColumnVisibility.bind(this, columnIdentifier), !!columnsVisibility[columnIdentifier]);
- }
- contextMenu.show();
+ if (this._columnsView.contextMenu(event))
return;
- }
+ var contextMenu = new WebInspector.ContextMenu(event);
var gridNode = this._dataGrid.dataGridNodeFromNode(event.target);
var request = gridNode && gridNode.request();
@@ -1514,12 +1023,22 @@ WebInspector.NetworkLogView.prototype = {
_removeAllHighlights: function()
{
- this._removeAllNodeHighlights();
+ this.removeAllNodeHighlights();
for (var i = 0; i < this._highlightedSubstringChanges.length; ++i)
WebInspector.revertDomChanges(this._highlightedSubstringChanges[i]);
this._highlightedSubstringChanges = [];
},
+ onWillSort: function()
+ {
+ this.removeAllNodeHighlights();
dgozman 2016/07/01 00:54:23 Just call this one directly instead of onWillSort.
Allada-Google 2016/07/01 01:28:39 Done.
+ },
+
+ onSorted: function()
dgozman 2016/07/01 00:54:23 dataGridSorted
Allada-Google 2016/07/01 01:28:39 Done.
+ {
+ this._highlightNthMatchedRequestForSearch(this._updateMatchCountAndFindMatchIndex(this._currentMatchedRequestNode), false);
+ },
+
/**
* @param {number} n
* @param {boolean} reveal
@@ -1826,7 +1345,7 @@ WebInspector.NetworkLogView.prototype = {
*/
revealAndHighlightRequest: function(request)
{
- this._removeAllNodeHighlights();
+ this.removeAllNodeHighlights();
var node = this._nodesByRequestId.get(request.requestId);
if (node) {
@@ -1835,7 +1354,7 @@ WebInspector.NetworkLogView.prototype = {
}
},
- _removeAllNodeHighlights: function()
+ removeAllNodeHighlights: function()
{
if (this._highlightedNode) {
this._highlightedNode.element().classList.remove("highlighted-row");

Powered by Google App Engine
This is Rietveld 408576698