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

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

Issue 2893073002: DevTools: introduce ResourceMapping (Closed)
Patch Set: address comments Created 3 years, 6 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 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 constructor(target, workspace, resourceTreeModel) { 76 constructor(target, workspace, resourceTreeModel) {
77 this._target = target; 77 this._target = target;
78 this._workspace = workspace; 78 this._workspace = workspace;
79 /** @type {!Map<string, !Bindings.ContentProviderBasedProject>} */ 79 /** @type {!Map<string, !Bindings.ContentProviderBasedProject>} */
80 this._workspaceProjects = new Map(); 80 this._workspaceProjects = new Map();
81 this._resourceTreeModel = resourceTreeModel; 81 this._resourceTreeModel = resourceTreeModel;
82 target[Bindings.NetworkProject._networkProjectSymbol] = this; 82 target[Bindings.NetworkProject._networkProjectSymbol] = this;
83 83
84 this._eventListeners = []; 84 this._eventListeners = [];
85 85
86 if (resourceTreeModel) {
87 this._eventListeners.push(
88 resourceTreeModel.addEventListener(SDK.ResourceTreeModel.Events.Resour ceAdded, this._resourceAdded, this),
89 resourceTreeModel.addEventListener(
90 SDK.ResourceTreeModel.Events.FrameWillNavigate, this._frameWillNav igate, this),
91 resourceTreeModel.addEventListener(SDK.ResourceTreeModel.Events.FrameD etached, this._frameDetached, this));
92 }
93
94 this._debuggerModel = target.model(SDK.DebuggerModel); 86 this._debuggerModel = target.model(SDK.DebuggerModel);
95 /** @type {!Set<!SDK.Script>} */ 87 /** @type {!Set<!SDK.Script>} */
96 this._acceptedScripts = new Set(); 88 this._acceptedScripts = new Set();
97 if (this._debuggerModel) { 89 if (this._debuggerModel) {
98 var runtimeModel = this._debuggerModel.runtimeModel(); 90 var runtimeModel = this._debuggerModel.runtimeModel();
99 this._eventListeners.push( 91 this._eventListeners.push(
100 runtimeModel.addEventListener( 92 runtimeModel.addEventListener(
101 SDK.RuntimeModel.Events.ExecutionContextDestroyed, this._execution ContextDestroyed, this), 93 SDK.RuntimeModel.Events.ExecutionContextDestroyed, this._execution ContextDestroyed, this),
102 this._debuggerModel.addEventListener( 94 this._debuggerModel.addEventListener(
103 SDK.DebuggerModel.Events.GlobalObjectCleared, this._globalObjectCl eared, this), 95 SDK.DebuggerModel.Events.GlobalObjectCleared, this._globalObjectCl eared, this),
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 * @param {!Common.Event} event 349 * @param {!Common.Event} event
358 */ 350 */
359 _styleSheetRemoved(event) { 351 _styleSheetRemoved(event) {
360 var header = /** @type {!SDK.CSSStyleSheetHeader} */ (event.data); 352 var header = /** @type {!SDK.CSSStyleSheetHeader} */ (event.data);
361 if (!this._acceptsHeader(header)) 353 if (!this._acceptsHeader(header))
362 return; 354 return;
363 this._removeFileForURL(header.resourceURL(), header.frameId, false); 355 this._removeFileForURL(header.resourceURL(), header.frameId, false);
364 } 356 }
365 357
366 /** 358 /**
367 * @param {!Common.Event} event
368 */
369 _resourceAdded(event) {
370 var resource = /** @type {!SDK.Resource} */ (event.data);
371 this._addResource(resource);
372 }
373
374 /**
375 * @param {!SDK.Resource} resource
376 */
377 _acceptsResource(resource) {
378 var resourceType = resource.resourceType();
379 // Only load selected resource types from resources.
380 if (resourceType !== Common.resourceTypes.Image && resourceType !== Common.r esourceTypes.Font &&
381 resourceType !== Common.resourceTypes.Document && resourceType !== Commo n.resourceTypes.Manifest)
382 return false;
383
384 // Ignore non-images and non-fonts.
385 if (resourceType === Common.resourceTypes.Image && resource.mimeType && !res ource.mimeType.startsWith('image'))
386 return false;
387 if (resourceType === Common.resourceTypes.Font && resource.mimeType && !reso urce.mimeType.includes('font'))
388 return false;
389 if ((resourceType === Common.resourceTypes.Image || resourceType === Common. resourceTypes.Font) &&
390 resource.contentURL().startsWith('data:'))
391 return false;
392 return true;
393 }
394
395 /**
396 * @param {!SDK.Resource} resource
397 */
398 _addResource(resource) {
399 if (!this._acceptsResource(resource))
400 return;
401
402 var uiSourceCode = this._createFile(resource, resource.frameId, false);
403 this._addUISourceCodeWithProvider(uiSourceCode, resource, Bindings.resourceM etadata(resource), resource.mimeType);
404 }
405
406 /**
407 * @param {!SDK.ResourceTreeFrame} frame
408 */
409 _removeFrameResources(frame) {
410 var regularProject = this._workspaceProject(frame.id, false);
411 var contentScriptsProject = this._workspaceProject(frame.id, true);
412 for (var resource of frame.resources()) {
413 if (!this._acceptsResource(resource))
414 continue;
415 regularProject.removeFile(resource.url);
416 contentScriptsProject.removeFile(resource.url);
417 }
418 }
419
420 /**
421 * @param {!Common.Event} event
422 */
423 _frameWillNavigate(event) {
424 var frame = /** @type {!SDK.ResourceTreeFrame} */ (event.data);
425 this._removeFrameResources(frame);
426 }
427
428 /**
429 * @param {!Common.Event} event
430 */
431 _frameDetached(event) {
432 var frame = /** @type {!SDK.ResourceTreeFrame} */ (event.data);
433 this._removeFrameResources(frame);
434 }
435
436 /**
437 * @param {!Common.ContentProvider} contentProvider 359 * @param {!Common.ContentProvider} contentProvider
438 * @param {string} frameId 360 * @param {string} frameId
439 * @param {boolean} isContentScript 361 * @param {boolean} isContentScript
440 * @return {!Workspace.UISourceCode} 362 * @return {!Workspace.UISourceCode}
441 */ 363 */
442 _createFile(contentProvider, frameId, isContentScript) { 364 _createFile(contentProvider, frameId, isContentScript) {
443 var url = contentProvider.contentURL(); 365 var url = contentProvider.contentURL();
444 var project = this._workspaceProject(frameId, isContentScript); 366 var project = this._workspaceProject(frameId, isContentScript);
445 var uiSourceCode = project.createUISourceCode(url, contentProvider.contentTy pe()); 367 var uiSourceCode = project.createUISourceCode(url, contentProvider.contentTy pe());
446 if (frameId) 368 if (frameId)
447 Bindings.NetworkProject.setInitialFrameAttribution(uiSourceCode, frameId); 369 Bindings.NetworkProject.setInitialFrameAttribution(uiSourceCode, frameId);
448 return uiSourceCode; 370 return uiSourceCode;
449 } 371 }
450 372
451 /** 373 /**
452 * @param {string} frameId 374 * @param {string} frameId
453 * @param {string} url 375 * @param {string} url
454 * @return {?Workspace.UISourceCodeMetadata} 376 * @return {?Workspace.UISourceCodeMetadata}
455 */ 377 */
456 _fetchMetadata(frameId, url) { 378 _fetchMetadata(frameId, url) {
457 if (!this._resourceTreeModel) 379 if (!this._resourceTreeModel)
458 return null; 380 return null;
459 var frame = this._resourceTreeModel.frameForId(frameId); 381 var frame = this._resourceTreeModel.frameForId(frameId);
460 if (!frame) 382 if (!frame)
461 return null; 383 return null;
462 return Bindings.resourceMetadata(frame.resourceForURL(url)); 384 return Bindings.resourceMetadata(frame.resourceForURL(url));
463 } 385 }
464 386
465 _dispose() { 387 _dispose() {
466 this._reset(); 388 for (var project of this._workspaceProjects.values())
389 project.removeProject();
467 Common.EventTarget.removeEventListeners(this._eventListeners); 390 Common.EventTarget.removeEventListeners(this._eventListeners);
468 delete this._target[Bindings.NetworkProject._networkProjectSymbol]; 391 delete this._target[Bindings.NetworkProject._networkProjectSymbol];
392 this._workspaceProjects.clear();
469 } 393 }
470 394
471 _reset() { 395 _resetForTest() {
472 for (var project of this._workspaceProjects.values()) 396 for (var project of this._workspaceProjects.values())
473 project.removeProject(); 397 project.removeProject();
474 this._workspaceProjects.clear(); 398 this._workspaceProjects.clear();
475 } 399 }
476 400
477 /** 401 /**
478 * @param {!Workspace.Workspace} workspace 402 * @param {!Workspace.Workspace} workspace
479 * @param {string} url 403 * @param {string} url
480 * @param {!SDK.Script} script 404 * @param {!SDK.Script} script
481 * @return {?Workspace.UISourceCode} 405 * @return {?Workspace.UISourceCode}
(...skipping 25 matching lines...) Expand all
507 return uiSourceCode[Bindings.NetworkProject._styleSheetSymbol]; 431 return uiSourceCode[Bindings.NetworkProject._styleSheetSymbol];
508 } 432 }
509 }; 433 };
510 434
511 Bindings.NetworkProject._networkProjectSymbol = Symbol('networkProject'); 435 Bindings.NetworkProject._networkProjectSymbol = Symbol('networkProject');
512 Bindings.NetworkProject._styleSheetSymbol = Symbol('styleSheet'); 436 Bindings.NetworkProject._styleSheetSymbol = Symbol('styleSheet');
513 Bindings.NetworkProject._targetSymbol = Symbol('target'); 437 Bindings.NetworkProject._targetSymbol = Symbol('target');
514 Bindings.NetworkProject._frameIdSymbol = Symbol('frameid'); 438 Bindings.NetworkProject._frameIdSymbol = Symbol('frameid');
515 439
516 Bindings.NetworkProject._frameAttributionSymbol = Symbol('Bindings.NetworkProjec t._frameAttributionSymbol'); 440 Bindings.NetworkProject._frameAttributionSymbol = Symbol('Bindings.NetworkProjec t._frameAttributionSymbol');
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698