| 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..1e0cf10ec8589c2e39f414bf55150598636bb4a6 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,26 @@ 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 jsCoverageRawData = await profilerAgent.getBestEffortCoverage((error, result) => error ? [] : result);
|
| + var jsCoverageInfo = await Coverage.CoverageView._processJSCoverage(debuggerModel, jsCoverageRawData);
|
| + var cssCoverageInfo = await cssCoverageInfoPromise;
|
| + this._updateViews(cssCoverageInfo.concat(jsCoverageInfo));
|
| + }
|
| +
|
| async _stopRecording() {
|
| this._toggleRecordAction.setToggled(false);
|
| this._progressElement.textContent = Common.UIString('Fetching results...');
|
| @@ -349,7 +370,7 @@ Coverage.CoverageView.LineDecorator.type = 'coverage';
|
| /**
|
| * @implements {UI.ActionDelegate}
|
| */
|
| -Coverage.CoverageView.RecordActionDelegate = class {
|
| +Coverage.CoverageView.ActionDelegate = class {
|
| /**
|
| * @override
|
| * @param {!UI.Context} context
|
| @@ -358,10 +379,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();
|
| + }
|
| };
|
|
|