summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/contentTheme/browser_contentTheme_in_process_tab.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/test/contentTheme/browser_contentTheme_in_process_tab.js')
-rw-r--r--browser/base/content/test/contentTheme/browser_contentTheme_in_process_tab.js80
1 files changed, 80 insertions, 0 deletions
diff --git a/browser/base/content/test/contentTheme/browser_contentTheme_in_process_tab.js b/browser/base/content/test/contentTheme/browser_contentTheme_in_process_tab.js
new file mode 100644
index 0000000000..c53e178bc5
--- /dev/null
+++ b/browser/base/content/test/contentTheme/browser_contentTheme_in_process_tab.js
@@ -0,0 +1,80 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+/**
+ * Tests that tabs running in the parent process can hear about updates
+ * to lightweight themes via contentTheme.js.
+ *
+ * The test loads the History Sidebar document in a tab to avoid having
+ * to create a special parent-process page for the LightweightTheme
+ * JSWindow actors.
+ */
+add_task(async function test_in_process_tab() {
+ let win = await BrowserTestUtils.openNewBrowserWindow();
+ const IN_PROCESS_URI = "chrome://browser/content/places/historySidebar.xhtml";
+ const SIDEBAR_BGCOLOR = "rgb(255, 0, 0)";
+ // contentTheme.js will always convert the sidebar text color to rgba, so
+ // we need to compare against that.
+ const SIDEBAR_TEXT_COLOR = "rgba(0, 255, 0, 1)";
+
+ await BrowserTestUtils.withNewTab(
+ {
+ gBrowser: win.gBrowser,
+ url: IN_PROCESS_URI,
+ },
+ async browser => {
+ await SpecialPowers.spawn(
+ browser,
+ [SIDEBAR_BGCOLOR, SIDEBAR_TEXT_COLOR],
+ async (bgColor, textColor) => {
+ let style = content.document.documentElement.style;
+ Assert.notEqual(
+ style.getPropertyValue("--lwt-sidebar-background-color"),
+ bgColor
+ );
+ Assert.notEqual(
+ style.getPropertyValue("--lwt-sidebar-text-color"),
+ textColor
+ );
+ }
+ );
+
+ // Now cobble together a very simple theme that sets the sidebar background
+ // and text color.
+ let lwtData = {
+ theme: {
+ sidebar: SIDEBAR_BGCOLOR,
+ sidebar_text: SIDEBAR_TEXT_COLOR,
+ },
+ darkTheme: null,
+ window: win.docShell.outerWindowID,
+ };
+
+ Services.obs.notifyObservers(lwtData, "lightweight-theme-styling-update");
+
+ await SpecialPowers.spawn(
+ browser,
+ [SIDEBAR_BGCOLOR, SIDEBAR_TEXT_COLOR],
+ async (bgColor, textColor) => {
+ let style = content.document.documentElement.style;
+ Assert.equal(
+ style.getPropertyValue("--lwt-sidebar-background-color"),
+ bgColor,
+ "The sidebar background text color should have been set by " +
+ "contentTheme.js"
+ );
+ Assert.equal(
+ style.getPropertyValue("--lwt-sidebar-text-color"),
+ textColor,
+ "The sidebar background text color should have been set by " +
+ "contentTheme.js"
+ );
+ }
+ );
+ }
+ );
+
+ await BrowserTestUtils.closeWindow(win);
+});