/* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ "use strict"; // Computed view color cycling test. const TEST_URI = ` Some styled text `; add_task(async function () { await addTab("data:text/html;charset=utf-8," + encodeURIComponent(TEST_URI)); const { inspector, view } = await openComputedView(); await selectNode("#matches", inspector); info("Checking the property itself"); let container = getComputedViewPropertyView(view, "color").valueNode; await checkColorCycling(container, view); info("Checking matched selectors"); container = await getComputedViewMatchedRules(view, "color"); await checkColorCycling(container, view); }); async function checkColorCycling(container, view) { const valueNode = container.querySelector(".computed-color"); const win = view.styleWindow; // "Authored" (default; currently the computed value) is( valueNode.textContent, "rgb(255, 0, 0)", "Color displayed as an RGB value." ); const tests = [ { value: "hwb(0 0% 0%)", comment: "Color displayed as an HWB value.", }, { value: "red", comment: "Color displayed as a color name.", }, { value: "#f00", comment: "Color displayed as a HEX value.", }, { value: "hsl(0, 100%, 50%)", comment: "Color displayed as an HSL value.", }, { value: "rgb(255, 0, 0)", comment: "Color displayed as an RGB value again.", }, ]; for (const test of tests) { await checkSwatchShiftClick(container, win, test.value, test.comment); } } async function checkSwatchShiftClick(container, win, expectedValue, comment) { const swatch = container.querySelector(".computed-colorswatch"); const valueNode = container.querySelector(".computed-color"); swatch.scrollIntoView(); const onUnitChange = once(swatch, "unit-change"); EventUtils.synthesizeMouseAtCenter( swatch, { type: "mousedown", shiftKey: true, }, win ); // we need to have the mouse up event in order to make sure that the platform // lets go of the last container, and is not waiting for something to happen. // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1442153 EventUtils.synthesizeMouseAtCenter(swatch, { type: "mouseup" }, win); await onUnitChange; is(valueNode.textContent, expectedValue, comment); }