1d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)/* 2d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * Copyright 2014 The Chromium Authors. All rights reserved. 3d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be 4d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * found in the LICENSE file. 5d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 6d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 7d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)/** 8d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @constructor 9d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @extends {Protocol.Agents} 1076c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) * @param {string} name 11d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {!InspectorBackendClass.Connection} connection 129e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) * @param {function(?WebInspector.Target)=} callback 13d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 1476c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)WebInspector.Target = function(name, connection, callback) 15d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 16d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) Protocol.Agents.call(this, connection.agentsMap()); 1776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) this._name = name; 18d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._connection = connection; 19197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch connection.addEventListener(InspectorBackendClass.Connection.Events.Disconnected, this._onDisconnect, this); 20d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) this._id = WebInspector.Target._nextId++; 2110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch 22c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** @type {!Map.<!Function, !WebInspector.SDKModel>} */ 23c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._modelByConstructor = new Map(); 24c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 25197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch /** @type {!Object.<string, boolean>} */ 26197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this._capabilities = {}; 27c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this.pageAgent().canScreencast(this._initializeCapability.bind(this, WebInspector.Target.Capabilities.CanScreencast, null)); 287242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci this.pageAgent().canEmulate(this._initializeCapability.bind(this, WebInspector.Target.Capabilities.CanEmulate, null)); 297242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci if (Runtime.experiments.isEnabled("timelinePowerProfiler")) 30c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this.powerAgent().canProfilePower(this._initializeCapability.bind(this, WebInspector.Target.Capabilities.CanProfilePower, null)); 31c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this.workerAgent().canInspectWorkers(this._initializeCapability.bind(this, WebInspector.Target.Capabilities.CanInspectWorkers, this._loadedWithCapabilities.bind(this, callback))); 327242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci if (Runtime.experiments.isEnabled("timelineOnTraceEvents")) 33e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) this.consoleAgent().setTracingBasedTimeline(true); 34d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 35d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 36197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch/** 37197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @enum {string} 38197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch */ 39197021e6b966cfb06891637935ef33fff06433d1Ben MurdochWebInspector.Target.Capabilities = { 40c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) CanScreencast: "CanScreencast", 41c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) HasTouchInputs: "HasTouchInputs", 42c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) CanProfilePower: "CanProfilePower", 437242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci CanInspectWorkers: "CanInspectWorkers", 447242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci CanEmulate: "CanEmulate" 45197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch} 46197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 47d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)WebInspector.Target._nextId = 1; 48d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 49d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)WebInspector.Target.prototype = { 50d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 51d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) /** 52d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) * @return {number} 53d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) */ 54d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) id: function() 55d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) { 56d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) return this._id; 57d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) }, 58d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 5910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch /** 6076c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) * 6176c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) * @return {string} 6276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) */ 6376c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) name: function() 6476c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) { 6576c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) return this._name; 6676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) }, 6776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) 6876c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) /** 6910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch * @param {string} name 7010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch * @param {function()|null} callback 71f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) * @param {?Protocol.Error} error 72197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {boolean} result 7310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch */ 74d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) _initializeCapability: function(name, callback, error, result) 75d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 76197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this._capabilities[name] = result; 77d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (callback) 78d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) callback(); 79d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }, 80d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 81d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 82197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {string} capability 83197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @return {boolean} 84197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch */ 85197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch hasCapability: function(capability) 86197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch { 87197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return !!this._capabilities[capability]; 88197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch }, 89197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 90197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch /** 919e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) * @param {function(?WebInspector.Target)=} callback 92d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 93d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) _loadedWithCapabilities: function(callback) 94d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 959e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) if (this._connection.isClosed()) { 969e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) callback(null); 979e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) return; 989e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) } 999e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) 10010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch /** @type {!WebInspector.ConsoleModel} */ 101d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this.consoleModel = new WebInspector.ConsoleModel(this); 10207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 10310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch /** @type {!WebInspector.NetworkManager} */ 104d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this.networkManager = new WebInspector.NetworkManager(this); 10507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 10610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch /** @type {!WebInspector.ResourceTreeModel} */ 107d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this.resourceTreeModel = new WebInspector.ResourceTreeModel(this); 10807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if (!WebInspector.resourceTreeModel) 10907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch WebInspector.resourceTreeModel = this.resourceTreeModel; 11007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 11110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch /** @type {!WebInspector.NetworkLog} */ 112a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch this.networkLog = new WebInspector.NetworkLog(this); 113a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch if (!WebInspector.networkLog) 114a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch WebInspector.networkLog = this.networkLog; 115a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch 11610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch /** @type {!WebInspector.DebuggerModel} */ 117d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this.debuggerModel = new WebInspector.DebuggerModel(this); 11807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if (!WebInspector.debuggerModel) 11907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch WebInspector.debuggerModel = this.debuggerModel; 12007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 12110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch /** @type {!WebInspector.RuntimeModel} */ 122d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this.runtimeModel = new WebInspector.RuntimeModel(this); 12307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if (!WebInspector.runtimeModel) 12407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch WebInspector.runtimeModel = this.runtimeModel; 12507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 12610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch /** @type {!WebInspector.DOMModel} */ 127aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this.domModel = new WebInspector.DOMModel(this); 128d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 12910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch /** @type {!WebInspector.CSSStyleModel} */ 130aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this.cssModel = new WebInspector.CSSStyleModel(this); 131aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (!WebInspector.cssModel) 132aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch WebInspector.cssModel = this.cssModel; 133aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 13410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch /** @type {!WebInspector.WorkerManager} */ 135c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this.workerManager = new WebInspector.WorkerManager(this, this.hasCapability(WebInspector.Target.Capabilities.CanInspectWorkers)); 13607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if (!WebInspector.workerManager) 13707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch WebInspector.workerManager = this.workerManager; 13807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 139c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) if (this.hasCapability(WebInspector.Target.Capabilities.CanProfilePower)) 1407242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci WebInspector.powerProfiler = new WebInspector.PowerProfiler(this); 141d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 14210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch /** @type {!WebInspector.TimelineManager} */ 143a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch this.timelineManager = new WebInspector.TimelineManager(this); 144a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch 14510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch /** @type {!WebInspector.DatabaseModel} */ 146a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch this.databaseModel = new WebInspector.DatabaseModel(this); 147a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch if (!WebInspector.databaseModel) 148a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch WebInspector.databaseModel = this.databaseModel; 149a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch 15010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch /** @type {!WebInspector.DOMStorageModel} */ 151a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch this.domStorageModel = new WebInspector.DOMStorageModel(this); 152a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch if (!WebInspector.domStorageModel) 153a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch WebInspector.domStorageModel = this.domStorageModel; 154a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch 15510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch /** @type {!WebInspector.CPUProfilerModel} */ 156a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch this.cpuProfilerModel = new WebInspector.CPUProfilerModel(this); 157a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch if (!WebInspector.cpuProfilerModel) 158a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch WebInspector.cpuProfilerModel = this.cpuProfilerModel; 159a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch 160197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch /** @type {!WebInspector.HeapProfilerModel} */ 161197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this.heapProfilerModel = new WebInspector.HeapProfilerModel(this); 162d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 1637242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci /** @type {!WebInspector.IndexedDBModel} */ 1647242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci this.indexedDBModel = new WebInspector.IndexedDBModel(this); 1657242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 1667242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci /** @type {!WebInspector.LayerTreeModel} */ 1677242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci this.layerTreeModel = new WebInspector.LayerTreeModel(this); 1687242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 169d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (callback) 170d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) callback(this); 171d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }, 172d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 173d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 174d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @override 175d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {string} domain 176d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {!Object} dispatcher 177d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 178d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) registerDispatcher: function(domain, dispatcher) 179d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 180d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._connection.registerDispatcher(domain, dispatcher); 181d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }, 182d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 183d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 184d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @return {boolean} 185d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 186d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) isWorkerTarget: function() 187d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 188c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return !this.hasCapability(WebInspector.Target.Capabilities.CanInspectWorkers); 189d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }, 190d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 191f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu /** 192f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu * @return {boolean} 193f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu */ 1947242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci canEmulate: function() 195f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu { 1967242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return this.hasCapability(WebInspector.Target.Capabilities.CanEmulate); 197f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu }, 198f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 199197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch _onDisconnect: function() 200197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch { 201197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WebInspector.targetManager.removeTarget(this); 202197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this._dispose(); 203197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch }, 204aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 205197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch _dispose: function() 206aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch { 207197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this.debuggerModel.dispose(); 208197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this.networkManager.dispose(); 209197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this.cpuProfilerModel.dispose(); 210197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch }, 211197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 212c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 213c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @return {boolean} 214c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 215c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) isDetached: function() 216c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 217c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return this._connection.isClosed(); 218c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 219c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 220197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch __proto__: Protocol.Agents.prototype 221aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch} 222aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 223aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch/** 224aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @constructor 22507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @extends {WebInspector.Object} 226aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.Target} target 227d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 228197021e6b966cfb06891637935ef33fff06433d1Ben MurdochWebInspector.SDKObject = function(target) 229d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 23007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch WebInspector.Object.call(this); 231aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._target = target; 232aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch} 233aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 234197021e6b966cfb06891637935ef33fff06433d1Ben MurdochWebInspector.SDKObject.prototype = { 235aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch /** 236aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @return {!WebInspector.Target} 237aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch */ 238aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch target: function() 239aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch { 240aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return this._target; 241aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch }, 242aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 243aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch __proto__: WebInspector.Object.prototype 244aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch} 245aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 246aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch/** 247aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @constructor 248c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @extends {WebInspector.SDKObject} 249c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!Function} modelClass 250c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.Target} target 251c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 252c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)WebInspector.SDKModel = function(modelClass, target) 253c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles){ 254c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) WebInspector.SDKObject.call(this, target); 2559e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) target._modelByConstructor.set(modelClass, this); 256c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} 257c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 258c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)WebInspector.SDKModel.prototype = { 259c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) __proto__: WebInspector.SDKObject.prototype 260c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} 261c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 262c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)/** 263c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @constructor 2649e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) * @extends {WebInspector.Object} 265aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch */ 266aafa69cb17c9d6606c07663ade5f81388a2c5986Ben MurdochWebInspector.TargetManager = function() 267aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch{ 2689e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) WebInspector.Object.call(this); 269d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** @type {!Array.<!WebInspector.Target>} */ 270d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._targets = []; 27110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch /** @type {!Array.<!WebInspector.TargetManager.Observer>} */ 272aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._observers = []; 273c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** @type {!Object.<string, !Array.<{modelClass: !Function, thisObject: (!Object|undefined), listener: function(!WebInspector.Event)}>>} */ 2749e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) this._modelListeners = {}; 2759e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)} 2769e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) 2779e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)WebInspector.TargetManager.Events = { 2789e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) InspectedURLChanged: "InspectedURLChanged", 2799e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) MainFrameNavigated: "MainFrameNavigated", 2809e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) Load: "Load", 2819e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) WillReloadPage: "WillReloadPage" 282d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 283d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 284d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)WebInspector.TargetManager.prototype = { 285c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 2869e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) * @return {string} 2879e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) */ 2889e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) inspectedPageURL: function() 2899e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) { 2909e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) if (!this._targets.length) 2919e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) return ""; 2929e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) 2939e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) return this._targets[0].resourceTreeModel.inspectedPageURL(); 2949e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) }, 2959e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) 2969e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) /** 2979e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) * @return {string} 2989e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) */ 2999e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) inspectedPageDomain: function() 3009e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) { 3019e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) if (!this._targets.length) 3029e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) return ""; 3039e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) 3049e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) return this._targets[0].resourceTreeModel.inspectedPageDomain(); 3059e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) }, 3069e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) 3079e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) /** 3089e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) * @param {!WebInspector.Event} event 3099e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) */ 3109e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) _redispatchEvent: function(event) 3119e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) { 3129e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) this.dispatchEventToListeners(event.type, event.data); 3139e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) }, 3149e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) 3159e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) /** 3169e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) * @param {boolean=} ignoreCache 3179e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) */ 3189e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) reloadPage: function(ignoreCache) 3199e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) { 3209e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) if (this._targets.length) 3219e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) this._targets[0].resourceTreeModel.reloadPage(ignoreCache); 3229e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) }, 3239e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) 3249e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) /** 325c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!Function} modelClass 326c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {string} eventType 327c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {function(!WebInspector.Event)} listener 328c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!Object=} thisObject 329c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 330c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) addModelListener: function(modelClass, eventType, listener, thisObject) 331c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 332c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) for (var i = 0; i < this._targets.length; ++i) { 333c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var model = this._targets[i]._modelByConstructor.get(modelClass); 334c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) model.addEventListener(eventType, listener, thisObject); 335c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) } 3369e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) if (!this._modelListeners[eventType]) 3379e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) this._modelListeners[eventType] = []; 3389e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) this._modelListeners[eventType].push({ modelClass: modelClass, thisObject: thisObject, listener: listener }); 339c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 340c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 341c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 342c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!Function} modelClass 343c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {string} eventType 344c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {function(!WebInspector.Event)} listener 345c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!Object=} thisObject 346c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 347c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) removeModelListener: function(modelClass, eventType, listener, thisObject) 348c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 3499e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) if (!this._modelListeners[eventType]) 350c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return; 351c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 352c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) for (var i = 0; i < this._targets.length; ++i) { 353c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var model = this._targets[i]._modelByConstructor.get(modelClass); 354c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) model.removeEventListener(eventType, listener, thisObject); 355c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) } 356c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 3579e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) var listeners = this._modelListeners[eventType]; 358c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) for (var i = 0; i < listeners.length; ++i) { 359c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) if (listeners[i].modelClass === modelClass && listeners[i].listener === listener && listeners[i].thisObject === thisObject) 360c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) listeners.splice(i--, 1); 361c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) } 362c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) if (!listeners.length) 3639e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) delete this._modelListeners[eventType]; 364c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 365d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 366d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 367aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.TargetManager.Observer} targetObserver 368aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch */ 369aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch observeTargets: function(targetObserver) 370aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch { 371f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) this.targets().forEach(targetObserver.targetAdded.bind(targetObserver)); 372aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._observers.push(targetObserver); 373aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch }, 374aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 375aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch /** 376f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) * @param {!WebInspector.TargetManager.Observer} targetObserver 377f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) */ 378f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) unobserveTargets: function(targetObserver) 379f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) { 380f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) this._observers.remove(targetObserver); 381f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) }, 382f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 383f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) /** 38476c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) * @param {string} name 385d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {!InspectorBackendClass.Connection} connection 3869e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) * @param {function(?WebInspector.Target)=} callback 387d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 38876c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) createTarget: function(name, connection, callback) 389d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 39076c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) var target = new WebInspector.Target(name, connection, callbackWrapper.bind(this)); 39107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 39207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch /** 39307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @this {WebInspector.TargetManager} 3949e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) * @param {?WebInspector.Target} newTarget 39507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch */ 39607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch function callbackWrapper(newTarget) 39707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch { 3989e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) if (newTarget) 3999e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) this.addTarget(newTarget); 400a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch if (callback) 401a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch callback(newTarget); 40207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch } 40307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch }, 404d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 40507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch /** 406c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.Target} target 4075d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) */ 408c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) addTarget: function(target) 4095d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) { 410c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._targets.push(target); 4119e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) if (this._targets.length === 1) { 4129e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) target.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.InspectedURLChanged, this._redispatchEvent, this); 4139e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) target.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.MainFrameNavigated, this._redispatchEvent, this); 4149e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) target.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.Load, this._redispatchEvent, this); 4159e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) target.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.WillReloadPage, this._redispatchEvent, this); 4169e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) } 417c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var copy = this._observers.slice(); 4185d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) for (var i = 0; i < copy.length; ++i) 419c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) copy[i].targetAdded(target); 420c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 4219e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) for (var eventType in this._modelListeners) { 4229e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) var listeners = this._modelListeners[eventType]; 423c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) for (var i = 0; i < listeners.length; ++i) { 424c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var model = target._modelByConstructor.get(listeners[i].modelClass); 425c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) model.addEventListener(eventType, listeners[i].listener, listeners[i].thisObject); 426c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) } 427c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) } 4285d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) }, 4295d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) 4305d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) /** 4315d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) * @param {!WebInspector.Target} target 4325d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) */ 4335d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) removeTarget: function(target) 4345d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) { 4355d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) this._targets.remove(target); 4369e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) if (this._targets.length === 0) { 4379e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) target.resourceTreeModel.removeEventListener(WebInspector.ResourceTreeModel.EventTypes.InspectedURLChanged, this._redispatchEvent, this); 4389e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) target.resourceTreeModel.removeEventListener(WebInspector.ResourceTreeModel.EventTypes.MainFrameNavigated, this._redispatchEvent, this); 4399e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) target.resourceTreeModel.removeEventListener(WebInspector.ResourceTreeModel.EventTypes.Load, this._redispatchEvent, this); 4409e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) target.resourceTreeModel.removeEventListener(WebInspector.ResourceTreeModel.EventTypes.WillReloadPage, this._redispatchEvent, this); 4419e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) } 442197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch var copy = this._observers.slice(); 4435d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) for (var i = 0; i < copy.length; ++i) 4445d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) copy[i].targetRemoved(target); 445c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 4469e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) for (var eventType in this._modelListeners) { 4479e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) var listeners = this._modelListeners[eventType]; 448c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) for (var i = 0; i < listeners.length; ++i) { 449c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var model = target._modelByConstructor.get(listeners[i].modelClass); 450c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) model.removeEventListener(eventType, listeners[i].listener, listeners[i].thisObject); 451c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) } 452c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) } 4535d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) }, 4545d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) 4555d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) /** 4569e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) * @return {boolean} 4579e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) */ 4589e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) hasTargets: function() 4599e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) { 4609e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) return !!this._targets.length; 4619e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) }, 4629e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) 4639e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) /** 46407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @return {!Array.<!WebInspector.Target>} 46507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch */ 46607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch targets: function() 46707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch { 468197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return this._targets.slice(); 46907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch }, 47007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 47107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch /** 472aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @return {?WebInspector.Target} 47307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch */ 474197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch mainTarget: function() 47507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch { 47607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch return this._targets[0]; 4779e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) }, 4789e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) 4799e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) __proto__: WebInspector.Object.prototype 480aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch} 48107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 482aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch/** 483aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @interface 484aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch */ 485aafa69cb17c9d6606c07663ade5f81388a2c5986Ben MurdochWebInspector.TargetManager.Observer = function() 486aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch{ 487aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch} 488aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 489aafa69cb17c9d6606c07663ade5f81388a2c5986Ben MurdochWebInspector.TargetManager.Observer.prototype = { 490aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch /** 491aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.Target} target 492aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch */ 493aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch targetAdded: function(target) { }, 494aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 495aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch /** 496aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.Target} target 497aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch */ 498aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch targetRemoved: function(target) { }, 499d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 50007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 50107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch/** 50207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @type {!WebInspector.TargetManager} 50307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch */ 504197021e6b966cfb06891637935ef33fff06433d1Ben MurdochWebInspector.targetManager = new WebInspector.TargetManager(); 505