Chromium Code Reviews| 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 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 42 targetManager.observeTargets(this); | 42 targetManager.observeTargets(this); |
| 43 } | 43 } |
| 44 | 44 |
| 45 WebInspector.NetworkProjectManager.prototype = { | 45 WebInspector.NetworkProjectManager.prototype = { |
| 46 /** | 46 /** |
| 47 * @override | 47 * @override |
| 48 * @param {!WebInspector.Target} target | 48 * @param {!WebInspector.Target} target |
| 49 */ | 49 */ |
| 50 targetAdded: function(target) | 50 targetAdded: function(target) |
| 51 { | 51 { |
| 52 new WebInspector.NetworkProject(target, this._workspace, this._networkMa pping); | 52 new WebInspector.NetworkProject(target, this._workspace, this._networkMa pping, WebInspector.ResourceTreeModel.fromTarget(target)); |
| 53 }, | 53 }, |
| 54 | 54 |
| 55 /** | 55 /** |
| 56 * @override | 56 * @override |
| 57 * @param {!WebInspector.Target} target | 57 * @param {!WebInspector.Target} target |
| 58 */ | 58 */ |
| 59 targetRemoved: function(target) | 59 targetRemoved: function(target) |
| 60 { | 60 { |
| 61 WebInspector.NetworkProject.forTarget(target)._dispose(); | 61 WebInspector.NetworkProject.forTarget(target)._dispose(); |
| 62 } | 62 } |
| 63 } | 63 } |
| 64 | 64 |
| 65 /** | 65 /** |
| 66 * @constructor | 66 * @constructor |
| 67 * @extends {WebInspector.SDKObject} | 67 * @extends {WebInspector.SDKObject} |
| 68 * @param {!WebInspector.Target} target | 68 * @param {!WebInspector.Target} target |
| 69 * @param {!WebInspector.Workspace} workspace | 69 * @param {!WebInspector.Workspace} workspace |
| 70 * @param {!WebInspector.NetworkMapping} networkMapping | 70 * @param {!WebInspector.NetworkMapping} networkMapping |
| 71 * @param {?WebInspector.ResourceTreeModel} resourceTreeModel | |
| 71 */ | 72 */ |
| 72 WebInspector.NetworkProject = function(target, workspace, networkMapping) | 73 WebInspector.NetworkProject = function(target, workspace, networkMapping, resour ceTreeModel) |
| 73 { | 74 { |
| 74 WebInspector.SDKObject.call(this, target); | 75 WebInspector.SDKObject.call(this, target); |
| 75 this._workspace = workspace; | 76 this._workspace = workspace; |
| 76 this._networkMapping = networkMapping; | 77 this._networkMapping = networkMapping; |
| 77 /** @type {!Map<string, !WebInspector.ContentProviderBasedProject>} */ | 78 /** @type {!Map<string, !WebInspector.ContentProviderBasedProject>} */ |
| 78 this._workspaceProjects = new Map(); | 79 this._workspaceProjects = new Map(); |
| 80 this._resourceTreeModel = resourceTreeModel; | |
| 79 target[WebInspector.NetworkProject._networkProjectSymbol] = this; | 81 target[WebInspector.NetworkProject._networkProjectSymbol] = this; |
| 80 | 82 |
| 81 target.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.Eve ntTypes.ResourceAdded, this._resourceAdded, this); | 83 this._eventListeners = []; |
| 82 target.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.Eve ntTypes.FrameWillNavigate, this._frameWillNavigate, this); | 84 |
| 83 target.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.Eve ntTypes.MainFrameNavigated, this._mainFrameNavigated, this); | 85 if (resourceTreeModel) { |
| 86 this._eventListeners.push( | |
| 87 resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.Ev entTypes.ResourceAdded, this._resourceAdded, this), | |
| 88 resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.Ev entTypes.FrameWillNavigate, this._frameWillNavigate, this), | |
| 89 resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.Ev entTypes.MainFrameNavigated, this._mainFrameNavigated, this)) | |
| 90 } | |
| 84 | 91 |
| 85 var debuggerModel = WebInspector.DebuggerModel.fromTarget(target); | 92 var debuggerModel = WebInspector.DebuggerModel.fromTarget(target); |
| 86 if (debuggerModel) { | 93 if (debuggerModel) { |
| 87 debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.ParsedS criptSource, this._parsedScriptSource, this); | 94 this._eventListeners.push( |
| 88 debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.FailedT oParseScriptSource, this._parsedScriptSource, this); | 95 debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.Par sedScriptSource, this._parsedScriptSource, this), |
| 96 debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.Fai ledToParseScriptSource, this._parsedScriptSource, this)); | |
| 89 } | 97 } |
| 90 var cssModel = WebInspector.CSSModel.fromTarget(target); | 98 var cssModel = WebInspector.CSSModel.fromTarget(target); |
| 91 if (cssModel) { | 99 if (cssModel) { |
| 92 cssModel.addEventListener(WebInspector.CSSModel.Events.StyleSheetAdded, this._styleSheetAdded, this); | 100 this._eventListeners.push( |
| 93 cssModel.addEventListener(WebInspector.CSSModel.Events.StyleSheetRemoved , this._styleSheetRemoved, this); | 101 cssModel.addEventListener(WebInspector.CSSModel.Events.StyleSheetAdd ed, this._styleSheetAdded, this), |
| 102 cssModel.addEventListener(WebInspector.CSSModel.Events.StyleSheetRem oved, this._styleSheetRemoved, this)); | |
| 94 } | 103 } |
| 95 target.targetManager().addEventListener(WebInspector.TargetManager.Events.Su spendStateChanged, this._suspendStateChanged, this); | 104 this._eventListeners.push( |
| 105 target.targetManager().addEventListener(WebInspector.TargetManager.Event s.SuspendStateChanged, this._suspendStateChanged, this)); | |
| 96 } | 106 } |
| 97 | 107 |
| 98 WebInspector.NetworkProject._networkProjectSymbol = Symbol("networkProject"); | 108 WebInspector.NetworkProject._networkProjectSymbol = Symbol("networkProject"); |
| 99 WebInspector.NetworkProject._resourceSymbol = Symbol("resource"); | 109 WebInspector.NetworkProject._resourceSymbol = Symbol("resource"); |
| 100 WebInspector.NetworkProject._scriptSymbol = Symbol("script"); | 110 WebInspector.NetworkProject._scriptSymbol = Symbol("script"); |
| 101 WebInspector.NetworkProject._styleSheetSymbol = Symbol("styleSheet"); | 111 WebInspector.NetworkProject._styleSheetSymbol = Symbol("styleSheet"); |
| 102 WebInspector.NetworkProject._targetSymbol = Symbol("target"); | 112 WebInspector.NetworkProject._targetSymbol = Symbol("target"); |
| 103 WebInspector.NetworkProject._frameSymbol = Symbol("frame"); | 113 WebInspector.NetworkProject._frameSymbol = Symbol("frame"); |
| 104 | 114 |
| 105 /** | 115 /** |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 159 uiSourceCode[WebInspector.NetworkProject._styleSheetSymbol]) { | 169 uiSourceCode[WebInspector.NetworkProject._styleSheetSymbol]) { |
| 160 return uiSourceCode.contentType().canonicalMimeType(); | 170 return uiSourceCode.contentType().canonicalMimeType(); |
| 161 } | 171 } |
| 162 var resource = uiSourceCode[WebInspector.NetworkProject._resourceSymbol]; | 172 var resource = uiSourceCode[WebInspector.NetworkProject._resourceSymbol]; |
| 163 if (resource) | 173 if (resource) |
| 164 return resource.mimeType; | 174 return resource.mimeType; |
| 165 var mimeType = WebInspector.ResourceType.mimeFromURL(uiSourceCode.url()); | 175 var mimeType = WebInspector.ResourceType.mimeFromURL(uiSourceCode.url()); |
| 166 return mimeType || uiSourceCode.contentType().canonicalMimeType(); | 176 return mimeType || uiSourceCode.contentType().canonicalMimeType(); |
| 167 } | 177 } |
| 168 | 178 |
| 169 /** | |
| 170 * @param {!WebInspector.UISourceCode} uiSourceCode | |
| 171 * @return {?WebInspector.ResourceTreeFrame} | |
| 172 */ | |
| 173 WebInspector.NetworkProject.uiSourceCodeFrame = function(uiSourceCode) | |
| 174 { | |
| 175 var target = uiSourceCode[WebInspector.NetworkProject._targetSymbol]; | |
| 176 if (!target) | |
| 177 return null; | |
| 178 | |
| 179 var frameId; | |
| 180 | |
| 181 var script = uiSourceCode[WebInspector.NetworkProject._scriptSymbol]; | |
| 182 if (script) { | |
| 183 var executionContext = script.executionContext(); | |
| 184 if (executionContext) | |
| 185 frameId = executionContext.frameId; | |
| 186 } | |
| 187 | |
| 188 if (!frameId) { | |
| 189 var header = uiSourceCode[WebInspector.NetworkProject._styleSheetSymbol] ; | |
| 190 if (header) | |
| 191 frameId = header.frameId; | |
| 192 } | |
| 193 | |
| 194 if (!frameId) { | |
| 195 var resource = uiSourceCode[WebInspector.NetworkProject._resourceSymbol] ; | |
| 196 if (resource) | |
| 197 frameId = resource.frameId; | |
| 198 } | |
| 199 | |
| 200 return frameId ? target.resourceTreeModel.frameForId(frameId) : null; | |
| 201 } | |
| 202 | |
| 203 WebInspector.NetworkProject.prototype = { | 179 WebInspector.NetworkProject.prototype = { |
| 204 /** | 180 /** |
| 205 * @param {?WebInspector.ResourceTreeFrame} frame | 181 * @param {?WebInspector.ResourceTreeFrame} frame |
| 206 * @param {boolean} isContentScripts | 182 * @param {boolean} isContentScripts |
| 207 * @return {!WebInspector.ContentProviderBasedProject} | 183 * @return {!WebInspector.ContentProviderBasedProject} |
| 208 */ | 184 */ |
| 209 _workspaceProject: function(frame, isContentScripts) | 185 _workspaceProject: function(frame, isContentScripts) |
| 210 { | 186 { |
| 211 var projectId = WebInspector.NetworkProject.projectId(this.target(), fra me, isContentScripts); | 187 var projectId = WebInspector.NetworkProject.projectId(this.target(), fra me, isContentScripts); |
| 212 var projectType = isContentScripts ? WebInspector.projectTypes.ContentSc ripts : WebInspector.projectTypes.Network; | 188 var projectType = isContentScripts ? WebInspector.projectTypes.ContentSc ripts : WebInspector.projectTypes.Network; |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 257 function populateFrame(frame) | 233 function populateFrame(frame) |
| 258 { | 234 { |
| 259 for (var i = 0; i < frame.childFrames.length; ++i) | 235 for (var i = 0; i < frame.childFrames.length; ++i) |
| 260 populateFrame.call(this, frame.childFrames[i]); | 236 populateFrame.call(this, frame.childFrames[i]); |
| 261 | 237 |
| 262 var resources = frame.resources(); | 238 var resources = frame.resources(); |
| 263 for (var i = 0; i < resources.length; ++i) | 239 for (var i = 0; i < resources.length; ++i) |
| 264 this._addResource(resources[i]); | 240 this._addResource(resources[i]); |
| 265 } | 241 } |
| 266 | 242 |
| 267 var mainFrame = this.target().resourceTreeModel.mainFrame; | 243 var resourceTreeModel = this._resourceTreeModel; |
| 244 var mainFrame = resourceTreeModel && resourceTreeModel.mainFrame; | |
| 268 if (mainFrame) | 245 if (mainFrame) |
| 269 populateFrame.call(this, mainFrame); | 246 populateFrame.call(this, mainFrame); |
| 270 }, | 247 }, |
| 271 | 248 |
| 272 /** | 249 /** |
| 273 * @param {!WebInspector.UISourceCode} uiSourceCode | 250 * @param {!WebInspector.UISourceCode} uiSourceCode |
| 274 * @param {!WebInspector.ContentProvider} contentProvider | 251 * @param {!WebInspector.ContentProvider} contentProvider |
| 275 */ | 252 */ |
| 276 _addUISourceCodeWithProvider: function(uiSourceCode, contentProvider) | 253 _addUISourceCodeWithProvider: function(uiSourceCode, contentProvider) |
| 277 { | 254 { |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 415 | 392 |
| 416 var project = this._workspaceProject(frame, isContentScript); | 393 var project = this._workspaceProject(frame, isContentScript); |
| 417 var uiSourceCode = project.createUISourceCode(url, contentProvider.conte ntType()); | 394 var uiSourceCode = project.createUISourceCode(url, contentProvider.conte ntType()); |
| 418 uiSourceCode[WebInspector.NetworkProject._targetSymbol] = this.target(); | 395 uiSourceCode[WebInspector.NetworkProject._targetSymbol] = this.target(); |
| 419 return uiSourceCode; | 396 return uiSourceCode; |
| 420 }, | 397 }, |
| 421 | 398 |
| 422 _dispose: function() | 399 _dispose: function() |
| 423 { | 400 { |
| 424 this._reset(); | 401 this._reset(); |
| 425 var target = this.target(); | 402 WebInspector.EventTarget.removeEventListeners(this._eventListeners); |
|
dgozman
2016/08/20 01:32:00
Let's also do this._eventListeners = [];
eostroukhov-old
2016/08/22 17:55:41
Done.
| |
| 426 target.resourceTreeModel.removeEventListener(WebInspector.ResourceTreeMo del.EventTypes.ResourceAdded, this._resourceAdded, this); | 403 delete this.target()[WebInspector.NetworkProject._networkProjectSymbol]; |
| 427 target.resourceTreeModel.removeEventListener(WebInspector.ResourceTreeMo del.EventTypes.MainFrameNavigated, this._mainFrameNavigated, this); | |
| 428 var debuggerModel = WebInspector.DebuggerModel.fromTarget(target); | |
| 429 if (debuggerModel) { | |
| 430 debuggerModel.removeEventListener(WebInspector.DebuggerModel.Events. ParsedScriptSource, this._parsedScriptSource, this); | |
| 431 debuggerModel.removeEventListener(WebInspector.DebuggerModel.Events. FailedToParseScriptSource, this._parsedScriptSource, this); | |
| 432 } | |
| 433 var cssModel = WebInspector.CSSModel.fromTarget(target); | |
| 434 if (cssModel) { | |
| 435 cssModel.removeEventListener(WebInspector.CSSModel.Events.StyleSheet Added, this._styleSheetAdded, this); | |
| 436 cssModel.removeEventListener(WebInspector.CSSModel.Events.StyleSheet Removed, this._styleSheetRemoved, this); | |
| 437 } | |
| 438 delete target[WebInspector.NetworkProject._networkProjectSymbol]; | |
| 439 }, | 404 }, |
| 440 | 405 |
| 441 _reset: function() | 406 _reset: function() |
| 442 { | 407 { |
| 443 for (var project of this._workspaceProjects.values()) | 408 for (var project of this._workspaceProjects.values()) |
| 444 project.reset(); | 409 project.reset(); |
| 445 this._workspaceProjects.clear(); | 410 this._workspaceProjects.clear(); |
| 446 }, | 411 }, |
| 447 | 412 |
| 448 __proto__: WebInspector.SDKObject.prototype | 413 __proto__: WebInspector.SDKObject.prototype |
| 449 } | 414 } |
| OLD | NEW |