Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Errors

add_task(async function testRestoreDefaultsBtn_visible() {
const before = SpecialPowers.Services.prefs.getStringPref(
"browser.newtabpage.activity-stream.feeds.section.topstories.options",
""
);
await SpecialPowers.pushPrefEnv({
set: [
// Hide Pocket prefs so we don't trigger network requests when we reset all preferences
[
"browser.newtabpage.activity-stream.feeds.section.topstories.options",
JSON.stringify(Object.assign({}, JSON.parse(before), { hidden: true })),
],
[
"browser.newtabpage.activity-stream.discoverystream.endpointSpocsClear",
"",
],
// Set a user pref to false to force the Restore Defaults button to be visible
["browser.newtabpage.activity-stream.feeds.topsites", false],
],
});
let tab = await BrowserTestUtils.openNewForegroundTab(
gBrowser,
"about:preferences#home",
false
);
let browser = tab.linkedBrowser;
await BrowserTestUtils.waitForCondition(
() =>
SpecialPowers.spawn(
browser,
[],
() =>
content.document.getElementById("restoreDefaultHomePageBtn") !== null
),
"Wait for the button to be added to the page"
);
await BrowserTestUtils.waitForCondition(
() =>
SpecialPowers.spawn(
browser,
[],
() =>
content.document.querySelector(
"[data-subcategory='topsites'] checkbox"
) !== null
),
"Wait for the preference checkbox to load"
);
await BrowserTestUtils.waitForCondition(
() =>
SpecialPowers.spawn(
browser,
[],
() =>
content.document.getElementById("restoreDefaultHomePageBtn")
.hidden === false
),
"Should show the Restore Defaults btn because pref is changed"
);
await SpecialPowers.spawn(browser, [], () =>
content.document.getElementById("restoreDefaultHomePageBtn").click()
);
await BrowserTestUtils.waitForCondition(
() =>
SpecialPowers.spawn(
browser,
[],
() =>
content.document.querySelector(
"[data-subcategory='topsites'] checkbox"
).checked
),
"Should have checked preference"
);
await BrowserTestUtils.waitForCondition(
() =>
SpecialPowers.spawn(
browser,
[],
() =>
content.document.getElementById("restoreDefaultHomePageBtn").style
.visibility === "hidden"
),
"Should not show the Restore Defaults btn if prefs were reset"
);
const topsitesPref = await SpecialPowers.Services.prefs.getBoolPref(
"browser.newtabpage.activity-stream.feeds.topsites"
);
Assert.ok(topsitesPref, "Topsites pref should have the default value");
await SpecialPowers.popPrefEnv();
BrowserTestUtils.removeTab(tab);
});
add_task(async function testRestoreDefaultsBtn_hidden() {
const before = SpecialPowers.Services.prefs.getStringPref(
"browser.newtabpage.activity-stream.feeds.section.topstories.options",
""
);
await SpecialPowers.pushPrefEnv({
set: [
// Hide Pocket pref so we don't trigger network requests when we reset all preferences
[
"browser.newtabpage.activity-stream.feeds.section.topstories.options",
JSON.stringify(Object.assign({}, JSON.parse(before), { hidden: true })),
],
[
"browser.newtabpage.activity-stream.discoverystream.endpointSpocsClear",
"",
],
],
});
let tab = await BrowserTestUtils.openNewForegroundTab(
gBrowser,
"about:preferences#home",
false
);
let browser = tab.linkedBrowser;
await BrowserTestUtils.waitForCondition(
() =>
SpecialPowers.spawn(
browser,
[],
() =>
content.document.getElementById("restoreDefaultHomePageBtn") !== null
),
"Wait for the button to be added to the page"
);
await BrowserTestUtils.waitForCondition(
() =>
SpecialPowers.spawn(
browser,
[],
() =>
content.document.querySelector(
"[data-subcategory='topsites'] checkbox"
) !== null
),
"Wait for the preference checkbox to load"
);
const btnDefault = await SpecialPowers.spawn(
browser,
[],
() =>
content.document.getElementById("restoreDefaultHomePageBtn").style
.visibility
);
Assert.equal(
btnDefault,
"hidden",
"When no prefs are changed button should not show up"
);
await BrowserTestUtils.waitForCondition(
() =>
SpecialPowers.spawn(
browser,
[],
() =>
content.document.querySelector(
"[data-subcategory='topsites'] checkbox"
).checked
),
"Should have checked preference"
);
// Uncheck a pref
await SpecialPowers.spawn(browser, [], () =>
content.document
.querySelector("[data-subcategory='topsites'] checkbox")
.click()
);
await BrowserTestUtils.waitForCondition(
() =>
SpecialPowers.spawn(
browser,
[],
() =>
!content.document.querySelector(
"[data-subcategory='topsites'] checkbox"
).checked
),
"Should have unchecked preference"
);
await BrowserTestUtils.waitForCondition(
() =>
SpecialPowers.spawn(
browser,
[],
() =>
content.document.getElementById("restoreDefaultHomePageBtn").style
.visibility === ""
),
"Should show the Restore Defaults btn if prefs were changed"
);
// Reset the pref
await SpecialPowers.Services.prefs.clearUserPref(
"browser.newtabpage.activity-stream.feeds.topsites"
);
await SpecialPowers.popPrefEnv();
BrowserTestUtils.removeTab(tab);
});