/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
Services.scriptloader.loadSubScript(
"chrome://mochitests/content/browser/devtools/client/webconsole/test/browser/shared-head.js",
this
);
// The mask image is served from example.com while the test page is served from
// example.org.
const MASK_SRC = URL_ROOT_COM_SSL + "square_svg.sjs";
const STYLE_ATTRIBUTE = `mask-image: url("${MASK_SRC}"); width:10px; height: 10px; background: red;`;
const TEST_URL = `https://example.org/document-builder.sjs?html=
`;
// Used to assert screenshot colors.
const RED = { r: 255, g: 0, b: 0 };
add_task(async function () {
await addTab(TEST_URL);
const { inspector, toolbox, view } = await openRuleView();
info("Open the splitconsole to check for CORS messages");
await toolbox.toggleSplitConsole();
await selectNode("div", inspector);
info("Take a node screenshot, mask is applied, should be red");
const beforeScreenshot = await takeNodeScreenshot(inspector);
await assertSingleColorScreenshotImage(beforeScreenshot, 10, 10, RED);
info("Update a property from the rule view");
const heightProperty = getTextProperty(view, 0, { height: "10px" });
await setProperty(view, heightProperty, "11px");
info("Wait until the style has been applied in the content page");
await SpecialPowers.spawn(gBrowser.selectedBrowser, [], async () => {
await ContentTaskUtils.waitForCondition(
() => content.document.querySelector("div").style.height == "11px"
);
});
// Wait for some time in case the image needs to be reloaded, and to allow
// error messages (if any) to be rendered.
await wait(1000);
info("Take another screenshot, mask should still apply, should be red");
const afterScreenshot = await takeNodeScreenshot(inspector);
await assertSingleColorScreenshotImage(afterScreenshot, 10, 11, RED);
const hud = toolbox.getPanel("webconsole").hud;
ok(
!findMessageByType(hud, "Cross-Origin Request Blocked", ".error"),
"No message was logged about a CORS issue"
);
info("Close split console");
await toolbox.toggleSplitConsole();
});