зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1277803 - Part 5 : A test to verify the loadingPrincipal of favicon loads. r=ckerschb
This commit is contained in:
Родитель
17d537f0e1
Коммит
f4e92ab657
|
@ -0,0 +1,11 @@
|
|||
<html>
|
||||
|
||||
<head>
|
||||
<link rel='icon' href='favicon_bug1277803.ico'>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
Nothing to see here...
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -0,0 +1,7 @@
|
|||
[DEFAULT]
|
||||
support-files =
|
||||
favicon_bug1277803.ico
|
||||
bug1277803.html
|
||||
|
||||
[test_bug1277803.xul]
|
||||
skip-if = os == 'android'
|
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 1.4 KiB |
|
@ -0,0 +1,99 @@
|
|||
<?xml version="1.0"?>
|
||||
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
|
||||
|
||||
<window title="Bug 1277803 test"
|
||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
width="600"
|
||||
height="600"
|
||||
onload="runTest();">
|
||||
|
||||
<script type="application/javascript"
|
||||
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
|
||||
|
||||
<body xmlns="http://www.w3.org/1999/xhtml">
|
||||
</body>
|
||||
|
||||
<script type="application/javascript"><![CDATA[
|
||||
SimpleTest.requestCompleteLog();
|
||||
let Ci = Components.interfaces;
|
||||
let Cc = Components.classes;
|
||||
let Cu = Components.utils;
|
||||
let makeURI = Cu.import("resource://gre/modules/BrowserUtils.jsm", {}).BrowserUtils.makeURI;
|
||||
|
||||
const BASE_URI = "http://mochi.test:8888/chrome/dom/security/test/general/";
|
||||
const FAVICON_URI = BASE_URI + "favicon_bug1277803.ico";
|
||||
const LOADING_URI = BASE_URI + "bug1277803.html";
|
||||
let testWindow; //will be used to trigger favicon load
|
||||
|
||||
let securityManager = Cc["@mozilla.org/scriptsecuritymanager;1"].
|
||||
getService(Ci.nsIScriptSecurityManager);
|
||||
let expectedPrincipal = securityManager.createCodebasePrincipal(makeURI(LOADING_URI), {});
|
||||
let systemPrincipal = Cc["@mozilla.org/systemprincipal;1"].createInstance();
|
||||
|
||||
// We expect 2 favicon loads, one from PlacesUIUtils.loadFavicon and one
|
||||
// from XUL:image loads.
|
||||
let requestXUL = false;
|
||||
let requestPlaces = false;
|
||||
|
||||
function runTest() {
|
||||
// Register our observer to intercept favicon requests.
|
||||
let os = Cc["@mozilla.org/observer-service;1"].
|
||||
getService(Ci.nsIObserverService);
|
||||
let observer = {
|
||||
observe: function(aSubject, aTopic, aData)
|
||||
{
|
||||
// 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;
|
||||
|
||||
if (loadingPrincipal.equals(systemPrincipal)) {
|
||||
// This is the favicon loading from XUL, which will have the system
|
||||
// principal as its loading principal and have a content principal
|
||||
// as its triggering principal.
|
||||
ok(triggeringPrincipal.equals(expectedPrincipal),
|
||||
"Correct triggeringPrincipal for favicon from XUL.");
|
||||
requestXUL = true;
|
||||
} else if (loadingPrincipal.equals(expectedPrincipal)) {
|
||||
// This is the favicon loading from Places, which will have a
|
||||
// content principal as its loading principal and triggering
|
||||
// principal.
|
||||
ok(triggeringPrincipal.equals(expectedPrincipal),
|
||||
"Correct triggeringPrincipal for favicon from Places.");
|
||||
requestPlaces = true;
|
||||
} else {
|
||||
ok(false, "An unexpected favicon request.")
|
||||
}
|
||||
|
||||
// Cleanup after ourselves...
|
||||
if (requestXUL && requestPlaces) {
|
||||
os.removeObserver(this, "http-on-modify-request");
|
||||
SimpleTest.finish();
|
||||
}
|
||||
}
|
||||
}
|
||||
os.addObserver(observer, "http-on-modify-request", false);
|
||||
|
||||
// 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" flex="1" id="content" src="about:blank"/>
|
||||
</window>
|
|
@ -22,6 +22,7 @@ MOCHITEST_MANIFESTS += [
|
|||
|
||||
MOCHITEST_CHROME_MANIFESTS += [
|
||||
'csp/chrome.ini',
|
||||
'general/chrome.ini',
|
||||
]
|
||||
|
||||
BROWSER_CHROME_MANIFESTS += [
|
||||
|
|
Загрузка…
Ссылка в новой задаче