tor-browser

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

browser_test_docload.js (3365B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 "use strict";
      6 
      7 function busyChecker(isBusy) {
      8  return function (event) {
      9    let scEvent;
     10    try {
     11      scEvent = event.QueryInterface(nsIAccessibleStateChangeEvent);
     12    } catch (e) {
     13      return false;
     14    }
     15 
     16    return scEvent.state == STATE_BUSY && scEvent.isEnabled == isBusy;
     17  };
     18 }
     19 
     20 function inIframeChecker(iframeId) {
     21  return function (event) {
     22    return getAccessibleDOMNodeID(event.accessibleDocument.parent) == iframeId;
     23  };
     24 }
     25 
     26 function urlChecker(url) {
     27  return function (event) {
     28    info(`${event.accessibleDocument.URL} == ${url}`);
     29    return event.accessibleDocument.URL == url;
     30  };
     31 }
     32 
     33 async function runTests(browser) {
     34  let onLoadEvents = waitForEvents([
     35    [EVENT_REORDER, getAccessible(browser)],
     36    [EVENT_DOCUMENT_LOAD_COMPLETE, "body2"],
     37    [EVENT_STATE_CHANGE, busyChecker(false)],
     38    [EVENT_DOCUMENT_LOAD_COMPLETE, inIframeChecker("iframe1")],
     39    [EVENT_STATE_CHANGE, inIframeChecker("iframe1")],
     40  ]);
     41 
     42  BrowserTestUtils.startLoadingURIString(
     43    browser,
     44    `data:text/html;charset=utf-8,
     45    <html><body id="body2">
     46      <iframe id="iframe1" src="http://example.com"></iframe>
     47    </body></html>`
     48  );
     49 
     50  await onLoadEvents;
     51 
     52  onLoadEvents = waitForEvents([
     53    [EVENT_DOCUMENT_LOAD_COMPLETE, urlChecker("about:about")],
     54    [EVENT_STATE_CHANGE, busyChecker(false)],
     55    [EVENT_REORDER, getAccessible(browser)],
     56  ]);
     57 
     58  BrowserTestUtils.startLoadingURIString(browser, "about:about");
     59 
     60  await onLoadEvents;
     61 
     62  onLoadEvents = waitForEvents([
     63    [EVENT_DOCUMENT_RELOAD, evt => evt.isFromUserInput],
     64    [EVENT_REORDER, getAccessible(browser)],
     65    [EVENT_STATE_CHANGE, busyChecker(false)],
     66  ]);
     67 
     68  EventUtils.synthesizeKey("VK_F5", {}, browser.ownerGlobal);
     69 
     70  await onLoadEvents;
     71 
     72  onLoadEvents = waitForEvents([
     73    [EVENT_DOCUMENT_LOAD_COMPLETE, urlChecker("about:mozilla")],
     74    [EVENT_STATE_CHANGE, busyChecker(false)],
     75    [EVENT_REORDER, getAccessible(browser)],
     76  ]);
     77 
     78  BrowserTestUtils.startLoadingURIString(browser, "about:mozilla");
     79 
     80  await onLoadEvents;
     81 
     82  onLoadEvents = waitForEvents([
     83    [EVENT_DOCUMENT_RELOAD, evt => !evt.isFromUserInput],
     84    [EVENT_REORDER, getAccessible(browser)],
     85    [EVENT_STATE_CHANGE, busyChecker(false)],
     86  ]);
     87 
     88  browser.reload();
     89 
     90  await onLoadEvents;
     91 
     92  onLoadEvents = waitForEvents([
     93    // eslint-disable-next-line @microsoft/sdl/no-insecure-url
     94    [EVENT_DOCUMENT_LOAD_COMPLETE, urlChecker("http://www.wronguri.wronguri/")],
     95    [EVENT_STATE_CHANGE, busyChecker(false)],
     96    [EVENT_REORDER, getAccessible(browser)],
     97  ]);
     98 
     99  BrowserTestUtils.startLoadingURIString(
    100    browser,
    101    // eslint-disable-next-line @microsoft/sdl/no-insecure-url
    102    "http://www.wronguri.wronguri/"
    103  );
    104 
    105  await onLoadEvents;
    106 
    107  onLoadEvents = waitForEvents([
    108    [EVENT_DOCUMENT_LOAD_COMPLETE, urlChecker("https://nocert.example.com/")],
    109    [EVENT_STATE_CHANGE, busyChecker(false)],
    110    [EVENT_REORDER, getAccessible(browser)],
    111  ]);
    112 
    113  BrowserTestUtils.startLoadingURIString(
    114    browser,
    115    "https://nocert.example.com:443/"
    116  );
    117 
    118  await onLoadEvents;
    119 }
    120 
    121 /**
    122 * Test events when a document loads.
    123 */
    124 addAccessibleTask("", runTests, { chrome: true, topLevel: true });