Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"use strict";
const HOMEPAGE_PREF = "browser.startup.homepage";
add_setup(async function () {
await SpecialPowers.pushPrefEnv({
set: [
["browser.settings-redesign.enabled", true],
["identity.fxaccounts.account.device.name", ""],
],
});
});
add_task(async function test_replace_with_bookmark() {
await SpecialPowers.pushPrefEnv({
set: [[HOMEPAGE_PREF, "https://example.com|https://test.org"]],
});
// Use a URL with a path to avoid Places normalizing it by appending a
// trailing slash (e.g. "https://mozilla.org" -> "https://mozilla.org/"),
// which would break the exact equality pref check below.
const BOOKMARK_URL = "https://example.org/test-bookmark";
let bm = await PlacesUtils.bookmarks.insert({
parentGuid: PlacesUtils.bookmarks.menuGuid,
title: "Test Bookmark",
url: BOOKMARK_URL,
});
registerCleanupFunction(() => PlacesUtils.bookmarks.remove(bm.guid));
let { win, tab } = await openCustomHomepageSubpage();
let replaceButtonControl = await settingControlRenders(
"customHomepageReplaceWithBookmarksButton",
win
);
let replaceButton = replaceButtonControl.controlEl;
let promiseSubDialogLoaded = promiseLoadSubDialog(
"chrome://browser/content/preferences/dialogs/selectBookmark.xhtml"
);
replaceButton.click();
let dialog = await promiseSubDialogLoaded;
let bookmarksTree = dialog.document.getElementById("bookmarks");
await TestUtils.waitForCondition(
() => bookmarksTree.view?.rowCount > 0,
"Bookmarks tree populated"
);
bookmarksTree.selectItems([bm.guid]);
dialog.document
.getElementById("selectBookmarkDialog")
.getButton("accept")
.click();
await TestUtils.waitForCondition(
() => Services.prefs.getStringPref(HOMEPAGE_PREF) === BOOKMARK_URL,
"Pref replaced with bookmark URL"
);
ok(
!Services.prefs
.getStringPref(HOMEPAGE_PREF)
.includes("https://example.com"),
"Previous URLs were replaced, not appended to"
);
await BrowserTestUtils.removeTab(tab);
});