Index: third_party/WebKit/Source/devtools/front_end/bindings/NetworkProject.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/bindings/NetworkProject.js b/third_party/WebKit/Source/devtools/front_end/bindings/NetworkProject.js |
index f1855ccffcb90080937efadeb08945a7af4aacc0..d4dca7661cf6cc23d4a49442a7b9e4309dede568 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/bindings/NetworkProject.js |
+++ b/third_party/WebKit/Source/devtools/front_end/bindings/NetworkProject.js |
@@ -90,6 +90,8 @@ Bindings.NetworkProject = class extends SDK.SDKObject { |
var debuggerModel = target.model(SDK.DebuggerModel); |
if (debuggerModel) { |
this._eventListeners.push( |
+ debuggerModel.addEventListener( |
+ SDK.DebuggerModel.Events.ExecutionContextDestroyed, this._executionContextDestroyed, this), |
debuggerModel.addEventListener(SDK.DebuggerModel.Events.ParsedScriptSource, this._parsedScriptSource, this), |
debuggerModel.addEventListener( |
SDK.DebuggerModel.Events.FailedToParseScriptSource, this._parsedScriptSource, this)); |
@@ -250,21 +252,32 @@ Bindings.NetworkProject = class extends SDK.SDKObject { |
} |
/** |
- * @param {!Common.Event} event |
+ * @param {!SDK.Script} script |
+ * @return {boolean} |
*/ |
- _parsedScriptSource(event) { |
- var script = /** @type {!SDK.Script} */ (event.data); |
+ _acceptsScript(script) { |
if (!script.sourceURL || script.isLiveEdit() || (script.isInlineScript() && !script.hasSourceURL)) |
- return; |
+ return false; |
// Filter out embedder injected content scripts. |
if (script.isContentScript() && !script.hasSourceURL) { |
var parsedURL = new Common.ParsedURL(script.sourceURL); |
if (!parsedURL.isValid) |
- return; |
+ return false; |
} |
+ return true; |
+ } |
+ |
+ /** |
+ * @param {!Common.Event} event |
+ */ |
+ _parsedScriptSource(event) { |
+ var script = /** @type {!SDK.Script} */ (event.data); |
+ if (!this._acceptsScript(script)) |
+ return; |
var originalContentProvider = script.originalContentProvider(); |
var executionContext = script.executionContext(); |
var frameId = executionContext ? executionContext.frameId || '' : ''; |
+ script[Bindings.NetworkProject._frameIdSymbol] = frameId; |
var uiSourceCode = this._createFile(originalContentProvider, frameId, script.isContentScript()); |
uiSourceCode[Bindings.NetworkProject._scriptSymbol] = script; |
var resource = SDK.ResourceTreeModel.resourceForURL(uiSourceCode.url()); |
@@ -274,11 +287,33 @@ Bindings.NetworkProject = class extends SDK.SDKObject { |
/** |
* @param {!Common.Event} event |
*/ |
- _styleSheetAdded(event) { |
- var header = /** @type {!SDK.CSSStyleSheetHeader} */ (event.data); |
+ _executionContextDestroyed(event) { |
+ var scripts = /** @type {!Array<!SDK.Script>} */ (event.data); |
+ for (var script of scripts) { |
+ if (!this._acceptsScript(script)) |
+ continue; |
+ var frameId = script[Bindings.NetworkProject._frameIdSymbol]; |
+ this._removeFileForURL(script.contentURL(), frameId, script.isContentScript()); |
+ } |
+ } |
+ |
+ /** |
+ * @param {!SDK.CSSStyleSheetHeader} header |
+ */ |
+ _acceptsHeader(header) { |
if (header.isInline && !header.hasSourceURL && header.origin !== 'inspector') |
- return; |
+ return false; |
if (!header.resourceURL()) |
+ return false; |
+ return true; |
+ } |
+ |
+ /** |
+ * @param {!Common.Event} event |
+ */ |
+ _styleSheetAdded(event) { |
+ var header = /** @type {!SDK.CSSStyleSheetHeader} */ (event.data); |
+ if (!this._acceptsHeader(header)) |
return; |
var originalContentProvider = header.originalContentProvider(); |
@@ -293,9 +328,8 @@ Bindings.NetworkProject = class extends SDK.SDKObject { |
*/ |
_styleSheetRemoved(event) { |
var header = /** @type {!SDK.CSSStyleSheetHeader} */ (event.data); |
- if (header.isInline && !header.hasSourceURL && header.origin !== 'inspector') |
+ if (!this._acceptsHeader(header)) |
return; |
- |
this._removeFileForURL(header.resourceURL(), header.frameId, false); |
} |
@@ -317,7 +351,6 @@ Bindings.NetworkProject = class extends SDK.SDKObject { |
resourceType !== Common.resourceTypes.Document && resourceType !== Common.resourceTypes.Manifest) |
return; |
- |
// Ignore non-images and non-fonts. |
if (resourceType === Common.resourceTypes.Image && resource.mimeType && !resource.mimeType.startsWith('image')) |
return; |
@@ -448,3 +481,4 @@ Bindings.NetworkProject._scriptSymbol = Symbol('script'); |
Bindings.NetworkProject._styleSheetSymbol = Symbol('styleSheet'); |
Bindings.NetworkProject._targetSymbol = Symbol('target'); |
Bindings.NetworkProject._frameSymbol = Symbol('frame'); |
+Bindings.NetworkProject._frameIdSymbol = Symbol('frameid'); |