aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMs2ger <ms2ger@gmail.com>2014-08-13 11:36:21 +0200
committerMs2ger <ms2ger@gmail.com>2014-08-13 11:36:21 +0200
commit76ba6f669e90b9304fde344cfd0eb2eb6439e2f6 (patch)
treec294099027bceedaaecb49efa99c4bed5c295acf /src
parent6d2dcc2852c081b6b04c0de6e8b837abed91ebb8 (diff)
parentb1d13dfe13a9f443d47e896df2af3536ab4365d7 (diff)
downloadservo-76ba6f669e90b9304fde344cfd0eb2eb6439e2f6.tar.gz
servo-76ba6f669e90b9304fde344cfd0eb2eb6439e2f6.zip
Merge pull request #3077 from Ms2ger/onmessage
Implement {Worker,DedicatedWorkerGlobalScope}.onmessage; r=abinader+Manishearth
Diffstat (limited to 'src')
-rw-r--r--src/components/script/dom/dedicatedworkerglobalscope.rs13
-rw-r--r--src/components/script/dom/webidls/DedicatedWorkerGlobalScope.webidl2
-rw-r--r--src/components/script/dom/webidls/Worker.webidl2
-rw-r--r--src/components/script/dom/worker.rs13
-rw-r--r--src/test/wpt/metadata/XMLHttpRequest/open-url-worker-simple.htm.ini6
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
-