aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/testbinding.rs9
-rw-r--r--components/script/dom/webidls/TestBinding.webidl5
-rw-r--r--resources/prefs.json1
-rw-r--r--tests/wpt/mozilla/meta/MANIFEST.json6
-rw-r--r--tests/wpt/mozilla/meta/mozilla/sigsegv.html.ini4
-rw-r--r--tests/wpt/mozilla/tests/mozilla/sigsegv.html8
6 files changed, 33 insertions, 0 deletions
diff --git a/components/script/dom/testbinding.rs b/components/script/dom/testbinding.rs
index 95341751780..bbbbc8aa5d6 100644
--- a/components/script/dom/testbinding.rs
+++ b/components/script/dom/testbinding.rs
@@ -571,6 +571,15 @@ impl TestBindingMethods for TestBinding {
fn FuncControlledAttributeEnabled(&self) -> bool { false }
fn FuncControlledMethodDisabled(&self) {}
fn FuncControlledMethodEnabled(&self) {}
+
+ #[allow(unsafe_code)]
+ fn CrashHard(&self) {
+ static READ_ONLY_VALUE: i32 = 0;
+ unsafe {
+ let p: *mut u32 = &READ_ONLY_VALUE as *const _ as *mut _;
+ ptr::write_volatile(p, 0xbaadc0de);
+ }
+ }
}
impl TestBinding {
diff --git a/components/script/dom/webidls/TestBinding.webidl b/components/script/dom/webidls/TestBinding.webidl
index cdfb9fd18ae..eb6e5a9ae7b 100644
--- a/components/script/dom/webidls/TestBinding.webidl
+++ b/components/script/dom/webidls/TestBinding.webidl
@@ -456,3 +456,8 @@ interface TestBinding {
[Func="TestBinding::condition_satisfied"]
const unsigned short funcControlledConstEnabled = 0;
};
+
+partial interface TestBinding {
+ [Pref="dom.testable_crash.enabled"]
+ void crashHard();
+};
diff --git a/resources/prefs.json b/resources/prefs.json
index 0289050a162..6124c2376c3 100644
--- a/resources/prefs.json
+++ b/resources/prefs.json
@@ -4,6 +4,7 @@
"dom.mouseevent.which.enabled": false,
"dom.mozbrowser.enabled": false,
"dom.serviceworker.timeout_seconds": 60,
+ "dom.testable_crash.enabled": false,
"dom.testbinding.enabled": false,
"gfx.webrender.enabled": false,
"js.baseline.enabled": true,
diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json
index fb6b4466bab..54bd069d3e7 100644
--- a/tests/wpt/mozilla/meta/MANIFEST.json
+++ b/tests/wpt/mozilla/meta/MANIFEST.json
@@ -6946,6 +6946,12 @@
"url": "/_mozilla/mozilla/service-workers/service-worker-registration.html"
}
],
+ "mozilla/sigsegv.html": [
+ {
+ "path": "mozilla/sigsegv.html",
+ "url": "/_mozilla/mozilla/sigsegv.html"
+ }
+ ],
"mozilla/storage.html": [
{
"path": "mozilla/storage.html",
diff --git a/tests/wpt/mozilla/meta/mozilla/sigsegv.html.ini b/tests/wpt/mozilla/meta/mozilla/sigsegv.html.ini
new file mode 100644
index 00000000000..b6d80eeff3b
--- /dev/null
+++ b/tests/wpt/mozilla/meta/mozilla/sigsegv.html.ini
@@ -0,0 +1,4 @@
+[sigsegv.html]
+ type: testharness
+ prefs: [dom.testbinding.enabled:true,dom.testable_crash.enabled:true]
+ expected: CRASH
diff --git a/tests/wpt/mozilla/tests/mozilla/sigsegv.html b/tests/wpt/mozilla/tests/mozilla/sigsegv.html
new file mode 100644
index 00000000000..5b1aadd83a2
--- /dev/null
+++ b/tests/wpt/mozilla/tests/mozilla/sigsegv.html
@@ -0,0 +1,8 @@
+<!doctype html>
+<meta charset="utf-8">
+<title></title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+(new TestBinding()).crashHard();
+</script>