Index: third_party/WebKit/Source/devtools/front_end/network_log/NetworkLog.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/network_log/NetworkLog.js b/third_party/WebKit/Source/devtools/front_end/network_log/NetworkLog.js |
index 96edf0421fd3486132dffa8184e96b66ab764f75..55d223b3a10a3d7e79c488d5f28344849cf474bd 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/network_log/NetworkLog.js |
+++ b/third_party/WebKit/Source/devtools/front_end/network_log/NetworkLog.js |
@@ -38,10 +38,8 @@ NetworkLog.NetworkLog = class extends Common.Object { |
this._requests = []; |
/** @type {!Set<!SDK.NetworkRequest>} */ |
this._requestsSet = new Set(); |
- /** @type {!Map<!SDK.NetworkManager, !Map<string, !SDK.NetworkRequest>>} */ |
- this._requestsByManagerAndId = new Map(); |
/** @type {!Map<!SDK.NetworkManager, !NetworkLog.PageLoad>} */ |
- this._currentPageLoad = new Map(); |
+ this._pageLoadForManager = new Map(); |
this._isRecording = true; |
SDK.targetManager.observeModels(SDK.NetworkManager, this); |
} |
@@ -73,7 +71,6 @@ NetworkLog.NetworkLog = class extends Common.Object { |
} |
networkManager[NetworkLog.NetworkLog._events] = eventListeners; |
- this._requestsByManagerAndId.set(networkManager, new Map()); |
} |
/** |
@@ -81,7 +78,6 @@ NetworkLog.NetworkLog = class extends Common.Object { |
* @param {!SDK.NetworkManager} networkManager |
*/ |
modelRemoved(networkManager) { |
- this._requestsByManagerAndId.delete(networkManager); |
Common.EventTarget.removeEventListeners(networkManager[NetworkLog.NetworkLog._events]); |
} |
@@ -113,11 +109,17 @@ NetworkLog.NetworkLog = class extends Common.Object { |
/** |
* @param {!SDK.NetworkManager} networkManager |
- * @return {!Array<!SDK.NetworkRequest>} |
+ * @param {!Protocol.Network.RequestId} requestId |
+ * @return {?SDK.NetworkRequest} |
*/ |
- requestsForManager(networkManager) { |
- var map = this._requestsByManagerAndId.get(networkManager); |
- return map ? Array.from(map.values()) : []; |
+ requestByManagerAndId(networkManager, requestId) { |
+ // We itterate backwards because the last item will likely be the one needed for console network request lookups. |
+ for (var i = this._requests.length - 1; i >= 0; i--) { |
+ var request = this._requests[i]; |
+ if (requestId === request.requestId() && networkManager === SDK.NetworkManager.managerForRequest(request)) |
+ return request; |
+ } |
+ return null; |
} |
/** |
@@ -126,11 +128,8 @@ NetworkLog.NetworkLog = class extends Common.Object { |
* @return {?SDK.NetworkRequest} |
*/ |
_requestByManagerAndURL(networkManager, url) { |
- var map = this._requestsByManagerAndId.get(networkManager); |
- if (!map) |
- return null; |
- for (var request of map.values()) { |
- if (request.url() === url) |
+ for (var request of this._requests) { |
+ if (url === request.url() && networkManager === SDK.NetworkManager.managerForRequest(request)) |
return request; |
} |
return null; |
@@ -204,12 +203,11 @@ NetworkLog.NetworkLog = class extends Common.Object { |
initiatorGraphForRequest(request) { |
/** @type {!Set<!SDK.NetworkRequest>} */ |
var initiated = new Set(); |
- var map = this._requestsByManagerAndId.get(request.networkManager()); |
- if (map) { |
- for (var otherRequest of map.values()) { |
- if (this._initiatorChain(otherRequest).has(request)) |
- initiated.add(otherRequest); |
- } |
+ var networkManager = SDK.NetworkManager.managerForRequest(request); |
+ for (var otherRequest of this._requests) { |
+ var otherRequestManager = SDK.NetworkManager.managerForRequest(request); |
+ if (networkManager === otherRequestManager && this._initiatorChain(otherRequest).has(request)) |
+ initiated.add(otherRequest); |
} |
return {initiators: this._initiatorChain(request), initiated: initiated}; |
} |
@@ -245,8 +243,9 @@ NetworkLog.NetworkLog = class extends Common.Object { |
if (request[NetworkLog.NetworkLog._initiatorDataSymbol].request !== undefined) |
return request[NetworkLog.NetworkLog._initiatorDataSymbol].request; |
var url = this.initiatorInfoForRequest(request).url; |
+ var networkManager = SDK.NetworkManager.managerForRequest(request); |
request[NetworkLog.NetworkLog._initiatorDataSymbol].request = |
- this._requestByManagerAndURL(request.networkManager(), url); |
+ networkManager ? this._requestByManagerAndURL(networkManager, url) : null; |
return request[NetworkLog.NetworkLog._initiatorDataSymbol].request; |
} |
@@ -270,16 +269,16 @@ NetworkLog.NetworkLog = class extends Common.Object { |
if (!this._isRecording) |
return; |
var mainFrame = /** @type {!SDK.ResourceTreeFrame} */ (event.data); |
- var networkManager = mainFrame.resourceTreeModel().target().model(SDK.NetworkManager); |
- if (!networkManager) |
+ var manager = mainFrame.resourceTreeModel().target().model(SDK.NetworkManager); |
+ if (!manager) |
return; |
- var oldRequests = this.requestsForManager(networkManager); |
+ var oldRequests = this._requests; |
if (!Common.moduleSetting('network_log.preserve-log').get()) { |
var filteredRequests = []; |
var removedRequests = []; |
for (var request of this._requests) { |
- if (request.networkManager() !== networkManager) |
+ if (SDK.NetworkManager.managerForRequest(request) !== manager) |
filteredRequests.push(request); |
else |
removedRequests.push(request); |
@@ -289,25 +288,21 @@ NetworkLog.NetworkLog = class extends Common.Object { |
for (var request of removedRequests) |
this.dispatchEventToListeners(NetworkLog.NetworkLog.Events.RequestRemoved, request); |
} |
- var idMap = new Map(); |
- this._requestsByManagerAndId.set(networkManager, idMap); |
// Preserve requests from the new session. |
var currentPageLoad = null; |
- for (var i = 0; i < oldRequests.length; ++i) { |
- var request = oldRequests[i]; |
- if (request.loaderId === mainFrame.loaderId) { |
- if (!currentPageLoad) |
- currentPageLoad = new NetworkLog.PageLoad(request); |
- this._requests.push(request); |
- this._requestsSet.add(request); |
- this.dispatchEventToListeners(NetworkLog.NetworkLog.Events.RequestAdded, request); |
- idMap.set(request.requestId(), request); |
- request[NetworkLog.NetworkLog._pageLoadForRequestSymbol] = currentPageLoad; |
- } |
+ for (var request of oldRequests) { |
+ if (request.loaderId !== mainFrame.loaderId) |
+ continue; |
+ if (!currentPageLoad) |
+ currentPageLoad = new NetworkLog.PageLoad(request); |
+ this._requests.push(request); |
+ this._requestsSet.add(request); |
+ this.dispatchEventToListeners(NetworkLog.NetworkLog.Events.RequestAdded, request); |
+ request[NetworkLog.NetworkLog._pageLoadForRequestSymbol] = currentPageLoad; |
} |
if (currentPageLoad) |
- this._currentPageLoad.set(networkManager, currentPageLoad); |
+ this._pageLoadForManager.set(manager, currentPageLoad); |
} |
/** |
@@ -319,8 +314,9 @@ NetworkLog.NetworkLog = class extends Common.Object { |
var request = /** @type {!SDK.NetworkRequest} */ (event.data); |
this._requests.push(request); |
this._requestsSet.add(request); |
- this._requestsByManagerAndId.get(request.networkManager()).set(request.requestId(), request); |
- request[NetworkLog.NetworkLog._pageLoadForRequestSymbol] = this._currentPageLoad.get(request.networkManager()); |
+ var manager = SDK.NetworkManager.managerForRequest(request); |
+ if (manager) |
+ request[NetworkLog.NetworkLog._pageLoadForRequestSymbol] = this._pageLoadForManager.get(manager); |
this.dispatchEventToListeners(NetworkLog.NetworkLog.Events.RequestAdded, request); |
} |
@@ -353,8 +349,8 @@ NetworkLog.NetworkLog = class extends Common.Object { |
_onDOMContentLoaded(resourceTreeModel, event) { |
if (!this._isRecording) |
return; |
- var networkManager = resourceTreeModel.target().model(SDK.NetworkManager); |
- var pageLoad = networkManager ? this._currentPageLoad.get(networkManager) : null; |
+ var manager = resourceTreeModel.target().model(SDK.NetworkManager); |
+ var pageLoad = manager ? this._pageLoadForManager.get(manager) : null; |
if (pageLoad) |
pageLoad.contentLoadTime = /** @type {number} */ (event.data); |
} |
@@ -365,30 +361,18 @@ NetworkLog.NetworkLog = class extends Common.Object { |
_onLoad(event) { |
if (!this._isRecording) |
return; |
- var networkManager = event.data.resourceTreeModel.target().model(SDK.NetworkManager); |
- var pageLoad = networkManager ? this._currentPageLoad.get(networkManager) : null; |
+ var pageLoad = this._pageLoadForManager.get(event.data.resourceTreeModel.target().model(SDK.NetworkManager)); |
if (pageLoad) |
pageLoad.loadTime = /** @type {number} */ (event.data.loadTime); |
} |
- /** |
- * @param {!SDK.NetworkManager} networkManager |
- * @param {!Protocol.Network.RequestId} requestId |
- * @return {?SDK.NetworkRequest} |
- */ |
- requestForId(networkManager, requestId) { |
- var map = this._requestsByManagerAndId.get(networkManager); |
- return map ? (map.get(requestId) || null) : null; |
- } |
- |
reset() { |
this._requests = []; |
this._requestsSet.clear(); |
- this._requestsByManagerAndId.forEach(map => map.clear()); |
- var networkManagers = new Set(SDK.targetManager.models(SDK.NetworkManager)); |
- for (var networkManager of this._currentPageLoad.keys()) { |
- if (!networkManagers.has(networkManager)) |
- this._currentPageLoad.delete(networkManager); |
+ var managers = new Set(SDK.targetManager.models(SDK.NetworkManager)); |
+ for (var manager of this._pageLoadForManager.keys()) { |
+ if (!managers.has(manager)) |
+ this._pageLoadForManager.delete(manager); |
} |
this.dispatchEventToListeners(NetworkLog.NetworkLog.Events.Reset); |