Bug 1359558 Part 1: Move webextension theme test to test_webextension.js
This test is about webextension themes but it was stuck into an
unrelated test of temporary addon installation. Move it to a
more appropriate place.
MozReview-Commit-ID: FMNmGuUJrWo
--- a/toolkit/mozapps/extensions/test/xpcshell/test_temporary.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_temporary.js
@@ -292,47 +292,16 @@ add_task(async function() {
do_check_eq(addon.name, "Test WebExtension 1 (temporary)");
do_check_true(addon.isCompatible);
do_check_false(addon.appDisabled);
do_check_true(addon.isActive);
do_check_eq(addon.type, "extension");
do_check_true(addon.isWebExtension);
do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_PRIVILEGED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
- // test reloading a webextension with the same name, but a different type.
- webext.remove(false);
- webext = createTempWebExtensionFile({
- manifest: {
- version: "6.0",
- name: "Test WebExtension 1 (temporary)",
- applications: {
- gecko: {
- id: ID
- }
- },
- theme: { images: { headerURL: "example.png" } }
- }
- });
-
- await Promise.all([
- AddonManager.installTemporaryAddon(webext),
- promiseWebExtensionStartup(),
- ]);
- addon = await promiseAddonByID(ID);
-
- do_check_neq(addon, null);
- do_check_eq(addon.version, "6.0");
- do_check_eq(addon.name, "Test WebExtension 1 (temporary)");
- do_check_true(addon.isCompatible);
- do_check_false(addon.appDisabled);
- do_check_true(addon.isActive);
- // This is what we're really interested in:
- do_check_eq(addon.type, "theme");
- do_check_true(addon.isWebExtension);
-
restartManager();
BootstrapMonitor.checkAddonInstalled(ID, "1.0");
BootstrapMonitor.checkAddonStarted(ID, "1.0");
addon = await promiseAddonByID(ID);
// existing add-on is back
--- a/toolkit/mozapps/extensions/test/xpcshell/test_webextension.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_webextension.js
@@ -430,8 +430,75 @@ add_task(async function testThemeExtensi
});
addon = await promiseAddonByID(addon.id);
do_check_eq(addon.type, "extension");
do_check_true(addon.isWebExtension);
addon.uninstall();
});
+
+// Test that we can update from a webextension to a webextension-theme
+add_task(async function test_theme_upgrade() {
+ // First install a regular webextension
+ let webext = createTempWebExtensionFile({
+ manifest: {
+ version: "1.0",
+ name: "Test WebExtension 1 (temporary)",
+ applications: {
+ gecko: {
+ id: ID
+ }
+ }
+ }
+ });
+
+ await Promise.all([
+ AddonManager.installTemporaryAddon(webext),
+ promiseWebExtensionStartup(),
+ ]);
+ let addon = await promiseAddonByID(ID);
+
+ // temporary add-on is installed and started
+ do_check_neq(addon, null);
+ do_check_eq(addon.version, "1.0");
+ do_check_eq(addon.name, "Test WebExtension 1 (temporary)");
+ do_check_true(addon.isCompatible);
+ do_check_false(addon.appDisabled);
+ do_check_true(addon.isActive);
+ do_check_eq(addon.type, "extension");
+ do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_PRIVILEGED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
+
+ // Create a webextension theme with the same ID
+ let webext2 = createTempWebExtensionFile({
+ manifest: {
+ version: "2.0",
+ name: "Test WebExtension 1 (temporary)",
+ applications: {
+ gecko: {
+ id: ID
+ }
+ },
+ theme: { images: { headerURL: "example.png" } }
+ }
+ });
+
+ await Promise.all([
+ AddonManager.installTemporaryAddon(webext2),
+ promiseWebExtensionStartup(),
+ ]);
+ addon = await promiseAddonByID(ID);
+
+ do_check_neq(addon, null);
+ do_check_eq(addon.version, "2.0");
+ do_check_eq(addon.name, "Test WebExtension 1 (temporary)");
+ do_check_true(addon.isCompatible);
+ do_check_false(addon.appDisabled);
+ do_check_true(addon.isActive);
+ // This is what we're really interested in:
+ do_check_eq(addon.type, "theme");
+ do_check_true(addon.isWebExtension);
+
+ addon.uninstall();
+
+ addon = await promiseAddonByID(ID);
+ do_check_eq(addon, null);
+});