Bug 1542312 - Add telemetry to track persist option usage in the Netmonitor panel. r=Honza

Differential Revision: https://phabricator.services.mozilla.com/D27999

--HG--
extra : moz-landing-system : lando
This commit is contained in:
lloan 2019-04-25 07:56:06 +00:00
parent 555af1c529
commit 792e738fc6
6 changed files with 107 additions and 8 deletions

View File

@ -61,10 +61,11 @@ function resizeNetworkDetails(width, height) {
*
* @param {boolean} enabled - expected persistent logs enabled state
*/
function enablePersistentLogs(enabled) {
function enablePersistentLogs(enabled, skipTelemetry = false) {
return {
type: ENABLE_PERSISTENT_LOGS,
enabled,
skipTelemetry,
};
}

View File

@ -109,9 +109,9 @@ class Toolbar extends Component {
componentDidMount() {
Services.prefs.addObserver(DEVTOOLS_ENABLE_PERSISTENT_LOG_PREF,
this.updatePersistentLogsEnabled);
this.updatePersistentLogsEnabled);
Services.prefs.addObserver(DEVTOOLS_DISABLE_CACHE_PREF,
this.updateBrowserCacheDisabled);
this.updateBrowserCacheDisabled);
}
shouldComponentUpdate(nextProps) {
@ -128,9 +128,9 @@ class Toolbar extends Component {
componentWillUnmount() {
Services.prefs.removeObserver(DEVTOOLS_ENABLE_PERSISTENT_LOG_PREF,
this.updatePersistentLogsEnabled);
this.updatePersistentLogsEnabled);
Services.prefs.removeObserver(DEVTOOLS_DISABLE_CACHE_PREF,
this.updateBrowserCacheDisabled);
this.updateBrowserCacheDisabled);
}
toggleRequestFilterType(evt) {
@ -141,8 +141,13 @@ class Toolbar extends Component {
}
updatePersistentLogsEnabled() {
// Make sure the UI is updated when the pref changes.
// It might happen when the user changed it through about:config or
// through another Toolbox instance (opened in another browser tab).
// In such case, skip telemetry recordings.
this.props.enablePersistentLogs(
Services.prefs.getBoolPref(DEVTOOLS_ENABLE_PERSISTENT_LOG_PREF));
Services.prefs.getBoolPref(DEVTOOLS_ENABLE_PERSISTENT_LOG_PREF),
true);
}
updateBrowserCacheDisabled() {
@ -438,7 +443,8 @@ module.exports = connect(
(dispatch) => ({
clearRequests: () => dispatch(Actions.clearRequests()),
disableBrowserCache: (disabled) => dispatch(Actions.disableBrowserCache(disabled)),
enablePersistentLogs: (enabled) => dispatch(Actions.enablePersistentLogs(enabled)),
enablePersistentLogs: (enabled, skipTelemetry) =>
dispatch(Actions.enablePersistentLogs(enabled, skipTelemetry)),
setRequestFilterText: (text) => dispatch(Actions.setRequestFilterText(text)),
toggleBrowserCache: () => dispatch(Actions.toggleBrowserCache()),
toggleRecording: () => dispatch(Actions.toggleRecording()),

View File

@ -12,6 +12,7 @@ const {
SET_REQUEST_FILTER_TEXT,
SELECT_DETAILS_PANEL_TAB,
SEND_CUSTOM_REQUEST,
ENABLE_PERSISTENT_LOGS,
} = require("../constants");
const {
@ -32,6 +33,10 @@ function eventTelemetryMiddleware(connector, telemetry) {
return res;
}
if (action.skipTelemetry) {
return res;
}
const state = store.getState();
const sessionId = toolbox.sessionId;
@ -79,6 +84,15 @@ function eventTelemetryMiddleware(connector, telemetry) {
});
}
// Record telemetry event when log persistence changes
if (action.type == ENABLE_PERSISTENT_LOGS) {
persistenceChange({
telemetry,
state,
sessionId,
});
}
return res;
};
}
@ -156,4 +170,16 @@ function throttlingChange({action, telemetry, sessionId}) {
});
}
/**
* This helper function is executed when log persistence is changed.
* It's responsible for recording "persist_changed" telemetry event.
*/
function persistenceChange({telemetry, state, sessionId}) {
telemetry.recordEvent("persist_changed", "netmonitor",
String(state.ui.persistentLogsEnabled),
{
"session_id": sessionId,
});
}
module.exports = eventTelemetryMiddleware;

View File

@ -206,6 +206,7 @@ skip-if = true # Bug 1373558
[browser_net_streaming-response.js]
[browser_net_telemetry_edit_resend.js]
[browser_net_telemetry_filters_changed.js]
[browser_net_telemetry_persist_toggle_changed.js]
[browser_net_telemetry_sidepanel_changed.js]
[browser_net_telemetry_throttle_changed.js]
[browser_net_throttle.js]

View File

@ -0,0 +1,65 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
/**
* Tests the log persistence telemetry event
*/
const { TelemetryTestUtils } = ChromeUtils.import("resource://testing-common/TelemetryTestUtils.jsm");
add_task(async function() {
const { monitor } = await initNetMonitor(SINGLE_GET_URL);
info("Starting test... ");
const { document, store, windowRequire } = monitor.panelWin;
const Actions = windowRequire("devtools/client/netmonitor/src/actions/index");
store.dispatch(Actions.batchEnable(false));
// Clear all events
Services.telemetry.clearEvents();
// Ensure no events have been logged
TelemetryTestUtils.assertNumberOfEvents(0);
// Get log persistence toggle button
const logPersistToggle = document.getElementById("devtools-persistlog-checkbox");
// Click on the toggle - "true" and make sure it was set to correct value
logPersistToggle.click();
await waitUntil(() => logPersistToggle.checked === true);
// Click a second time - "false" and make sure it was set to correct value
logPersistToggle.click();
await waitUntil(() => logPersistToggle.checked === false);
const expectedEvents = [
{
category: "devtools.main",
method: "persist_changed",
object: "netmonitor",
value: "true",
},
{
category: "devtools.main",
method: "persist_changed",
object: "netmonitor",
value: "false",
},
];
const filter = {
category: "devtools.main",
method: "persist_changed",
object: "netmonitor",
};
// Will compare filtered events to event list above
await TelemetryTestUtils.assertEvents(expectedEvents, filter);
// Set Persist log preference back to false
Services.prefs.setBoolPref("devtools.netmonitor.persistlog", false);
return teardown(monitor);
});

View File

@ -759,7 +759,7 @@ devtools.main:
session_id: The start time of the session in milliseconds since epoch (Unix Timestamp) e.g. 1396381378123.
persist_changed:
objects: ["netmonitor", "webconsole"]
bug_numbers: [1531395]
bug_numbers: [1531395, 1542312]
notification_emails: ["dev-developer-tools@lists.mozilla.org", "hkirschner@mozilla.com"]
record_in_processes: ["main"]
description: User has changed log persist status.