summaryrefslogtreecommitdiffstats
path: root/layout/style/test/test_crash_with_content_policy.html
diff options
context:
space:
mode:
Diffstat (limited to 'layout/style/test/test_crash_with_content_policy.html')
-rw-r--r--layout/style/test/test_crash_with_content_policy.html75
1 files changed, 75 insertions, 0 deletions
diff --git a/layout/style/test/test_crash_with_content_policy.html b/layout/style/test/test_crash_with_content_policy.html
new file mode 100644
index 0000000000..119ee0b53a
--- /dev/null
+++ b/layout/style/test/test_crash_with_content_policy.html
@@ -0,0 +1,75 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Crashtests for style system with content policy</title>
+ <script src="/tests/SimpleTest/SimpleTest.js"></script>
+ <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+</head>
+<body>
+<iframe id="iframe"></iframe>
+<script>
+const TESTS = [
+ "file_bug1381233.html",
+];
+
+const Cc = SpecialPowers.Cc;
+const Ci = SpecialPowers.Ci;
+
+var policyID = SpecialPowers.wrap(SpecialPowers.Components).ID("{b80e19d0-878f-d41b-2654-194714a4115c}");
+var policyName = "@mozilla.org/testpolicy;1";
+var policy = {
+ // nsISupports implementation
+ QueryInterface: function(iid) {
+
+ iid = SpecialPowers.wrap(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: function(outer, iid) {
+ return this.QueryInterface(iid);
+ },
+
+ // nsIContentPolicy implementation
+ shouldLoad: function(contentLocation, loadInfo, mimeTypeGuess) {
+ info(`shouldLoad is invoked for ${SpecialPowers.wrap(contentLocation).spec}`);
+ return Ci.nsIContentPolicy.ACCEPT;
+ },
+ shouldProcess: function(contentLocation, loadInfo, mimeTypeGuess) {
+ return Ci.nsIContentPolicy.ACCEPT;
+ }
+}
+policy = SpecialPowers.wrapCallbackObject(policy);
+
+// Register content policy
+var componentManager = SpecialPowers.wrap(SpecialPowers.Components).manager
+ .QueryInterface(Ci.nsIComponentRegistrar);
+componentManager.registerFactory(policyID, "Test content policy", policyName, policy);
+var categoryManager = Cc["@mozilla.org/categorymanager;1"].getService(Ci.nsICategoryManager);
+categoryManager.addCategoryEntry("content-policy", policyName, policyName, false, true);
+
+
+SimpleTest.waitForExplicitFinish();
+
+async function runTests() {
+ let iframe = document.getElementById("iframe");
+ for (let test of TESTS) {
+ iframe.src = test;
+ await new Promise(resolve => {
+ iframe.onload = resolve;
+ });
+ ok(true, `${test} doesn't crash`);
+ }
+ categoryManager.deleteCategoryEntry("content-policy", policyName, false);
+ componentManager.unregisterFactory(policyID, policy);
+ SimpleTest.finish();
+}
+runTests();
+</script>
+</body>
+</html>