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

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

Issue 2795193003: DevTools: carefully cleanup script UISourceCodes (Closed)
Patch Set: address comments 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 if (resourceTreeModel) { 80 if (resourceTreeModel) {
81 this._eventListeners.push( 81 this._eventListeners.push(
82 resourceTreeModel.addEventListener(SDK.ResourceTreeModel.Events.Resour ceAdded, this._resourceAdded, this), 82 resourceTreeModel.addEventListener(SDK.ResourceTreeModel.Events.Resour ceAdded, this._resourceAdded, this),
83 resourceTreeModel.addEventListener( 83 resourceTreeModel.addEventListener(
84 SDK.ResourceTreeModel.Events.FrameWillNavigate, this._frameWillNav igate, this), 84 SDK.ResourceTreeModel.Events.FrameWillNavigate, this._frameWillNav igate, this),
85 resourceTreeModel.addEventListener( 85 resourceTreeModel.addEventListener(
86 SDK.ResourceTreeModel.Events.MainFrameNavigated, this._mainFrameNa vigated, this), 86 SDK.ResourceTreeModel.Events.MainFrameNavigated, this._mainFrameNa vigated, this),
87 resourceTreeModel.addEventListener(SDK.ResourceTreeModel.Events.FrameD etached, this._frameDetached, this)); 87 resourceTreeModel.addEventListener(SDK.ResourceTreeModel.Events.FrameD etached, this._frameDetached, this));
88 } 88 }
89 89
90 var debuggerModel = target.model(SDK.DebuggerModel); 90 this._debuggerModel = target.model(SDK.DebuggerModel);
91 if (debuggerModel) { 91 if (this._debuggerModel) {
92 var runtimeModel = this._debuggerModel.runtimeModel();
92 this._eventListeners.push( 93 this._eventListeners.push(
93 debuggerModel.addEventListener(SDK.DebuggerModel.Events.ParsedScriptSo urce, this._parsedScriptSource, this), 94 runtimeModel.addEventListener(
94 debuggerModel.addEventListener( 95 SDK.RuntimeModel.Events.ExecutionContextDestroyed, this._execution ContextDestroyed, this),
96 this._debuggerModel.addEventListener(
97 SDK.DebuggerModel.Events.ParsedScriptSource, this._parsedScriptSou rce, this),
98 this._debuggerModel.addEventListener(
95 SDK.DebuggerModel.Events.FailedToParseScriptSource, this._parsedSc riptSource, this)); 99 SDK.DebuggerModel.Events.FailedToParseScriptSource, this._parsedSc riptSource, this));
96 } 100 }
97 var cssModel = target.model(SDK.CSSModel); 101 var cssModel = target.model(SDK.CSSModel);
98 if (cssModel) { 102 if (cssModel) {
99 this._eventListeners.push( 103 this._eventListeners.push(
100 cssModel.addEventListener(SDK.CSSModel.Events.StyleSheetAdded, this._s tyleSheetAdded, this), 104 cssModel.addEventListener(SDK.CSSModel.Events.StyleSheetAdded, this._s tyleSheetAdded, this),
101 cssModel.addEventListener(SDK.CSSModel.Events.StyleSheetRemoved, this. _styleSheetRemoved, this)); 105 cssModel.addEventListener(SDK.CSSModel.Events.StyleSheetRemoved, this. _styleSheetRemoved, this));
102 } 106 }
103 this._eventListeners.push(target.targetManager().addEventListener( 107 this._eventListeners.push(target.targetManager().addEventListener(
104 SDK.TargetManager.Events.SuspendStateChanged, this._suspendStateChanged, this)); 108 SDK.TargetManager.Events.SuspendStateChanged, this._suspendStateChanged, this));
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 * @param {!Workspace.UISourceCode} uiSourceCode 247 * @param {!Workspace.UISourceCode} uiSourceCode
244 * @param {!Common.ContentProvider} contentProvider 248 * @param {!Common.ContentProvider} contentProvider
245 * @param {?Workspace.UISourceCodeMetadata} metadata 249 * @param {?Workspace.UISourceCodeMetadata} metadata
246 */ 250 */
247 _addUISourceCodeWithProvider(uiSourceCode, contentProvider, metadata) { 251 _addUISourceCodeWithProvider(uiSourceCode, contentProvider, metadata) {
248 /** @type {!Bindings.ContentProviderBasedProject} */ (uiSourceCode.project() ) 252 /** @type {!Bindings.ContentProviderBasedProject} */ (uiSourceCode.project() )
249 .addUISourceCodeWithProvider(uiSourceCode, contentProvider, metadata); 253 .addUISourceCodeWithProvider(uiSourceCode, contentProvider, metadata);
250 } 254 }
251 255
252 /** 256 /**
257 * @param {!SDK.Script} script
258 * @return {boolean}
259 */
260 _acceptsScript(script) {
261 if (!script.sourceURL || script.isLiveEdit() || (script.isInlineScript() && !script.hasSourceURL))
262 return false;
263 // Filter out embedder injected content scripts.
264 if (script.isContentScript() && !script.hasSourceURL) {
265 var parsedURL = new Common.ParsedURL(script.sourceURL);
266 if (!parsedURL.isValid)
267 return false;
268 }
269 return true;
270 }
271
272 /**
253 * @param {!Common.Event} event 273 * @param {!Common.Event} event
254 */ 274 */
255 _parsedScriptSource(event) { 275 _parsedScriptSource(event) {
256 var script = /** @type {!SDK.Script} */ (event.data); 276 var script = /** @type {!SDK.Script} */ (event.data);
257 if (!script.sourceURL || script.isLiveEdit() || (script.isInlineScript() && !script.hasSourceURL)) 277 if (!this._acceptsScript(script))
258 return; 278 return;
259 // Filter out embedder injected content scripts.
260 if (script.isContentScript() && !script.hasSourceURL) {
261 var parsedURL = new Common.ParsedURL(script.sourceURL);
262 if (!parsedURL.isValid)
263 return;
264 }
265 var originalContentProvider = script.originalContentProvider(); 279 var originalContentProvider = script.originalContentProvider();
266 var executionContext = script.executionContext(); 280 var executionContext = script.executionContext();
267 var frameId = executionContext ? executionContext.frameId || '' : ''; 281 var frameId = executionContext ? executionContext.frameId || '' : '';
282 script[Bindings.NetworkProject._frameIdSymbol] = frameId;
268 var uiSourceCode = this._createFile(originalContentProvider, frameId, script .isContentScript()); 283 var uiSourceCode = this._createFile(originalContentProvider, frameId, script .isContentScript());
269 uiSourceCode[Bindings.NetworkProject._scriptSymbol] = script; 284 uiSourceCode[Bindings.NetworkProject._scriptSymbol] = script;
270 var resource = SDK.ResourceTreeModel.resourceForURL(uiSourceCode.url()); 285 var resource = SDK.ResourceTreeModel.resourceForURL(uiSourceCode.url());
271 this._addUISourceCodeWithProvider(uiSourceCode, originalContentProvider, thi s._resourceMetadata(resource)); 286 this._addUISourceCodeWithProvider(uiSourceCode, originalContentProvider, thi s._resourceMetadata(resource));
272 } 287 }
273 288
274 /** 289 /**
275 * @param {!Common.Event} event 290 * @param {!Common.Event} event
276 */ 291 */
292 _executionContextDestroyed(event) {
293 var executionContext = /** @type {!SDK.ExecutionContext} */ (event.data);
294 var scripts = this._debuggerModel.scriptsForExecutionContext(executionContex t);
295 for (var script of scripts) {
296 if (!this._acceptsScript(script))
297 continue;
298 var frameId = script[Bindings.NetworkProject._frameIdSymbol];
299 this._removeFileForURL(script.contentURL(), frameId, script.isContentScrip t());
300 }
301 }
302
303 /**
304 * @param {!SDK.CSSStyleSheetHeader} header
305 */
306 _acceptsHeader(header) {
307 if (header.isInline && !header.hasSourceURL && header.origin !== 'inspector' )
308 return false;
309 if (!header.resourceURL())
310 return false;
311 return true;
312 }
313
314 /**
315 * @param {!Common.Event} event
316 */
277 _styleSheetAdded(event) { 317 _styleSheetAdded(event) {
278 var header = /** @type {!SDK.CSSStyleSheetHeader} */ (event.data); 318 var header = /** @type {!SDK.CSSStyleSheetHeader} */ (event.data);
279 if (header.isInline && !header.hasSourceURL && header.origin !== 'inspector' ) 319 if (!this._acceptsHeader(header))
280 return;
281 if (!header.resourceURL())
282 return; 320 return;
283 321
284 var originalContentProvider = header.originalContentProvider(); 322 var originalContentProvider = header.originalContentProvider();
285 var uiSourceCode = this._createFile(originalContentProvider, header.frameId, false); 323 var uiSourceCode = this._createFile(originalContentProvider, header.frameId, false);
286 uiSourceCode[Bindings.NetworkProject._styleSheetSymbol] = header; 324 uiSourceCode[Bindings.NetworkProject._styleSheetSymbol] = header;
287 var resource = SDK.ResourceTreeModel.resourceForURL(uiSourceCode.url()); 325 var resource = SDK.ResourceTreeModel.resourceForURL(uiSourceCode.url());
288 this._addUISourceCodeWithProvider(uiSourceCode, originalContentProvider, thi s._resourceMetadata(resource)); 326 this._addUISourceCodeWithProvider(uiSourceCode, originalContentProvider, thi s._resourceMetadata(resource));
289 } 327 }
290 328
291 /** 329 /**
292 * @param {!Common.Event} event 330 * @param {!Common.Event} event
293 */ 331 */
294 _styleSheetRemoved(event) { 332 _styleSheetRemoved(event) {
295 var header = /** @type {!SDK.CSSStyleSheetHeader} */ (event.data); 333 var header = /** @type {!SDK.CSSStyleSheetHeader} */ (event.data);
296 if (header.isInline && !header.hasSourceURL && header.origin !== 'inspector' ) 334 if (!this._acceptsHeader(header))
297 return; 335 return;
298
299 this._removeFileForURL(header.resourceURL(), header.frameId, false); 336 this._removeFileForURL(header.resourceURL(), header.frameId, false);
300 } 337 }
301 338
302 /** 339 /**
303 * @param {!Common.Event} event 340 * @param {!Common.Event} event
304 */ 341 */
305 _resourceAdded(event) { 342 _resourceAdded(event) {
306 var resource = /** @type {!SDK.Resource} */ (event.data); 343 var resource = /** @type {!SDK.Resource} */ (event.data);
307 this._addResource(resource); 344 this._addResource(resource);
308 } 345 }
309 346
310 /** 347 /**
311 * @param {!SDK.Resource} resource 348 * @param {!SDK.Resource} resource
312 */ 349 */
313 _addResource(resource) { 350 _addResource(resource) {
314 var resourceType = resource.resourceType(); 351 var resourceType = resource.resourceType();
315 // Only load selected resource types from resources. 352 // Only load selected resource types from resources.
316 if (resourceType !== Common.resourceTypes.Image && resourceType !== Common.r esourceTypes.Font && 353 if (resourceType !== Common.resourceTypes.Image && resourceType !== Common.r esourceTypes.Font &&
317 resourceType !== Common.resourceTypes.Document && resourceType !== Commo n.resourceTypes.Manifest) 354 resourceType !== Common.resourceTypes.Document && resourceType !== Commo n.resourceTypes.Manifest)
318 return; 355 return;
319 356
320
321 // Ignore non-images and non-fonts. 357 // Ignore non-images and non-fonts.
322 if (resourceType === Common.resourceTypes.Image && resource.mimeType && !res ource.mimeType.startsWith('image')) 358 if (resourceType === Common.resourceTypes.Image && resource.mimeType && !res ource.mimeType.startsWith('image'))
323 return; 359 return;
324 if (resourceType === Common.resourceTypes.Font && resource.mimeType && !reso urce.mimeType.includes('font')) 360 if (resourceType === Common.resourceTypes.Font && resource.mimeType && !reso urce.mimeType.includes('font'))
325 return; 361 return;
326 if ((resourceType === Common.resourceTypes.Image || resourceType === Common. resourceTypes.Font) && 362 if ((resourceType === Common.resourceTypes.Image || resourceType === Common. resourceTypes.Font) &&
327 resource.contentURL().startsWith('data:')) 363 resource.contentURL().startsWith('data:'))
328 return; 364 return;
329 365
330 // Never load document twice. 366 // Never load document twice.
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 Bindings.NetworkProject.projectId(header.cssModel().target(), header.fra meId, false), url); 477 Bindings.NetworkProject.projectId(header.cssModel().target(), header.fra meId, false), url);
442 } 478 }
443 }; 479 };
444 480
445 Bindings.NetworkProject._networkProjectSymbol = Symbol('networkProject'); 481 Bindings.NetworkProject._networkProjectSymbol = Symbol('networkProject');
446 Bindings.NetworkProject._resourceSymbol = Symbol('resource'); 482 Bindings.NetworkProject._resourceSymbol = Symbol('resource');
447 Bindings.NetworkProject._scriptSymbol = Symbol('script'); 483 Bindings.NetworkProject._scriptSymbol = Symbol('script');
448 Bindings.NetworkProject._styleSheetSymbol = Symbol('styleSheet'); 484 Bindings.NetworkProject._styleSheetSymbol = Symbol('styleSheet');
449 Bindings.NetworkProject._targetSymbol = Symbol('target'); 485 Bindings.NetworkProject._targetSymbol = Symbol('target');
450 Bindings.NetworkProject._frameSymbol = Symbol('frame'); 486 Bindings.NetworkProject._frameSymbol = Symbol('frame');
487 Bindings.NetworkProject._frameIdSymbol = Symbol('frameid');
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698