From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- .../components/pdfjs/test/browser_pdfjs_filters.js | 81 ++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 toolkit/components/pdfjs/test/browser_pdfjs_filters.js (limited to 'toolkit/components/pdfjs/test/browser_pdfjs_filters.js') diff --git a/toolkit/components/pdfjs/test/browser_pdfjs_filters.js b/toolkit/components/pdfjs/test/browser_pdfjs_filters.js new file mode 100644 index 0000000000..87d1104a84 --- /dev/null +++ b/toolkit/components/pdfjs/test/browser_pdfjs_filters.js @@ -0,0 +1,81 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +const RELATIVE_DIR = "toolkit/components/pdfjs/test/"; +const TESTROOT = "https://example.com/browser/" + RELATIVE_DIR; + +/** + * Get the number of red pixels in the canvas. + * @param {Object} browser + * @returns {Object} + */ +async function getRedPixels(browser) { + return SpecialPowers.spawn(browser, [], async function () { + const { document } = content; + const canvas = document.querySelector("canvas"); + + Assert.ok(!!canvas, "We must have a canvas"); + + const data = canvas + .getContext("2d") + .getImageData(0, 0, canvas.width, canvas.height).data; + + let redPixels = 0; + let total = 0; + + for (let i = 0, ii = data.length; i < ii; i += 4) { + const R = data[i]; + const G = data[i + 1]; + const B = data[i + 2]; + + if (R > 128 && R > 4 * G && R > 4 * B) { + redPixels += 1; + } + total += 1; + } + + return [redPixels, total]; + }); +} + +/** + * Test that the pdf has the correct color thanks to the SVG filters. + */ +add_task(async function test() { + let mimeService = Cc["@mozilla.org/mime;1"].getService(Ci.nsIMIMEService); + let handlerInfo = mimeService.getFromTypeAndExtension( + "application/pdf", + "pdf" + ); + + // Make sure pdf.js is the default handler. + is( + handlerInfo.alwaysAskBeforeHandling, + false, + "pdf handler defaults to always-ask is false" + ); + is( + handlerInfo.preferredAction, + Ci.nsIHandlerInfo.handleInternally, + "pdf handler defaults to internal" + ); + + info("Pref action: " + handlerInfo.preferredAction); + + await BrowserTestUtils.withNewTab( + { gBrowser, url: "about:blank" }, + async function (browser) { + // check that PDF is opened with internal viewer + await waitForPdfJSCanvas( + browser, + `${TESTROOT}file_pdfjs_transfer_map.pdf#zoom=100` + ); + + const [redPixels, total] = await getRedPixels(browser); + Assert.ok( + redPixels / total >= 0.1, + `Not enough red pixels: only ${redPixels} / ${total} red pixels!` + ); + } + ); +}); -- cgit v1.2.3