tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

browser_favicon_svg.js (1948B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 * http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 const { ImageTestUtils } = ChromeUtils.importESModule(
      5  "resource://testing-common/ImageTestUtils.sys.mjs"
      6 );
      7 
      8 const TEST_ROOT =
      9  "http://mochi.test:8888/browser/browser/base/content/test/favicons/";
     10 
     11 const PAGE_URL = TEST_ROOT + "file_favicon_svg.html";
     12 const SVG_URL = TEST_ROOT + "file_favicon.svg";
     13 const SVG_DATA_URL = `data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cmVjdCB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0iZ3JlZW4iIC8+Cjwvc3ZnPgo=`;
     14 
     15 add_task(async function () {
     16  await SpecialPowers.pushPrefEnv({
     17    set: [["browser.tabs.remoteSVGIconDecoding", true]],
     18  });
     19 
     20  await BrowserTestUtils.withNewTab(
     21    { gBrowser, url: PAGE_URL, waitForLoad: false },
     22    async browser => {
     23      await waitForFavicon(browser, SVG_URL);
     24      is(browser.mIconURL, SVG_DATA_URL, "Got the SVG data URL");
     25 
     26      let tabIconImg = gBrowser
     27        .getTabForBrowser(browser)
     28        .querySelector(".tab-icon-image");
     29 
     30      let expectedParams = new URLSearchParams({
     31        url: SVG_DATA_URL,
     32        width: 16,
     33        height: 16,
     34      });
     35 
     36      is(
     37        tabIconImg.src,
     38        "moz-remote-image://?" + expectedParams,
     39        "Image was loaded with the moz-remote-image: protocol"
     40      );
     41 
     42      if (!tabIconImg.complete) {
     43        info("Awaiting tab-icon-image load");
     44        await new Promise(resolve =>
     45          tabIconImg.addEventListener("load", resolve, { once: true })
     46        );
     47      }
     48 
     49      let screenshotDataURL = TestUtils.screenshotArea(tabIconImg, window);
     50      await ImageTestUtils.assertEqualImage(
     51        window,
     52        screenshotDataURL,
     53        "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAHElEQVQ4T2NkaGD4z0ABYBw1YNSAUQPAYBgYAACDTRgBSE6IpwAAAABJRU5ErkJggg==",
     54        "Got green favicon"
     55      );
     56    }
     57  );
     58 });