Index: third_party/WebKit/Source/devtools/front_end/sdk/CPUProfilerModel.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/CPUProfilerModel.js b/third_party/WebKit/Source/devtools/front_end/sdk/CPUProfilerModel.js |
index 500369d22a8a9a6d40268e8200d6a6901525c188..5f7554f37b4da3763384ba454fab007295433dfa 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/sdk/CPUProfilerModel.js |
+++ b/third_party/WebKit/Source/devtools/front_end/sdk/CPUProfilerModel.js |
@@ -25,9 +25,9 @@ |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
+ |
/** |
* @implements {Protocol.ProfilerDispatcher} |
- * @unrestricted |
*/ |
SDK.CPUProfilerModel = class extends SDK.SDKModel { |
/** |
@@ -36,17 +36,10 @@ SDK.CPUProfilerModel = class extends SDK.SDKModel { |
constructor(target) { |
super(target); |
this._isRecording = false; |
+ this._profilerAgent = target.profilerAgent(); |
target.registerProfilerDispatcher(this); |
- target.profilerAgent().enable(); |
- |
- this._configureCpuProfilerSamplingInterval(); |
- Common.moduleSetting('highResolutionCpuProfiling') |
- .addChangeListener(this._configureCpuProfilerSamplingInterval, this); |
- } |
- |
- _configureCpuProfilerSamplingInterval() { |
- var intervalUs = Common.moduleSetting('highResolutionCpuProfiling').get() ? 100 : 1000; |
- this.target().profilerAgent().setSamplingInterval(intervalUs); |
+ this._profilerAgent.enable(); |
+ this._debuggerModel = /** @type {!SDK.DebuggerModel} */ (target.model(SDK.DebuggerModel)); |
} |
/** |
@@ -80,10 +73,8 @@ SDK.CPUProfilerModel = class extends SDK.SDKModel { |
*/ |
_dispatchProfileEvent(eventName, id, scriptLocation, title, cpuProfile) { |
// Make sure ProfilesPanel is initialized and CPUProfileType is created. |
- self.runtime.loadModulePromise('profiler').then(_ => { |
- var debuggerModel = |
- /** @type {!SDK.DebuggerModel} */ (SDK.DebuggerModel.fromTarget(this.target())); |
- var debuggerLocation = SDK.DebuggerModel.Location.fromPayload(debuggerModel, scriptLocation); |
+ self.runtime.loadModulePromise('profiler').then(() => { |
+ var debuggerLocation = SDK.DebuggerModel.Location.fromPayload(this._debuggerModel, scriptLocation); |
var globalId = this.target().id() + '.' + id; |
var data = /** @type {!SDK.CPUProfilerModel.EventData} */ ( |
{id: globalId, scriptLocation: debuggerLocation, cpuProfile: cpuProfile, title: title}); |
@@ -100,8 +91,10 @@ SDK.CPUProfilerModel = class extends SDK.SDKModel { |
startRecording() { |
this._isRecording = true; |
- this.target().profilerAgent().start(); |
Host.userMetrics.actionTaken(Host.UserMetrics.Action.ProfilesCPUProfileTaken); |
+ var intervalUs = Common.moduleSetting('highResolutionCpuProfiling').get() ? 100 : 1000; |
+ this._profilerAgent.setSamplingInterval(intervalUs); |
+ this._profilerAgent.start(); |
} |
/** |
@@ -117,20 +110,32 @@ SDK.CPUProfilerModel = class extends SDK.SDKModel { |
return !error && profile ? profile : null; |
} |
this._isRecording = false; |
- return this.target().profilerAgent().stop(extractProfile); |
+ return this._profilerAgent.stop(extractProfile); |
} |
/** |
- * @override |
+ * @return {!Promise} |
+ */ |
+ startPreciseCoverage() { |
+ return this._profilerAgent.startPreciseCoverage(); |
+ } |
+ |
+ /** |
+ * @return {!Promise<!Array<!Protocol.Profiler.ScriptCoverage>>} |
+ */ |
+ takePreciseCoverage() { |
+ return this._profilerAgent.takePreciseCoverage((error, coverage) => error ? [] : coverage); |
+ } |
+ |
+ /** |
+ * @return {!Promise} |
*/ |
- dispose() { |
- Common.moduleSetting('highResolutionCpuProfiling') |
- .removeChangeListener(this._configureCpuProfilerSamplingInterval, this); |
+ stopPreciseCoverage() { |
+ return this._profilerAgent.stopPreciseCoverage(); |
} |
}; |
-// TODO(dgozman): should be JS. |
-SDK.SDKModel.register(SDK.CPUProfilerModel, SDK.Target.Capability.None); |
+SDK.SDKModel.register(SDK.CPUProfilerModel, SDK.Target.Capability.JS); |
/** @enum {symbol} */ |
SDK.CPUProfilerModel.Events = { |