Reviewers: caseq, dgozman
CL:
https://codereview.chromium.org/2546903002/Message:
PTL... I was going to write a test for this, but because it happens mostly for
service workers and service workers requires HTTPS and bots have limited support
for LayoutTests as HTTPS it's going to be a lot of work.
Description:
[Devtools] Fixed bug with NetworkLog depending on ResourceTreeModel
ResourceTreeModel is currently required by NetworkLog and causes a crash
when a NetworkRequest tries to access it's NetworkLog because it does not
exist. This bug fixes this dependency.
R=dgozman,caseq
BUG=668032
Affected files (+9, -6 lines):
M third_party/WebKit/Source/devtools/front_end/sdk/NetworkLog.js
M third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js
Index: third_party/WebKit/Source/devtools/front_end/sdk/NetworkLog.js
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/NetworkLog.js b/third_party/WebKit/Source/devtools/front_end/sdk/NetworkLog.js
index 176ae77911919a46e491bd57a32f2c3f62ef9869..ed62bf2e3437fdefdd08089564fc141892062c88 100644
--- a/third_party/WebKit/Source/devtools/front_end/sdk/NetworkLog.js
+++ b/third_party/WebKit/Source/devtools/front_end/sdk/NetworkLog.js
@@ -34,7 +34,7 @@
SDK.NetworkLog = class extends SDK.SDKModel {
/**
* @param {!SDK.Target} target
- * @param {!SDK.ResourceTreeModel} resourceTreeModel
+ * @param {?SDK.ResourceTreeModel} resourceTreeModel
* @param {!SDK.NetworkManager} networkManager
*/
constructor(target, resourceTreeModel, networkManager) {
@@ -43,10 +43,12 @@ SDK.NetworkLog = class extends SDK.SDKModel {
this._requests = [];
this._requestForId = {};
networkManager.addEventListener(SDK.NetworkManager.Events.RequestStarted, this._onRequestStarted, this);
- resourceTreeModel.addEventListener(
- SDK.ResourceTreeModel.Events.MainFrameNavigated, this._onMainFrameNavigated, this);
- resourceTreeModel.addEventListener(SDK.ResourceTreeModel.Events.Load, this._onLoad, this);
- resourceTreeModel.addEventListener(SDK.ResourceTreeModel.Events.DOMContentLoaded, this._onDOMContentLoaded, this);
+ if (resourceTreeModel) {
+ resourceTreeModel.addEventListener(
+ SDK.ResourceTreeModel.Events.MainFrameNavigated, this._onMainFrameNavigated, this);
+ resourceTreeModel.addEventListener(SDK.ResourceTreeModel.Events.Load, this._onLoad, this);
+ resourceTreeModel.addEventListener(SDK.ResourceTreeModel.Events.DOMContentLoaded, this._onDOMContentLoaded, this);
+ }
}
/**
Index: third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js b/third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js
index 09497a0d88bbf727dc145beb63db599c0d2db6e3..07f2a6a170f3ae84718c2e217ff063ce86b60768 100644
--- a/third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js
+++ b/third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js
@@ -176,8 +176,9 @@ SDK.TargetManager = class extends Common.Object {
if (networkManager && target.hasDOMCapability()) {
resourceTreeModel =
new SDK.ResourceTreeModel(target, networkManager, SDK.SecurityOriginManager.fromTarget(target));
- new SDK.NetworkLog(target, resourceTreeModel, networkManager);
}
+ if (networkManager)
+ new SDK.NetworkLog(target, resourceTreeModel, networkManager);
/** @type {!SDK.RuntimeModel} */
target.runtimeModel = new SDK.RuntimeModel(target);