Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* 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/. */
function getPageURL(domain) {
// The iframe in file_browsingContext_iframeWebProgress.html is hardcoded to
// point to example.com
return (
getRootDirectory(gTestPath).replace(
`https://${domain}`
) + "file_browsingContext_iframeWebProgress.html"
);
}
const SAME_ORIGIN_IFRAME_PAGE = getPageURL("example.com");
const CROSS_ORIGIN_IFRAME_PAGE = getPageURL("example.org");
add_task(async function testReloadCrossOriginIframePage() {
await testReloadPageWithIframe(CROSS_ORIGIN_IFRAME_PAGE);
});
add_task(async function testReloadSameOriginIframePage() {
await testReloadPageWithIframe(SAME_ORIGIN_IFRAME_PAGE);
});
async function testReloadPageWithIframe(url) {
const tab = BrowserTestUtils.addTab(gBrowser, url);
const browser = tab.linkedBrowser;
await BrowserTestUtils.browserLoaded(browser, false, url);
const onStateChangeEvents = [];
const listener = {
QueryInterface: ChromeUtils.generateQI([
"nsIWebProgressListener",
"nsISupportsWeakReference",
]),
onStateChange(webProgress, request, flags) {
if (flags & Ci.nsIWebProgressListener.STATE_START) {
onStateChangeEvents.push(
request.QueryInterface(Ci.nsIChannel).originalURI
);
}
},
};
browser.browsingContext.webProgress.addProgressListener(
listener,
Ci.nsIWebProgress.NOTIFY_STATE_WINDOW
);
BrowserTestUtils.reloadTab(tab);
await BrowserTestUtils.waitForCondition(
() => onStateChangeEvents.length == 2
);
is(onStateChangeEvents.length, 2);
gBrowser.removeTab(tab);
}