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

Unified Diff: third_party/WebKit/Source/devtools/front_end/bindings/NetworkProject.js

Issue 2795193003: DevTools: carefully cleanup script UISourceCodes (Closed)
Patch Set: Created 3 years, 8 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/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');

Powered by Google App Engine
This is Rietveld 408576698