Bug 1344926 - add a regression test to make sure themes are persisted across windows using the Theming API. r?Mossop draft
authorMike de Boer <mdeboer@mozilla.com>
Tue, 14 Mar 2017 18:48:13 +0100
changeset 498418 acb4ffbb07f28a4f2f0dabe6fca5da5e65eb8c42
parent 498417 147984254597cbce9f46e9dd1aada944bc8de632
child 549143 4dcd7a5bc49de82104cfde8e356c2b746a322735
push id49174
push usermdeboer@mozilla.com
push dateTue, 14 Mar 2017 17:50:14 +0000
reviewersMossop
bugs1344926
milestone55.0a1
Bug 1344926 - add a regression test to make sure themes are persisted across windows using the Theming API. r?Mossop MozReview-Commit-ID: BU7knUPaz1w
toolkit/components/extensions/test/browser/.eslintrc.js
toolkit/components/extensions/test/browser/browser.ini
toolkit/components/extensions/test/browser/browser_ext_themes_lwtsupport.js
toolkit/components/extensions/test/browser/browser_ext_themes_persistence.js
toolkit/components/extensions/test/browser/head.js
--- a/toolkit/components/extensions/test/browser/.eslintrc.js
+++ b/toolkit/components/extensions/test/browser/.eslintrc.js
@@ -3,16 +3,17 @@
 module.exports = { // eslint-disable-line no-undef
   "extends": "../../../../../testing/mochitest/mochitest.eslintrc.js",
 
   "env": {
     "webextensions": true,
   },
 
   "globals": {
+    "BrowserTestUtils": true,
     "ExtensionTestUtils": false,
     "XPCOMUtils": true,
   },
 
   "rules": {
     "no-shadow": 0,
   },
 };
--- a/toolkit/components/extensions/test/browser/browser.ini
+++ b/toolkit/components/extensions/test/browser/browser.ini
@@ -1,3 +1,8 @@
+[DEFAULT]
+support-files =
+  head.js
+
 [browser_ext_themes_chromeparity.js]
 [browser_ext_themes_dynamic_updates.js]
 [browser_ext_themes_lwtsupport.js]
+[browser_ext_themes_persistence.js]
--- a/toolkit/components/extensions/test/browser/browser_ext_themes_lwtsupport.js
+++ b/toolkit/components/extensions/test/browser/browser_ext_themes_lwtsupport.js
@@ -1,19 +1,10 @@
 "use strict";
 
-const BACKGROUND = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==";
-const ACCENT_COLOR = "#a14040";
-const TEXT_COLOR = "#fac96e";
-
-function hexToRGB(hex) {
-  hex = parseInt((hex.indexOf("#") > -1 ? hex.substring(1) : hex), 16);
-  return [hex >> 16, (hex & 0x00FF00) >> 8, (hex & 0x0000FF)];
-}
-
 add_task(function* setup() {
   yield SpecialPowers.pushPrefEnv({
     set: [["extensions.webextensions.themes.enabled", true]],
   });
 });
 
 add_task(function* test_support_LWT_properties() {
   let extension = ExtensionTestUtils.loadExtension({
new file mode 100644
--- /dev/null
+++ b/toolkit/components/extensions/test/browser/browser_ext_themes_persistence.js
@@ -0,0 +1,51 @@
+"use strict";
+
+// This test checks whether applied WebExtension themes are persisted and applied
+// on newly opened windows.
+
+add_task(function* setup() {
+  yield SpecialPowers.pushPrefEnv({
+    set: [["extensions.webextensions.themes.enabled", true]],
+  });
+});
+
+add_task(function* test_multiple_windows() {
+  let extension = ExtensionTestUtils.loadExtension({
+    manifest: {
+      "theme": {
+        "images": {
+          "headerURL": BACKGROUND,
+        },
+        "colors": {
+          "accentcolor": ACCENT_COLOR,
+          "textcolor": TEXT_COLOR,
+        },
+      },
+    },
+  });
+
+  yield extension.startup();
+
+  let docEl = window.document.documentElement;
+  let style = window.getComputedStyle(docEl);
+
+  Assert.ok(docEl.hasAttribute("lwtheme"), "LWT attribute should be set");
+  Assert.equal(docEl.getAttribute("lwthemetextcolor"), "bright",
+    "LWT text color attribute should be set");
+  Assert.equal(style.backgroundImage, 'url("' + BACKGROUND.replace(/"/g, '\\"') + '")',
+    "Expected background image");
+
+  // Now we'll open a new window to see if the theme is also applied there.
+  let window2 = yield BrowserTestUtils.openNewBrowserWindow();
+  docEl = window2.document.documentElement;
+  style = window2.getComputedStyle(docEl);
+
+  Assert.ok(docEl.hasAttribute("lwtheme"), "LWT attribute should be set");
+  Assert.equal(docEl.getAttribute("lwthemetextcolor"), "bright",
+    "LWT text color attribute should be set");
+  Assert.equal(style.backgroundImage, 'url("' + BACKGROUND.replace(/"/g, '\\"') + '")',
+    "Expected background image");
+
+  yield BrowserTestUtils.closeWindow(window2);
+  yield extension.unload();
+});
new file mode 100644
--- /dev/null
+++ b/toolkit/components/extensions/test/browser/head.js
@@ -0,0 +1,12 @@
+/* exported BACKGROUND, ACCENT_COLOR, TEXT_COLOR, hexToRGB */
+
+"use strict";
+
+const BACKGROUND = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==";
+const ACCENT_COLOR = "#a14040";
+const TEXT_COLOR = "#fac96e";
+
+function hexToRGB(hex) {
+  hex = parseInt((hex.indexOf("#") > -1 ? hex.substring(1) : hex), 16);
+  return [hex >> 16, (hex & 0x00FF00) >> 8, (hex & 0x0000FF)];
+}