Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test gets skipped with pattern: os == 'android' OR verify
- Manifest: dom/security/test/general/chrome.toml
<?xml version="1.0"?>
width="600"
height="600"
onload="runTest();">
</body>
<script type="application/javascript"><![CDATA[
SimpleTest.requestCompleteLog();
const FAVICON_URI = BASE_URI + "favicon_bug1277803.ico";
let testWindow; //will be used to trigger favicon load
let expectedPrincipal = Services.scriptSecurityManager
.createContentPrincipal(Services.io.newURI(LOADING_URI), {});
let systemPrincipal = Services.scriptSecurityManager.getSystemPrincipal();
function runTest() {
// Register our observer to intercept favicon requests.
function observer(aSubject, aTopic) {
// Make sure this is a favicon request.
let httpChannel = aSubject.QueryInterface(Ci.nsIHttpChannel);
if (FAVICON_URI != httpChannel.URI.spec) {
return;
}
// Ensure the topic is the one we set an observer for.
is(aTopic, "http-on-modify-request", "Expected observer topic");
// Check for the correct loadingPrincipal, triggeringPrincipal.
let triggeringPrincipal = httpChannel.loadInfo.triggeringPrincipal;
let loadingPrincipal = httpChannel.loadInfo.loadingPrincipal;
ok(loadingPrincipal.equals(expectedPrincipal), "Should be loading with the expected principal.");
ok(triggeringPrincipal.equals(expectedPrincipal), "Should be triggered with the expected principal.");
Services.obs.removeObserver(this, "http-on-modify-request");
SimpleTest.finish();
}
Services.obs.addObserver(observer, "http-on-modify-request");
// Now that the observer is set up, trigger a favicon load with navigation
testWindow = window.open(LOADING_URI);
}
SimpleTest.waitForExplicitFinish();
SimpleTest.registerCleanupFunction(function() {
if (testWindow) {
testWindow.close();
}
});
]]></script>
<browser type="content" primary="true" flex="1" id="content" src="about:blank"/>
</window>