| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 | /* Copyright 2020 Mozilla Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *     http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */exports.loadAndWait = (filename, selector) =>  Promise.all(    global.integrationSessions.map(async session => {      const page = await session.browser.newPage();      // In order to avoid errors because of checks which depend on      // a locale.      await page.evaluateOnNewDocument(() => {        Object.defineProperty(navigator, "language", {          get() {            return "en-US";          },        });        Object.defineProperty(navigator, "languages", {          get() {            return ["en-US", "en"];          },        });      });      await page.goto(        `${global.integrationBaseUrl}?file=/test/pdfs/${filename}`      );      await page.bringToFront();      await page.waitForSelector(selector, {        timeout: 0,      });      return [session.name, page];    })  );exports.closePages = pages =>  Promise.all(    pages.map(async ([_, page]) => {      await page.close();    })  );exports.clearInput = async (page, selector) => {  await page.click(selector);  await page.keyboard.down("Control");  await page.keyboard.press("A");  await page.keyboard.up("Control");  await page.keyboard.press("Backspace");};function getSelector(id) {  return `[data-element-id="${id}"]`;}exports.getSelector = getSelector;function getQuerySelector(id) {  return `document.querySelector('${getSelector(id)}')`;}exports.getQuerySelector = getQuerySelector;function getComputedStyleSelector(id) {  return `getComputedStyle(${getQuerySelector(id)})`;}exports.getComputedStyleSelector = getComputedStyleSelector;exports.getEditorSelector = n => `#pdfjs_internal_editor_${n}`;function getSelectedEditors(page) {  return page.evaluate(() => {    const elements = document.querySelectorAll(".selectedEditor");    const results = [];    for (const { id } of elements) {      results.push(parseInt(id.split("_").at(-1)));    }    results.sort();    return results;  });}exports.getSelectedEditors = getSelectedEditors;async function waitForEvent(page, eventName, timeout = 30000) {  await Promise.race([    // add event listener and wait for event to fire before returning    page.evaluate(name => {      return new Promise(resolve => {        document.addEventListener(name, resolve, { once: true });      });    }, eventName),    page.waitForTimeout(timeout),  ]);}exports.waitForEvent = waitForEvent;const waitForStorageEntries = async (page, nEntries) => {  await page.waitForFunction(    n => window.PDFViewerApplication.pdfDocument.annotationStorage.size === n,    {},    nEntries  );};exports.waitForStorageEntries = waitForStorageEntries;const waitForSelectedEditor = async (page, selector) => {  await page.waitForFunction(    sel => document.querySelector(sel).classList.contains("selectedEditor"),    {},    selector  );};exports.waitForSelectedEditor = waitForSelectedEditor;
 |