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 });