forked from mirrors/gecko-dev
82 lines
2.7 KiB
JavaScript
82 lines
2.7 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
let { TelemetryTestUtils } = ChromeUtils.importESModule(
|
|
"resource://testing-common/TelemetryTestUtils.sys.mjs"
|
|
);
|
|
|
|
add_setup(async function() {
|
|
await TestUtils.waitForCondition(() => {
|
|
Services.telemetry.clearEvents();
|
|
let events = Services.telemetry.snapshotEvents(
|
|
Ci.nsITelemetry.DATASET_PRERELEASE_CHANNELS,
|
|
true
|
|
).content;
|
|
return !events || !events.length;
|
|
}, "Waiting for content telemetry events to get cleared");
|
|
|
|
await BrowserTestUtils.openNewForegroundTab({
|
|
gBrowser,
|
|
url: "about:logins",
|
|
});
|
|
registerCleanupFunction(() => {
|
|
BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
|
});
|
|
});
|
|
|
|
add_task(async function test_open_preferences() {
|
|
// We want to make sure we visit about:preferences#privacy-logins , as that is
|
|
// what causes us to scroll to and highlight the "logins" section. However,
|
|
// about:preferences will redirect the URL, so the eventual load event will happen
|
|
// on about:preferences#privacy . The `wantLoad` parameter we pass to
|
|
// `waitForNewTab` needs to take this into account:
|
|
let seenFirstURL = false;
|
|
let promiseNewTab = BrowserTestUtils.waitForNewTab(
|
|
gBrowser,
|
|
url => {
|
|
if (url == "about:preferences#privacy-logins") {
|
|
seenFirstURL = true;
|
|
return true;
|
|
} else if (url == "about:preferences#privacy") {
|
|
Assert.ok(
|
|
seenFirstURL,
|
|
"Must have seen an onLocationChange notification for the privacy-logins hash"
|
|
);
|
|
return true;
|
|
}
|
|
return false;
|
|
},
|
|
true
|
|
);
|
|
|
|
let browser = gBrowser.selectedBrowser;
|
|
await BrowserTestUtils.synthesizeMouseAtCenter("menu-button", {}, browser);
|
|
await SpecialPowers.spawn(browser, [], async () => {
|
|
return ContentTaskUtils.waitForCondition(() => {
|
|
let menuButton = Cu.waiveXrays(
|
|
content.document.querySelector("menu-button")
|
|
);
|
|
return !menuButton.shadowRoot.querySelector(".menu").hidden;
|
|
}, "waiting for menu to open");
|
|
});
|
|
|
|
function getPrefsItem() {
|
|
let menuButton = window.document.querySelector("menu-button");
|
|
return menuButton.shadowRoot.querySelector(".menuitem-preferences");
|
|
}
|
|
await BrowserTestUtils.synthesizeMouseAtCenter(getPrefsItem, {}, browser);
|
|
|
|
info("waiting for new tab to get opened");
|
|
let newTab = await promiseNewTab;
|
|
Assert.ok(true, "New tab opened to about:preferences");
|
|
|
|
BrowserTestUtils.removeTab(newTab);
|
|
|
|
// First event is for opening about:logins
|
|
await LoginTestUtils.telemetry.waitForEventCount(2);
|
|
TelemetryTestUtils.assertEvents(
|
|
[["pwmgr", "mgmt_menu_item_used", "preferences"]],
|
|
{ category: "pwmgr", method: "mgmt_menu_item_used" },
|
|
{ process: "content" }
|
|
);
|
|
});
|