Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
/* Any copyright is dedicated to the Public Domain.
const { ImageTestUtils } = ChromeUtils.importESModule(
);
const TEST_ROOT =
const PAGE_URL = TEST_ROOT + "file_favicon_svg.html";
const SVG_URL = TEST_ROOT + "file_favicon.svg";
const SVG_DATA_URL = `data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cmVjdCB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0iZ3JlZW4iIC8+Cjwvc3ZnPgo=`;
add_task(async function () {
await SpecialPowers.pushPrefEnv({
set: [["browser.tabs.remoteSVGIconDecoding", true]],
});
await BrowserTestUtils.withNewTab(
{ gBrowser, url: PAGE_URL, waitForLoad: false },
async browser => {
await waitForFavicon(browser, SVG_URL);
is(browser.mIconURL, SVG_DATA_URL, "Got the SVG data URL");
let tabIconImg = gBrowser
.getTabForBrowser(browser)
.querySelector(".tab-icon-image");
let expectedParams = new URLSearchParams({
url: SVG_DATA_URL,
width: 16,
height: 16,
});
is(
tabIconImg.src,
"moz-remote-image://?" + expectedParams,
"Image was loaded with the moz-remote-image: protocol"
);
if (!tabIconImg.complete) {
info("Awaiting tab-icon-image load");
await new Promise(resolve =>
tabIconImg.addEventListener("load", resolve, { once: true })
);
}
let screenshotDataURL = TestUtils.screenshotArea(tabIconImg, window);
await ImageTestUtils.assertEqualImage(
window,
screenshotDataURL,
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAHElEQVQ4T2NkaGD4z0ABYBw1YNSAUQPAYBgYAACDTRgBSE6IpwAAAABJRU5ErkJggg==",
"Got green favicon"
);
}
);
});