fune/browser/components/extensions/test/xpcshell/test_ext_settings_validate.js
2019-09-11 14:00:20 +00:00

83 lines
2.3 KiB
JavaScript

/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set sts=2 sw=2 et tw=80: */
"use strict";
const { AddonTestUtils } = ChromeUtils.import(
"resource://testing-common/AddonTestUtils.jsm"
);
const { HomePage } = ChromeUtils.import("resource:///modules/HomePage.jsm");
XPCOMUtils.defineLazyServiceGetter(
this,
"aboutNewTabService",
"@mozilla.org/browser/aboutnewtab-service;1",
"nsIAboutNewTabService"
);
AddonTestUtils.init(this);
// Allow for unsigned addons.
AddonTestUtils.overrideCertDB();
AddonTestUtils.createAppInfo(
"xpcshell@tests.mozilla.org",
"XPCShell",
"42",
"42"
);
add_task(async function test_settings_validated() {
let defaultNewTab = aboutNewTabService.newTabURL;
equal(defaultNewTab, "about:newtab", "Newtab url is default.");
let defaultHomepageURL = HomePage.get();
equal(defaultHomepageURL, "about:home", "Home page url is default.");
let xpi = await AddonTestUtils.createTempWebExtensionFile({
manifest: {
version: "1.0",
applications: { gecko: { id: "test@mochi" } },
chrome_url_overrides: {
newtab: "/newtab",
},
chrome_settings_overrides: {
homepage: "https://example.com/",
},
},
});
let extension = ExtensionTestUtils.expectExtension("test@mochi");
let file = await AddonTestUtils.manuallyInstall(xpi);
await AddonTestUtils.promiseStartupManager();
await extension.awaitStartup();
equal(
HomePage.get(),
"https://example.com/",
"Home page url is extension controlled."
);
ok(
aboutNewTabService.newTabURL.endsWith("/newtab"),
"newTabURL is extension controlled."
);
await AddonTestUtils.promiseShutdownManager();
// After shutdown, delete the xpi file.
Services.obs.notifyObservers(xpi, "flush-cache-entry");
try {
file.remove(true);
} catch (e) {
ok(false, e);
}
await AddonTestUtils.cleanupTempXPIs();
// Restart everything, the UninstallObserver should handle updating state.
let prefChanged = TestUtils.waitForPrefChange("browser.startup.homepage");
await AddonTestUtils.promiseStartupManager();
await prefChanged;
equal(HomePage.get(), defaultHomepageURL, "Home page url is default.");
equal(
aboutNewTabService.newTabURL,
defaultNewTab,
"newTabURL is reset to default."
);
});