Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- Manifest: docshell/test/browser/browser.toml
/* 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,
function getPageURL(domain) {
// The iframe in file_browsingContext_iframeWebProgress.html is hardcoded to
// point to example.com
return (
getRootDirectory(gTestPath).replace(
) + "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);
}