Skip to content

Commit

Permalink
Bug 1824253: Set enabling/disabling urlbar engagement telemetry via S…
Browse files Browse the repository at this point in the history
…erver Knobs r=mak,TravisLong

Differential Revision: https://phabricator.services.mozilla.com/D173494
  • Loading branch information
Daisuke Akatsuka committed Apr 18, 2023
1 parent 8ca8e37 commit 09374b6
Show file tree
Hide file tree
Showing 15 changed files with 48 additions and 291 deletions.
3 changes: 0 additions & 3 deletions browser/app/profile/firefox.js
Original file line number Diff line number Diff line change
Expand Up @@ -538,9 +538,6 @@ pref("browser.urlbar.shortcuts.history", true);

pref("browser.urlbar.eventTelemetry.enabled", false);

// Whether search engagement telemetry should be recorded.
pref("browser.urlbar.searchEngagementTelemetry.enabled", false);

// When we send events to Urlbar extensions, we wait this amount of time in
// milliseconds for them to respond before timing out.
pref("browser.urlbar.extension.timeout", 400);
Expand Down
25 changes: 4 additions & 21 deletions browser/components/urlbar/UrlbarController.sys.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -1167,9 +1167,7 @@ class TelemetryEvent {
`${method} event: ${JSON.stringify(eventInfo)}`
);

if (lazy.UrlbarPrefs.get("searchEngagementTelemetryEnabled")) {
Glean.urlbar[method].record(eventInfo);
}
Glean.urlbar[method].record(eventInfo);
}

#getInteractionType(
Expand Down Expand Up @@ -1348,33 +1346,18 @@ class TelemetryEvent {
};

#beginObservingPingPrefs() {
this.onPrefChanged("searchEngagementTelemetry.enabled");
for (const p of Object.keys(this.#PING_PREFS)) {
this.onPrefChanged(p);
}
lazy.UrlbarPrefs.addObserver(this);
}

onPrefChanged(pref) {
if (pref === "searchEngagementTelemetry.enabled") {
for (const p of Object.keys(this.#PING_PREFS)) {
this.onPrefChanged(p);
}
return;
}

if (!lazy.UrlbarPrefs.get("searchEngagementTelemetryEnabled")) {
return;
}

const metric = this.#PING_PREFS[pref];
if (metric) {
metric.set(lazy.UrlbarPrefs.get(pref));
}
}

onNimbusChanged(variable) {
if (variable === "searchEngagementTelemetryEnabled") {
this.onPrefChanged("searchEngagementTelemetry.enabled");
}
}

#previousSearchWordsSet = null;
}
4 changes: 0 additions & 4 deletions browser/components/urlbar/UrlbarPrefs.sys.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -129,10 +129,6 @@ const PREF_URLBAR_DEFAULTS = new Map([
// Applies URL highlighting and other styling to the text in the urlbar input.
["formatting.enabled", true],

// Whether search engagement telemetry should be recorded. This pref is a
// fallback for the Nimbus variable `searchEngagementTelemetryEnabled`.
["searchEngagementTelemetry.enabled", false],

// Interval time until taking pause impression telemetry.
["searchEngagementTelemetry.pauseImpressionIntervalMs", 1000],

Expand Down
3 changes: 3 additions & 0 deletions browser/components/urlbar/metrics.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ $tags:

urlbar:
abandonment:
disabled: true
type: event
description: Recorded when the user abandons a search (blurring the urlbar).
extra_keys:
Expand Down Expand Up @@ -129,6 +130,7 @@ urlbar:
- [email protected]
expires: never
engagement:
disabled: true
type: event
description: Recorded when the user executes an action on a result.
extra_keys:
Expand Down Expand Up @@ -323,6 +325,7 @@ urlbar:
- [email protected]
expires: never
impression:
disabled: true
type: event
description: Recorded when urlbar results are shown to the user.
extra_keys:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ support-files =
head-groups.js
head-interaction.js
head-n_chars_n_words.js
head-preferences.js
head-sap.js
head-search_mode.js
../../browser-tips/head.js
Expand All @@ -23,7 +22,6 @@ skip-if =
[browser_glean_telemetry_abandonment_interaction_persisted_search_terms_disabled.js]
[browser_glean_telemetry_abandonment_interaction_persisted_search_terms_enabled.js]
[browser_glean_telemetry_abandonment_n_chars_n_words.js]
[browser_glean_telemetry_abandonment_preferences.js]
[browser_glean_telemetry_abandonment_sap.js]
[browser_glean_telemetry_abandonment_search_mode.js]
[browser_glean_telemetry_abandonment_tips.js]
Expand All @@ -33,7 +31,6 @@ skip-if =
[browser_glean_telemetry_engagement_interaction_persisted_search_terms_disabled.js]
[browser_glean_telemetry_engagement_interaction_persisted_search_terms_enabled.js]
[browser_glean_telemetry_engagement_n_chars_n_words.js]
[browser_glean_telemetry_engagement_preferences.js]
[browser_glean_telemetry_engagement_sap.js]
[browser_glean_telemetry_engagement_search_mode.js]
[browser_glean_telemetry_engagement_selected_result.js]
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,12 @@ Services.scriptloader.loadSubScript(
);

add_setup(async function() {
Services.fog.setMetricsFeatureConfig(
JSON.stringify({ "urlbar.abandonment": false })
);

await SpecialPowers.pushPrefEnv({
set: [
["browser.urlbar.searchEngagementTelemetry.enabled", true],
["browser.urlbar.searchTips.test.ignoreShowLimits", true],
["browser.urlbar.showSearchTerms.featureGate", true],
],
Expand All @@ -30,6 +33,7 @@ add_setup(async function() {
await Services.search.moveEngine(engine, 0);

registerCleanupFunction(async function() {
Services.fog.setMetricsFeatureConfig("{}");
await SpecialPowers.popPrefEnv();
await Services.search.setDefault(
originalDefaultEngine,
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,15 @@ ChromeUtils.defineESModuleGetters(this, {
add_setup(async function() {
makeProfileResettable();

Services.fog.setMetricsFeatureConfig(
JSON.stringify({ "urlbar.engagement": false })
);
await SpecialPowers.pushPrefEnv({
set: [
["browser.urlbar.searchEngagementTelemetry.enabled", true],
["browser.urlbar.quickactions.enabled", false],
],
set: [["browser.urlbar.quickactions.enabled", false]],
});

registerCleanupFunction(async function() {
Services.fog.setMetricsFeatureConfig("{}");
await SpecialPowers.popPrefEnv();
});
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,41 +6,7 @@
// Test the impression telemetry behavior with its preferences.

add_setup(async function() {
await initPreferencesTest();
});

add_task(async function enabled() {
await doSearchEngagementTelemetryTest({
enabled: true,
trigger: () => waitForPauseImpression(),
assert: () =>
assertImpressionTelemetry([{ reason: "pause", sap: "urlbar_newtab" }]),
});
});

add_task(async function disabled() {
await doSearchEngagementTelemetryTest({
enabled: false,
trigger: () => waitForPauseImpression(),
assert: () => assertImpressionTelemetry([]),
});
});

add_task(async function nimbusEnabled() {
await doNimbusTest({
enabled: true,
trigger: () => waitForPauseImpression(),
assert: () =>
assertImpressionTelemetry([{ reason: "pause", sap: "urlbar_newtab" }]),
});
});

add_task(async function nimbusDisabled() {
await doNimbusTest({
enabled: false,
trigger: () => waitForPauseImpression(),
assert: () => assertImpressionTelemetry([]),
});
await setup();
});

add_task(async function pauseImpressionIntervalMs() {
Expand All @@ -50,7 +16,6 @@ add_task(async function pauseImpressionIntervalMs() {
);
await SpecialPowers.pushPrefEnv({
set: [
["browser.urlbar.searchEngagementTelemetry.enabled", true],
[
"browser.urlbar.searchEngagementTelemetry.pauseImpressionIntervalMs",
originalInterval + additionalInterval,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,18 @@
// Test for preference telemetry.

add_setup(async function() {
// Simulate initialization for TelemetryEvent.
// 1. Turn browser.urlbar.searchEngagementTelemetry.enabled on.
// 2. Remove all Glean data.
// 3. Call onPrefChanged() that will be called from TelemetryEvent constructor.
await SpecialPowers.pushPrefEnv({
set: [["browser.urlbar.searchEngagementTelemetry.enabled", true]],
});
await Services.fog.testFlushAllChildren();
Services.fog.testResetFOG();
gURLBar.controller.engagementEvent.onPrefChanged(
"searchEngagementTelemetry.enabled"
);

// Create a new window in order to initialize TelemetryEvent of
// UrlbarController.
const win = await BrowserTestUtils.openNewBrowserWindow();
registerCleanupFunction(async function() {
await BrowserTestUtils.closeWindow(win);
});
});

add_task(async function prefMaxRichResults() {
Assert.ok(UrlbarPrefs.get("maxRichResults"), "Sanity check");
Assert.equal(
Glean.urlbar.prefMaxResults.testGetValue(),
UrlbarPrefs.get("maxRichResults"),
Expand Down Expand Up @@ -56,66 +52,3 @@ add_task(async function prefSuggestTopsites() {
"Record prefSuggestTopsites when the suggest.topsites pref is updated"
);
});

add_task(async function searchEngagementTelemetryEnabled() {
info("Disable search engagement telemetry");
await SpecialPowers.pushPrefEnv({
set: [["browser.urlbar.searchEngagementTelemetry.enabled", false]],
});
await SpecialPowers.pushPrefEnv({
set: [
["browser.urlbar.suggest.topsites", !UrlbarPrefs.get("suggest.topsites")],
["browser.urlbar.maxRichResults", 100],
],
});
Assert.notEqual(
Glean.urlbar.prefMaxResults.testGetValue(),
UrlbarPrefs.get("maxRichResults"),
"Did not record prefMaxResults"
);
Assert.notEqual(
Glean.urlbar.prefSuggestTopsites.testGetValue(),
UrlbarPrefs.get("suggest.topsites"),
"Did not record prefSuggestTopsites"
);

info("Enable search engagement telemetry");
await SpecialPowers.pushPrefEnv({
set: [["browser.urlbar.searchEngagementTelemetry.enabled", true]],
});
Assert.equal(
Glean.urlbar.prefMaxResults.testGetValue(),
UrlbarPrefs.get("maxRichResults"),
"Update prefMaxResults when search engagement telemetry is enabled"
);
Assert.equal(
Glean.urlbar.prefSuggestTopsites.testGetValue(),
UrlbarPrefs.get("suggest.topsites"),
"Update prefSuggestTopsites when search engagement telemetry is enabled"
);
});

add_task(async function nimbusSearchEngagementTelemetryEnabled() {
info("Disable search engagement telemetry");
await SpecialPowers.pushPrefEnv({
set: [["browser.urlbar.searchEngagementTelemetry.enabled", false]],
});

info("Enable search engagement telemetry from Nimbus");
// eslint-disable-next-line mozilla/valid-lazy
const doCleanup = await lazy.UrlbarTestUtils.initNimbusFeature({
searchEngagementTelemetryEnabled: true,
});
Assert.equal(
Glean.urlbar.prefMaxResults.testGetValue(),
UrlbarPrefs.get("maxRichResults"),
"Update prefMaxResults when search engagement telemetry is enabled"
);
Assert.equal(
Glean.urlbar.prefSuggestTopsites.testGetValue(),
UrlbarPrefs.get("suggest.topsites"),
"Update prefSuggestTopsites when search engagement telemetry is enabled"
);

doCleanup();
});
Loading

0 comments on commit 09374b6

Please sign in to comment.