Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1035)

Unified Diff: third_party/WebKit/Source/devtools/front_end/coverage/CoverageView.js

Issue 2715423004: DevTools: add coverage snapshots
Patch Set: review comments addressed Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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();
+ }
};

Powered by Google App Engine
This is Rietveld 408576698