diff options
author | Ms2ger <ms2ger@gmail.com> | 2014-08-13 11:36:21 +0200 |
---|---|---|
committer | Ms2ger <ms2ger@gmail.com> | 2014-08-13 11:36:21 +0200 |
commit | 76ba6f669e90b9304fde344cfd0eb2eb6439e2f6 (patch) | |
tree | c294099027bceedaaecb49efa99c4bed5c295acf /src | |
parent | 6d2dcc2852c081b6b04c0de6e8b837abed91ebb8 (diff) | |
parent | b1d13dfe13a9f443d47e896df2af3536ab4365d7 (diff) | |
download | servo-76ba6f669e90b9304fde344cfd0eb2eb6439e2f6.tar.gz servo-76ba6f669e90b9304fde344cfd0eb2eb6439e2f6.zip |
Merge pull request #3077 from Ms2ger/onmessage
Implement {Worker,DedicatedWorkerGlobalScope}.onmessage; r=abinader+Manishearth
Diffstat (limited to 'src')
5 files changed, 26 insertions, 10 deletions
diff --git a/src/components/script/dom/dedicatedworkerglobalscope.rs b/src/components/script/dom/dedicatedworkerglobalscope.rs index 08b27eb193f..8d6fd2640d6 100644 --- a/src/components/script/dom/dedicatedworkerglobalscope.rs +++ b/src/components/script/dom/dedicatedworkerglobalscope.rs @@ -4,13 +4,14 @@ use dom::bindings::codegen::Bindings::DedicatedWorkerGlobalScopeBinding; use dom::bindings::codegen::Bindings::DedicatedWorkerGlobalScopeBinding::DedicatedWorkerGlobalScopeMethods; +use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull; use dom::bindings::codegen::InheritTypes::DedicatedWorkerGlobalScopeDerived; use dom::bindings::codegen::InheritTypes::{EventTargetCast, WorkerGlobalScopeCast}; use dom::bindings::global::Worker; use dom::bindings::js::{JSRef, Temporary, RootCollection}; use dom::bindings::trace::Untraceable; use dom::bindings::utils::{Reflectable, Reflector}; -use dom::eventtarget::EventTarget; +use dom::eventtarget::{EventTarget, EventTargetHelpers}; use dom::eventtarget::WorkerGlobalScopeTypeId; use dom::messageevent::MessageEvent; use dom::worker::{Worker, TrustedWorkerAddress}; @@ -142,6 +143,16 @@ impl<'a> DedicatedWorkerGlobalScopeMethods for JSRef<'a, DedicatedWorkerGlobalSc let ScriptChan(ref sender) = self.parent_sender; sender.send(WorkerPostMessage(*self.worker, message)); } + + fn GetOnmessage(&self) -> Option<EventHandlerNonNull> { + let eventtarget: &JSRef<EventTarget> = EventTargetCast::from_ref(self); + eventtarget.get_event_handler_common("message") + } + + fn SetOnmessage(&self, listener: Option<EventHandlerNonNull>) { + let eventtarget: &JSRef<EventTarget> = EventTargetCast::from_ref(self); + eventtarget.set_event_handler_common("message", listener) + } } trait PrivateDedicatedWorkerGlobalScopeHelpers { diff --git a/src/components/script/dom/webidls/DedicatedWorkerGlobalScope.webidl b/src/components/script/dom/webidls/DedicatedWorkerGlobalScope.webidl index d92b8a73911..c44a5788e9d 100644 --- a/src/components/script/dom/webidls/DedicatedWorkerGlobalScope.webidl +++ b/src/components/script/dom/webidls/DedicatedWorkerGlobalScope.webidl @@ -7,5 +7,5 @@ /*sealed*/ interface DedicatedWorkerGlobalScope : WorkerGlobalScope { //void postMessage(any message, optional sequence<Transferable> transfer); void postMessage(DOMString message); - // attribute EventHandler onmessage; + attribute EventHandler onmessage; }; diff --git a/src/components/script/dom/webidls/Worker.webidl b/src/components/script/dom/webidls/Worker.webidl index 7eacefab9f4..fd85a2f6c8f 100644 --- a/src/components/script/dom/webidls/Worker.webidl +++ b/src/components/script/dom/webidls/Worker.webidl @@ -16,6 +16,6 @@ interface Worker : EventTarget { //void postMessage(any message/*, optional sequence<Transferable> transfer*/); void postMessage(DOMString message); - // attribute EventHandler onmessage; + attribute EventHandler onmessage; }; Worker implements AbstractWorker; diff --git a/src/components/script/dom/worker.rs b/src/components/script/dom/worker.rs index f5e25db68e2..a01865c6075 100644 --- a/src/components/script/dom/worker.rs +++ b/src/components/script/dom/worker.rs @@ -4,13 +4,14 @@ use dom::bindings::codegen::Bindings::WorkerBinding; use dom::bindings::codegen::Bindings::WorkerBinding::WorkerMethods; +use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull; use dom::bindings::codegen::InheritTypes::EventTargetCast; use dom::bindings::error::{Fallible, Syntax}; use dom::bindings::global::{GlobalRef, GlobalField}; use dom::bindings::js::{JS, JSRef, Temporary}; use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object}; use dom::dedicatedworkerglobalscope::DedicatedWorkerGlobalScope; -use dom::eventtarget::{EventTarget, WorkerTypeId}; +use dom::eventtarget::{EventTarget, EventTargetHelpers, WorkerTypeId}; use dom::messageevent::MessageEvent; use script_task::{ScriptChan, DOMMessage}; @@ -119,6 +120,16 @@ impl<'a> WorkerMethods for JSRef<'a, Worker> { let ScriptChan(ref sender) = self.sender; sender.send(DOMMessage(message)); } + + fn GetOnmessage(&self) -> Option<EventHandlerNonNull> { + let eventtarget: &JSRef<EventTarget> = EventTargetCast::from_ref(self); + eventtarget.get_event_handler_common("message") + } + + fn SetOnmessage(&self, listener: Option<EventHandlerNonNull>) { + let eventtarget: &JSRef<EventTarget> = EventTargetCast::from_ref(self); + eventtarget.set_event_handler_common("message", listener) + } } impl Reflectable for Worker { diff --git a/src/test/wpt/metadata/XMLHttpRequest/open-url-worker-simple.htm.ini b/src/test/wpt/metadata/XMLHttpRequest/open-url-worker-simple.htm.ini deleted file mode 100644 index ab0b49459c1..00000000000 --- a/src/test/wpt/metadata/XMLHttpRequest/open-url-worker-simple.htm.ini +++ /dev/null @@ -1,6 +0,0 @@ -[open-url-worker-simple.htm] - type: testharness - expected: TIMEOUT - [XMLHttpRequest: relative URLs in worker scripts resolved by script URL] - expected: NOTRUN - |