Bug 1359558 Part 1: Move webextension theme test to test_webextension.js draft
authorAndrew Swan <aswan@mozilla.com>
Mon, 31 Jul 2017 11:54:31 -0700
changeset 618695 9f52818807ff821079b22b6f622acb0211e8bcf5
parent 617496 16ffc1d05422a81099ce8b9b59de66dde4c8b2f0
child 618696 3382ed388643179010a6ef139ddf6ec6a65d8cb7
child 644166 03bf453ed34ec2ae88ce3c40925e750c0d4c5671
child 644582 966d78c37205f131b57eed461df75002873cdf86
push id71424
push useraswan@mozilla.com
push dateMon, 31 Jul 2017 22:44:09 +0000
bugs1359558
milestone56.0a1
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
toolkit/mozapps/extensions/test/xpcshell/test_temporary.js
toolkit/mozapps/extensions/test/xpcshell/test_webextension.js
--- 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);
+});