| OLD | NEW |
| 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 29 matching lines...) Expand all Loading... |
| 40 super(); | 40 super(); |
| 41 this._workspace = workspace; | 41 this._workspace = workspace; |
| 42 targetManager.observeTargets(this); | 42 targetManager.observeTargets(this); |
| 43 } | 43 } |
| 44 | 44 |
| 45 /** | 45 /** |
| 46 * @override | 46 * @override |
| 47 * @param {!SDK.Target} target | 47 * @param {!SDK.Target} target |
| 48 */ | 48 */ |
| 49 targetAdded(target) { | 49 targetAdded(target) { |
| 50 new Bindings.NetworkProject(target, this._workspace, target.model(SDK.Resour
ceTreeModel)); | 50 new Bindings.NetworkProject(target, this._workspace); |
| 51 } | 51 } |
| 52 | 52 |
| 53 /** | 53 /** |
| 54 * @override | 54 * @override |
| 55 * @param {!SDK.Target} target | 55 * @param {!SDK.Target} target |
| 56 */ | 56 */ |
| 57 targetRemoved(target) { | 57 targetRemoved(target) { |
| 58 Bindings.NetworkProject.forTarget(target)._dispose(); | 58 Bindings.NetworkProject.forTarget(target)._dispose(); |
| 59 } | 59 } |
| 60 }; | 60 }; |
| 61 | 61 |
| 62 Bindings.NetworkProjectManager.Events = { | 62 Bindings.NetworkProjectManager.Events = { |
| 63 FrameAttributionAdded: Symbol('FrameAttributionAdded'), | 63 FrameAttributionAdded: Symbol('FrameAttributionAdded'), |
| 64 FrameAttributionRemoved: Symbol('FrameAttributionRemoved') | 64 FrameAttributionRemoved: Symbol('FrameAttributionRemoved') |
| 65 }; | 65 }; |
| 66 | 66 |
| 67 /** | 67 /** |
| 68 * @unrestricted | 68 * @unrestricted |
| 69 */ | 69 */ |
| 70 Bindings.NetworkProject = class { | 70 Bindings.NetworkProject = class { |
| 71 /** | 71 /** |
| 72 * @param {!SDK.Target} target | 72 * @param {!SDK.Target} target |
| 73 * @param {!Workspace.Workspace} workspace | 73 * @param {!Workspace.Workspace} workspace |
| 74 * @param {?SDK.ResourceTreeModel} resourceTreeModel | |
| 75 */ | 74 */ |
| 76 constructor(target, workspace, resourceTreeModel) { | 75 constructor(target, workspace) { |
| 77 this._target = target; | 76 this._target = target; |
| 78 this._workspace = workspace; | 77 this._workspace = workspace; |
| 79 /** @type {!Map<string, !Bindings.ContentProviderBasedProject>} */ | 78 /** @type {!Map<string, !Bindings.ContentProviderBasedProject>} */ |
| 80 this._workspaceProjects = new Map(); | 79 this._workspaceProjects = new Map(); |
| 81 this._resourceTreeModel = resourceTreeModel; | |
| 82 target[Bindings.NetworkProject._networkProjectSymbol] = this; | 80 target[Bindings.NetworkProject._networkProjectSymbol] = this; |
| 83 | 81 |
| 84 this._eventListeners = []; | 82 this._eventListeners = []; |
| 85 | 83 |
| 86 this._debuggerModel = target.model(SDK.DebuggerModel); | 84 this._debuggerModel = target.model(SDK.DebuggerModel); |
| 87 /** @type {!Set<!SDK.Script>} */ | 85 /** @type {!Set<!SDK.Script>} */ |
| 88 this._acceptedScripts = new Set(); | 86 this._acceptedScripts = new Set(); |
| 89 if (this._debuggerModel) { | 87 if (this._debuggerModel) { |
| 90 var runtimeModel = this._debuggerModel.runtimeModel(); | 88 var runtimeModel = this._debuggerModel.runtimeModel(); |
| 91 this._eventListeners.push( | 89 this._eventListeners.push( |
| 92 runtimeModel.addEventListener( | 90 runtimeModel.addEventListener( |
| 93 SDK.RuntimeModel.Events.ExecutionContextDestroyed, this._execution
ContextDestroyed, this), | 91 SDK.RuntimeModel.Events.ExecutionContextDestroyed, this._execution
ContextDestroyed, this), |
| 94 this._debuggerModel.addEventListener( | 92 this._debuggerModel.addEventListener( |
| 95 SDK.DebuggerModel.Events.GlobalObjectCleared, this._globalObjectCl
eared, this), | 93 SDK.DebuggerModel.Events.GlobalObjectCleared, this._globalObjectCl
eared, this), |
| 96 this._debuggerModel.addEventListener( | 94 this._debuggerModel.addEventListener( |
| 97 SDK.DebuggerModel.Events.ParsedScriptSource, this._parsedScriptSou
rce, this), | 95 SDK.DebuggerModel.Events.ParsedScriptSource, this._parsedScriptSou
rce, this), |
| 98 this._debuggerModel.addEventListener( | 96 this._debuggerModel.addEventListener( |
| 99 SDK.DebuggerModel.Events.FailedToParseScriptSource, this._parsedSc
riptSource, this)); | 97 SDK.DebuggerModel.Events.FailedToParseScriptSource, this._parsedSc
riptSource, this)); |
| 100 } | 98 } |
| 101 var cssModel = target.model(SDK.CSSModel); | |
| 102 if (cssModel) { | |
| 103 this._eventListeners.push( | |
| 104 cssModel.addEventListener(SDK.CSSModel.Events.StyleSheetAdded, this._s
tyleSheetAdded, this), | |
| 105 cssModel.addEventListener(SDK.CSSModel.Events.StyleSheetRemoved, this.
_styleSheetRemoved, this)); | |
| 106 } | |
| 107 } | 99 } |
| 108 | 100 |
| 109 /** | 101 /** |
| 110 * @param {!SDK.Target} target | 102 * @param {!SDK.Target} target |
| 111 * @param {string} frameId | 103 * @param {string} frameId |
| 112 * @param {boolean} isContentScripts | 104 * @param {boolean} isContentScripts |
| 113 * @return {string} | 105 * @return {string} |
| 114 */ | 106 */ |
| 115 static projectId(target, frameId, isContentScripts) { | 107 static projectId(target, frameId, isContentScripts) { |
| 116 return target.id() + ':' + frameId + ':' + (isContentScripts ? 'contentscrip
ts' : ''); | 108 return target.id() + ':' + frameId + ':' + (isContentScripts ? 'contentscrip
ts' : ''); |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 279 */ | 271 */ |
| 280 _parsedScriptSource(event) { | 272 _parsedScriptSource(event) { |
| 281 var script = /** @type {!SDK.Script} */ (event.data); | 273 var script = /** @type {!SDK.Script} */ (event.data); |
| 282 if (!this._acceptsScript(script)) | 274 if (!this._acceptsScript(script)) |
| 283 return; | 275 return; |
| 284 this._acceptedScripts.add(script); | 276 this._acceptedScripts.add(script); |
| 285 var originalContentProvider = script.originalContentProvider(); | 277 var originalContentProvider = script.originalContentProvider(); |
| 286 var frameId = Bindings.frameIdForScript(script); | 278 var frameId = Bindings.frameIdForScript(script); |
| 287 script[Bindings.NetworkProject._frameIdSymbol] = frameId; | 279 script[Bindings.NetworkProject._frameIdSymbol] = frameId; |
| 288 var uiSourceCode = this._createFile(originalContentProvider, frameId, script
.isContentScript()); | 280 var uiSourceCode = this._createFile(originalContentProvider, frameId, script
.isContentScript()); |
| 289 var metadata = this._fetchMetadata(frameId, uiSourceCode.url()); | 281 var metadata = Bindings.metadataForURL(this._target, frameId, uiSourceCode.u
rl()); |
| 290 this._addUISourceCodeWithProvider(uiSourceCode, originalContentProvider, met
adata, 'text/javascript'); | 282 this._addUISourceCodeWithProvider(uiSourceCode, originalContentProvider, met
adata, 'text/javascript'); |
| 291 } | 283 } |
| 292 | 284 |
| 293 /** | 285 /** |
| 294 * @param {!Common.Event} event | 286 * @param {!Common.Event} event |
| 295 */ | 287 */ |
| 296 _executionContextDestroyed(event) { | 288 _executionContextDestroyed(event) { |
| 297 var executionContext = /** @type {!SDK.ExecutionContext} */ (event.data); | 289 var executionContext = /** @type {!SDK.ExecutionContext} */ (event.data); |
| 298 var scripts = this._debuggerModel.scriptsForExecutionContext(executionContex
t); | 290 var scripts = this._debuggerModel.scriptsForExecutionContext(executionContex
t); |
| 299 this._removeScripts(scripts); | 291 this._removeScripts(scripts); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 313 } | 305 } |
| 314 | 306 |
| 315 /** | 307 /** |
| 316 * @param {!Common.Event} event | 308 * @param {!Common.Event} event |
| 317 */ | 309 */ |
| 318 _globalObjectCleared(event) { | 310 _globalObjectCleared(event) { |
| 319 this._removeScripts(Array.from(this._acceptedScripts)); | 311 this._removeScripts(Array.from(this._acceptedScripts)); |
| 320 } | 312 } |
| 321 | 313 |
| 322 /** | 314 /** |
| 323 * @param {!SDK.CSSStyleSheetHeader} header | |
| 324 */ | |
| 325 _acceptsHeader(header) { | |
| 326 if (header.isInline && !header.hasSourceURL && header.origin !== 'inspector'
) | |
| 327 return false; | |
| 328 if (!header.resourceURL()) | |
| 329 return false; | |
| 330 return true; | |
| 331 } | |
| 332 | |
| 333 /** | |
| 334 * @param {!Common.Event} event | |
| 335 */ | |
| 336 _styleSheetAdded(event) { | |
| 337 var header = /** @type {!SDK.CSSStyleSheetHeader} */ (event.data); | |
| 338 if (!this._acceptsHeader(header)) | |
| 339 return; | |
| 340 | |
| 341 var originalContentProvider = header.originalContentProvider(); | |
| 342 var uiSourceCode = this._createFile(originalContentProvider, header.frameId,
false); | |
| 343 uiSourceCode[Bindings.NetworkProject._styleSheetSymbol] = header; | |
| 344 var metadata = this._fetchMetadata(header.frameId, uiSourceCode.url()); | |
| 345 this._addUISourceCodeWithProvider(uiSourceCode, originalContentProvider, met
adata, 'text/css'); | |
| 346 } | |
| 347 | |
| 348 /** | |
| 349 * @param {!Common.Event} event | |
| 350 */ | |
| 351 _styleSheetRemoved(event) { | |
| 352 var header = /** @type {!SDK.CSSStyleSheetHeader} */ (event.data); | |
| 353 if (!this._acceptsHeader(header)) | |
| 354 return; | |
| 355 this._removeFileForURL(header.resourceURL(), header.frameId, false); | |
| 356 } | |
| 357 | |
| 358 /** | |
| 359 * @param {!Common.ContentProvider} contentProvider | 315 * @param {!Common.ContentProvider} contentProvider |
| 360 * @param {string} frameId | 316 * @param {string} frameId |
| 361 * @param {boolean} isContentScript | 317 * @param {boolean} isContentScript |
| 362 * @return {!Workspace.UISourceCode} | 318 * @return {!Workspace.UISourceCode} |
| 363 */ | 319 */ |
| 364 _createFile(contentProvider, frameId, isContentScript) { | 320 _createFile(contentProvider, frameId, isContentScript) { |
| 365 var url = contentProvider.contentURL(); | 321 var url = contentProvider.contentURL(); |
| 366 var project = this._workspaceProject(frameId, isContentScript); | 322 var project = this._workspaceProject(frameId, isContentScript); |
| 367 var uiSourceCode = project.createUISourceCode(url, contentProvider.contentTy
pe()); | 323 var uiSourceCode = project.createUISourceCode(url, contentProvider.contentTy
pe()); |
| 368 if (frameId) | 324 if (frameId) |
| 369 Bindings.NetworkProject.setInitialFrameAttribution(uiSourceCode, frameId); | 325 Bindings.NetworkProject.setInitialFrameAttribution(uiSourceCode, frameId); |
| 370 return uiSourceCode; | 326 return uiSourceCode; |
| 371 } | 327 } |
| 372 | 328 |
| 373 /** | |
| 374 * @param {string} frameId | |
| 375 * @param {string} url | |
| 376 * @return {?Workspace.UISourceCodeMetadata} | |
| 377 */ | |
| 378 _fetchMetadata(frameId, url) { | |
| 379 if (!this._resourceTreeModel) | |
| 380 return null; | |
| 381 var frame = this._resourceTreeModel.frameForId(frameId); | |
| 382 if (!frame) | |
| 383 return null; | |
| 384 return Bindings.resourceMetadata(frame.resourceForURL(url)); | |
| 385 } | |
| 386 | |
| 387 _dispose() { | 329 _dispose() { |
| 388 for (var project of this._workspaceProjects.values()) | 330 for (var project of this._workspaceProjects.values()) |
| 389 project.removeProject(); | 331 project.removeProject(); |
| 390 Common.EventTarget.removeEventListeners(this._eventListeners); | 332 Common.EventTarget.removeEventListeners(this._eventListeners); |
| 391 delete this._target[Bindings.NetworkProject._networkProjectSymbol]; | 333 delete this._target[Bindings.NetworkProject._networkProjectSymbol]; |
| 392 this._workspaceProjects.clear(); | 334 this._workspaceProjects.clear(); |
| 393 } | 335 } |
| 394 | 336 |
| 395 _resetForTest() { | 337 _resetForTest() { |
| 396 for (var project of this._workspaceProjects.values()) | 338 for (var project of this._workspaceProjects.values()) |
| 397 project.removeProject(); | 339 project.removeProject(); |
| 398 this._workspaceProjects.clear(); | 340 this._workspaceProjects.clear(); |
| 399 } | 341 } |
| 400 | 342 |
| 401 /** | 343 /** |
| 402 * @param {!Workspace.Workspace} workspace | 344 * @param {!Workspace.Workspace} workspace |
| 403 * @param {string} url | 345 * @param {string} url |
| 404 * @param {!SDK.Script} script | 346 * @param {!SDK.Script} script |
| 405 * @return {?Workspace.UISourceCode} | 347 * @return {?Workspace.UISourceCode} |
| 406 */ | 348 */ |
| 407 static uiSourceCodeForScriptURL(workspace, url, script) { | 349 static uiSourceCodeForScriptURL(workspace, url, script) { |
| 408 var target = script.debuggerModel.target(); | 350 var target = script.debuggerModel.target(); |
| 409 var executionContext = script.executionContext(); | 351 var executionContext = script.executionContext(); |
| 410 var frameId = executionContext ? executionContext.frameId || '' : ''; | 352 var frameId = executionContext ? executionContext.frameId || '' : ''; |
| 411 return workspace.uiSourceCode(Bindings.NetworkProject.projectId(target, fram
eId, false), url) || | 353 return workspace.uiSourceCode(Bindings.NetworkProject.projectId(target, fram
eId, false), url) || |
| 412 workspace.uiSourceCode(Bindings.NetworkProject.projectId(target, frameId
, true), url); | 354 workspace.uiSourceCode(Bindings.NetworkProject.projectId(target, frameId
, true), url); |
| 413 } | 355 } |
| 414 | |
| 415 /** | |
| 416 * @param {!Workspace.Workspace} workspace | |
| 417 * @param {string} url | |
| 418 * @param {!SDK.CSSStyleSheetHeader} header | |
| 419 * @return {?Workspace.UISourceCode} | |
| 420 */ | |
| 421 static uiSourceCodeForStyleURL(workspace, url, header) { | |
| 422 return workspace.uiSourceCode( | |
| 423 Bindings.NetworkProject.projectId(header.cssModel().target(), header.fra
meId, false), url); | |
| 424 } | |
| 425 | |
| 426 /** | |
| 427 * @param {!Workspace.UISourceCode} uiSourceCode | |
| 428 * @return {?SDK.CSSStyleSheetHeader} | |
| 429 */ | |
| 430 static styleHeaderForUISourceCode(uiSourceCode) { | |
| 431 return uiSourceCode[Bindings.NetworkProject._styleSheetSymbol]; | |
| 432 } | |
| 433 }; | 356 }; |
| 434 | 357 |
| 435 Bindings.NetworkProject._networkProjectSymbol = Symbol('networkProject'); | 358 Bindings.NetworkProject._networkProjectSymbol = Symbol('networkProject'); |
| 436 Bindings.NetworkProject._styleSheetSymbol = Symbol('styleSheet'); | |
| 437 Bindings.NetworkProject._targetSymbol = Symbol('target'); | 359 Bindings.NetworkProject._targetSymbol = Symbol('target'); |
| 438 Bindings.NetworkProject._frameIdSymbol = Symbol('frameid'); | 360 Bindings.NetworkProject._frameIdSymbol = Symbol('frameid'); |
| 439 | 361 |
| 440 Bindings.NetworkProject._frameAttributionSymbol = Symbol('Bindings.NetworkProjec
t._frameAttributionSymbol'); | 362 Bindings.NetworkProject._frameAttributionSymbol = Symbol('Bindings.NetworkProjec
t._frameAttributionSymbol'); |
| OLD | NEW |