aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/workerglobalscope.rs
diff options
context:
space:
mode:
authorMs2ger <Ms2ger@gmail.com>2016-09-05 18:02:14 +0200
committerMs2ger <Ms2ger@gmail.com>2016-09-09 09:03:09 +0200
commit60142f87e27c84e06380e78b683ad4da2ab80f4f (patch)
treed2c34b3792be4bc79e3adc46dfdf3f85fe59a60b /components/script/dom/workerglobalscope.rs
parent59cf735f856154e14cd427a93b25a0d7e86c563c (diff)
downloadservo-60142f87e27c84e06380e78b683ad4da2ab80f4f.tar.gz
servo-60142f87e27c84e06380e78b683ad4da2ab80f4f.zip
Implement error reporting for workers.
Fixes #3311. Fixes #13158.
Diffstat (limited to 'components/script/dom/workerglobalscope.rs')
-rw-r--r--components/script/dom/workerglobalscope.rs13
1 files changed, 12 insertions, 1 deletions
diff --git a/components/script/dom/workerglobalscope.rs b/components/script/dom/workerglobalscope.rs
index 18f51156aec..d60ddb84f88 100644
--- a/components/script/dom/workerglobalscope.rs
+++ b/components/script/dom/workerglobalscope.rs
@@ -3,9 +3,10 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use devtools_traits::{DevtoolScriptControlMsg, ScriptToDevtoolsControlMsg, WorkerId};
+use dom::bindings::codegen::Bindings::EventHandlerBinding::OnErrorEventHandlerNonNull;
use dom::bindings::codegen::Bindings::FunctionBinding::Function;
use dom::bindings::codegen::Bindings::WorkerGlobalScopeBinding::WorkerGlobalScopeMethods;
-use dom::bindings::error::{Error, ErrorResult, Fallible, report_pending_exception};
+use dom::bindings::error::{Error, ErrorResult, Fallible, report_pending_exception, ErrorInfo};
use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, MutNullableHeap, Root};
@@ -248,6 +249,9 @@ impl WorkerGlobalScopeMethods for WorkerGlobalScope {
})
}
+ // https://html.spec.whatwg.org/multipage/#handler-workerglobalscope-onerror
+ error_event_handler!(error, GetOnerror, SetOnerror);
+
// https://html.spec.whatwg.org/multipage/#dom-workerglobalscope-importscripts
fn ImportScripts(&self, url_strings: Vec<DOMString>) -> ErrorResult {
let mut urls = Vec::with_capacity(url_strings.len());
@@ -451,4 +455,11 @@ impl WorkerGlobalScope {
closing.store(true, Ordering::SeqCst);
}
}
+
+ /// https://html.spec.whatwg.org/multipage/#report-the-error
+ pub fn report_an_error(&self, error_info: ErrorInfo, value: HandleValue) {
+ self.downcast::<DedicatedWorkerGlobalScope>()
+ .expect("Should implement report_an_error for this worker")
+ .report_an_error(error_info, value);
+ }
}