mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-06 06:22:33 +00:00
Bug 1609037 - DoH Rollout Extension: Wait until a top-level location change to show the doorhanger. r=johannh
Differential Revision: https://phabricator.services.mozilla.com/D59833 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
2a5d7c0fe8
commit
73ad962480
@ -8,6 +8,7 @@
|
||||
|
||||
ChromeUtils.import("resource://gre/modules/Services.jsm", this);
|
||||
ChromeUtils.import("resource://gre/modules/Preferences.jsm", this);
|
||||
ChromeUtils.import("resource:///modules/EveryWindow.jsm", this);
|
||||
|
||||
var { EventManager, EventEmitter } = ExtensionCommon;
|
||||
const {
|
||||
@ -121,7 +122,41 @@ this.doorhanger = class doorhanger extends ExtensionAPI {
|
||||
return false;
|
||||
}
|
||||
|
||||
await doorhangerEventEmitter.emitShow(properties);
|
||||
// Show the doorhanger next time there's a top-level location change.
|
||||
let tabsProgressListener = {
|
||||
onLocationChange(
|
||||
aBrowser,
|
||||
aWebProgress,
|
||||
aRequest,
|
||||
aLocationURI,
|
||||
aFlags
|
||||
) {
|
||||
let topWindow = getMostRecentBrowserWindow();
|
||||
// Filter out history.push/pop and subframes.
|
||||
if (
|
||||
aBrowser != topWindow.gBrowser.selectedBrowser ||
|
||||
aFlags &
|
||||
Ci.nsIWebProgressListener.LOCATION_CHANGE_SAME_DOCUMENT ||
|
||||
!aWebProgress.isTopLevel
|
||||
) {
|
||||
return;
|
||||
}
|
||||
doorhangerEventEmitter.emitShow(properties);
|
||||
EveryWindow.unregisterCallback("doh-rollout");
|
||||
},
|
||||
};
|
||||
EveryWindow.registerCallback(
|
||||
"doh-rollout",
|
||||
win => {
|
||||
win.gBrowser.addTabsProgressListener(tabsProgressListener);
|
||||
},
|
||||
(win, closing) => {
|
||||
if (closing) {
|
||||
return;
|
||||
}
|
||||
win.gBrowser.removeTabsProgressListener(tabsProgressListener);
|
||||
}
|
||||
);
|
||||
return true;
|
||||
},
|
||||
onDoorhangerAccept: new EventManager({
|
||||
|
@ -13,6 +13,7 @@ add_task(async function testCleanFlow() {
|
||||
});
|
||||
is(Preferences.get(prefs.DOH_SELF_ENABLED_PREF), true, "Breadcrumb saved.");
|
||||
|
||||
let tab = BrowserTestUtils.addTab(gBrowser, EXAMPLE_URL);
|
||||
let panel = await promise;
|
||||
is(
|
||||
Preferences.get(prefs.DOH_DOORHANGER_SHOWN_PREF),
|
||||
@ -48,6 +49,8 @@ add_task(async function testCleanFlow() {
|
||||
"Breadcrumb not cleared."
|
||||
);
|
||||
|
||||
BrowserTestUtils.removeTab(tab);
|
||||
|
||||
// Change the environment to failing and simulate a network change.
|
||||
setFailingHeuristics();
|
||||
simulateNetworkChange();
|
||||
|
@ -13,6 +13,7 @@ add_task(async function testDoorhangerUserReject() {
|
||||
});
|
||||
is(Preferences.get(prefs.DOH_SELF_ENABLED_PREF), true, "Breadcrumb saved.");
|
||||
|
||||
let tab = BrowserTestUtils.addTab(gBrowser, EXAMPLE_URL);
|
||||
let panel = await promise;
|
||||
is(
|
||||
Preferences.get(prefs.DOH_DOORHANGER_SHOWN_PREF),
|
||||
@ -49,6 +50,8 @@ add_task(async function testDoorhangerUserReject() {
|
||||
"Breadcrumb cleared."
|
||||
);
|
||||
|
||||
BrowserTestUtils.removeTab(tab);
|
||||
|
||||
await ensureTRRMode(5);
|
||||
checkHeuristicsTelemetry("disable_doh", "doorhangerDecline");
|
||||
|
||||
|
@ -13,6 +13,7 @@ add_task(async function testUserInterference() {
|
||||
});
|
||||
is(Preferences.get(prefs.DOH_SELF_ENABLED_PREF), true, "Breadcrumb saved.");
|
||||
|
||||
let tab = BrowserTestUtils.addTab(gBrowser, EXAMPLE_URL);
|
||||
let panel = await promise;
|
||||
is(
|
||||
Preferences.get(prefs.DOH_DOORHANGER_SHOWN_PREF),
|
||||
@ -41,6 +42,8 @@ add_task(async function testUserInterference() {
|
||||
"Doorhanger decision saved."
|
||||
);
|
||||
|
||||
BrowserTestUtils.removeTab(tab);
|
||||
|
||||
await ensureTRRMode(2);
|
||||
checkHeuristicsTelemetry("enable_doh", "startup");
|
||||
|
||||
|
@ -18,6 +18,8 @@ const { CommonUtils } = ChromeUtils.import(
|
||||
|
||||
const ADDON_ID = "doh-rollout@mozilla.org";
|
||||
|
||||
const EXAMPLE_URL = "https://example.com/";
|
||||
|
||||
const prefs = {
|
||||
DOH_ENABLED_PREF: "doh-rollout.enabled",
|
||||
TRR_MODE_PREF: "network.trr.mode",
|
||||
|
Loading…
x
Reference in New Issue
Block a user