forked from mirrors/gecko-dev
This patch won't actually build, because a few bits of code are used for both nsIFactory::createInstance and static components, and static components are not fixed until the next patch. The first place is nsLoadGroupConstructor, which uses an nsIFactory macro to create a static component constructor. (This could be worked around by expanding the macro to the state before this patch.) The other issue is that nsAppShellConstructor is used in an nsIFactory on OSX, but as a static component on all other platforms. This could be worked around by wrapping nsAppShellConstructor in an adaptor that passes in the extra null argument to nsAppShellConstructor. Differential Revision: https://phabricator.services.mozilla.com/D146456
97 lines
2.8 KiB
HTML
97 lines
2.8 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<!--
|
|
https://bugzilla.mozilla.org/show_bug.cgi?id=498897
|
|
-->
|
|
<head>
|
|
<title>Test for Bug 498897</title>
|
|
<script src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
</head>
|
|
<body>
|
|
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=498897">Mozilla Bug 498897</a>
|
|
<p id="display"><iframe id="testframe"></iframe></p>
|
|
<div id="content" style="display: none">
|
|
|
|
</div>
|
|
<pre id="test">
|
|
<script type="application/javascript">
|
|
|
|
/** Test for Bug 498897 **/
|
|
|
|
var checkedLoad = false;
|
|
|
|
const Cc = SpecialPowers.Cc;
|
|
const Ci = SpecialPowers.Ci;
|
|
|
|
// Content policy / factory implementation for the test
|
|
var policyID = SpecialPowers.wrap(SpecialPowers.Components).ID("{65944d64-2390-422e-bea3-80d0af7f69ef}");
|
|
var policyName = "@mozilla.org/498897_testpolicy;1";
|
|
var policy = {
|
|
// nsISupports implementation
|
|
QueryInterface(iid) {
|
|
if (iid.equals(Ci.nsISupports) ||
|
|
iid.equals(Ci.nsIFactory) ||
|
|
iid.equals(Ci.nsIContentPolicy))
|
|
return this;
|
|
|
|
throw SpecialPowers.Cr.NS_ERROR_NO_INTERFACE;
|
|
},
|
|
|
|
// nsIFactory implementation
|
|
createInstance(iid) {
|
|
return this.QueryInterface(iid);
|
|
},
|
|
|
|
// nsIContentPolicy implementation
|
|
shouldLoad(contentLocation, loadInfo, mimeTypeGuess) {
|
|
var url = window.location.href.substr(0, window.location.href.indexOf('test_bug498897'));
|
|
let loadingPrincipal = loadInfo.loadingPrincipal;
|
|
if (loadingPrincipal) {
|
|
requestOrigin = loadingPrincipal.spec;
|
|
}
|
|
if (contentLocation.spec == url + "file_bug498897.css" &&
|
|
requestOrigin == url + "file_bug498897.html") {
|
|
checkedLoad = true;
|
|
}
|
|
|
|
return Ci.nsIContentPolicy.ACCEPT;
|
|
},
|
|
|
|
shouldProcess(contentLocation, loadInfo, mimeTypeGuess) {
|
|
return Ci.nsIContentPolicy.ACCEPT;
|
|
}
|
|
}
|
|
policy = SpecialPowers.wrapCallbackObject(policy);
|
|
|
|
var componentManager = SpecialPowers.wrap(SpecialPowers.Components).manager
|
|
.QueryInterface(Ci.nsIComponentRegistrar);
|
|
componentManager.registerFactory(policyID, "Test content policy for bug 498897",
|
|
policyName, policy);
|
|
|
|
var categoryManager =
|
|
Cc["@mozilla.org/categorymanager;1"].getService(Ci.nsICategoryManager);
|
|
categoryManager.addCategoryEntry("content-policy", policyName, policyName,
|
|
false, true);
|
|
|
|
function testFinished()
|
|
{
|
|
ok(checkedLoad, "Content policy didn't get called!");
|
|
|
|
categoryManager.deleteCategoryEntry("content-policy", policyName, false);
|
|
|
|
setTimeout(function() {
|
|
componentManager.unregisterFactory(policyID, policy);
|
|
|
|
SimpleTest.finish();
|
|
}, 0);
|
|
}
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
|
|
document.getElementById("testframe").src = "file_bug498897.html";
|
|
|
|
</script>
|
|
</pre>
|
|
</body>
|
|
</html>
|