OLD | NEW |
1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 /** @typedef {{range: !Common.TextRange, wasUsed: boolean}} */ | 5 /** @typedef {{range: !Common.TextRange, wasUsed: boolean}} */ |
6 Coverage.RangeUsage; | 6 Coverage.RangeUsage; |
7 | 7 |
8 /** @typedef {{styleSheetHeader: !SDK.CSSStyleSheetHeader, ranges: !Array<!Cover
age.RangeUsage>}} */ | 8 /** @typedef {{styleSheetHeader: !SDK.CSSStyleSheetHeader, ranges: !Array<!Cover
age.RangeUsage>}} */ |
9 Coverage.StyleSheetUsage; | 9 Coverage.StyleSheetUsage; |
10 | 10 |
(...skipping 21 matching lines...) Expand all Loading... |
32 super(true); | 32 super(true); |
33 | 33 |
34 this.registerRequiredCSS('coverage/coverageView.css'); | 34 this.registerRequiredCSS('coverage/coverageView.css'); |
35 | 35 |
36 var toolbarContainer = this.contentElement.createChild('div', 'coverage-tool
bar-container'); | 36 var toolbarContainer = this.contentElement.createChild('div', 'coverage-tool
bar-container'); |
37 var topToolbar = new UI.Toolbar('coverage-toolbar', toolbarContainer); | 37 var topToolbar = new UI.Toolbar('coverage-toolbar', toolbarContainer); |
38 | 38 |
39 this._toggleRecordAction = | 39 this._toggleRecordAction = |
40 /** @type {!UI.Action }*/ (UI.actionRegistry.action('coverage.toggle-rec
ording')); | 40 /** @type {!UI.Action }*/ (UI.actionRegistry.action('coverage.toggle-rec
ording')); |
41 topToolbar.appendToolbarItem(UI.Toolbar.createActionButton(this._toggleRecor
dAction)); | 41 topToolbar.appendToolbarItem(UI.Toolbar.createActionButton(this._toggleRecor
dAction)); |
| 42 topToolbar.appendToolbarItem(UI.Toolbar.createActionButtonForId('coverage.ta
ke-snapshot')); |
42 | 43 |
43 var clearButton = new UI.ToolbarButton(Common.UIString('Clear all'), 'largei
con-clear'); | 44 var clearButton = new UI.ToolbarButton(Common.UIString('Clear all'), 'largei
con-clear'); |
44 clearButton.addEventListener(UI.ToolbarButton.Events.Click, this._reset.bind
(this)); | 45 clearButton.addEventListener(UI.ToolbarButton.Events.Click, this._reset.bind
(this)); |
45 topToolbar.appendToolbarItem(clearButton); | 46 topToolbar.appendToolbarItem(clearButton); |
46 | 47 |
47 this._coverageResultsElement = this.contentElement.createChild('div', 'cover
age-results'); | 48 this._coverageResultsElement = this.contentElement.createChild('div', 'cover
age-results'); |
48 this._progressElement = this._coverageResultsElement.createChild('div', 'pro
gress-view'); | 49 this._progressElement = this._coverageResultsElement.createChild('div', 'pro
gress-view'); |
49 this._listView = new Coverage.CoverageListView(); | 50 this._listView = new Coverage.CoverageListView(); |
50 | 51 |
51 this._statusToolbarElement = this.contentElement.createChild('div', 'coverag
e-toolbar-summary'); | 52 this._statusToolbarElement = this.contentElement.createChild('div', 'coverag
e-toolbar-summary'); |
(...skipping 29 matching lines...) Expand all Loading... |
81 var cssModel = mainTarget.model(SDK.CSSModel); | 82 var cssModel = mainTarget.model(SDK.CSSModel); |
82 if (!cssModel) | 83 if (!cssModel) |
83 return; | 84 return; |
84 this._toggleRecordAction.setToggled(true); | 85 this._toggleRecordAction.setToggled(true); |
85 cssModel.startRuleUsageTracking(); | 86 cssModel.startRuleUsageTracking(); |
86 mainTarget.profilerAgent().startPreciseCoverage(); | 87 mainTarget.profilerAgent().startPreciseCoverage(); |
87 | 88 |
88 this._progressElement.textContent = Common.UIString('Recording...'); | 89 this._progressElement.textContent = Common.UIString('Recording...'); |
89 } | 90 } |
90 | 91 |
| 92 async _takeSnapshot() { |
| 93 this._reset(); |
| 94 var mainTarget = SDK.targetManager.mainTarget(); |
| 95 var profilerAgent = mainTarget && mainTarget.profilerAgent(); |
| 96 if (!profilerAgent) |
| 97 return []; |
| 98 var debuggerModel = /** @type !SDK.DebuggerModel */ (SDK.DebuggerModel.fromT
arget(mainTarget)); |
| 99 var cssModel = mainTarget.model(SDK.CSSModel); |
| 100 if (!cssModel) |
| 101 return; |
| 102 |
| 103 cssModel.startRuleUsageTracking(); |
| 104 this._progressElement.textContent = Common.UIString('Taking a snapshot...'); |
| 105 var cssCoverageInfoPromise = this._stopCSSCoverage(); |
| 106 var jsCoverageRawData = await profilerAgent.getBestEffortCoverage((error, re
sult) => error ? [] : result); |
| 107 var jsCoverageInfo = await Coverage.CoverageView._processJSCoverage(debugger
Model, jsCoverageRawData); |
| 108 var cssCoverageInfo = await cssCoverageInfoPromise; |
| 109 this._updateViews(cssCoverageInfo.concat(jsCoverageInfo)); |
| 110 } |
| 111 |
91 async _stopRecording() { | 112 async _stopRecording() { |
92 this._toggleRecordAction.setToggled(false); | 113 this._toggleRecordAction.setToggled(false); |
93 this._progressElement.textContent = Common.UIString('Fetching results...'); | 114 this._progressElement.textContent = Common.UIString('Fetching results...'); |
94 | 115 |
95 var cssCoverageInfoPromise = this._stopCSSCoverage(); | 116 var cssCoverageInfoPromise = this._stopCSSCoverage(); |
96 var jsCoverageInfoPromise = this._stopJSCoverage(); | 117 var jsCoverageInfoPromise = this._stopJSCoverage(); |
97 var cssCoverageInfo = await cssCoverageInfoPromise; | 118 var cssCoverageInfo = await cssCoverageInfoPromise; |
98 var jsCoverageInfo = await jsCoverageInfoPromise; | 119 var jsCoverageInfo = await jsCoverageInfoPromise; |
99 this._updateViews(cssCoverageInfo.concat(jsCoverageInfo)); | 120 this._updateViews(cssCoverageInfo.concat(jsCoverageInfo)); |
100 } | 121 } |
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
342 } | 363 } |
343 } | 364 } |
344 } | 365 } |
345 }; | 366 }; |
346 | 367 |
347 Coverage.CoverageView.LineDecorator.type = 'coverage'; | 368 Coverage.CoverageView.LineDecorator.type = 'coverage'; |
348 | 369 |
349 /** | 370 /** |
350 * @implements {UI.ActionDelegate} | 371 * @implements {UI.ActionDelegate} |
351 */ | 372 */ |
352 Coverage.CoverageView.RecordActionDelegate = class { | 373 Coverage.CoverageView.ActionDelegate = class { |
353 /** | 374 /** |
354 * @override | 375 * @override |
355 * @param {!UI.Context} context | 376 * @param {!UI.Context} context |
356 * @param {string} actionId | 377 * @param {string} actionId |
357 * @return {boolean} | 378 * @return {boolean} |
358 */ | 379 */ |
359 handleAction(context, actionId) { | 380 handleAction(context, actionId) { |
360 var coverageViewId = 'coverage'; | 381 var coverageViewId = 'coverage'; |
| 382 |
361 UI.viewManager.showView(coverageViewId) | 383 UI.viewManager.showView(coverageViewId) |
362 .then(() => UI.viewManager.view(coverageViewId).widget()) | 384 .then(() => UI.viewManager.view(coverageViewId).widget()) |
363 .then(widget => /** @type !Coverage.CoverageView} */ (widget)._toggleRec
ording()); | 385 .then(widget => this._handleActionOnWidget(/** @type !Coverage.CoverageV
iew} */ (widget), actionId)); |
364 | 386 |
365 return true; | 387 return true; |
366 } | 388 } |
| 389 |
| 390 /** |
| 391 * @param {!Coverage.CoverageView} widget |
| 392 * @param {string} actionId |
| 393 */ |
| 394 _handleActionOnWidget(widget, actionId) { |
| 395 if (actionId === 'coverage.toggle-recording') |
| 396 widget._toggleRecording(); |
| 397 else if (actionId === 'coverage.take-snapshot') |
| 398 widget._takeSnapshot(); |
| 399 } |
367 }; | 400 }; |
OLD | NEW |