diff options
Diffstat (limited to 'accessible/tests/browser/fission/browser_src_change.js')
-rw-r--r-- | accessible/tests/browser/fission/browser_src_change.js | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/accessible/tests/browser/fission/browser_src_change.js b/accessible/tests/browser/fission/browser_src_change.js new file mode 100644 index 0000000000..e97cda3cc3 --- /dev/null +++ b/accessible/tests/browser/fission/browser_src_change.js @@ -0,0 +1,62 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +/* import-globals-from ../../mochitest/role.js */ +loadScripts({ name: "role.js", dir: MOCHITESTS_DIR }); + +addAccessibleTask( + `<input id="textbox" value="hello"/>`, + async function (browser, iframeDocAcc, contentDocAcc) { + info( + "Check that the IFRAME and the IFRAME document are accessible initially." + ); + let iframeAcc = findAccessibleChildByID(contentDocAcc, DEFAULT_IFRAME_ID); + ok(isAccessible(iframeAcc), "IFRAME should be accessible"); + ok(isAccessible(iframeDocAcc), "IFRAME document should be accessible"); + + info("Replace src URL for the IFRAME with one with different origin."); + const onDocLoad = waitForEvent( + EVENT_DOCUMENT_LOAD_COMPLETE, + DEFAULT_IFRAME_DOC_BODY_ID + ); + + await SpecialPowers.spawn( + browser, + [DEFAULT_IFRAME_ID, CURRENT_CONTENT_DIR], + (id, olddir) => { + const { src } = content.document.getElementById(id); + content.document.getElementById(id).src = src.replace( + olddir, + // eslint-disable-next-line @microsoft/sdl/no-insecure-url + "http://example.net/browser/accessible/tests/browser/" + ); + } + ); + const newiframeDocAcc = (await onDocLoad).accessible; + + ok(isAccessible(iframeAcc), "IFRAME should be accessible"); + ok( + isAccessible(newiframeDocAcc), + "new IFRAME document should be accessible" + ); + isnot( + iframeDocAcc, + newiframeDocAcc, + "A new accessible is created for a IFRAME document." + ); + is( + iframeAcc.firstChild, + newiframeDocAcc, + "An IFRAME has a new accessible for a IFRAME document as a child." + ); + is( + newiframeDocAcc.parent, + iframeAcc, + "A new accessible for a IFRAME document has an IFRAME as a parent." + ); + }, + { topLevel: false, iframe: true, remoteIframe: true } +); |