fune/toolkit/components/extensions/test/browser/browser_ext_themes_sanitization.js
Gijs Kruitbosch 67504fbf58 Bug 1460287 - use black as a fallback for textcolor and always set lwtheme attribute if theme is active, r=dao
MozReview-Commit-ID: 30NKcuz94d

--HG--
extra : rebase_source : 26681fd1c7256a1a73a2b259675c1a795d17ee84
2018-05-11 18:48:53 +01:00

156 lines
4.1 KiB
JavaScript

"use strict";
// This test checks color sanitization in various situations
add_task(async function test_sanitization_invalid() {
// This test checks that invalid values are sanitized
let extension = ExtensionTestUtils.loadExtension({
manifest: {
"theme": {
"colors": {
"accentcolor": ACCENT_COLOR,
"textcolor": TEXT_COLOR,
"toolbar_bottom_separator": "ntimsfavoriteblue",
},
},
},
});
let docEl = document.documentElement;
let transitionPromise = waitForTransition(docEl, "background-color");
await extension.startup();
await transitionPromise;
let toolbox = document.querySelector("#navigator-toolbox");
Assert.equal(
window.getComputedStyle(toolbox, "::after").borderBottomColor,
"rgb(0, 0, 0)",
"All invalid values should always compute to black."
);
await extension.unload();
});
add_task(async function test_sanitization_css_variables() {
// This test checks that CSS variables are sanitized
let extension = ExtensionTestUtils.loadExtension({
manifest: {
"theme": {
"colors": {
"accentcolor": ACCENT_COLOR,
"textcolor": TEXT_COLOR,
"toolbar_bottom_separator": "var(--arrowpanel-dimmed)",
},
},
},
});
let docEl = document.documentElement;
let transitionPromise = waitForTransition(docEl, "background-color");
await extension.startup();
await transitionPromise;
let toolbox = document.querySelector("#navigator-toolbox");
Assert.equal(
window.getComputedStyle(toolbox, "::after").borderBottomColor,
"rgb(0, 0, 0)",
"All CSS variables should always compute to black."
);
await extension.unload();
});
add_task(async function test_sanitization_transparent() {
// This test checks whether transparent values are applied properly
let extension = ExtensionTestUtils.loadExtension({
manifest: {
"theme": {
"colors": {
"accentcolor": ACCENT_COLOR,
"textcolor": TEXT_COLOR,
"toolbar_top_separator": "transparent",
"toolbar_bottom_separator": "transparent",
},
},
},
});
let docEl = document.documentElement;
let transitionPromise = waitForTransition(docEl, "background-color");
await extension.startup();
await transitionPromise;
let navbar = document.querySelector("#nav-bar");
Assert.ok(
window.getComputedStyle(navbar).boxShadow.includes("rgba(0, 0, 0, 0)"),
"Top separator should be transparent"
);
let toolbox = document.querySelector("#navigator-toolbox");
Assert.equal(
window.getComputedStyle(toolbox, "::after").borderBottomColor,
"rgba(0, 0, 0, 0)",
"Bottom separator should be transparent"
);
await extension.unload();
});
add_task(async function test_sanitization_transparent_accentcolor() {
// This test checks whether transparent accentcolor falls back to white.
let extension = ExtensionTestUtils.loadExtension({
manifest: {
"theme": {
"colors": {
"accentcolor": "transparent",
"textcolor": TEXT_COLOR,
},
},
},
});
let docEl = document.documentElement;
let transitionPromise = waitForTransition(docEl, "background-color");
await extension.startup();
await transitionPromise;
Assert.equal(
window.getComputedStyle(docEl).backgroundColor,
"rgb(255, 255, 255)",
"Accent color should be white",
);
await extension.unload();
});
add_task(async function test_sanitization_transparent_textcolor() {
// This test checks whether transparent textcolor falls back to black.
let extension = ExtensionTestUtils.loadExtension({
manifest: {
"theme": {
"colors": {
"accentcolor": ACCENT_COLOR,
"textcolor": "transparent",
},
},
},
});
let docEl = document.documentElement;
let transitionPromise = waitForTransition(docEl, "background-color");
await extension.startup();
await transitionPromise;
Assert.equal(
window.getComputedStyle(docEl).color,
"rgb(0, 0, 0)",
"Text color should be black",
);
await extension.unload();
});