Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Errors

"use strict";
add_task(async function test_support_backgrounds_position() {
let extension = ExtensionTestUtils.loadExtension({
manifest: {
theme: {
images: {
theme_frame: "face1.png",
additional_backgrounds: ["face2.png", "face2.png", "face2.png"],
},
colors: {
frame: `rgb(${FRAME_COLOR.join(",")})`,
tab_background_text: `rgb(${TAB_BACKGROUND_TEXT_COLOR.join(",")})`,
},
properties: {
additional_backgrounds_alignment: [
"left top",
"center top",
"right bottom",
],
},
},
},
files: {
"face1.png": imageBufferFromDataURI(ENCODED_IMAGE_DATA),
"face2.png": imageBufferFromDataURI(ENCODED_IMAGE_DATA),
},
});
await extension.startup();
let docEl = window.document.documentElement;
let toolbox = document.querySelector("#navigator-toolbox");
Assert.ok(docEl.hasAttribute("lwtheme"), "LWT attribute should be set");
Assert.equal(
docEl.getAttribute("lwtheme-brighttext"),
"true",
"LWT text color attribute should be set"
);
let toolboxCS = window.getComputedStyle(toolbox);
let toolboxBgImage = toolboxCS.backgroundImage.split(",")[0].trim();
Assert.equal(
toolboxCS.backgroundImage,
[1, 2, 2, 2]
.map(num => toolboxBgImage.replace(/face[\d]*/, `face${num}`))
.join(", "),
"The backgroundImage should use face1.png once and face2.png three times."
);
Assert.equal(
toolboxCS.backgroundPosition,
"100% 0%, 0% 0%, 50% 0%, 100% 100%",
"The backgroundPosition should use the three values provided, preceded by the default for theme_frame."
);
/**
* We expect duplicate background-repeat values because we apply `no-repeat`
* once for theme_frame, and again as the default value of
* --lwt-background-tiling.
*/
Assert.equal(
toolboxCS.backgroundRepeat,
"no-repeat, no-repeat",
"The backgroundPosition should use the default value."
);
await extension.unload();
Assert.ok(!docEl.hasAttribute("lwtheme"), "LWT attribute should not be set");
toolboxCS = window.getComputedStyle(toolbox);
// Styles should've reverted to their initial values.
Assert.equal(toolboxCS.backgroundImage, "none");
Assert.equal(toolboxCS.backgroundPosition, "0% 0%");
Assert.equal(toolboxCS.backgroundRepeat, "repeat");
});
add_task(async function test_support_backgrounds_repeat() {
let extension = ExtensionTestUtils.loadExtension({
manifest: {
theme: {
images: {
theme_frame: "face0.png",
additional_backgrounds: ["face1.png", "face2.png", "face3.png"],
},
colors: {
frame: FRAME_COLOR,
tab_background_text: TAB_BACKGROUND_TEXT_COLOR,
},
properties: {
additional_backgrounds_tiling: ["repeat-x", "repeat-y", "repeat"],
},
},
},
files: {
"face0.png": imageBufferFromDataURI(ENCODED_IMAGE_DATA),
"face1.png": imageBufferFromDataURI(ENCODED_IMAGE_DATA),
"face2.png": imageBufferFromDataURI(ENCODED_IMAGE_DATA),
"face3.png": imageBufferFromDataURI(ENCODED_IMAGE_DATA),
},
});
await extension.startup();
let docEl = window.document.documentElement;
let toolbox = document.querySelector("#navigator-toolbox");
Assert.ok(docEl.hasAttribute("lwtheme"), "LWT attribute should be set");
Assert.equal(
docEl.getAttribute("lwtheme-brighttext"),
"true",
"LWT text color attribute should be set"
);
let toolboxCS = window.getComputedStyle(toolbox);
let toolboxImage = toolboxCS.backgroundImage.split(",")[0].trim();
Assert.equal(
[0, 1, 2, 3]
.map(num => toolboxImage.replace(/face[\d]*/, `face${num}`))
.join(", "),
toolboxCS.backgroundImage,
"The backgroundImage should use face.png four times."
);
/**
* We expect duplicate background-position values because we apply `right top`
* once for theme_frame, and again as the default value of
* --lwt-background-alignment.
*/
Assert.equal(
toolboxCS.backgroundPosition,
"100% 0%, 100% 0%",
"The backgroundPosition should use the default value for navigator-toolbox."
);
Assert.equal(
toolboxCS.backgroundRepeat,
"no-repeat, repeat-x, repeat-y, repeat",
"The backgroundRepeat should use the three values provided for --lwt-background-tiling, preceeded by the default for theme_frame."
);
await extension.unload();
Assert.ok(!docEl.hasAttribute("lwtheme"), "LWT attribute should not be set");
});
add_task(async function test_additional_images_check() {
let extension = ExtensionTestUtils.loadExtension({
manifest: {
theme: {
images: {
theme_frame: "face.png",
},
colors: {
frame: FRAME_COLOR,
tab_background_text: TAB_BACKGROUND_TEXT_COLOR,
},
properties: {
additional_backgrounds_tiling: ["repeat-x", "repeat-y", "repeat"],
},
},
},
files: {
"face.png": imageBufferFromDataURI(ENCODED_IMAGE_DATA),
},
});
await extension.startup();
let docEl = window.document.documentElement;
let toolbox = document.querySelector("#navigator-toolbox");
Assert.ok(docEl.hasAttribute("lwtheme"), "LWT attribute should be set");
Assert.equal(
docEl.getAttribute("lwtheme-brighttext"),
"true",
"LWT text color attribute should be set"
);
let toolboxCS = window.getComputedStyle(toolbox);
let bgImage = toolboxCS.backgroundImage.split(",")[0].trim();
Assert.ok(
bgImage.includes("face.png"),
`The backgroundImage should use face.png. Actual value is: ${bgImage}`
);
Assert.ok(
bgImage.includes("face.png"),
`The backgroundImage should use face.png. Actual value is: ${bgImage}`
);
Assert.equal(
toolboxCS.backgroundPosition,
"100% 0%, 100% 0%",
"The backgroundPosition should use the default value."
);
Assert.equal(
toolboxCS.backgroundRepeat,
"no-repeat, no-repeat",
"The backgroundRepeat should use the default value."
);
await extension.unload();
Assert.ok(!docEl.hasAttribute("lwtheme"), "LWT attribute should not be set");
});