aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/components/script/dom/bindings/codegen/Bindings.conf3
-rw-r--r--src/components/script/dom/dedicatedworkerglobalscope.rs33
-rw-r--r--src/components/script/dom/eventtarget.rs2
-rw-r--r--src/components/script/dom/webidls/DedicatedWorkerGlobalScope.webidl10
-rw-r--r--src/components/script/dom/webidls/WorkerGlobalScope.webidl27
-rw-r--r--src/components/script/dom/workerglobalscope.rs25
-rw-r--r--src/components/script/script.rs2
-rw-r--r--src/test/content/test_interfaces.html2
8 files changed, 104 insertions, 0 deletions
diff --git a/src/components/script/dom/bindings/codegen/Bindings.conf b/src/components/script/dom/bindings/codegen/Bindings.conf
index ca0f71d9bf7..6fc67b5aab5 100644
--- a/src/components/script/dom/bindings/codegen/Bindings.conf
+++ b/src/components/script/dom/bindings/codegen/Bindings.conf
@@ -15,6 +15,9 @@
DOMInterfaces = {
+'DedicatedWorkerGlobalScope': {
+ 'createGlobal': True,
+},
'EventListener': {
'nativeType': 'EventListenerBinding::EventListener',
},
diff --git a/src/components/script/dom/dedicatedworkerglobalscope.rs b/src/components/script/dom/dedicatedworkerglobalscope.rs
new file mode 100644
index 00000000000..1ca6ff21d45
--- /dev/null
+++ b/src/components/script/dom/dedicatedworkerglobalscope.rs
@@ -0,0 +1,33 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+use dom::bindings::codegen::InheritTypes::DedicatedWorkerGlobalScopeDerived;
+use dom::bindings::utils::{Reflectable, Reflector};
+use dom::eventtarget::EventTarget;
+use dom::eventtarget::WorkerGlobalScopeTypeId;
+use dom::workerglobalscope::DedicatedGlobalScope;
+use dom::workerglobalscope::WorkerGlobalScope;
+
+#[deriving(Encodable)]
+pub struct DedicatedWorkerGlobalScope {
+ workerglobalscope: WorkerGlobalScope,
+}
+
+pub trait DedicatedWorkerGlobalScopeMethods {
+}
+
+impl Reflectable for DedicatedWorkerGlobalScope {
+ fn reflector<'a>(&'a self) -> &'a Reflector {
+ self.workerglobalscope.reflector()
+ }
+}
+
+impl DedicatedWorkerGlobalScopeDerived for EventTarget {
+ fn is_dedicatedworkerglobalscope(&self) -> bool {
+ match self.type_id {
+ WorkerGlobalScopeTypeId(DedicatedGlobalScope) => true,
+ _ => false
+ }
+ }
+}
diff --git a/src/components/script/dom/eventtarget.rs b/src/components/script/dom/eventtarget.rs
index 25a50b40ab3..47d09149522 100644
--- a/src/components/script/dom/eventtarget.rs
+++ b/src/components/script/dom/eventtarget.rs
@@ -12,6 +12,7 @@ use dom::bindings::utils::{Reflectable, Reflector};
use dom::event::Event;
use dom::eventdispatcher::dispatch_event;
use dom::node::NodeTypeId;
+use dom::workerglobalscope::WorkerGlobalScopeId;
use dom::xmlhttprequest::XMLHttpRequestId;
use dom::virtualmethods::VirtualMethods;
use js::jsapi::{JS_CompileUCFunction, JS_GetFunctionObject, JS_CloneFunctionObject};
@@ -34,6 +35,7 @@ pub enum ListenerPhase {
pub enum EventTargetTypeId {
NodeTargetTypeId(NodeTypeId),
WindowTypeId,
+ WorkerGlobalScopeTypeId(WorkerGlobalScopeId),
XMLHttpRequestTargetTypeId(XMLHttpRequestId)
}
diff --git a/src/components/script/dom/webidls/DedicatedWorkerGlobalScope.webidl b/src/components/script/dom/webidls/DedicatedWorkerGlobalScope.webidl
new file mode 100644
index 00000000000..c0c69219e1e
--- /dev/null
+++ b/src/components/script/dom/webidls/DedicatedWorkerGlobalScope.webidl
@@ -0,0 +1,10 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// http://www.whatwg.org/html/#dedicatedworkerglobalscope
+[Global/*=Worker,DedicatedWorker*/]
+/*sealed*/ interface DedicatedWorkerGlobalScope : WorkerGlobalScope {
+ //void postMessage(any message, optional sequence<Transferable> transfer);
+ // attribute EventHandler onmessage;
+};
diff --git a/src/components/script/dom/webidls/WorkerGlobalScope.webidl b/src/components/script/dom/webidls/WorkerGlobalScope.webidl
new file mode 100644
index 00000000000..b4670be2eed
--- /dev/null
+++ b/src/components/script/dom/webidls/WorkerGlobalScope.webidl
@@ -0,0 +1,27 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// http://www.whatwg.org/html/#workerglobalscope
+//[Exposed=Worker]
+interface WorkerGlobalScope : EventTarget {
+ //readonly attribute WorkerGlobalScope self;
+ //readonly attribute WorkerLocation location;
+
+ //void close();
+ // attribute OnErrorEventHandler onerror;
+ // attribute EventHandler onlanguagechange;
+ // attribute EventHandler onoffline;
+ // attribute EventHandler ononline;
+
+ // also has obsolete members
+};
+
+// http://www.whatwg.org/html/#WorkerGlobalScope-partial
+//[Exposed=Worker]
+partial interface WorkerGlobalScope {
+ //void importScripts(DOMString... urls);
+ //readonly attribute WorkerNavigator navigator;
+};
+//WorkerGlobalScope implements WindowTimers;
+//WorkerGlobalScope implements WindowBase64;
diff --git a/src/components/script/dom/workerglobalscope.rs b/src/components/script/dom/workerglobalscope.rs
new file mode 100644
index 00000000000..61345448133
--- /dev/null
+++ b/src/components/script/dom/workerglobalscope.rs
@@ -0,0 +1,25 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+use dom::bindings::utils::{Reflectable, Reflector};
+use dom::eventtarget::EventTarget;
+
+#[deriving(PartialEq,Encodable)]
+pub enum WorkerGlobalScopeId {
+ DedicatedGlobalScope,
+}
+
+#[deriving(Encodable)]
+pub struct WorkerGlobalScope {
+ pub eventtarget: EventTarget,
+}
+
+pub trait WorkerGlobalScopeMethods {
+}
+
+impl Reflectable for WorkerGlobalScope {
+ fn reflector<'a>(&'a self) -> &'a Reflector {
+ self.eventtarget.reflector()
+ }
+}
diff --git a/src/components/script/script.rs b/src/components/script/script.rs
index 48b1676a0c4..6dba58edd97 100644
--- a/src/components/script/script.rs
+++ b/src/components/script/script.rs
@@ -75,6 +75,7 @@ pub mod dom {
pub mod comment;
pub mod console;
pub mod customevent;
+ pub mod dedicatedworkerglobalscope;
pub mod document;
pub mod documentfragment;
pub mod documenttype;
@@ -174,6 +175,7 @@ pub mod dom {
pub mod virtualmethods;
pub mod window;
pub mod worker;
+ pub mod workerglobalscope;
pub mod xmlhttprequest;
pub mod xmlhttprequesteventtarget;
pub mod xmlhttprequestupload;
diff --git a/src/test/content/test_interfaces.html b/src/test/content/test_interfaces.html
index 6fe71e025eb..cc3c8ddeb88 100644
--- a/src/test/content/test_interfaces.html
+++ b/src/test/content/test_interfaces.html
@@ -59,6 +59,7 @@ var interfaceNamesInGlobalScope = [
"Comment",
"Console",
"CustomEvent",
+ "DedicatedWorkerGlobalScope", // #2823
"Document",
"DocumentFragment",
"DocumentType",
@@ -156,6 +157,7 @@ var interfaceNamesInGlobalScope = [
"ValidityState",
"Window",
"Worker",
+ "WorkerGlobalScope", // #2823
"XMLHttpRequest",
"XMLHttpRequestUpload",
];