Chromium Code Reviews| Index: third_party/WebKit/Source/devtools/front_end/coverage/CoverageView.js |
| diff --git a/third_party/WebKit/Source/devtools/front_end/coverage/CoverageView.js b/third_party/WebKit/Source/devtools/front_end/coverage/CoverageView.js |
| index 27fba039c99e2173483ca04bdb9b00b125f71ccb..ff872cfb53817f7fa713a43f12f1ea959c181545 100644 |
| --- a/third_party/WebKit/Source/devtools/front_end/coverage/CoverageView.js |
| +++ b/third_party/WebKit/Source/devtools/front_end/coverage/CoverageView.js |
| @@ -39,6 +39,7 @@ Coverage.CoverageView = class extends UI.VBox { |
| this._toggleRecordAction = |
| /** @type {!UI.Action }*/ (UI.actionRegistry.action('coverage.toggle-recording')); |
| topToolbar.appendToolbarItem(UI.Toolbar.createActionButton(this._toggleRecordAction)); |
| + topToolbar.appendToolbarItem(UI.Toolbar.createActionButtonForId('coverage.take-snapshot')); |
| var clearButton = new UI.ToolbarButton(Common.UIString('Clear all'), 'largeicon-clear'); |
| clearButton.addEventListener(UI.ToolbarButton.Events.Click, this._reset.bind(this)); |
| @@ -88,6 +89,27 @@ Coverage.CoverageView = class extends UI.VBox { |
| this._progressElement.textContent = Common.UIString('Recording...'); |
| } |
| + async _takeSnapshot() { |
| + this._reset(); |
| + var mainTarget = SDK.targetManager.mainTarget(); |
| + var profilerAgent = mainTarget && mainTarget.profilerAgent(); |
| + if (!profilerAgent) |
| + return []; |
| + var debuggerModel = /** @type !SDK.DebuggerModel */ (SDK.DebuggerModel.fromTarget(mainTarget)); |
| + var cssModel = mainTarget.model(SDK.CSSModel); |
| + if (!cssModel) |
| + return; |
| + |
| + cssModel.startRuleUsageTracking(); |
| + this._progressElement.textContent = Common.UIString('Taking a snapshot...'); |
| + var cssCoverageInfoPromise = this._stopCSSCoverage(); |
| + var jsCoverageInfoPromise = profilerAgent.getBestEffortCoverage((error, result) => error ? [] : result) |
|
alph
2017/02/28 22:01:31
await
|
| + .then(Coverage.CoverageView._processJSCoverage.bind(null, debuggerModel)); |
| + var cssCoverageInfo = await cssCoverageInfoPromise; |
| + var jsCoverageInfo = await jsCoverageInfoPromise; |
| + this._updateViews(cssCoverageInfo.concat(jsCoverageInfo)); |
| + } |
| + |
| async _stopRecording() { |
| this._toggleRecordAction.setToggled(false); |
| this._progressElement.textContent = Common.UIString('Fetching results...'); |
| @@ -349,7 +371,7 @@ Coverage.CoverageView.LineDecorator.type = 'coverage'; |
| /** |
| * @implements {UI.ActionDelegate} |
| */ |
| -Coverage.CoverageView.RecordActionDelegate = class { |
| +Coverage.CoverageView.ActionDelegate = class { |
| /** |
| * @override |
| * @param {!UI.Context} context |
| @@ -358,10 +380,22 @@ Coverage.CoverageView.RecordActionDelegate = class { |
| */ |
| handleAction(context, actionId) { |
| var coverageViewId = 'coverage'; |
| + |
| UI.viewManager.showView(coverageViewId) |
| .then(() => UI.viewManager.view(coverageViewId).widget()) |
| - .then(widget => /** @type !Coverage.CoverageView} */ (widget)._toggleRecording()); |
| + .then(widget => this._handleActionOnWidget(/** @type !Coverage.CoverageView} */ (widget), actionId)); |
| return true; |
| } |
| + |
| + /** |
| + * @param {!Coverage.CoverageView} widget |
| + * @param {string} actionId |
| + */ |
| + _handleActionOnWidget(widget, actionId) { |
| + if (actionId === 'coverage.toggle-recording') |
| + widget._toggleRecording(); |
| + else if (actionId === 'coverage.take-snapshot') |
| + widget._takeSnapshot(); |
| + } |
| }; |