mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-19 16:25:38 +00:00
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:
parent
555af1c529
commit
792e738fc6
@ -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,
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -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()),
|
||||
|
@ -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;
|
||||
|
@ -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]
|
||||
|
@ -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);
|
||||
});
|
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user