fune/dom/base/test/test_bug498897.html
Andrew McCreight c8c5c819df Bug 1514936, part 1 - Remove the outer argument to nsIFactory::createInstance. r=xpcom-reviewers,preferences-reviewers,nika,Gijs
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
2022-05-17 20:24:19 +00:00

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>