aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2016-09-27 13:16:41 +0200
committerAnthony Ramine <n.oxyde@gmail.com>2016-10-06 20:59:09 +0200
commitfcb59d305742a18daa083352a9b6e9a45896c9f6 (patch)
treed1023c24bfb5827c49d4d4653a72541b66532b95
parent093b189b4800909b17295b88aed762601f4b8482 (diff)
downloadservo-fcb59d305742a18daa083352a9b6e9a45896c9f6.tar.gz
servo-fcb59d305742a18daa083352a9b6e9a45896c9f6.zip
Make reflect_dom_object take a &GlobalScope
-rw-r--r--components/script/body.rs10
-rw-r--r--components/script/dom/attr.rs3
-rw-r--r--components/script/dom/beforeunloadevent.rs6
-rw-r--r--components/script/dom/bindings/codegen/CodegenRust.py10
-rw-r--r--components/script/dom/bindings/error.rs2
-rw-r--r--components/script/dom/bindings/global.rs10
-rw-r--r--components/script/dom/bindings/iterable.rs6
-rw-r--r--components/script/dom/bindings/reflector.rs18
-rw-r--r--components/script/dom/blob.rs10
-rw-r--r--components/script/dom/bluetooth.rs10
-rw-r--r--components/script/dom/bluetoothadvertisingdata.rs4
-rw-r--r--components/script/dom/bluetoothcharacteristicproperties.rs4
-rw-r--r--components/script/dom/bluetoothdevice.rs8
-rw-r--r--components/script/dom/bluetoothremotegattcharacteristic.rs8
-rw-r--r--components/script/dom/bluetoothremotegattdescriptor.rs4
-rw-r--r--components/script/dom/bluetoothremotegattserver.rs12
-rw-r--r--components/script/dom/bluetoothremotegattservice.rs22
-rw-r--r--components/script/dom/canvasgradient.rs4
-rw-r--r--components/script/dom/canvaspattern.rs4
-rw-r--r--components/script/dom/canvasrenderingcontext2d.rs14
-rw-r--r--components/script/dom/client.rs5
-rw-r--r--components/script/dom/closeevent.rs7
-rw-r--r--components/script/dom/crypto.rs4
-rw-r--r--components/script/dom/cssstyledeclaration.rs3
-rw-r--r--components/script/dom/customevent.rs7
-rw-r--r--components/script/dom/document.rs26
-rw-r--r--components/script/dom/domexception.rs4
-rw-r--r--components/script/dom/domimplementation.rs3
-rw-r--r--components/script/dom/dommatrix.rs9
-rw-r--r--components/script/dom/dommatrixreadonly.rs42
-rw-r--r--components/script/dom/domparser.rs2
-rw-r--r--components/script/dom/dompoint.rs7
-rw-r--r--components/script/dom/dompointreadonly.rs5
-rw-r--r--components/script/dom/domquad.rs8
-rw-r--r--components/script/dom/domrect.rs5
-rw-r--r--components/script/dom/domrectlist.rs3
-rw-r--r--components/script/dom/domrectreadonly.rs5
-rw-r--r--components/script/dom/domstringmap.rs3
-rw-r--r--components/script/dom/domtokenlist.rs3
-rw-r--r--components/script/dom/element.rs5
-rw-r--r--components/script/dom/errorevent.rs20
-rw-r--r--components/script/dom/event.rs7
-rw-r--r--components/script/dom/eventsource.rs9
-rw-r--r--components/script/dom/eventtarget.rs4
-rw-r--r--components/script/dom/extendableevent.rs5
-rw-r--r--components/script/dom/extendablemessageevent.rs8
-rw-r--r--components/script/dom/file.rs14
-rw-r--r--components/script/dom/filelist.rs3
-rw-r--r--components/script/dom/filereader.rs13
-rw-r--r--components/script/dom/filereadersync.rs7
-rw-r--r--components/script/dom/focusevent.rs6
-rw-r--r--components/script/dom/forcetouchevent.rs3
-rw-r--r--components/script/dom/formdata.rs7
-rw-r--r--components/script/dom/globalscope.rs14
-rw-r--r--components/script/dom/hashchangeevent.rs8
-rw-r--r--components/script/dom/headers.rs9
-rw-r--r--components/script/dom/history.rs3
-rw-r--r--components/script/dom/htmlcollection.rs3
-rw-r--r--components/script/dom/htmlformcontrolscollection.rs3
-rw-r--r--components/script/dom/htmliframeelement.rs3
-rw-r--r--components/script/dom/htmlmediaelement.rs2
-rw-r--r--components/script/dom/htmloptionscollection.rs3
-rw-r--r--components/script/dom/htmlscriptelement.rs2
-rw-r--r--components/script/dom/imagedata.rs4
-rw-r--r--components/script/dom/keyboardevent.rs2
-rw-r--r--components/script/dom/location.rs3
-rw-r--r--components/script/dom/mediaerror.rs3
-rw-r--r--components/script/dom/messageevent.rs24
-rw-r--r--components/script/dom/mimetypearray.rs4
-rw-r--r--components/script/dom/mouseevent.rs2
-rw-r--r--components/script/dom/namednodemap.rs3
-rw-r--r--components/script/dom/navigator.rs13
-rw-r--r--components/script/dom/node.rs16
-rw-r--r--components/script/dom/nodeiterator.rs3
-rw-r--r--components/script/dom/nodelist.rs4
-rw-r--r--components/script/dom/pagetransitionevent.rs7
-rw-r--r--components/script/dom/performance.rs3
-rw-r--r--components/script/dom/performancetiming.rs4
-rw-r--r--components/script/dom/pluginarray.rs4
-rw-r--r--components/script/dom/popstateevent.rs7
-rw-r--r--components/script/dom/progressevent.rs10
-rw-r--r--components/script/dom/promisenativehandler.rs4
-rw-r--r--components/script/dom/radionodelist.rs3
-rw-r--r--components/script/dom/range.rs2
-rw-r--r--components/script/dom/request.rs12
-rw-r--r--components/script/dom/response.rs13
-rw-r--r--components/script/dom/screen.rs3
-rw-r--r--components/script/dom/serviceworker.rs4
-rw-r--r--components/script/dom/serviceworkercontainer.rs6
-rw-r--r--components/script/dom/serviceworkerglobalscope.rs3
-rw-r--r--components/script/dom/serviceworkerregistration.rs3
-rw-r--r--components/script/dom/servohtmlparser.rs7
-rw-r--r--components/script/dom/servoxmlparser.rs4
-rw-r--r--components/script/dom/storage.rs8
-rw-r--r--components/script/dom/storageevent.rs7
-rw-r--r--components/script/dom/stylesheet.rs3
-rw-r--r--components/script/dom/stylesheetlist.rs3
-rw-r--r--components/script/dom/testbinding.rs21
-rw-r--r--components/script/dom/testbindingiterable.rs5
-rw-r--r--components/script/dom/testbindingpairiterable.rs5
-rw-r--r--components/script/dom/textdecoder.rs5
-rw-r--r--components/script/dom/textencoder.rs5
-rw-r--r--components/script/dom/touch.rs4
-rw-r--r--components/script/dom/touchevent.rs3
-rw-r--r--components/script/dom/touchlist.rs3
-rw-r--r--components/script/dom/treewalker.rs3
-rw-r--r--components/script/dom/uievent.rs2
-rw-r--r--components/script/dom/url.rs9
-rw-r--r--components/script/dom/urlsearchparams.rs5
-rw-r--r--components/script/dom/validitystate.rs3
-rw-r--r--components/script/dom/webglactiveinfo.rs4
-rw-r--r--components/script/dom/webglbuffer.rs6
-rw-r--r--components/script/dom/webglcontextevent.rs8
-rw-r--r--components/script/dom/webglframebuffer.rs6
-rw-r--r--components/script/dom/webglobject.rs4
-rw-r--r--components/script/dom/webglprogram.rs10
-rw-r--r--components/script/dom/webglrenderbuffer.rs6
-rw-r--r--components/script/dom/webglrenderingcontext.rs18
-rw-r--r--components/script/dom/webglshader.rs6
-rw-r--r--components/script/dom/webglshaderprecisionformat.rs4
-rw-r--r--components/script/dom/webgltexture.rs6
-rw-r--r--components/script/dom/webgluniformlocation.rs4
-rw-r--r--components/script/dom/websocket.rs12
-rw-r--r--components/script/dom/window.rs8
-rw-r--r--components/script/dom/worker.rs7
-rw-r--r--components/script/dom/workerglobalscope.rs4
-rw-r--r--components/script/dom/workerlocation.rs3
-rw-r--r--components/script/dom/workernavigator.rs3
-rw-r--r--components/script/dom/xmldocument.rs3
-rw-r--r--components/script/dom/xmlhttprequest.rs12
-rw-r--r--components/script/dom/xmlhttprequestupload.rs4
-rw-r--r--components/script/fetch.rs2
132 files changed, 488 insertions, 407 deletions
diff --git a/components/script/body.rs b/components/script/body.rs
index 276d6425d2f..466523f394f 100644
--- a/components/script/body.rs
+++ b/components/script/body.rs
@@ -4,12 +4,12 @@
use dom::bindings::codegen::Bindings::FormDataBinding::FormDataMethods;
use dom::bindings::error::{Error, Fallible};
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::Reflectable;
use dom::bindings::str::USVString;
use dom::blob::{Blob, BlobImpl};
use dom::formdata::FormData;
+use dom::globalscope::GlobalScope;
use dom::promise::Promise;
use encoding::all::UTF_8;
use encoding::types::{DecoderTrap, Encoding};
@@ -103,8 +103,8 @@ fn run_package_data_algorithm<T: BodyOperations + Reflectable>(object: &T,
match body_type {
BodyType::Text => run_text_data_algorithm(bytes),
BodyType::Json => run_json_data_algorithm(cx, bytes),
- BodyType::Blob => run_blob_data_algorithm(object.global().r(), bytes, mime),
- BodyType::FormData => run_form_data_algorithm(object.global().r(), bytes, mime),
+ BodyType::Blob => run_blob_data_algorithm(object.global().r().as_global_scope(), bytes, mime),
+ BodyType::FormData => run_form_data_algorithm(object.global().r().as_global_scope(), bytes, mime),
}
}
@@ -132,7 +132,7 @@ fn run_json_data_algorithm(cx: *mut JSContext,
}
}
-fn run_blob_data_algorithm(root: GlobalRef,
+fn run_blob_data_algorithm(root: &GlobalScope,
bytes: Vec<u8>,
mime: &[u8]) -> Fallible<FetchedData> {
let mime_string = if let Ok(s) = String::from_utf8(mime.to_vec()) {
@@ -144,7 +144,7 @@ fn run_blob_data_algorithm(root: GlobalRef,
Ok(FetchedData::BlobData(blob))
}
-fn run_form_data_algorithm(root: GlobalRef, bytes: Vec<u8>, mime: &[u8]) -> Fallible<FetchedData> {
+fn run_form_data_algorithm(root: &GlobalScope, bytes: Vec<u8>, mime: &[u8]) -> Fallible<FetchedData> {
let mime_str = if let Ok(s) = str::from_utf8(mime) {
s
} else {
diff --git a/components/script/dom/attr.rs b/components/script/dom/attr.rs
index d5a00e6c1fa..f322204fc4b 100644
--- a/components/script/dom/attr.rs
+++ b/components/script/dom/attr.rs
@@ -5,7 +5,6 @@
use devtools_traits::AttrInfo;
use dom::bindings::cell::DOMRefCell;
use dom::bindings::codegen::Bindings::AttrBinding::{self, AttrMethods};
-use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, MutNullableHeap};
use dom::bindings::js::{LayoutJS, Root, RootedReference};
@@ -66,7 +65,7 @@ impl Attr {
namespace,
prefix,
owner),
- GlobalRef::Window(window),
+ window,
AttrBinding::Wrap)
}
diff --git a/components/script/dom/beforeunloadevent.rs b/components/script/dom/beforeunloadevent.rs
index b66df9429dc..413a26a8de8 100644
--- a/components/script/dom/beforeunloadevent.rs
+++ b/components/script/dom/beforeunloadevent.rs
@@ -6,12 +6,12 @@ use dom::bindings::cell::DOMRefCell;
use dom::bindings::codegen::Bindings::BeforeUnloadEventBinding;
use dom::bindings::codegen::Bindings::BeforeUnloadEventBinding::BeforeUnloadEventMethods;
use dom::bindings::codegen::Bindings::EventBinding::EventMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
use dom::bindings::str::DOMString;
use dom::event::{Event, EventBubbles, EventCancelable};
+use dom::globalscope::GlobalScope;
use string_cache::Atom;
// https://html.spec.whatwg.org/multipage/#beforeunloadevent
@@ -29,13 +29,13 @@ impl BeforeUnloadEvent {
}
}
- pub fn new_uninitialized(global: GlobalRef) -> Root<BeforeUnloadEvent> {
+ pub fn new_uninitialized(global: &GlobalScope) -> Root<BeforeUnloadEvent> {
reflect_dom_object(box BeforeUnloadEvent::new_inherited(),
global,
BeforeUnloadEventBinding::Wrap)
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
type_: Atom,
bubbles: EventBubbles,
cancelable: EventCancelable) -> Root<BeforeUnloadEvent> {
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py
index d30cee0ca93..7e7cb4144db 100644
--- a/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/components/script/dom/bindings/codegen/CodegenRust.py
@@ -1927,8 +1927,10 @@ class CGImports(CGWrapper):
if t in dictionaries or t in enums:
continue
if t.isInterface() or t.isNamespace():
- descriptor = descriptorProvider.getDescriptor(getIdentifier(t).name)
- extras += [descriptor.path]
+ name = getIdentifier(t).name
+ descriptor = descriptorProvider.getDescriptor(name)
+ if name != 'GlobalScope':
+ extras += [descriptor.path]
parentName = descriptor.getParentName()
if parentName:
descriptor = descriptorProvider.getDescriptor(parentName)
@@ -2523,7 +2525,8 @@ class CGWrapMethod(CGAbstractMethod):
def __init__(self, descriptor):
assert not descriptor.interface.isCallback()
assert not descriptor.isGlobal()
- args = [Argument('*mut JSContext', 'cx'), Argument('GlobalRef', 'scope'),
+ args = [Argument('*mut JSContext', 'cx'),
+ Argument('&GlobalScope', 'scope'),
Argument("Box<%s>" % descriptor.concreteType, 'object')]
retval = 'Root<%s>' % descriptor.concreteType
CGAbstractMethod.__init__(self, descriptor, 'Wrap', retval, args,
@@ -5594,6 +5597,7 @@ def generate_imports(config, cgthings, descriptors, callbacks=None, dictionaries
'dom::bindings::weakref::WeakBox',
'dom::bindings::weakref::WeakReferenceable',
'dom::browsingcontext::BrowsingContext',
+ 'dom::globalscope::GlobalScope',
'mem::heap_size_of_raw_self_and_children',
'libc',
'util::prefs::PREFS',
diff --git a/components/script/dom/bindings/error.rs b/components/script/dom/bindings/error.rs
index 1c0d49c4976..14725b33303 100644
--- a/components/script/dom/bindings/error.rs
+++ b/components/script/dom/bindings/error.rs
@@ -127,7 +127,7 @@ pub unsafe fn throw_dom_exception(cx: *mut JSContext, global: GlobalRef, result:
};
assert!(!JS_IsExceptionPending(cx));
- let exception = DOMException::new(global, code);
+ let exception = DOMException::new(global.as_global_scope(), code);
rooted!(in(cx) let mut thrown = UndefinedValue());
exception.to_jsval(cx, thrown.handle_mut());
JS_SetPendingException(cx, thrown.handle());
diff --git a/components/script/dom/bindings/global.rs b/components/script/dom/bindings/global.rs
index e0341ceeb68..db90f1fbcdf 100644
--- a/components/script/dom/bindings/global.rs
+++ b/components/script/dom/bindings/global.rs
@@ -11,9 +11,11 @@ use devtools_traits::{ScriptToDevtoolsControlMsg, WorkerId};
use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
use dom::bindings::conversions::root_from_object;
use dom::bindings::error::{ErrorInfo, report_pending_exception};
+use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflectable, Reflector};
use dom::console::TimerSet;
+use dom::globalscope::GlobalScope;
use dom::window;
use dom::workerglobalscope::WorkerGlobalScope;
use ipc_channel::ipc::IpcSender;
@@ -55,6 +57,14 @@ pub enum GlobalRoot {
}
impl<'a> GlobalRef<'a> {
+ /// Returns that `GlobalRef` as a `GlobalScope` referengce.
+ pub fn as_global_scope(&self) -> &GlobalScope {
+ match *self {
+ GlobalRef::Window(window) => window.upcast(),
+ GlobalRef::Worker(worker) => worker.upcast(),
+ }
+ }
+
/// Get the `JSContext` for the `JSRuntime` associated with the thread
/// this global object is on.
pub fn get_cx(&self) -> *mut JSContext {
diff --git a/components/script/dom/bindings/iterable.rs b/components/script/dom/bindings/iterable.rs
index 84381b52655..5a86dcf64d8 100644
--- a/components/script/dom/bindings/iterable.rs
+++ b/components/script/dom/bindings/iterable.rs
@@ -10,10 +10,10 @@ use core::nonzero::NonZero;
use dom::bindings::codegen::Bindings::IterableIteratorBinding::IterableKeyAndValueResult;
use dom::bindings::codegen::Bindings::IterableIteratorBinding::IterableKeyOrValueResult;
use dom::bindings::error::Fallible;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::{Reflector, Reflectable, MutReflectable, reflect_dom_object};
use dom::bindings::trace::JSTraceable;
+use dom::globalscope::GlobalScope;
use js::conversions::ToJSValConvertible;
use js::jsapi::{JSContext, JSObject, MutableHandleValue, MutableHandleObject, HandleValue};
use js::jsval::UndefinedValue;
@@ -85,7 +85,7 @@ impl<T: Reflectable + JSTraceable + Iterable> IterableIterator<T> {
/// Create a new iterator instance for the provided iterable DOM interface.
pub fn new(iterable: &T,
type_: IteratorType,
- wrap: fn(*mut JSContext, GlobalRef, Box<IterableIterator<T>>)
+ wrap: fn(*mut JSContext, &GlobalScope, Box<IterableIterator<T>>)
-> Root<Self>) -> Root<Self> {
let iterator = box IterableIterator {
reflector: Reflector::new(),
@@ -94,7 +94,7 @@ impl<T: Reflectable + JSTraceable + Iterable> IterableIterator<T> {
index: Cell::new(0),
};
let global = iterable.global();
- reflect_dom_object(iterator, global.r(), wrap)
+ reflect_dom_object(iterator, global.r().as_global_scope(), wrap)
}
/// Return the next value from the iterable object.
diff --git a/components/script/dom/bindings/reflector.rs b/components/script/dom/bindings/reflector.rs
index d5280712a03..74c039688f7 100644
--- a/components/script/dom/bindings/reflector.rs
+++ b/components/script/dom/bindings/reflector.rs
@@ -4,19 +4,25 @@
//! The `Reflector` struct.
-use dom::bindings::global::{GlobalRef, GlobalRoot, global_root_from_reflector};
+use dom::bindings::conversions::DerivedFrom;
+use dom::bindings::global::{GlobalRoot, global_root_from_reflector};
use dom::bindings::js::Root;
+use dom::globalscope::GlobalScope;
use js::jsapi::{HandleObject, JSContext, JSObject};
use std::cell::UnsafeCell;
use std::ptr;
/// Create the reflector for a new DOM object and yield ownership to the
/// reflector.
-pub fn reflect_dom_object<T: Reflectable>(obj: Box<T>,
- global: GlobalRef,
- wrap_fn: fn(*mut JSContext, GlobalRef, Box<T>) -> Root<T>)
- -> Root<T> {
- wrap_fn(global.get_cx(), global, obj)
+pub fn reflect_dom_object<T, U>(
+ obj: Box<T>,
+ global: &U,
+ wrap_fn: fn(*mut JSContext, &GlobalScope, Box<T>) -> Root<T>)
+ -> Root<T>
+ where T: Reflectable, U: DerivedFrom<GlobalScope>
+{
+ let global_scope = global.upcast();
+ wrap_fn(global_scope.get_cx(), global_scope, obj)
}
/// A struct to store a reference to the reflector of a DOM object.
diff --git a/components/script/dom/blob.rs b/components/script/dom/blob.rs
index aef31efd687..011f547c96a 100644
--- a/components/script/dom/blob.rs
+++ b/components/script/dom/blob.rs
@@ -11,6 +11,7 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
use dom::bindings::str::DOMString;
+use dom::globalscope::GlobalScope;
use encoding::all::UTF_8;
use encoding::types::{EncoderTrap, Encoding};
use ipc_channel::ipc;
@@ -79,7 +80,9 @@ pub struct Blob {
impl Blob {
#[allow(unrooted_must_root)]
- pub fn new(global: GlobalRef, blob_impl: BlobImpl, typeString: String) -> Root<Blob> {
+ pub fn new(
+ global: &GlobalScope, blob_impl: BlobImpl, typeString: String)
+ -> Root<Blob> {
let boxed_blob = box Blob::new_inherited(blob_impl, typeString);
reflect_dom_object(boxed_blob, global, BlobBinding::Wrap)
}
@@ -99,7 +102,6 @@ impl Blob {
#[allow(unrooted_must_root)]
fn new_sliced(parent: &Blob, rel_pos: RelativePos,
relative_content_type: DOMString) -> Root<Blob> {
- let global = parent.global();
let blob_impl = match *parent.blob_impl.borrow() {
BlobImpl::File(_) => {
// Create new parent node
@@ -115,7 +117,7 @@ impl Blob {
}
};
- Blob::new(global.r(), blob_impl, relative_content_type.into())
+ Blob::new(parent.global().r().as_global_scope(), blob_impl, relative_content_type.into())
}
// https://w3c.github.io/FileAPI/#constructorBlob
@@ -132,7 +134,7 @@ impl Blob {
}
};
- Ok(Blob::new(global, BlobImpl::new_from_bytes(bytes), blobPropertyBag.type_.to_string()))
+ Ok(Blob::new(global.as_global_scope(), BlobImpl::new_from_bytes(bytes), blobPropertyBag.type_.to_string()))
}
/// Get a slice to inner data, this might incur synchronous read and caching
diff --git a/components/script/dom/bluetooth.rs b/components/script/dom/bluetooth.rs
index 42ad4c2730a..dd5d05d4f2a 100644
--- a/components/script/dom/bluetooth.rs
+++ b/components/script/dom/bluetooth.rs
@@ -15,6 +15,7 @@ use dom::bindings::str::DOMString;
use dom::bluetoothadvertisingdata::BluetoothAdvertisingData;
use dom::bluetoothdevice::BluetoothDevice;
use dom::bluetoothuuid::{BluetoothServiceUUID, BluetoothUUID};
+use dom::globalscope::GlobalScope;
use dom::promise::Promise;
use ipc_channel::ipc::{self, IpcSender};
use js::conversions::ToJSValConvertible;
@@ -52,7 +53,7 @@ impl Bluetooth {
}
}
- pub fn new(global: GlobalRef) -> Root<Bluetooth> {
+ pub fn new(global: &GlobalScope) -> Root<Bluetooth> {
reflect_dom_object(box Bluetooth::new_inherited(),
global,
BluetoothBinding::Wrap)
@@ -105,11 +106,14 @@ impl Bluetooth {
// Step 12-13.
match device {
Ok(device) => {
- let ad_data = BluetoothAdvertisingData::new(self.global().r(),
+ let global = self.global();
+ let global = global.r();
+ let global = global.as_global_scope();
+ let ad_data = BluetoothAdvertisingData::new(global,
device.appearance,
device.tx_power,
device.rssi);
- Ok(BluetoothDevice::new(self.global().r(),
+ Ok(BluetoothDevice::new(global,
DOMString::from(device.id),
device.name.map(DOMString::from),
&ad_data))
diff --git a/components/script/dom/bluetoothadvertisingdata.rs b/components/script/dom/bluetoothadvertisingdata.rs
index 6cd77385a26..878f4fe82ec 100644
--- a/components/script/dom/bluetoothadvertisingdata.rs
+++ b/components/script/dom/bluetoothadvertisingdata.rs
@@ -4,9 +4,9 @@
use dom::bindings::codegen::Bindings::BluetoothAdvertisingDataBinding;
use dom::bindings::codegen::Bindings::BluetoothAdvertisingDataBinding::BluetoothAdvertisingDataMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::globalscope::GlobalScope;
// https://webbluetoothcg.github.io/web-bluetooth/#bluetoothadvertisingdata
#[dom_struct]
@@ -30,7 +30,7 @@ impl BluetoothAdvertisingData {
}
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
appearance: Option<u16>,
txPower: Option<i8>,
rssi: Option<i8>)
diff --git a/components/script/dom/bluetoothcharacteristicproperties.rs b/components/script/dom/bluetoothcharacteristicproperties.rs
index fd716d72bb5..ccb5a37a6a8 100644
--- a/components/script/dom/bluetoothcharacteristicproperties.rs
+++ b/components/script/dom/bluetoothcharacteristicproperties.rs
@@ -5,9 +5,9 @@
use dom::bindings::codegen::Bindings::BluetoothCharacteristicPropertiesBinding;
use dom::bindings::codegen::Bindings::BluetoothCharacteristicPropertiesBinding::
BluetoothCharacteristicPropertiesMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::globalscope::GlobalScope;
// https://webbluetoothcg.github.io/web-bluetooth/#characteristicproperties
#[dom_struct]
@@ -49,7 +49,7 @@ impl BluetoothCharacteristicProperties {
}
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
broadcast: bool,
read: bool,
writeWithoutResponse: bool,
diff --git a/components/script/dom/bluetoothdevice.rs b/components/script/dom/bluetoothdevice.rs
index 1508c0382c8..04327080cd4 100644
--- a/components/script/dom/bluetoothdevice.rs
+++ b/components/script/dom/bluetoothdevice.rs
@@ -4,12 +4,12 @@
use dom::bindings::codegen::Bindings::BluetoothDeviceBinding;
use dom::bindings::codegen::Bindings::BluetoothDeviceBinding::BluetoothDeviceMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, Root, MutHeap, MutNullableHeap};
use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
use dom::bindings::str::DOMString;
use dom::bluetoothadvertisingdata::BluetoothAdvertisingData;
use dom::bluetoothremotegattserver::BluetoothRemoteGATTServer;
+use dom::globalscope::GlobalScope;
// https://webbluetoothcg.github.io/web-bluetooth/#bluetoothdevice
#[dom_struct]
@@ -35,7 +35,7 @@ impl BluetoothDevice {
}
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
id: DOMString,
name: Option<DOMString>,
adData: &BluetoothAdvertisingData)
@@ -66,6 +66,8 @@ impl BluetoothDeviceMethods for BluetoothDevice {
// https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothdevice-gatt
fn Gatt(&self) -> Root<BluetoothRemoteGATTServer> {
- self.gatt.or_init(|| BluetoothRemoteGATTServer::new(self.global().r(), self))
+ self.gatt.or_init(|| {
+ BluetoothRemoteGATTServer::new(self.global().r().as_global_scope(), self)
+ })
}
}
diff --git a/components/script/dom/bluetoothremotegattcharacteristic.rs b/components/script/dom/bluetoothremotegattcharacteristic.rs
index 6b7ba1dcfad..701a6ddd2a2 100644
--- a/components/script/dom/bluetoothremotegattcharacteristic.rs
+++ b/components/script/dom/bluetoothremotegattcharacteristic.rs
@@ -14,7 +14,6 @@ use dom::bindings::codegen::Bindings::BluetoothRemoteGATTServerBinding::Bluetoot
use dom::bindings::codegen::Bindings::BluetoothRemoteGATTServiceBinding::BluetoothRemoteGATTServiceMethods;
use dom::bindings::error::{ErrorResult, Fallible};
use dom::bindings::error::Error::{self, InvalidModification, Network, NotSupported, Security};
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, MutHeap, Root};
use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
use dom::bindings::str::{ByteString, DOMString};
@@ -23,6 +22,7 @@ use dom::bluetoothcharacteristicproperties::BluetoothCharacteristicProperties;
use dom::bluetoothremotegattdescriptor::BluetoothRemoteGATTDescriptor;
use dom::bluetoothremotegattservice::BluetoothRemoteGATTService;
use dom::bluetoothuuid::{BluetoothDescriptorUUID, BluetoothUUID};
+use dom::globalscope::GlobalScope;
use dom::promise::Promise;
use ipc_channel::ipc::{self, IpcSender};
use net_traits::bluetooth_thread::BluetoothMethodMsg;
@@ -59,7 +59,7 @@ impl BluetoothRemoteGATTCharacteristic {
}
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
service: &BluetoothRemoteGATTService,
uuid: DOMString,
properties: &BluetoothCharacteristicProperties,
@@ -95,7 +95,7 @@ impl BluetoothRemoteGATTCharacteristic {
let descriptor = receiver.recv().unwrap();
match descriptor {
Ok(descriptor) => {
- Ok(BluetoothRemoteGATTDescriptor::new(self.global().r(),
+ Ok(BluetoothRemoteGATTDescriptor::new(self.global().r().as_global_scope(),
self,
DOMString::from(descriptor.uuid),
descriptor.instance_id))
@@ -126,7 +126,7 @@ impl BluetoothRemoteGATTCharacteristic {
match descriptors_vec {
Ok(descriptor_vec) => {
Ok(descriptor_vec.into_iter()
- .map(|desc| BluetoothRemoteGATTDescriptor::new(self.global().r(),
+ .map(|desc| BluetoothRemoteGATTDescriptor::new(self.global().r().as_global_scope(),
self,
DOMString::from(desc.uuid),
desc.instance_id))
diff --git a/components/script/dom/bluetoothremotegattdescriptor.rs b/components/script/dom/bluetoothremotegattdescriptor.rs
index d036f8bd9ea..ee4c6ce1af5 100644
--- a/components/script/dom/bluetoothremotegattdescriptor.rs
+++ b/components/script/dom/bluetoothremotegattdescriptor.rs
@@ -13,12 +13,12 @@ use dom::bindings::codegen::Bindings::BluetoothRemoteGATTServerBinding::Bluetoot
use dom::bindings::codegen::Bindings::BluetoothRemoteGATTServiceBinding::BluetoothRemoteGATTServiceMethods;
use dom::bindings::error::{ErrorResult, Fallible};
use dom::bindings::error::Error::{self, InvalidModification, Network, Security};
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, MutHeap, Root};
use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
use dom::bindings::str::{ByteString, DOMString};
use dom::bluetooth::result_to_promise;
use dom::bluetoothremotegattcharacteristic::{BluetoothRemoteGATTCharacteristic, MAXIMUM_ATTRIBUTE_LENGTH};
+use dom::globalscope::GlobalScope;
use dom::promise::Promise;
use ipc_channel::ipc::{self, IpcSender};
use net_traits::bluetooth_thread::BluetoothMethodMsg;
@@ -48,7 +48,7 @@ impl BluetoothRemoteGATTDescriptor {
}
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
characteristic: &BluetoothRemoteGATTCharacteristic,
uuid: DOMString,
instanceID: String)
diff --git a/components/script/dom/bluetoothremotegattserver.rs b/components/script/dom/bluetoothremotegattserver.rs
index 3439ba53350..3a939614d36 100644
--- a/components/script/dom/bluetoothremotegattserver.rs
+++ b/components/script/dom/bluetoothremotegattserver.rs
@@ -8,7 +8,6 @@ use dom::bindings::codegen::Bindings::BluetoothRemoteGATTServerBinding;
use dom::bindings::codegen::Bindings::BluetoothRemoteGATTServerBinding::BluetoothRemoteGATTServerMethods;
use dom::bindings::error::{ErrorResult, Fallible};
use dom::bindings::error::Error::{self, Security};
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, MutHeap, Root};
use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
use dom::bindings::str::DOMString;
@@ -16,6 +15,7 @@ use dom::bluetooth::result_to_promise;
use dom::bluetoothdevice::BluetoothDevice;
use dom::bluetoothremotegattservice::BluetoothRemoteGATTService;
use dom::bluetoothuuid::{BluetoothServiceUUID, BluetoothUUID};
+use dom::globalscope::GlobalScope;
use dom::promise::Promise;
use ipc_channel::ipc::{self, IpcSender};
use net_traits::bluetooth_thread::BluetoothMethodMsg;
@@ -39,10 +39,10 @@ impl BluetoothRemoteGATTServer {
}
}
- pub fn new(global: GlobalRef, device: &BluetoothDevice) -> Root<BluetoothRemoteGATTServer> {
+ pub fn new(global: &GlobalScope, device: &BluetoothDevice) -> Root<BluetoothRemoteGATTServer> {
reflect_dom_object(box BluetoothRemoteGATTServer::new_inherited(device),
- global,
- BluetoothRemoteGATTServerBinding::Wrap)
+ global,
+ BluetoothRemoteGATTServerBinding::Wrap)
}
fn get_bluetooth_thread(&self) -> IpcSender<BluetoothMethodMsg> {
@@ -80,7 +80,7 @@ impl BluetoothRemoteGATTServer {
let service = receiver.recv().unwrap();
match service {
Ok(service) => {
- Ok(BluetoothRemoteGATTService::new(self.global().r(),
+ Ok(BluetoothRemoteGATTService::new(self.global().r().as_global_scope(),
&self.device.get(),
DOMString::from(service.uuid),
service.is_primary,
@@ -112,7 +112,7 @@ impl BluetoothRemoteGATTServer {
match services_vec {
Ok(service_vec) => {
Ok(service_vec.into_iter()
- .map(|service| BluetoothRemoteGATTService::new(self.global().r(),
+ .map(|service| BluetoothRemoteGATTService::new(self.global().r().as_global_scope(),
&self.device.get(),
DOMString::from(service.uuid),
service.is_primary,
diff --git a/components/script/dom/bluetoothremotegattservice.rs b/components/script/dom/bluetoothremotegattservice.rs
index 3ece2507cd3..3a590b4738a 100644
--- a/components/script/dom/bluetoothremotegattservice.rs
+++ b/components/script/dom/bluetoothremotegattservice.rs
@@ -7,7 +7,6 @@ use dom::bindings::codegen::Bindings::BluetoothRemoteGATTServiceBinding;
use dom::bindings::codegen::Bindings::BluetoothRemoteGATTServiceBinding::BluetoothRemoteGATTServiceMethods;
use dom::bindings::error::Error::{self, Security};
use dom::bindings::error::Fallible;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, MutHeap, Root};
use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
use dom::bindings::str::DOMString;
@@ -16,6 +15,7 @@ use dom::bluetoothcharacteristicproperties::BluetoothCharacteristicProperties;
use dom::bluetoothdevice::BluetoothDevice;
use dom::bluetoothremotegattcharacteristic::BluetoothRemoteGATTCharacteristic;
use dom::bluetoothuuid::{BluetoothCharacteristicUUID, BluetoothServiceUUID, BluetoothUUID};
+use dom::globalscope::GlobalScope;
use dom::promise::Promise;
use ipc_channel::ipc::{self, IpcSender};
use net_traits::bluetooth_thread::BluetoothMethodMsg;
@@ -46,7 +46,7 @@ impl BluetoothRemoteGATTService {
}
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
device: &BluetoothDevice,
uuid: DOMString,
isPrimary: bool,
@@ -84,7 +84,10 @@ impl BluetoothRemoteGATTService {
let characteristic = receiver.recv().unwrap();
match characteristic {
Ok(characteristic) => {
- let properties = BluetoothCharacteristicProperties::new(self.global().r(),
+ let global = self.global();
+ let global = global.r();
+ let global = global.as_global_scope();
+ let properties = BluetoothCharacteristicProperties::new(global,
characteristic.broadcast,
characteristic.read,
characteristic.write_without_response,
@@ -94,7 +97,7 @@ impl BluetoothRemoteGATTService {
characteristic.authenticated_signed_writes,
characteristic.reliable_write,
characteristic.writable_auxiliaries);
- Ok(BluetoothRemoteGATTCharacteristic::new(self.global().r(),
+ Ok(BluetoothRemoteGATTCharacteristic::new(global,
self,
DOMString::from(characteristic.uuid),
&properties,
@@ -127,7 +130,10 @@ impl BluetoothRemoteGATTService {
match characteristics_vec {
Ok(characteristic_vec) => {
for characteristic in characteristic_vec {
- let properties = BluetoothCharacteristicProperties::new(self.global().r(),
+ let global = self.global();
+ let global = global.r();
+ let global = global.as_global_scope();
+ let properties = BluetoothCharacteristicProperties::new(global,
characteristic.broadcast,
characteristic.read,
characteristic.write_without_response,
@@ -137,7 +143,7 @@ impl BluetoothRemoteGATTService {
characteristic.authenticated_signed_writes,
characteristic.reliable_write,
characteristic.writable_auxiliaries);
- characteristics.push(BluetoothRemoteGATTCharacteristic::new(self.global().r(),
+ characteristics.push(BluetoothRemoteGATTCharacteristic::new(global,
self,
DOMString::from(characteristic.uuid),
&properties,
@@ -167,7 +173,7 @@ impl BluetoothRemoteGATTService {
let service = receiver.recv().unwrap();
match service {
Ok(service) => {
- Ok(BluetoothRemoteGATTService::new(self.global().r(),
+ Ok(BluetoothRemoteGATTService::new(self.global().r().as_global_scope(),
&self.device.get(),
DOMString::from(service.uuid),
service.is_primary,
@@ -201,7 +207,7 @@ impl BluetoothRemoteGATTService {
match services_vec {
Ok(service_vec) => {
Ok(service_vec.into_iter()
- .map(|service| BluetoothRemoteGATTService::new(self.global().r(),
+ .map(|service| BluetoothRemoteGATTService::new(self.global().r().as_global_scope(),
&self.device.get(),
DOMString::from(service.uuid),
service.is_primary,
diff --git a/components/script/dom/canvasgradient.rs b/components/script/dom/canvasgradient.rs
index a805b485796..0fafc1c6f0f 100644
--- a/components/script/dom/canvasgradient.rs
+++ b/components/script/dom/canvasgradient.rs
@@ -9,11 +9,11 @@ use dom::bindings::cell::DOMRefCell;
use dom::bindings::codegen::Bindings::CanvasGradientBinding;
use dom::bindings::codegen::Bindings::CanvasGradientBinding::CanvasGradientMethods;
use dom::bindings::error::{Error, ErrorResult};
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::num::Finite;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::bindings::str::DOMString;
+use dom::globalscope::GlobalScope;
// https://html.spec.whatwg.org/multipage/#canvasgradient
#[dom_struct]
@@ -38,7 +38,7 @@ impl CanvasGradient {
}
}
- pub fn new(global: GlobalRef, style: CanvasGradientStyle) -> Root<CanvasGradient> {
+ pub fn new(global: &GlobalScope, style: CanvasGradientStyle) -> Root<CanvasGradient> {
reflect_dom_object(box CanvasGradient::new_inherited(style),
global,
CanvasGradientBinding::Wrap)
diff --git a/components/script/dom/canvaspattern.rs b/components/script/dom/canvaspattern.rs
index 059710a296b..5fdb911c73a 100644
--- a/components/script/dom/canvaspattern.rs
+++ b/components/script/dom/canvaspattern.rs
@@ -4,10 +4,10 @@
use canvas_traits::{FillOrStrokeStyle, RepetitionStyle, SurfaceStyle};
use dom::bindings::codegen::Bindings::CanvasPatternBinding;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::canvasgradient::ToFillOrStrokeStyle;
+use dom::globalscope::GlobalScope;
use euclid::size::Size2D;
// https://html.spec.whatwg.org/multipage/#canvaspattern
@@ -43,7 +43,7 @@ impl CanvasPattern {
origin_clean: origin_clean,
}
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
surface_data: Vec<u8>,
surface_size: Size2D<i32>,
repeat: RepetitionStyle,
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs
index 4b598407829..e4815e5f472 100644
--- a/components/script/dom/canvasrenderingcontext2d.rs
+++ b/components/script/dom/canvasrenderingcontext2d.rs
@@ -140,7 +140,7 @@ impl CanvasRenderingContext2D {
size: Size2D<i32>)
-> Root<CanvasRenderingContext2D> {
reflect_dom_object(box CanvasRenderingContext2D::new_inherited(global, canvas, size),
- global,
+ global.as_global_scope(),
CanvasRenderingContext2DBinding::Wrap)
}
@@ -1016,12 +1016,12 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D {
let sw = cmp::max(1, sw.abs().to_u32().unwrap());
let sh = cmp::max(1, sh.abs().to_u32().unwrap());
- Ok(ImageData::new(self.global().r(), sw, sh, None))
+ Ok(ImageData::new(self.global().r().as_global_scope(), sw, sh, None))
}
// https://html.spec.whatwg.org/multipage/#dom-context-2d-createimagedata
fn CreateImageData_(&self, imagedata: &ImageData) -> Fallible<Root<ImageData>> {
- Ok(ImageData::new(self.global().r(),
+ Ok(ImageData::new(self.global().r().as_global_scope(),
imagedata.Width(),
imagedata.Height(),
None))
@@ -1077,7 +1077,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D {
chunk[2] = UNPREMULTIPLY_TABLE[256 * alpha + chunk[2] as usize];
}
- Ok(ImageData::new(self.global().r(), sw, sh, Some(data)))
+ Ok(ImageData::new(self.global().r().as_global_scope(), sw, sh, Some(data)))
}
// https://html.spec.whatwg.org/multipage/#dom-context-2d-putimagedata
@@ -1121,7 +1121,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D {
x1: Finite<f64>,
y1: Finite<f64>)
-> Root<CanvasGradient> {
- CanvasGradient::new(self.global().r(),
+ CanvasGradient::new(self.global().r().as_global_scope(),
CanvasGradientStyle::Linear(LinearGradientStyle::new(*x0,
*y0,
*x1,
@@ -1142,7 +1142,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D {
return Err(Error::IndexSize);
}
- Ok(CanvasGradient::new(self.global().r(),
+ Ok(CanvasGradient::new(self.global().r().as_global_scope(),
CanvasGradientStyle::Radial(RadialGradientStyle::new(*x0,
*y0,
*r0,
@@ -1182,7 +1182,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D {
}
if let Ok(rep) = RepetitionStyle::from_str(&repetition) {
- Ok(CanvasPattern::new(self.global().r(),
+ Ok(CanvasPattern::new(self.global().r().as_global_scope(),
image_data,
image_size,
rep,
diff --git a/components/script/dom/client.rs b/components/script/dom/client.rs
index 74ed61a52a7..7f51b251627 100644
--- a/components/script/dom/client.rs
+++ b/components/script/dom/client.rs
@@ -4,7 +4,6 @@
use dom::bindings::codegen::Bindings::ClientBinding::{ClientMethods, Wrap};
use dom::bindings::codegen::Bindings::ClientBinding::FrameType;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::JS;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
@@ -36,7 +35,9 @@ impl Client {
}
pub fn new(window: &Window) -> Root<Client> {
- reflect_dom_object(box Client::new_inherited(window.get_url()), GlobalRef::Window(window), Wrap)
+ reflect_dom_object(box Client::new_inherited(window.get_url()),
+ window,
+ Wrap)
}
}
diff --git a/components/script/dom/closeevent.rs b/components/script/dom/closeevent.rs
index 07e2fbaa943..7a076df8362 100644
--- a/components/script/dom/closeevent.rs
+++ b/components/script/dom/closeevent.rs
@@ -12,6 +12,7 @@ use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
use dom::bindings::str::DOMString;
use dom::event::{Event, EventBubbles, EventCancelable};
+use dom::globalscope::GlobalScope;
use string_cache::Atom;
#[dom_struct]
@@ -32,13 +33,13 @@ impl CloseEvent {
}
}
- pub fn new_uninitialized(global: GlobalRef) -> Root<CloseEvent> {
+ pub fn new_uninitialized(global: &GlobalScope) -> Root<CloseEvent> {
reflect_dom_object(box CloseEvent::new_inherited(false, 0, DOMString::new()),
global,
CloseEventBinding::Wrap)
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
type_: Atom,
bubbles: EventBubbles,
cancelable: EventCancelable,
@@ -63,7 +64,7 @@ impl CloseEvent {
-> Fallible<Root<CloseEvent>> {
let bubbles = EventBubbles::from(init.parent.bubbles);
let cancelable = EventCancelable::from(init.parent.cancelable);
- Ok(CloseEvent::new(global,
+ Ok(CloseEvent::new(global.as_global_scope(),
Atom::from(type_),
bubbles,
cancelable,
diff --git a/components/script/dom/crypto.rs b/components/script/dom/crypto.rs
index 165a3834227..45c1c4639d5 100644
--- a/components/script/dom/crypto.rs
+++ b/components/script/dom/crypto.rs
@@ -8,9 +8,9 @@ use dom::bindings::codegen::Bindings::CryptoBinding;
use dom::bindings::codegen::Bindings::CryptoBinding::CryptoMethods;
use dom::bindings::conversions::array_buffer_view_data;
use dom::bindings::error::{Error, Fallible};
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::globalscope::GlobalScope;
use js::jsapi::{JSContext, JSObject};
use js::jsapi::{JS_GetArrayBufferViewType, Type};
use rand::{OsRng, Rng};
@@ -33,7 +33,7 @@ impl Crypto {
}
}
- pub fn new(global: GlobalRef) -> Root<Crypto> {
+ pub fn new(global: &GlobalScope) -> Root<Crypto> {
reflect_dom_object(box Crypto::new_inherited(), global, CryptoBinding::Wrap)
}
}
diff --git a/components/script/dom/cssstyledeclaration.rs b/components/script/dom/cssstyledeclaration.rs
index 0b8c9d8a062..77aee91ce48 100644
--- a/components/script/dom/cssstyledeclaration.rs
+++ b/components/script/dom/cssstyledeclaration.rs
@@ -5,7 +5,6 @@
use cssparser::ToCss;
use dom::bindings::codegen::Bindings::CSSStyleDeclarationBinding::{self, CSSStyleDeclarationMethods};
use dom::bindings::error::{Error, ErrorResult, Fallible};
-use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
@@ -71,7 +70,7 @@ impl CSSStyleDeclaration {
reflect_dom_object(box CSSStyleDeclaration::new_inherited(owner,
pseudo,
modification_access),
- GlobalRef::Window(global),
+ global,
CSSStyleDeclarationBinding::Wrap)
}
diff --git a/components/script/dom/customevent.rs b/components/script/dom/customevent.rs
index 301c3b6f816..043fd98193c 100644
--- a/components/script/dom/customevent.rs
+++ b/components/script/dom/customevent.rs
@@ -12,6 +12,7 @@ use dom::bindings::js::{MutHeapJSVal, Root};
use dom::bindings::reflector::reflect_dom_object;
use dom::bindings::str::DOMString;
use dom::event::Event;
+use dom::globalscope::GlobalScope;
use js::jsapi::{HandleValue, JSContext};
use js::jsval::JSVal;
use string_cache::Atom;
@@ -32,12 +33,12 @@ impl CustomEvent {
}
}
- pub fn new_uninitialized(global: GlobalRef) -> Root<CustomEvent> {
+ pub fn new_uninitialized(global: &GlobalScope) -> Root<CustomEvent> {
reflect_dom_object(box CustomEvent::new_inherited(),
global,
CustomEventBinding::Wrap)
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
type_: Atom,
bubbles: bool,
cancelable: bool,
@@ -52,7 +53,7 @@ impl CustomEvent {
type_: DOMString,
init: &CustomEventBinding::CustomEventInit)
-> Fallible<Root<CustomEvent>> {
- Ok(CustomEvent::new(global,
+ Ok(CustomEvent::new(global.as_global_scope(),
Atom::from(type_),
init.parent.bubbles,
init.parent.cancelable,
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs
index 5e834ef52cd..7857e46ecfe 100644
--- a/components/script/dom/document.rs
+++ b/components/script/dom/document.rs
@@ -1848,7 +1848,7 @@ impl Document {
doc_loader,
referrer,
referrer_policy),
- GlobalRef::Window(window),
+ window,
DocumentBinding::Wrap);
{
let node = document.upcast::<Node>();
@@ -2325,13 +2325,13 @@ impl DocumentMethods for Document {
"mouseevents" | "mouseevent" =>
Ok(Root::upcast(MouseEvent::new_uninitialized(&self.window))),
"customevent" =>
- Ok(Root::upcast(CustomEvent::new_uninitialized(GlobalRef::Window(&self.window)))),
+ Ok(Root::upcast(CustomEvent::new_uninitialized(self.window.upcast()))),
"htmlevents" | "events" | "event" | "svgevents" =>
- Ok(Event::new_uninitialized(GlobalRef::Window(&self.window))),
+ Ok(Event::new_uninitialized(&self.window.upcast())),
"keyboardevent" =>
Ok(Root::upcast(KeyboardEvent::new_uninitialized(&self.window))),
"messageevent" =>
- Ok(Root::upcast(MessageEvent::new_uninitialized(GlobalRef::Window(&self.window)))),
+ Ok(Root::upcast(MessageEvent::new_uninitialized(self.window.upcast()))),
"touchevent" =>
Ok(Root::upcast(
TouchEvent::new_uninitialized(&self.window,
@@ -2341,25 +2341,25 @@ impl DocumentMethods for Document {
)
)),
"webglcontextevent" =>
- Ok(Root::upcast(WebGLContextEvent::new_uninitialized(GlobalRef::Window(&self.window)))),
+ Ok(Root::upcast(WebGLContextEvent::new_uninitialized(self.window.upcast()))),
"storageevent" => {
let USVString(url) = self.URL();
Ok(Root::upcast(StorageEvent::new_uninitialized(&self.window, DOMString::from(url))))
},
"progressevent" =>
- Ok(Root::upcast(ProgressEvent::new_uninitialized(&self.window))),
+ Ok(Root::upcast(ProgressEvent::new_uninitialized(self.window.upcast()))),
"focusevent" =>
- Ok(Root::upcast(FocusEvent::new_uninitialized(GlobalRef::Window(&self.window)))),
+ Ok(Root::upcast(FocusEvent::new_uninitialized(self.window.upcast()))),
"errorevent" =>
- Ok(Root::upcast(ErrorEvent::new_uninitialized(GlobalRef::Window(&self.window)))),
+ Ok(Root::upcast(ErrorEvent::new_uninitialized(self.window.upcast()))),
"closeevent" =>
- Ok(Root::upcast(CloseEvent::new_uninitialized(GlobalRef::Window(&self.window)))),
+ Ok(Root::upcast(CloseEvent::new_uninitialized(self.window.upcast()))),
"popstateevent" =>
- Ok(Root::upcast(PopStateEvent::new_uninitialized(GlobalRef::Window(&self.window)))),
+ Ok(Root::upcast(PopStateEvent::new_uninitialized(self.window.upcast()))),
"hashchangeevent" =>
- Ok(Root::upcast(HashChangeEvent::new_uninitialized(GlobalRef::Window(&self.window)))),
+ Ok(Root::upcast(HashChangeEvent::new_uninitialized(&self.window.upcast()))),
"pagetransitionevent" =>
- Ok(Root::upcast(PageTransitionEvent::new_uninitialized(GlobalRef::Window(&self.window)))),
+ Ok(Root::upcast(PageTransitionEvent::new_uninitialized(self.window.upcast()))),
_ =>
Err(Error::NotSupported),
}
@@ -2993,7 +2993,7 @@ impl DocumentProgressHandler {
fn dispatch_load(&self) {
let document = self.addr.root();
let window = document.window();
- let event = Event::new(GlobalRef::Window(window),
+ let event = Event::new(window.upcast(),
atom!("load"),
EventBubbles::DoesNotBubble,
EventCancelable::NotCancelable);
diff --git a/components/script/dom/domexception.rs b/components/script/dom/domexception.rs
index e32d5dc40ac..2a5946193b6 100644
--- a/components/script/dom/domexception.rs
+++ b/components/script/dom/domexception.rs
@@ -5,10 +5,10 @@
use dom::bindings::codegen::Bindings::DOMExceptionBinding;
use dom::bindings::codegen::Bindings::DOMExceptionBinding::DOMExceptionConstants;
use dom::bindings::codegen::Bindings::DOMExceptionBinding::DOMExceptionMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::bindings::str::DOMString;
+use dom::globalscope::GlobalScope;
#[repr(u16)]
#[derive(JSTraceable, Copy, Clone, Debug, HeapSizeOf)]
@@ -52,7 +52,7 @@ impl DOMException {
}
}
- pub fn new(global: GlobalRef, code: DOMErrorName) -> Root<DOMException> {
+ pub fn new(global: &GlobalScope, code: DOMErrorName) -> Root<DOMException> {
reflect_dom_object(box DOMException::new_inherited(code),
global,
DOMExceptionBinding::Wrap)
diff --git a/components/script/dom/domimplementation.rs b/components/script/dom/domimplementation.rs
index dd55630204c..42d744bd6a5 100644
--- a/components/script/dom/domimplementation.rs
+++ b/components/script/dom/domimplementation.rs
@@ -8,7 +8,6 @@ use dom::bindings::codegen::Bindings::DOMImplementationBinding::DOMImplementatio
use dom::bindings::codegen::Bindings::DocumentBinding::DocumentMethods;
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
use dom::bindings::error::Fallible;
-use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
@@ -43,7 +42,7 @@ impl DOMImplementation {
pub fn new(document: &Document) -> Root<DOMImplementation> {
let window = document.window();
reflect_dom_object(box DOMImplementation::new_inherited(document),
- GlobalRef::Window(window),
+ window,
DOMImplementationBinding::Wrap)
}
}
diff --git a/components/script/dom/dommatrix.rs b/components/script/dom/dommatrix.rs
index c63290c9326..2ccf4b126fb 100644
--- a/components/script/dom/dommatrix.rs
+++ b/components/script/dom/dommatrix.rs
@@ -10,6 +10,7 @@ use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
use dom::dommatrixreadonly::{dommatrixinit_to_matrix, DOMMatrixReadOnly, entries_to_matrix};
+use dom::globalscope::GlobalScope;
use euclid::Matrix4D;
@@ -20,7 +21,7 @@ pub struct DOMMatrix {
impl DOMMatrix {
#[allow(unrooted_must_root)]
- pub fn new(global: GlobalRef, is2D: bool, matrix: Matrix4D<f64>) -> Root<Self> {
+ pub fn new(global: &GlobalScope, is2D: bool, matrix: Matrix4D<f64>) -> Root<Self> {
let dommatrix = Self::new_inherited(is2D, matrix);
reflect_dom_object(box dommatrix, global, Wrap)
}
@@ -40,7 +41,7 @@ impl DOMMatrix {
pub fn Constructor_(global: GlobalRef, entries: Vec<f64>) -> Fallible<Root<Self>> {
entries_to_matrix(&entries[..])
.map(|(is2D, matrix)| {
- Self::new(global, is2D, matrix)
+ Self::new(global.as_global_scope(), is2D, matrix)
})
}
@@ -48,11 +49,11 @@ impl DOMMatrix {
pub fn FromMatrix(global: GlobalRef, other: &DOMMatrixInit) -> Fallible<Root<Self>> {
dommatrixinit_to_matrix(&other)
.map(|(is2D, matrix)| {
- Self::new(global, is2D, matrix)
+ Self::new(global.as_global_scope(), is2D, matrix)
})
}
- pub fn from_readonly(global: GlobalRef, ro: &DOMMatrixReadOnly) -> Root<Self> {
+ pub fn from_readonly(global: &GlobalScope, ro: &DOMMatrixReadOnly) -> Root<Self> {
Self::new(global, ro.is_2d(), ro.matrix().clone())
}
}
diff --git a/components/script/dom/dommatrixreadonly.rs b/components/script/dom/dommatrixreadonly.rs
index 5c6d66c9a1a..b643ef3131a 100644
--- a/components/script/dom/dommatrixreadonly.rs
+++ b/components/script/dom/dommatrixreadonly.rs
@@ -13,6 +13,7 @@ use dom::bindings::js::Root;
use dom::bindings::reflector::{reflect_dom_object, Reflectable, Reflector};
use dom::dommatrix::DOMMatrix;
use dom::dompoint::DOMPoint;
+use dom::globalscope::GlobalScope;
use euclid::{Matrix4D, Point4D, Radians};
use std::cell::{Cell, Ref};
use std::f64;
@@ -26,7 +27,7 @@ pub struct DOMMatrixReadOnly {
impl DOMMatrixReadOnly {
#[allow(unrooted_must_root)]
- pub fn new(global: GlobalRef, is2D: bool, matrix: Matrix4D<f64>) -> Root<Self> {
+ pub fn new(global: &GlobalScope, is2D: bool, matrix: Matrix4D<f64>) -> Root<Self> {
let dommatrix = Self::new_inherited(is2D, matrix);
reflect_dom_object(box dommatrix, global, Wrap)
}
@@ -41,14 +42,14 @@ impl DOMMatrixReadOnly {
// https://drafts.fxtf.org/geometry-1/#dom-dommatrixreadonly-dommatrixreadonly
pub fn Constructor(global: GlobalRef) -> Fallible<Root<Self>> {
- Ok(Self::new(global, true, Matrix4D::identity()))
+ Ok(Self::new(global.as_global_scope(), true, Matrix4D::identity()))
}
// https://drafts.fxtf.org/geometry-1/#dom-dommatrixreadonly-dommatrixreadonly-numbersequence
pub fn Constructor_(global: GlobalRef, entries: Vec<f64>) -> Fallible<Root<Self>> {
entries_to_matrix(&entries[..])
.map(|(is2D, matrix)| {
- Self::new(global, is2D, matrix)
+ Self::new(global.as_global_scope(), is2D, matrix)
})
}
@@ -56,7 +57,7 @@ impl DOMMatrixReadOnly {
pub fn FromMatrix(global: GlobalRef, other: &DOMMatrixInit) -> Fallible<Root<Self>> {
dommatrixinit_to_matrix(&other)
.map(|(is2D, matrix)| {
- Self::new(global, is2D, matrix)
+ Self::new(global.as_global_scope(), is2D, matrix)
})
}
@@ -463,48 +464,50 @@ impl DOMMatrixReadOnlyMethods for DOMMatrixReadOnly {
// https://drafts.fxtf.org/geometry-1/#dom-dommatrixreadonly-translate
fn Translate(&self, tx: f64, ty: f64, tz: f64) -> Root<DOMMatrix> {
- DOMMatrix::from_readonly(self.global().r(), self).TranslateSelf(tx, ty, tz)
+ DOMMatrix::from_readonly(self.global().r().as_global_scope(), self).TranslateSelf(tx, ty, tz)
}
// https://drafts.fxtf.org/geometry-1/#dom-dommatrixreadonly-scale
fn Scale(&self, scaleX: f64, scaleY: Option<f64>, scaleZ: f64,
originX: f64, originY: f64, originZ: f64) -> Root<DOMMatrix> {
- DOMMatrix::from_readonly(self.global().r(), self).ScaleSelf(scaleX, scaleY, scaleZ, originX, originY, originZ)
+ DOMMatrix::from_readonly(self.global().r().as_global_scope(), self)
+ .ScaleSelf(scaleX, scaleY, scaleZ, originX, originY, originZ)
}
// https://drafts.fxtf.org/geometry-1/#dom-dommatrixreadonly-scale3d
fn Scale3d(&self, scale: f64, originX: f64, originY: f64, originZ: f64) -> Root<DOMMatrix> {
- DOMMatrix::from_readonly(self.global().r(), self).Scale3dSelf(scale, originX, originY, originZ)
+ DOMMatrix::from_readonly(self.global().r().as_global_scope(), self)
+ .Scale3dSelf(scale, originX, originY, originZ)
}
// https://drafts.fxtf.org/geometry-1/#dom-dommatrixreadonly-rotate
fn Rotate(&self, rotX: f64, rotY: Option<f64>, rotZ: Option<f64>) -> Root<DOMMatrix> {
- DOMMatrix::from_readonly(self.global().r(), self).RotateSelf(rotX, rotY, rotZ)
+ DOMMatrix::from_readonly(self.global().r().as_global_scope(), self).RotateSelf(rotX, rotY, rotZ)
}
// https://drafts.fxtf.org/geometry-1/#dom-dommatrixreadonly-rotatefromvector
fn RotateFromVector(&self, x: f64, y: f64) -> Root<DOMMatrix> {
- DOMMatrix::from_readonly(self.global().r(), self).RotateFromVectorSelf(x, y)
+ DOMMatrix::from_readonly(self.global().r().as_global_scope(), self).RotateFromVectorSelf(x, y)
}
// https://drafts.fxtf.org/geometry-1/#dom-dommatrixreadonly-rotateaxisangle
fn RotateAxisAngle(&self, x: f64, y: f64, z: f64, angle: f64) -> Root<DOMMatrix> {
- DOMMatrix::from_readonly(self.global().r(), self).RotateAxisAngleSelf(x, y, z, angle)
+ DOMMatrix::from_readonly(self.global().r().as_global_scope(), self).RotateAxisAngleSelf(x, y, z, angle)
}
// https://drafts.fxtf.org/geometry-1/#dom-dommatrixreadonly-skewx
fn SkewX(&self, sx: f64) -> Root<DOMMatrix> {
- DOMMatrix::from_readonly(self.global().r(), self).SkewXSelf(sx)
+ DOMMatrix::from_readonly(self.global().r().as_global_scope(), self).SkewXSelf(sx)
}
// https://drafts.fxtf.org/geometry-1/#dom-dommatrixreadonly-skewy
fn SkewY(&self, sy: f64) -> Root<DOMMatrix> {
- DOMMatrix::from_readonly(self.global().r(), self).SkewYSelf(sy)
+ DOMMatrix::from_readonly(self.global().r().as_global_scope(), self).SkewYSelf(sy)
}
// https://drafts.fxtf.org/geometry-1/#dom-dommatrixreadonly-multiply
fn Multiply(&self, other: &DOMMatrixInit) -> Fallible<Root<DOMMatrix>> {
- DOMMatrix::from_readonly(self.global().r(), self).MultiplySelf(&other)
+ DOMMatrix::from_readonly(self.global().r().as_global_scope(), self).MultiplySelf(&other)
}
// https://drafts.fxtf.org/geometry-1/#dom-dommatrixreadonly-flipx
@@ -515,7 +518,7 @@ impl DOMMatrixReadOnlyMethods for DOMMatrixReadOnly {
0.0, 0.0, 1.0, 0.0,
0.0, 0.0, 0.0, 1.0);
let matrix = flip.post_mul(&self.matrix.borrow());
- DOMMatrix::new(self.global().r(), is2D, matrix)
+ DOMMatrix::new(self.global().r().as_global_scope(), is2D, matrix)
}
// https://drafts.fxtf.org/geometry-1/#dom-dommatrixreadonly-flipy
@@ -526,19 +529,24 @@ impl DOMMatrixReadOnlyMethods for DOMMatrixReadOnly {
0.0, 0.0, 1.0, 0.0,
0.0, 0.0, 0.0, 1.0);
let matrix = flip.post_mul(&self.matrix.borrow());
- DOMMatrix::new(self.global().r(), is2D, matrix)
+ DOMMatrix::new(self.global().r().as_global_scope(), is2D, matrix)
}
// https://drafts.fxtf.org/geometry-1/#dom-dommatrixreadonly-inverse
fn Inverse(&self) -> Root<DOMMatrix> {
- DOMMatrix::from_readonly(self.global().r(), self).InvertSelf()
+ DOMMatrix::from_readonly(self.global().r().as_global_scope(), self).InvertSelf()
}
// https://drafts.fxtf.org/geometry-1/#dom-dommatrixreadonly-transformpoint
fn TransformPoint(&self, point: &DOMPointInit) -> Root<DOMPoint> {
let matrix = self.matrix.borrow();
let result = matrix.transform_point4d(&Point4D::new(point.x, point.y, point.z, point.w));
- DOMPoint::new(self.global().r(), result.x as f64, result.y as f64, result.z as f64, result.w as f64)
+ DOMPoint::new(
+ self.global().r().as_global_scope(),
+ result.x as f64,
+ result.y as f64,
+ result.z as f64,
+ result.w as f64)
}
}
diff --git a/components/script/dom/domparser.rs b/components/script/dom/domparser.rs
index a52f0b8b82f..cf82cad01ca 100644
--- a/components/script/dom/domparser.rs
+++ b/components/script/dom/domparser.rs
@@ -38,7 +38,7 @@ impl DOMParser {
pub fn new(window: &Window) -> Root<DOMParser> {
reflect_dom_object(box DOMParser::new_inherited(window),
- GlobalRef::Window(window),
+ window,
DOMParserBinding::Wrap)
}
diff --git a/components/script/dom/dompoint.rs b/components/script/dom/dompoint.rs
index 906a30ea617..49a873a25fc 100644
--- a/components/script/dom/dompoint.rs
+++ b/components/script/dom/dompoint.rs
@@ -9,6 +9,7 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
use dom::dompointreadonly::{DOMPointReadOnly, DOMPointWriteMethods};
+use dom::globalscope::GlobalScope;
// http://dev.w3.org/fxtf/geometry/Overview.html#dompoint
#[dom_struct]
@@ -23,7 +24,7 @@ impl DOMPoint {
}
}
- pub fn new(global: GlobalRef, x: f64, y: f64, z: f64, w: f64) -> Root<DOMPoint> {
+ pub fn new(global: &GlobalScope, x: f64, y: f64, z: f64, w: f64) -> Root<DOMPoint> {
reflect_dom_object(box DOMPoint::new_inherited(x, y, z, w), global, Wrap)
}
@@ -33,10 +34,10 @@ impl DOMPoint {
z: f64,
w: f64)
-> Fallible<Root<DOMPoint>> {
- Ok(DOMPoint::new(global, x, y, z, w))
+ Ok(DOMPoint::new(global.as_global_scope(), x, y, z, w))
}
- pub fn new_from_init(global: GlobalRef, p: &DOMPointInit) -> Root<DOMPoint> {
+ pub fn new_from_init(global: &GlobalScope, p: &DOMPointInit) -> Root<DOMPoint> {
DOMPoint::new(global, p.x, p.y, p.z, p.w)
}
}
diff --git a/components/script/dom/dompointreadonly.rs b/components/script/dom/dompointreadonly.rs
index aa7efa76267..f905db356ca 100644
--- a/components/script/dom/dompointreadonly.rs
+++ b/components/script/dom/dompointreadonly.rs
@@ -7,6 +7,7 @@ use dom::bindings::error::Fallible;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::globalscope::GlobalScope;
use std::cell::Cell;
// http://dev.w3.org/fxtf/geometry/Overview.html#dompointreadonly
@@ -30,7 +31,7 @@ impl DOMPointReadOnly {
}
}
- pub fn new(global: GlobalRef, x: f64, y: f64, z: f64, w: f64) -> Root<DOMPointReadOnly> {
+ pub fn new(global: &GlobalScope, x: f64, y: f64, z: f64, w: f64) -> Root<DOMPointReadOnly> {
reflect_dom_object(box DOMPointReadOnly::new_inherited(x, y, z, w),
global,
Wrap)
@@ -42,7 +43,7 @@ impl DOMPointReadOnly {
z: f64,
w: f64)
-> Fallible<Root<DOMPointReadOnly>> {
- Ok(DOMPointReadOnly::new(global, x, y, z, w))
+ Ok(DOMPointReadOnly::new(global.as_global_scope(), x, y, z, w))
}
}
diff --git a/components/script/dom/domquad.rs b/components/script/dom/domquad.rs
index a9af14d3d69..238258889a8 100644
--- a/components/script/dom/domquad.rs
+++ b/components/script/dom/domquad.rs
@@ -11,6 +11,7 @@ use dom::bindings::js::{Root, JS};
use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
use dom::dompoint::DOMPoint;
use dom::domrect::DOMRect;
+use dom::globalscope::GlobalScope;
// https://drafts.fxtf.org/geometry/#DOMQuad
#[dom_struct]
@@ -37,7 +38,7 @@ impl DOMQuad {
}
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
p1: &DOMPoint,
p2: &DOMPoint,
p3: &DOMPoint,
@@ -53,6 +54,7 @@ impl DOMQuad {
p3: &DOMPointInit,
p4: &DOMPointInit)
-> Fallible<Root<DOMQuad>> {
+ let global = global.as_global_scope();
Ok(DOMQuad::new(global,
&*DOMPoint::new_from_init(global, p1),
&*DOMPoint::new_from_init(global, p2),
@@ -62,6 +64,7 @@ impl DOMQuad {
// https://drafts.fxtf.org/geometry/#dom-domquad-fromrect
pub fn FromRect(global: GlobalRef, other: &DOMRectInit) -> Root<DOMQuad> {
+ let global = global.as_global_scope();
DOMQuad::new(global,
&*DOMPoint::new(global, other.x, other.y, 0f64, 1f64),
&*DOMPoint::new(global, other.x + other.width, other.y, 0f64, 1f64),
@@ -71,6 +74,7 @@ impl DOMQuad {
// https://drafts.fxtf.org/geometry/#dom-domquad-fromquad
pub fn FromQuad(global: GlobalRef, other: &DOMQuadInit) -> Root<DOMQuad> {
+ let global = global.as_global_scope();
DOMQuad::new(global,
&DOMPoint::new_from_init(global, &other.p1),
&DOMPoint::new_from_init(global, &other.p2),
@@ -107,7 +111,7 @@ impl DOMQuadMethods for DOMQuad {
let right = self.p1.X().max(self.p2.X()).max(self.p3.X()).max(self.p4.X());
let bottom = self.p1.Y().max(self.p2.Y()).max(self.p3.Y()).max(self.p4.Y());
- DOMRect::new(self.global().r(),
+ DOMRect::new(self.global().r().as_global_scope(),
left,
top,
right - left,
diff --git a/components/script/dom/domrect.rs b/components/script/dom/domrect.rs
index 086e21882c6..f70eda2ead1 100644
--- a/components/script/dom/domrect.rs
+++ b/components/script/dom/domrect.rs
@@ -10,6 +10,7 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
use dom::domrectreadonly::DOMRectReadOnly;
+use dom::globalscope::GlobalScope;
#[dom_struct]
pub struct DOMRect {
@@ -23,7 +24,7 @@ impl DOMRect {
}
}
- pub fn new(global: GlobalRef, x: f64, y: f64, width: f64, height: f64) -> Root<DOMRect> {
+ pub fn new(global: &GlobalScope, x: f64, y: f64, width: f64, height: f64) -> Root<DOMRect> {
reflect_dom_object(box DOMRect::new_inherited(x, y, width, height),
global,
DOMRectBinding::Wrap)
@@ -35,7 +36,7 @@ impl DOMRect {
width: f64,
height: f64)
-> Fallible<Root<DOMRect>> {
- Ok(DOMRect::new(global, x, y, width, height))
+ Ok(DOMRect::new(global.as_global_scope(), x, y, width, height))
}
}
diff --git a/components/script/dom/domrectlist.rs b/components/script/dom/domrectlist.rs
index 86774a49ff3..392aa18997e 100644
--- a/components/script/dom/domrectlist.rs
+++ b/components/script/dom/domrectlist.rs
@@ -4,7 +4,6 @@
use dom::bindings::codegen::Bindings::DOMRectListBinding;
use dom::bindings::codegen::Bindings::DOMRectListBinding::DOMRectListMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::domrect::DOMRect;
@@ -30,7 +29,7 @@ impl DOMRectList {
where T: Iterator<Item = Root<DOMRect>>
{
reflect_dom_object(box DOMRectList::new_inherited(rects),
- GlobalRef::Window(window),
+ window,
DOMRectListBinding::Wrap)
}
}
diff --git a/components/script/dom/domrectreadonly.rs b/components/script/dom/domrectreadonly.rs
index 8e72dae6942..a9d87ec3947 100644
--- a/components/script/dom/domrectreadonly.rs
+++ b/components/script/dom/domrectreadonly.rs
@@ -7,6 +7,7 @@ use dom::bindings::error::Fallible;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::globalscope::GlobalScope;
use std::cell::Cell;
#[dom_struct]
@@ -29,7 +30,7 @@ impl DOMRectReadOnly {
}
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
x: f64,
y: f64,
width: f64,
@@ -46,7 +47,7 @@ impl DOMRectReadOnly {
width: f64,
height: f64)
-> Fallible<Root<DOMRectReadOnly>> {
- Ok(DOMRectReadOnly::new(global, x, y, width, height))
+ Ok(DOMRectReadOnly::new(global.as_global_scope(), x, y, width, height))
}
pub fn set_x(&self, value: f64) {
diff --git a/components/script/dom/domstringmap.rs b/components/script/dom/domstringmap.rs
index 11479d6b5df..687c10ec898 100644
--- a/components/script/dom/domstringmap.rs
+++ b/components/script/dom/domstringmap.rs
@@ -5,7 +5,6 @@
use dom::bindings::codegen::Bindings::DOMStringMapBinding;
use dom::bindings::codegen::Bindings::DOMStringMapBinding::DOMStringMapMethods;
use dom::bindings::error::ErrorResult;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::bindings::str::DOMString;
@@ -29,7 +28,7 @@ impl DOMStringMap {
pub fn new(element: &HTMLElement) -> Root<DOMStringMap> {
let window = window_from_node(element);
reflect_dom_object(box DOMStringMap::new_inherited(element),
- GlobalRef::Window(window.r()),
+ window.r(),
DOMStringMapBinding::Wrap)
}
}
diff --git a/components/script/dom/domtokenlist.rs b/components/script/dom/domtokenlist.rs
index c1c09de94c2..00f6ba1abb1 100644
--- a/components/script/dom/domtokenlist.rs
+++ b/components/script/dom/domtokenlist.rs
@@ -6,7 +6,6 @@ use dom::attr::Attr;
use dom::bindings::codegen::Bindings::DOMTokenListBinding;
use dom::bindings::codegen::Bindings::DOMTokenListBinding::DOMTokenListMethods;
use dom::bindings::error::{Error, ErrorResult, Fallible};
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::bindings::str::DOMString;
@@ -34,7 +33,7 @@ impl DOMTokenList {
pub fn new(element: &Element, local_name: &Atom) -> Root<DOMTokenList> {
let window = window_from_node(element);
reflect_dom_object(box DOMTokenList::new_inherited(element, local_name.clone()),
- GlobalRef::Window(window.r()),
+ window.r(),
DOMTokenListBinding::Wrap)
}
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs
index 5e00cb71c75..13937bf904c 100644
--- a/components/script/dom/element.rs
+++ b/components/script/dom/element.rs
@@ -21,7 +21,6 @@ use dom::bindings::codegen::Bindings::WindowBinding::{ScrollBehavior, ScrollToOp
use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
use dom::bindings::codegen::UnionTypes::NodeOrString;
use dom::bindings::error::{Error, ErrorResult, Fallible};
-use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::{Castable, ElementTypeId, HTMLElementTypeId, NodeTypeId};
use dom::bindings::js::{JS, LayoutJS, MutNullableHeap};
use dom::bindings::js::{Root, RootedReference};
@@ -1589,7 +1588,7 @@ impl ElementMethods for Element {
let win = window_from_node(self);
let raw_rects = self.upcast::<Node>().content_boxes();
let rects = raw_rects.iter().map(|rect| {
- DOMRect::new(GlobalRef::Window(win.r()),
+ DOMRect::new(win.upcast(),
rect.origin.x.to_f64_px(),
rect.origin.y.to_f64_px(),
rect.size.width.to_f64_px(),
@@ -1602,7 +1601,7 @@ impl ElementMethods for Element {
fn GetBoundingClientRect(&self) -> Root<DOMRect> {
let win = window_from_node(self);
let rect = self.upcast::<Node>().bounding_content_box();
- DOMRect::new(GlobalRef::Window(win.r()),
+ DOMRect::new(win.upcast(),
rect.origin.x.to_f64_px(),
rect.origin.y.to_f64_px(),
rect.size.width.to_f64_px(),
diff --git a/components/script/dom/errorevent.rs b/components/script/dom/errorevent.rs
index 61db675f551..394ce749cdb 100644
--- a/components/script/dom/errorevent.rs
+++ b/components/script/dom/errorevent.rs
@@ -13,6 +13,7 @@ use dom::bindings::js::{MutHeapJSVal, Root};
use dom::bindings::reflector::reflect_dom_object;
use dom::bindings::str::DOMString;
use dom::event::{Event, EventBubbles, EventCancelable};
+use dom::globalscope::GlobalScope;
use js::jsapi::{HandleValue, JSContext};
use js::jsval::JSVal;
use std::cell::Cell;
@@ -41,13 +42,13 @@ impl ErrorEvent {
}
}
- pub fn new_uninitialized(global: GlobalRef) -> Root<ErrorEvent> {
+ pub fn new_uninitialized(global: &GlobalScope) -> Root<ErrorEvent> {
reflect_dom_object(box ErrorEvent::new_inherited(),
global,
ErrorEventBinding::Wrap)
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
type_: Atom,
bubbles: EventBubbles,
cancelable: EventCancelable,
@@ -94,11 +95,16 @@ impl ErrorEvent {
// Dictionaries need to be rooted
// https://github.com/servo/servo/issues/6381
rooted!(in(global.get_cx()) let error = init.error);
- let event = ErrorEvent::new(global, Atom::from(type_),
- bubbles, cancelable,
- msg, file_name,
- line_num, col_num,
- error.handle());
+ let event = ErrorEvent::new(
+ global.as_global_scope(),
+ Atom::from(type_),
+ bubbles,
+ cancelable,
+ msg,
+ file_name,
+ line_num,
+ col_num,
+ error.handle());
Ok(event)
}
diff --git a/components/script/dom/event.rs b/components/script/dom/event.rs
index a6dfe7c9ac4..3f5a7c24c8a 100644
--- a/components/script/dom/event.rs
+++ b/components/script/dom/event.rs
@@ -13,6 +13,7 @@ use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::bindings::str::DOMString;
use dom::eventdispatcher::EventStatus;
use dom::eventtarget::EventTarget;
+use dom::globalscope::GlobalScope;
use script_thread::Runnable;
use std::cell::Cell;
use std::default::Default;
@@ -115,13 +116,13 @@ impl Event {
}
}
- pub fn new_uninitialized(global: GlobalRef) -> Root<Event> {
+ pub fn new_uninitialized(global: &GlobalScope) -> Root<Event> {
reflect_dom_object(box Event::new_inherited(),
global,
EventBinding::Wrap)
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
type_: Atom,
bubbles: EventBubbles,
cancelable: EventCancelable) -> Root<Event> {
@@ -135,7 +136,7 @@ impl Event {
init: &EventBinding::EventInit) -> Fallible<Root<Event>> {
let bubbles = EventBubbles::from(init.bubbles);
let cancelable = EventCancelable::from(init.cancelable);
- Ok(Event::new(global, Atom::from(type_), bubbles, cancelable))
+ Ok(Event::new(global.as_global_scope(), Atom::from(type_), bubbles, cancelable))
}
pub fn init_event(&self, type_: Atom, bubbles: bool, cancelable: bool) {
diff --git a/components/script/dom/eventsource.rs b/components/script/dom/eventsource.rs
index 4007e391852..667627e1e83 100644
--- a/components/script/dom/eventsource.rs
+++ b/components/script/dom/eventsource.rs
@@ -11,6 +11,7 @@ use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
use dom::bindings::str::DOMString;
use dom::eventtarget::EventTarget;
+use dom::globalscope::GlobalScope;
use std::cell::Cell;
use url::Url;
@@ -42,8 +43,10 @@ impl EventSource {
}
}
- fn new(global: GlobalRef, url: Url, with_credentials: bool) -> Root<EventSource> {
- reflect_dom_object(box EventSource::new_inherited(url, with_credentials), global, Wrap)
+ fn new(global: &GlobalScope, url: Url, with_credentials: bool) -> Root<EventSource> {
+ reflect_dom_object(box EventSource::new_inherited(url, with_credentials),
+ global,
+ Wrap)
}
pub fn Constructor(global: GlobalRef,
@@ -56,7 +59,7 @@ impl EventSource {
Err(_) => return Err(Error::Syntax)
};
// Step 3
- let event_source = EventSource::new(global, url, event_source_init.withCredentials);
+ let event_source = EventSource::new(global.as_global_scope(), url, event_source_init.withCredentials);
// Step 4
// Step 5
// Step 6
diff --git a/components/script/dom/eventtarget.rs b/components/script/dom/eventtarget.rs
index 9bdaac20288..fb647d3d590 100644
--- a/components/script/dom/eventtarget.rs
+++ b/components/script/dom/eventtarget.rs
@@ -500,8 +500,8 @@ impl EventTarget {
bubbles: EventBubbles,
cancelable: EventCancelable)
-> Root<Event> {
- let global = self.global();
- let event = Event::new(global.r(), Atom::from(name), bubbles, cancelable);
+ let event = Event::new(
+ self.global().r().as_global_scope(), Atom::from(name), bubbles, cancelable);
event.fire(self);
diff --git a/components/script/dom/extendableevent.rs b/components/script/dom/extendableevent.rs
index ffb6c3baad2..1888888e841 100644
--- a/components/script/dom/extendableevent.rs
+++ b/components/script/dom/extendableevent.rs
@@ -11,6 +11,7 @@ use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
use dom::bindings::str::DOMString;
use dom::event::Event;
+use dom::globalscope::GlobalScope;
use js::jsapi::{HandleValue, JSContext};
use string_cache::Atom;
@@ -28,7 +29,7 @@ impl ExtendableEvent {
extensions_allowed: true
}
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
type_: Atom,
bubbles: bool,
cancelable: bool)
@@ -44,7 +45,7 @@ impl ExtendableEvent {
pub fn Constructor(global: GlobalRef,
type_: DOMString,
init: &ExtendableEventBinding::ExtendableEventInit) -> Fallible<Root<ExtendableEvent>> {
- Ok(ExtendableEvent::new(global,
+ Ok(ExtendableEvent::new(global.as_global_scope(),
Atom::from(type_),
init.parent.bubbles,
init.parent.cancelable))
diff --git a/components/script/dom/extendablemessageevent.rs b/components/script/dom/extendablemessageevent.rs
index 202c81c0416..a0d8b3cf76b 100644
--- a/components/script/dom/extendablemessageevent.rs
+++ b/components/script/dom/extendablemessageevent.rs
@@ -13,6 +13,7 @@ use dom::bindings::str::DOMString;
use dom::event::Event;
use dom::eventtarget::EventTarget;
use dom::extendableevent::ExtendableEvent;
+use dom::globalscope::GlobalScope;
use js::jsapi::{HandleValue, Heap, JSContext};
use js::jsval::JSVal;
use std::default::Default;
@@ -27,7 +28,7 @@ pub struct ExtendableMessageEvent {
}
impl ExtendableMessageEvent {
- pub fn new(global: GlobalRef, type_: Atom,
+ pub fn new(global: &GlobalScope, type_: Atom,
bubbles: bool, cancelable: bool,
data: HandleValue, origin: DOMString, lastEventId: DOMString)
-> Root<ExtendableMessageEvent> {
@@ -51,7 +52,8 @@ impl ExtendableMessageEvent {
init: &ExtendableMessageEventBinding::ExtendableMessageEventInit)
-> Fallible<Root<ExtendableMessageEvent>> {
rooted!(in(global.get_cx()) let data = init.data);
- let ev = ExtendableMessageEvent::new(global, Atom::from(type_),
+ let ev = ExtendableMessageEvent::new(global.as_global_scope(),
+ Atom::from(type_),
init.parent.parent.bubbles,
init.parent.parent.cancelable,
data.handle(),
@@ -66,7 +68,7 @@ impl ExtendableMessageEvent {
scope: GlobalRef,
message: HandleValue) {
let Extendablemessageevent = ExtendableMessageEvent::new(
- scope, atom!("message"), false, false, message,
+ scope.as_global_scope(), atom!("message"), false, false, message,
DOMString::new(), DOMString::new());
Extendablemessageevent.upcast::<Event>().fire(target);
}
diff --git a/components/script/dom/file.rs b/components/script/dom/file.rs
index 8b4abaaed80..6ee2f0c3771 100644
--- a/components/script/dom/file.rs
+++ b/components/script/dom/file.rs
@@ -7,10 +7,12 @@ use dom::bindings::codegen::Bindings::FileBinding::FileMethods;
use dom::bindings::codegen::UnionTypes::BlobOrString;
use dom::bindings::error::{Error, Fallible};
use dom::bindings::global::GlobalRef;
+use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
use dom::bindings::str::DOMString;
use dom::blob::{Blob, BlobImpl, blob_parts_to_bytes};
+use dom::globalscope::GlobalScope;
use dom::window::Window;
use net_traits::filemanager_thread::SelectedFile;
use time;
@@ -41,7 +43,7 @@ impl File {
}
#[allow(unrooted_must_root)]
- pub fn new(global: GlobalRef, blob_impl: BlobImpl,
+ pub fn new(global: &GlobalScope, blob_impl: BlobImpl,
name: DOMString, modified: Option<i64>, typeString: &str) -> Root<File> {
reflect_dom_object(box File::new_inherited(blob_impl, name, modified, typeString),
global,
@@ -52,9 +54,7 @@ impl File {
pub fn new_from_selected(window: &Window, selected: SelectedFile) -> Root<File> {
let name = DOMString::from(selected.filename.to_str().expect("File name encoding error"));
- let global = GlobalRef::Window(window);
-
- File::new(global, BlobImpl::new_from_file(selected.id, selected.filename, selected.size),
+ File::new(window.upcast(), BlobImpl::new_from_file(selected.id, selected.filename, selected.size),
name, Some(selected.modified as i64), &selected.type_string)
}
@@ -76,7 +76,11 @@ impl File {
// NOTE: Following behaviour might be removed in future,
// see https://github.com/w3c/FileAPI/issues/41
let replaced_filename = DOMString::from_string(filename.replace("/", ":"));
- Ok(File::new(global, BlobImpl::new_from_bytes(bytes), replaced_filename, modified, typeString))
+ Ok(File::new(global.as_global_scope(),
+ BlobImpl::new_from_bytes(bytes),
+ replaced_filename,
+ modified,
+ typeString))
}
pub fn name(&self) -> &DOMString {
diff --git a/components/script/dom/filelist.rs b/components/script/dom/filelist.rs
index 8adbe1ed467..e3654b752dc 100644
--- a/components/script/dom/filelist.rs
+++ b/components/script/dom/filelist.rs
@@ -4,7 +4,6 @@
use dom::bindings::codegen::Bindings::FileListBinding;
use dom::bindings::codegen::Bindings::FileListBinding::FileListMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::file::File;
@@ -30,7 +29,7 @@ impl FileList {
#[allow(unrooted_must_root)]
pub fn new(window: &Window, files: Vec<Root<File>>) -> Root<FileList> {
reflect_dom_object(box FileList::new_inherited(files.iter().map(|r| JS::from_ref(&**r)).collect()),
- GlobalRef::Window(window),
+ window,
FileListBinding::Wrap)
}
diff --git a/components/script/dom/filereader.rs b/components/script/dom/filereader.rs
index a82e4dc47bc..ac2aa37ee56 100644
--- a/components/script/dom/filereader.rs
+++ b/components/script/dom/filereader.rs
@@ -17,6 +17,7 @@ use dom::blob::Blob;
use dom::domexception::{DOMErrorName, DOMException};
use dom::event::{Event, EventBubbles, EventCancelable};
use dom::eventtarget::EventTarget;
+use dom::globalscope::GlobalScope;
use dom::progressevent::ProgressEvent;
use encoding::all::UTF_8;
use encoding::label::encoding_from_whatwg_label;
@@ -88,13 +89,13 @@ impl FileReader {
}
}
- pub fn new(global: GlobalRef) -> Root<FileReader> {
+ pub fn new(global: &GlobalScope) -> Root<FileReader> {
reflect_dom_object(box FileReader::new_inherited(),
global, FileReaderBinding::Wrap)
}
pub fn Constructor(global: GlobalRef) -> Fallible<Root<FileReader>> {
- Ok(FileReader::new(global))
+ Ok(FileReader::new(global.as_global_scope()))
}
//https://w3c.github.io/FileAPI/#dfn-error-steps
@@ -115,7 +116,7 @@ impl FileReader {
*fr.result.borrow_mut() = None;
let global = fr.r().global();
- let exception = DOMException::new(global.r(), error);
+ let exception = DOMException::new(global.r().as_global_scope(), error);
fr.error.set(Some(&exception));
fr.dispatch_progress_event(atom!("error"), 0, None);
@@ -290,7 +291,7 @@ impl FileReaderMethods for FileReader {
*self.result.borrow_mut() = None;
let global = self.global();
- let exception = DOMException::new(global.r(), DOMErrorName::AbortError);
+ let exception = DOMException::new(global.r().as_global_scope(), DOMErrorName::AbortError);
self.error.set(Some(&exception));
self.terminate_ongoing_reading();
@@ -319,7 +320,7 @@ impl FileReaderMethods for FileReader {
impl FileReader {
fn dispatch_progress_event(&self, type_: Atom, loaded: u64, total: Option<u64>) {
let global = self.global();
- let progressevent = ProgressEvent::new(global.r(),
+ let progressevent = ProgressEvent::new(global.r().as_global_scope(),
type_, EventBubbles::DoesNotBubble, EventCancelable::NotCancelable,
total.is_some(), loaded, total.unwrap_or(0));
progressevent.upcast::<Event>().fire(self.upcast());
@@ -338,7 +339,7 @@ impl FileReader {
// Step 2
if blob.IsClosed() {
let global = self.global();
- let exception = DOMException::new(global.r(), DOMErrorName::InvalidStateError);
+ let exception = DOMException::new(global.r().as_global_scope(), DOMErrorName::InvalidStateError);
self.error.set(Some(&exception));
self.dispatch_progress_event(atom!("error"), 0, None);
diff --git a/components/script/dom/filereadersync.rs b/components/script/dom/filereadersync.rs
index b248848edad..3e8800a65bf 100644
--- a/components/script/dom/filereadersync.rs
+++ b/components/script/dom/filereadersync.rs
@@ -8,8 +8,7 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
use dom::eventtarget::EventTarget;
-
-
+use dom::globalscope::GlobalScope;
#[dom_struct]
pub struct FileReaderSync {
@@ -23,12 +22,12 @@ impl FileReaderSync {
}
}
- pub fn new(global: GlobalRef) -> Root<FileReaderSync> {
+ pub fn new(global: &GlobalScope) -> Root<FileReaderSync> {
reflect_dom_object(box FileReaderSync::new_inherited(),
global, FileReaderSyncBinding::Wrap)
}
pub fn Constructor(global: GlobalRef) -> Fallible<Root<FileReaderSync>> {
- Ok(FileReaderSync::new(global))
+ Ok(FileReaderSync::new(global.as_global_scope()))
}
}
diff --git a/components/script/dom/focusevent.rs b/components/script/dom/focusevent.rs
index dd5e41e8426..cb65d40088f 100644
--- a/components/script/dom/focusevent.rs
+++ b/components/script/dom/focusevent.rs
@@ -13,6 +13,7 @@ use dom::bindings::reflector::reflect_dom_object;
use dom::bindings::str::DOMString;
use dom::event::{EventBubbles, EventCancelable};
use dom::eventtarget::EventTarget;
+use dom::globalscope::GlobalScope;
use dom::uievent::UIEvent;
use dom::window::Window;
use std::default::Default;
@@ -31,7 +32,7 @@ impl FocusEvent {
}
}
- pub fn new_uninitialized(global: GlobalRef) -> Root<FocusEvent> {
+ pub fn new_uninitialized(global: &GlobalScope) -> Root<FocusEvent> {
reflect_dom_object(box FocusEvent::new_inherited(),
global,
FocusEventBinding::Wrap)
@@ -44,8 +45,7 @@ impl FocusEvent {
view: Option<&Window>,
detail: i32,
related_target: Option<&EventTarget>) -> Root<FocusEvent> {
- let event = box FocusEvent::new_inherited();
- let ev = reflect_dom_object(event, GlobalRef::Window(window), FocusEventBinding::Wrap);
+ let ev = FocusEvent::new_uninitialized(window.upcast());
ev.upcast::<UIEvent>().InitUIEvent(type_,
bool::from(can_bubble),
bool::from(cancelable),
diff --git a/components/script/dom/forcetouchevent.rs b/components/script/dom/forcetouchevent.rs
index e982cfdf86e..9e1c5cfcd91 100644
--- a/components/script/dom/forcetouchevent.rs
+++ b/components/script/dom/forcetouchevent.rs
@@ -5,7 +5,6 @@
use dom::bindings::codegen::Bindings::ForceTouchEventBinding;
use dom::bindings::codegen::Bindings::ForceTouchEventBinding::ForceTouchEventMethods;
use dom::bindings::codegen::Bindings::UIEventBinding::UIEventMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::num::Finite;
@@ -32,7 +31,7 @@ impl ForceTouchEvent {
type_: DOMString,
force: f32) -> Root<ForceTouchEvent> {
let event = box ForceTouchEvent::new_inherited(force);
- let ev = reflect_dom_object(event, GlobalRef::Window(window), ForceTouchEventBinding::Wrap);
+ let ev = reflect_dom_object(event, window, ForceTouchEventBinding::Wrap);
ev.upcast::<UIEvent>().InitUIEvent(type_, true, true, Some(window), 0);
ev
}
diff --git a/components/script/dom/formdata.rs b/components/script/dom/formdata.rs
index 542b44e804e..e5bdc6ca1d5 100644
--- a/components/script/dom/formdata.rs
+++ b/components/script/dom/formdata.rs
@@ -14,6 +14,7 @@ use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
use dom::bindings::str::{DOMString, USVString};
use dom::blob::{Blob, BlobImpl};
use dom::file::File;
+use dom::globalscope::GlobalScope;
use dom::htmlformelement::{HTMLFormElement, FormDatumValue, FormDatum};
use std::collections::HashMap;
use std::collections::hash_map::Entry::{Occupied, Vacant};
@@ -45,14 +46,14 @@ impl FormData {
}
}
- pub fn new(form: Option<&HTMLFormElement>, global: GlobalRef) -> Root<FormData> {
+ pub fn new(form: Option<&HTMLFormElement>, global: &GlobalScope) -> Root<FormData> {
reflect_dom_object(box FormData::new_inherited(form),
global, FormDataWrap)
}
pub fn Constructor(global: GlobalRef, form: Option<&HTMLFormElement>) -> Fallible<Root<FormData>> {
// TODO: Construct form data set for form if it is supplied
- Ok(FormData::new(form, global))
+ Ok(FormData::new(form, global.as_global_scope()))
}
}
@@ -154,7 +155,7 @@ impl FormData {
let bytes = blob.get_bytes().unwrap_or(vec![]);
- File::new(global.r(), BlobImpl::new_from_bytes(bytes), name, None, "")
+ File::new(global.r().as_global_scope(), BlobImpl::new_from_bytes(bytes), name, None, "")
}
pub fn datums(&self) -> Vec<FormDatum> {
diff --git a/components/script/dom/globalscope.rs b/components/script/dom/globalscope.rs
index 7c284987958..de9ee3773d2 100644
--- a/components/script/dom/globalscope.rs
+++ b/components/script/dom/globalscope.rs
@@ -2,7 +2,9 @@
* 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::reflector::Reflectable;
use dom::eventtarget::EventTarget;
+use js::jsapi::{JS_GetContext, JS_GetObjectRuntime, JSContext};
#[dom_struct]
pub struct GlobalScope {
@@ -15,4 +17,16 @@ impl GlobalScope {
eventtarget: EventTarget::new_inherited(),
}
}
+
+ #[allow(unsafe_code)]
+ pub fn get_cx(&self) -> *mut JSContext {
+ unsafe {
+ let runtime = JS_GetObjectRuntime(
+ self.reflector().get_jsobject().get());
+ assert!(!runtime.is_null());
+ let context = JS_GetContext(runtime);
+ assert!(!context.is_null());
+ context
+ }
+ }
}
diff --git a/components/script/dom/hashchangeevent.rs b/components/script/dom/hashchangeevent.rs
index 33562123ac6..c97599b25a3 100644
--- a/components/script/dom/hashchangeevent.rs
+++ b/components/script/dom/hashchangeevent.rs
@@ -12,6 +12,7 @@ use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
use dom::bindings::str::{DOMString, USVString};
use dom::event::Event;
+use dom::globalscope::GlobalScope;
use string_cache::Atom;
// https://html.spec.whatwg.org/multipage/#hashchangeevent
@@ -31,14 +32,13 @@ impl HashChangeEvent {
}
}
- pub fn new_uninitialized(global: GlobalRef)
- -> Root<HashChangeEvent> {
+ pub fn new_uninitialized(global: &GlobalScope) -> Root<HashChangeEvent> {
reflect_dom_object(box HashChangeEvent::new_inherited(String::new(), String::new()),
global,
HashChangeEventBinding::Wrap)
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
type_: Atom,
bubbles: bool,
cancelable: bool,
@@ -59,7 +59,7 @@ impl HashChangeEvent {
type_: DOMString,
init: &HashChangeEventBinding::HashChangeEventInit)
-> Fallible<Root<HashChangeEvent>> {
- Ok(HashChangeEvent::new(global,
+ Ok(HashChangeEvent::new(global.as_global_scope(),
Atom::from(type_),
init.parent.bubbles,
init.parent.cancelable,
diff --git a/components/script/dom/headers.rs b/components/script/dom/headers.rs
index 7f43dd6b07a..68c3d92c0ad 100644
--- a/components/script/dom/headers.rs
+++ b/components/script/dom/headers.rs
@@ -10,6 +10,7 @@ use dom::bindings::iterable::Iterable;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::bindings::str::{ByteString, is_token};
+use dom::globalscope::GlobalScope;
use hyper::header::Headers as HyperHeaders;
use mime::{Mime, TopLevel, SubLevel};
use std::cell::Cell;
@@ -43,14 +44,14 @@ impl Headers {
}
}
- pub fn new(global: GlobalRef) -> Root<Headers> {
+ pub fn new(global: &GlobalScope) -> Root<Headers> {
reflect_dom_object(box Headers::new_inherited(), global, HeadersWrap)
}
// https://fetch.spec.whatwg.org/#dom-headers
pub fn Constructor(global: GlobalRef, init: Option<HeadersInit>)
-> Fallible<Root<Headers>> {
- let dom_headers_new = Headers::new(global);
+ let dom_headers_new = Headers::new(global.as_global_scope());
try!(dom_headers_new.fill(init));
Ok(dom_headers_new)
}
@@ -205,13 +206,13 @@ impl Headers {
}
}
- pub fn for_request(global: GlobalRef) -> Root<Headers> {
+ pub fn for_request(global: &GlobalScope) -> Root<Headers> {
let headers_for_request = Headers::new(global);
headers_for_request.guard.set(Guard::Request);
headers_for_request
}
- pub fn for_response(global: GlobalRef) -> Root<Headers> {
+ pub fn for_response(global: &GlobalScope) -> Root<Headers> {
let headers_for_response = Headers::new(global);
headers_for_response.guard.set(Guard::Response);
headers_for_response
diff --git a/components/script/dom/history.rs b/components/script/dom/history.rs
index 5ced543d728..9fe5789524c 100644
--- a/components/script/dom/history.rs
+++ b/components/script/dom/history.rs
@@ -6,7 +6,6 @@ use dom::bindings::codegen::Bindings::HistoryBinding;
use dom::bindings::codegen::Bindings::HistoryBinding::HistoryMethods;
use dom::bindings::codegen::Bindings::LocationBinding::LocationMethods;
use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::window::Window;
@@ -31,7 +30,7 @@ impl History {
pub fn new(window: &Window) -> Root<History> {
reflect_dom_object(box History::new_inherited(window),
- GlobalRef::Window(window),
+ window,
HistoryBinding::Wrap)
}
}
diff --git a/components/script/dom/htmlcollection.rs b/components/script/dom/htmlcollection.rs
index 66a810eff9f..4274c04a21b 100644
--- a/components/script/dom/htmlcollection.rs
+++ b/components/script/dom/htmlcollection.rs
@@ -4,7 +4,6 @@
use dom::bindings::codegen::Bindings::HTMLCollectionBinding;
use dom::bindings::codegen::Bindings::HTMLCollectionBinding::HTMLCollectionMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, Root, MutNullableHeap};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
@@ -83,7 +82,7 @@ impl HTMLCollection {
#[allow(unrooted_must_root)]
pub fn new(window: &Window, root: &Node, filter: Box<CollectionFilter + 'static>) -> Root<HTMLCollection> {
reflect_dom_object(box HTMLCollection::new_inherited(root, filter),
- GlobalRef::Window(window), HTMLCollectionBinding::Wrap)
+ window, HTMLCollectionBinding::Wrap)
}
pub fn create(window: &Window, root: &Node,
diff --git a/components/script/dom/htmlformcontrolscollection.rs b/components/script/dom/htmlformcontrolscollection.rs
index e52a541225f..2450b26c179 100644
--- a/components/script/dom/htmlformcontrolscollection.rs
+++ b/components/script/dom/htmlformcontrolscollection.rs
@@ -6,7 +6,6 @@ use dom::bindings::codegen::Bindings::HTMLCollectionBinding::HTMLCollectionMetho
use dom::bindings::codegen::Bindings::HTMLFormControlsCollectionBinding;
use dom::bindings::codegen::Bindings::HTMLFormControlsCollectionBinding::HTMLFormControlsCollectionMethods;
use dom::bindings::codegen::UnionTypes::RadioNodeListOrElement;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflectable, reflect_dom_object};
use dom::bindings::str::DOMString;
@@ -33,7 +32,7 @@ impl HTMLFormControlsCollection {
-> Root<HTMLFormControlsCollection>
{
reflect_dom_object(box HTMLFormControlsCollection::new_inherited(root, filter),
- GlobalRef::Window(window),
+ window,
HTMLFormControlsCollectionBinding::Wrap)
}
diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs
index 1503ff28e06..2b7781dae1e 100644
--- a/components/script/dom/htmliframeelement.rs
+++ b/components/script/dom/htmliframeelement.rs
@@ -18,7 +18,6 @@ use dom::bindings::codegen::Bindings::HTMLIFrameElementBinding::HTMLIFrameElemen
use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
use dom::bindings::conversions::ToJSValConvertible;
use dom::bindings::error::{Error, ErrorResult, Fallible};
-use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, LayoutJS, MutNullableHeap, Root};
use dom::bindings::reflector::Reflectable;
@@ -316,7 +315,7 @@ pub fn build_mozbrowser_custom_event(window: &Window, event: MozBrowserEvent) ->
rooted!(in(cx) let mut detail = UndefinedValue());
let event_name = Atom::from(event.name());
unsafe { build_mozbrowser_event_detail(event, cx, detail.handle_mut()); }
- CustomEvent::new(GlobalRef::Window(window),
+ CustomEvent::new(window.upcast(),
event_name,
true,
true,
diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs
index 5bbdd738079..24ae7542880 100644
--- a/components/script/dom/htmlmediaelement.rs
+++ b/components/script/dom/htmlmediaelement.rs
@@ -311,7 +311,7 @@ impl HTMLMediaElement {
fn fire_simple_event(&self, type_: &str) {
let window = window_from_node(self);
- let event = Event::new(GlobalRef::Window(&*window),
+ let event = Event::new(window.upcast(),
Atom::from(type_),
EventBubbles::DoesNotBubble,
EventCancelable::NotCancelable);
diff --git a/components/script/dom/htmloptionscollection.rs b/components/script/dom/htmloptionscollection.rs
index dd6d4531974..473d698d35b 100644
--- a/components/script/dom/htmloptionscollection.rs
+++ b/components/script/dom/htmloptionscollection.rs
@@ -9,7 +9,6 @@ use dom::bindings::codegen::Bindings::HTMLOptionsCollectionBinding::HTMLOptionsC
use dom::bindings::codegen::Bindings::NodeBinding::NodeBinding::NodeMethods;
use dom::bindings::codegen::UnionTypes::{HTMLOptionElementOrHTMLOptGroupElement, HTMLElementOrLong};
use dom::bindings::error::{Error, ErrorResult};
-use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{Root, RootedReference};
use dom::bindings::reflector::reflect_dom_object;
@@ -36,7 +35,7 @@ impl HTMLOptionsCollection {
-> Root<HTMLOptionsCollection>
{
reflect_dom_object(box HTMLOptionsCollection::new_inherited(root, filter),
- GlobalRef::Window(window),
+ window,
HTMLOptionsCollectionBinding::Wrap)
}
diff --git a/components/script/dom/htmlscriptelement.rs b/components/script/dom/htmlscriptelement.rs
index e96ceb6d834..7f5266b9e84 100644
--- a/components/script/dom/htmlscriptelement.rs
+++ b/components/script/dom/htmlscriptelement.rs
@@ -604,7 +604,7 @@ impl HTMLScriptElement {
cancelable: EventCancelable) -> EventStatus {
let window = window_from_node(self);
let window = window.r();
- let event = Event::new(GlobalRef::Window(window), type_, bubbles, cancelable);
+ let event = Event::new(window.upcast(), type_, bubbles, cancelable);
event.fire(self.upcast())
}
}
diff --git a/components/script/dom/imagedata.rs b/components/script/dom/imagedata.rs
index 0959a52eb32..5f99fb9db57 100644
--- a/components/script/dom/imagedata.rs
+++ b/components/script/dom/imagedata.rs
@@ -5,9 +5,9 @@
use core::nonzero::NonZero;
use dom::bindings::codegen::Bindings::ImageDataBinding;
use dom::bindings::codegen::Bindings::ImageDataBinding::ImageDataMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::globalscope::GlobalScope;
use euclid::size::Size2D;
use js::jsapi::{Heap, JSContext, JSObject};
use js::jsapi::{JS_GetUint8ClampedArrayData, JS_NewUint8ClampedArray};
@@ -27,7 +27,7 @@ pub struct ImageData {
impl ImageData {
#[allow(unsafe_code)]
- pub fn new(global: GlobalRef, width: u32, height: u32, data: Option<Vec<u8>>) -> Root<ImageData> {
+ pub fn new(global: &GlobalScope, width: u32, height: u32, data: Option<Vec<u8>>) -> Root<ImageData> {
let mut imagedata = box ImageData {
reflector_: Reflector::new(),
width: width,
diff --git a/components/script/dom/keyboardevent.rs b/components/script/dom/keyboardevent.rs
index d21f53eb609..06987f55b12 100644
--- a/components/script/dom/keyboardevent.rs
+++ b/components/script/dom/keyboardevent.rs
@@ -62,7 +62,7 @@ impl KeyboardEvent {
pub fn new_uninitialized(window: &Window) -> Root<KeyboardEvent> {
reflect_dom_object(box KeyboardEvent::new_inherited(),
- GlobalRef::Window(window),
+ window,
KeyboardEventBinding::Wrap)
}
diff --git a/components/script/dom/location.rs b/components/script/dom/location.rs
index ba835ada146..cf91c683f2f 100644
--- a/components/script/dom/location.rs
+++ b/components/script/dom/location.rs
@@ -5,7 +5,6 @@
use dom::bindings::codegen::Bindings::LocationBinding;
use dom::bindings::codegen::Bindings::LocationBinding::LocationMethods;
use dom::bindings::error::{Error, ErrorResult};
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::bindings::str::{DOMString, USVString};
@@ -29,7 +28,7 @@ impl Location {
pub fn new(window: &Window) -> Root<Location> {
reflect_dom_object(box Location::new_inherited(window),
- GlobalRef::Window(window),
+ window,
LocationBinding::Wrap)
}
diff --git a/components/script/dom/mediaerror.rs b/components/script/dom/mediaerror.rs
index 17d92947f72..b7b7a800989 100644
--- a/components/script/dom/mediaerror.rs
+++ b/components/script/dom/mediaerror.rs
@@ -3,7 +3,6 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use dom::bindings::codegen::Bindings::MediaErrorBinding::{self, MediaErrorMethods};
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::window::Window;
@@ -24,7 +23,7 @@ impl MediaError {
pub fn new(window: &Window, code: u16) -> Root<MediaError> {
reflect_dom_object(box MediaError::new_inherited(code),
- GlobalRef::Window(window),
+ window,
MediaErrorBinding::Wrap)
}
}
diff --git a/components/script/dom/messageevent.rs b/components/script/dom/messageevent.rs
index b5b46fba5d8..62c8c4c5ed4 100644
--- a/components/script/dom/messageevent.rs
+++ b/components/script/dom/messageevent.rs
@@ -13,6 +13,7 @@ use dom::bindings::reflector::reflect_dom_object;
use dom::bindings::str::DOMString;
use dom::event::Event;
use dom::eventtarget::EventTarget;
+use dom::globalscope::GlobalScope;
use js::jsapi::{HandleValue, Heap, JSContext};
use js::jsval::JSVal;
use std::default::Default;
@@ -27,14 +28,14 @@ pub struct MessageEvent {
}
impl MessageEvent {
- pub fn new_uninitialized(global: GlobalRef) -> Root<MessageEvent> {
+ pub fn new_uninitialized(global: &GlobalScope) -> Root<MessageEvent> {
MessageEvent::new_initialized(global,
HandleValue::undefined(),
DOMString::new(),
DOMString::new())
}
- pub fn new_initialized(global: GlobalRef,
+ pub fn new_initialized(global: &GlobalScope,
data: HandleValue,
origin: DOMString,
lastEventId: DOMString) -> Root<MessageEvent> {
@@ -48,7 +49,7 @@ impl MessageEvent {
reflect_dom_object(ev, global, MessageEventBinding::Wrap)
}
- pub fn new(global: GlobalRef, type_: Atom,
+ pub fn new(global: &GlobalScope, type_: Atom,
bubbles: bool, cancelable: bool,
data: HandleValue, origin: DOMString, lastEventId: DOMString)
-> Root<MessageEvent> {
@@ -67,9 +68,13 @@ impl MessageEvent {
// Dictionaries need to be rooted
// https://github.com/servo/servo/issues/6381
rooted!(in(global.get_cx()) let data = init.data);
- let ev = MessageEvent::new(global, Atom::from(type_), init.parent.bubbles, init.parent.cancelable,
+ let ev = MessageEvent::new(global.as_global_scope(),
+ Atom::from(type_),
+ init.parent.bubbles,
+ init.parent.cancelable,
data.handle(),
- init.origin.clone(), init.lastEventId.clone());
+ init.origin.clone(),
+ init.lastEventId.clone());
Ok(ev)
}
}
@@ -79,8 +84,13 @@ impl MessageEvent {
scope: GlobalRef,
message: HandleValue) {
let messageevent = MessageEvent::new(
- scope, atom!("message"), false, false, message,
- DOMString::new(), DOMString::new());
+ scope.as_global_scope(),
+ atom!("message"),
+ false,
+ false,
+ message,
+ DOMString::new(),
+ DOMString::new());
messageevent.upcast::<Event>().fire(target);
}
}
diff --git a/components/script/dom/mimetypearray.rs b/components/script/dom/mimetypearray.rs
index de820f6d06a..e0dd8090f8f 100644
--- a/components/script/dom/mimetypearray.rs
+++ b/components/script/dom/mimetypearray.rs
@@ -4,10 +4,10 @@
use dom::bindings::codegen::Bindings::MimeTypeArrayBinding;
use dom::bindings::codegen::Bindings::MimeTypeArrayBinding::MimeTypeArrayMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::bindings::str::DOMString;
+use dom::globalscope::GlobalScope;
use dom::mimetype::MimeType;
#[dom_struct]
@@ -22,7 +22,7 @@ impl MimeTypeArray {
}
}
- pub fn new(global: GlobalRef) -> Root<MimeTypeArray> {
+ pub fn new(global: &GlobalScope) -> Root<MimeTypeArray> {
reflect_dom_object(box MimeTypeArray::new_inherited(),
global,
MimeTypeArrayBinding::Wrap)
diff --git a/components/script/dom/mouseevent.rs b/components/script/dom/mouseevent.rs
index 659a28226b7..096b119641f 100644
--- a/components/script/dom/mouseevent.rs
+++ b/components/script/dom/mouseevent.rs
@@ -53,7 +53,7 @@ impl MouseEvent {
pub fn new_uninitialized(window: &Window) -> Root<MouseEvent> {
reflect_dom_object(box MouseEvent::new_inherited(),
- GlobalRef::Window(window),
+ window,
MouseEventBinding::Wrap)
}
diff --git a/components/script/dom/namednodemap.rs b/components/script/dom/namednodemap.rs
index 9edc1b1e93b..1145ff60562 100644
--- a/components/script/dom/namednodemap.rs
+++ b/components/script/dom/namednodemap.rs
@@ -7,7 +7,6 @@ use dom::bindings::codegen::Bindings::ElementBinding::ElementMethods;
use dom::bindings::codegen::Bindings::NamedNodeMapBinding;
use dom::bindings::codegen::Bindings::NamedNodeMapBinding::NamedNodeMapMethods;
use dom::bindings::error::{Error, Fallible};
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::bindings::str::DOMString;
@@ -33,7 +32,7 @@ impl NamedNodeMap {
pub fn new(window: &Window, elem: &Element) -> Root<NamedNodeMap> {
reflect_dom_object(box NamedNodeMap::new_inherited(elem),
- GlobalRef::Window(window), NamedNodeMapBinding::Wrap)
+ window, NamedNodeMapBinding::Wrap)
}
}
diff --git a/components/script/dom/navigator.rs b/components/script/dom/navigator.rs
index ce97c30ae60..d4e4629e486 100644
--- a/components/script/dom/navigator.rs
+++ b/components/script/dom/navigator.rs
@@ -4,7 +4,6 @@
use dom::bindings::codegen::Bindings::NavigatorBinding;
use dom::bindings::codegen::Bindings::NavigatorBinding::NavigatorMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, MutNullableHeap, Root};
use dom::bindings::reflector::{Reflector, Reflectable, reflect_dom_object};
use dom::bindings::str::DOMString;
@@ -37,7 +36,7 @@ impl Navigator {
pub fn new(window: &Window) -> Root<Navigator> {
reflect_dom_object(box Navigator::new_inherited(),
- GlobalRef::Window(window),
+ window,
NavigatorBinding::Wrap)
}
}
@@ -80,7 +79,7 @@ impl NavigatorMethods for Navigator {
// https://webbluetoothcg.github.io/web-bluetooth/#dom-navigator-bluetooth
fn Bluetooth(&self) -> Root<Bluetooth> {
- self.bluetooth.or_init(|| Bluetooth::new(self.global().r()))
+ self.bluetooth.or_init(|| Bluetooth::new(self.global().r().as_global_scope()))
}
// https://html.spec.whatwg.org/multipage/#navigatorlanguage
@@ -90,12 +89,12 @@ impl NavigatorMethods for Navigator {
// https://html.spec.whatwg.org/multipage/#dom-navigator-plugins
fn Plugins(&self) -> Root<PluginArray> {
- self.plugins.or_init(|| PluginArray::new(self.global().r()))
+ self.plugins.or_init(|| PluginArray::new(self.global().r().as_global_scope()))
}
// https://html.spec.whatwg.org/multipage/#dom-navigator-mimetypes
fn MimeTypes(&self) -> Root<MimeTypeArray> {
- self.mime_types.or_init(|| MimeTypeArray::new(self.global().r()))
+ self.mime_types.or_init(|| MimeTypeArray::new(self.global().r().as_global_scope()))
}
// https://html.spec.whatwg.org/multipage/#dom-navigator-javaenabled
@@ -105,7 +104,9 @@ impl NavigatorMethods for Navigator {
// https://w3c.github.io/ServiceWorker/#navigator-service-worker-attribute
fn ServiceWorker(&self) -> Root<ServiceWorkerContainer> {
- self.service_worker.or_init(|| ServiceWorkerContainer::new(self.global().r()))
+ self.service_worker.or_init(|| {
+ ServiceWorkerContainer::new(self.global().r().as_global_scope())
+ })
}
// https://html.spec.whatwg.org/multipage/#dom-navigator-cookieenabled
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs
index 041d6407418..c18613ac6a2 100644
--- a/components/script/dom/node.rs
+++ b/components/script/dom/node.rs
@@ -20,7 +20,6 @@ use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
use dom::bindings::codegen::UnionTypes::NodeOrString;
use dom::bindings::conversions::{self, DerivedFrom};
use dom::bindings::error::{Error, ErrorResult, Fallible};
-use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::{Castable, CharacterDataTypeId, ElementTypeId};
use dom::bindings::inheritance::{EventTargetTypeId, HTMLElementTypeId, NodeTypeId};
use dom::bindings::js::{JS, LayoutJS, MutNullableHeap};
@@ -35,6 +34,7 @@ use dom::documentfragment::DocumentFragment;
use dom::documenttype::DocumentType;
use dom::element::{Element, ElementCreator};
use dom::eventtarget::EventTarget;
+use dom::globalscope::GlobalScope;
use dom::htmlbodyelement::HTMLBodyElement;
use dom::htmlcanvaselement::LayoutHTMLCanvasElementHelpers;
use dom::htmlcollection::HTMLCollection;
@@ -1339,13 +1339,15 @@ pub enum CloneChildrenFlag {
fn as_uintptr<T>(t: &T) -> uintptr_t { t as *const T as uintptr_t }
impl Node {
- pub fn reflect_node<N: DerivedFrom<Node> + Reflectable>
- (node: Box<N>,
- document: &Document,
- wrap_fn: extern "Rust" fn(*mut JSContext, GlobalRef, Box<N>) -> Root<N>)
- -> Root<N> {
+ pub fn reflect_node<N>(
+ node: Box<N>,
+ document: &Document,
+ wrap_fn: extern "Rust" fn(*mut JSContext, &GlobalScope, Box<N>) -> Root<N>)
+ -> Root<N>
+ where N: DerivedFrom<Node> + Reflectable
+ {
let window = document.window();
- reflect_dom_object(node, GlobalRef::Window(window), wrap_fn)
+ reflect_dom_object(node, window, wrap_fn)
}
pub fn new_inherited(doc: &Document) -> Node {
diff --git a/components/script/dom/nodeiterator.rs b/components/script/dom/nodeiterator.rs
index 14b8f240fbb..4315dd28113 100644
--- a/components/script/dom/nodeiterator.rs
+++ b/components/script/dom/nodeiterator.rs
@@ -9,7 +9,6 @@ use dom::bindings::codegen::Bindings::NodeFilterBinding::NodeFilterConstants;
use dom::bindings::codegen::Bindings::NodeIteratorBinding;
use dom::bindings::codegen::Bindings::NodeIteratorBinding::NodeIteratorMethods;
use dom::bindings::error::Fallible;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, MutHeap, Root};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::document::Document;
@@ -48,7 +47,7 @@ impl NodeIterator {
what_to_show: u32,
filter: Filter) -> Root<NodeIterator> {
reflect_dom_object(box NodeIterator::new_inherited(root_node, what_to_show, filter),
- GlobalRef::Window(document.window()),
+ document.window(),
NodeIteratorBinding::Wrap)
}
diff --git a/components/script/dom/nodelist.rs b/components/script/dom/nodelist.rs
index 8f8a5515592..ffd44d277a5 100644
--- a/components/script/dom/nodelist.rs
+++ b/components/script/dom/nodelist.rs
@@ -5,7 +5,6 @@
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
use dom::bindings::codegen::Bindings::NodeListBinding;
use dom::bindings::codegen::Bindings::NodeListBinding::NodeListMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, MutNullableHeap, Root, RootedReference};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::node::{ChildrenMutation, Node};
@@ -38,7 +37,8 @@ impl NodeList {
#[allow(unrooted_must_root)]
pub fn new(window: &Window, list_type: NodeListType) -> Root<NodeList> {
reflect_dom_object(box NodeList::new_inherited(list_type),
- GlobalRef::Window(window), NodeListBinding::Wrap)
+ window,
+ NodeListBinding::Wrap)
}
pub fn new_simple_list<T>(window: &Window, iter: T) -> Root<NodeList>
diff --git a/components/script/dom/pagetransitionevent.rs b/components/script/dom/pagetransitionevent.rs
index 7c6b7b6f555..c25281dcc31 100644
--- a/components/script/dom/pagetransitionevent.rs
+++ b/components/script/dom/pagetransitionevent.rs
@@ -12,6 +12,7 @@ use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
use dom::bindings::str::DOMString;
use dom::event::Event;
+use dom::globalscope::GlobalScope;
use std::cell::Cell;
use string_cache::Atom;
@@ -30,13 +31,13 @@ impl PageTransitionEvent {
}
}
- pub fn new_uninitialized(global: GlobalRef) -> Root<PageTransitionEvent> {
+ pub fn new_uninitialized(global: &GlobalScope) -> Root<PageTransitionEvent> {
reflect_dom_object(box PageTransitionEvent::new_inherited(),
global,
PageTransitionEventBinding::Wrap)
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
type_: Atom,
bubbles: bool,
cancelable: bool,
@@ -55,7 +56,7 @@ impl PageTransitionEvent {
type_: DOMString,
init: &PageTransitionEventBinding::PageTransitionEventInit)
-> Fallible<Root<PageTransitionEvent>> {
- Ok(PageTransitionEvent::new(global,
+ Ok(PageTransitionEvent::new(global.as_global_scope(),
Atom::from(type_),
init.parent.bubbles,
init.parent.cancelable,
diff --git a/components/script/dom/performance.rs b/components/script/dom/performance.rs
index f6bc8d288f8..3852a49b28c 100644
--- a/components/script/dom/performance.rs
+++ b/components/script/dom/performance.rs
@@ -4,7 +4,6 @@
use dom::bindings::codegen::Bindings::PerformanceBinding;
use dom::bindings::codegen::Bindings::PerformanceBinding::PerformanceMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, Root};
use dom::bindings::num::Finite;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
@@ -38,7 +37,7 @@ impl Performance {
reflect_dom_object(box Performance::new_inherited(window,
navigation_start,
navigation_start_precise),
- GlobalRef::Window(window),
+ window,
PerformanceBinding::Wrap)
}
}
diff --git a/components/script/dom/performancetiming.rs b/components/script/dom/performancetiming.rs
index 6faa8246242..16dc7650649 100644
--- a/components/script/dom/performancetiming.rs
+++ b/components/script/dom/performancetiming.rs
@@ -5,7 +5,6 @@
use dom::bindings::codegen::Bindings::PerformanceTimingBinding;
use dom::bindings::codegen::Bindings::PerformanceTimingBinding::PerformanceTimingMethods;
use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::document::Document;
@@ -40,7 +39,8 @@ impl PerformanceTiming {
let timing = PerformanceTiming::new_inherited(navigation_start,
navigation_start_precise,
window.Document().r());
- reflect_dom_object(box timing, GlobalRef::Window(window),
+ reflect_dom_object(box timing,
+ window,
PerformanceTimingBinding::Wrap)
}
}
diff --git a/components/script/dom/pluginarray.rs b/components/script/dom/pluginarray.rs
index aa6b779280d..fde760d793c 100644
--- a/components/script/dom/pluginarray.rs
+++ b/components/script/dom/pluginarray.rs
@@ -4,10 +4,10 @@
use dom::bindings::codegen::Bindings::PluginArrayBinding;
use dom::bindings::codegen::Bindings::PluginArrayBinding::PluginArrayMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::bindings::str::DOMString;
+use dom::globalscope::GlobalScope;
use dom::plugin::Plugin;
#[dom_struct]
@@ -22,7 +22,7 @@ impl PluginArray {
}
}
- pub fn new(global: GlobalRef) -> Root<PluginArray> {
+ pub fn new(global: &GlobalScope) -> Root<PluginArray> {
reflect_dom_object(box PluginArray::new_inherited(),
global,
PluginArrayBinding::Wrap)
diff --git a/components/script/dom/popstateevent.rs b/components/script/dom/popstateevent.rs
index a9487f48299..621c9d4199f 100644
--- a/components/script/dom/popstateevent.rs
+++ b/components/script/dom/popstateevent.rs
@@ -12,6 +12,7 @@ use dom::bindings::js::{MutHeapJSVal, Root};
use dom::bindings::reflector::reflect_dom_object;
use dom::bindings::str::DOMString;
use dom::event::Event;
+use dom::globalscope::GlobalScope;
use js::jsapi::{HandleValue, JSContext};
use js::jsval::JSVal;
use string_cache::Atom;
@@ -32,13 +33,13 @@ impl PopStateEvent {
}
}
- pub fn new_uninitialized(global: GlobalRef) -> Root<PopStateEvent> {
+ pub fn new_uninitialized(global: &GlobalScope) -> Root<PopStateEvent> {
reflect_dom_object(box PopStateEvent::new_inherited(),
global,
PopStateEventBinding::Wrap)
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
type_: Atom,
bubbles: bool,
cancelable: bool,
@@ -58,7 +59,7 @@ impl PopStateEvent {
type_: DOMString,
init: &PopStateEventBinding::PopStateEventInit)
-> Fallible<Root<PopStateEvent>> {
- Ok(PopStateEvent::new(global,
+ Ok(PopStateEvent::new(global.as_global_scope(),
Atom::from(type_),
init.parent.bubbles,
init.parent.cancelable,
diff --git a/components/script/dom/progressevent.rs b/components/script/dom/progressevent.rs
index f0d2b5c400a..2f25df109fa 100644
--- a/components/script/dom/progressevent.rs
+++ b/components/script/dom/progressevent.rs
@@ -12,7 +12,7 @@ use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
use dom::bindings::str::DOMString;
use dom::event::{Event, EventBubbles, EventCancelable};
-use dom::window::Window;
+use dom::globalscope::GlobalScope;
use string_cache::Atom;
#[dom_struct]
@@ -32,12 +32,12 @@ impl ProgressEvent {
total: total
}
}
- pub fn new_uninitialized(window: &Window) -> Root<ProgressEvent> {
+ pub fn new_uninitialized(global: &GlobalScope) -> Root<ProgressEvent> {
reflect_dom_object(box ProgressEvent::new_inherited(false, 0, 0),
- GlobalRef::Window(window),
+ global,
ProgressEventBinding::Wrap)
}
- pub fn new(global: GlobalRef, type_: Atom,
+ pub fn new(global: &GlobalScope, type_: Atom,
can_bubble: EventBubbles, cancelable: EventCancelable,
length_computable: bool, loaded: u64, total: u64) -> Root<ProgressEvent> {
let ev = reflect_dom_object(box ProgressEvent::new_inherited(length_computable, loaded, total),
@@ -55,7 +55,7 @@ impl ProgressEvent {
-> Fallible<Root<ProgressEvent>> {
let bubbles = EventBubbles::from(init.parent.bubbles);
let cancelable = EventCancelable::from(init.parent.cancelable);
- let ev = ProgressEvent::new(global, Atom::from(type_), bubbles, cancelable,
+ let ev = ProgressEvent::new(global.as_global_scope(), Atom::from(type_), bubbles, cancelable,
init.lengthComputable, init.loaded, init.total);
Ok(ev)
}
diff --git a/components/script/dom/promisenativehandler.rs b/components/script/dom/promisenativehandler.rs
index 603122556ef..b1c0ff3504c 100644
--- a/components/script/dom/promisenativehandler.rs
+++ b/components/script/dom/promisenativehandler.rs
@@ -3,10 +3,10 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use dom::bindings::codegen::Bindings::PromiseNativeHandlerBinding;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::bindings::trace::JSTraceable;
+use dom::globalscope::GlobalScope;
use heapsize::HeapSizeOf;
use js::jsapi::{JSContext, HandleValue};
@@ -22,7 +22,7 @@ pub struct PromiseNativeHandler {
}
impl PromiseNativeHandler {
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
resolve: Option<Box<Callback>>,
reject: Option<Box<Callback>>)
-> Root<PromiseNativeHandler> {
diff --git a/components/script/dom/radionodelist.rs b/components/script/dom/radionodelist.rs
index 9bbdae00c85..5cf05cb872a 100644
--- a/components/script/dom/radionodelist.rs
+++ b/components/script/dom/radionodelist.rs
@@ -6,7 +6,6 @@ use dom::bindings::codegen::Bindings::HTMLInputElementBinding::HTMLInputElementM
use dom::bindings::codegen::Bindings::NodeListBinding::NodeListMethods;
use dom::bindings::codegen::Bindings::RadioNodeListBinding;
use dom::bindings::codegen::Bindings::RadioNodeListBinding::RadioNodeListMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::reflect_dom_object;
@@ -32,7 +31,7 @@ impl RadioNodeList {
#[allow(unrooted_must_root)]
pub fn new(window: &Window, list_type: NodeListType) -> Root<RadioNodeList> {
reflect_dom_object(box RadioNodeList::new_inherited(list_type),
- GlobalRef::Window(window),
+ window,
RadioNodeListBinding::Wrap)
}
diff --git a/components/script/dom/range.rs b/components/script/dom/range.rs
index bab6bdcc3a2..80018b661f3 100644
--- a/components/script/dom/range.rs
+++ b/components/script/dom/range.rs
@@ -60,7 +60,7 @@ impl Range {
-> Root<Range> {
let range = reflect_dom_object(box Range::new_inherited(start_container, start_offset,
end_container, end_offset),
- GlobalRef::Window(document.window()),
+ document.window(),
RangeBinding::Wrap);
start_container.ranges().push(WeakRef::new(&range));
if start_container != end_container {
diff --git a/components/script/dom/request.rs b/components/script/dom/request.rs
index fa665679c0d..1496f16d353 100644
--- a/components/script/dom/request.rs
+++ b/components/script/dom/request.rs
@@ -73,7 +73,7 @@ impl Request {
reflect_dom_object(box Request::new_inherited(global,
url,
is_service_worker_global_scope),
- global, RequestBinding::Wrap)
+ global.as_global_scope(), RequestBinding::Wrap)
}
// https://fetch.spec.whatwg.org/#dom-request
@@ -305,7 +305,7 @@ impl Request {
let r = Request::from_net_request(global,
false,
request);
- r.headers.or_init(|| Headers::for_request(r.global().r()));
+ r.headers.or_init(|| Headers::for_request(r.global().r().as_global_scope()));
// Step 27
let mut headers_copy = r.Headers();
@@ -429,11 +429,7 @@ impl Request {
let body_used = r.body_used.get();
let mime_type = r.mime_type.borrow().clone();
let headers_guard = r.Headers().get_guard();
- let r_clone = reflect_dom_object(
- box Request::new_inherited(r.global().r(),
- url,
- is_service_worker_global_scope),
- r.global().r(), RequestBinding::Wrap);
+ let r_clone = Request::new(r.global().r(), url, is_service_worker_global_scope);
r_clone.request.borrow_mut().pipeline_id.set(req.pipeline_id.get());
{
let mut borrowed_r_request = r_clone.request.borrow_mut();
@@ -553,7 +549,7 @@ impl RequestMethods for Request {
// https://fetch.spec.whatwg.org/#dom-request-headers
fn Headers(&self) -> Root<Headers> {
- self.headers.or_init(|| Headers::new(self.global().r()))
+ self.headers.or_init(|| Headers::new(self.global().r().as_global_scope()))
}
// https://fetch.spec.whatwg.org/#dom-request-type
diff --git a/components/script/dom/response.rs b/components/script/dom/response.rs
index 2287bb181b4..a90a551b20a 100644
--- a/components/script/dom/response.rs
+++ b/components/script/dom/response.rs
@@ -14,6 +14,7 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, MutNullableHeap, Root};
use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
use dom::bindings::str::{ByteString, USVString};
+use dom::globalscope::GlobalScope;
use dom::headers::{Headers, Guard};
use dom::headers::{is_vchar, is_obs_text};
use dom::promise::Promise;
@@ -66,7 +67,7 @@ impl Response {
}
// https://fetch.spec.whatwg.org/#dom-response
- pub fn new(global: GlobalRef) -> Root<Response> {
+ pub fn new(global: &GlobalScope) -> Root<Response> {
reflect_dom_object(box Response::new_inherited(), global, ResponseBinding::Wrap)
}
@@ -86,7 +87,7 @@ impl Response {
}
// Step 3
- let r = Response::new(global);
+ let r = Response::new(global.as_global_scope());
// Step 4
*r.status.borrow_mut() = Some(StatusCode::from_u16(init.status));
@@ -139,7 +140,7 @@ impl Response {
// https://fetch.spec.whatwg.org/#dom-response-error
pub fn Error(global: GlobalRef) -> Root<Response> {
- let r = Response::new(global);
+ let r = Response::new(global.as_global_scope());
*r.response_type.borrow_mut() = DOMResponseType::Error;
r.Headers().set_guard(Guard::Immutable);
*r.raw_status.borrow_mut() = Some((0, b"".to_vec()));
@@ -166,7 +167,7 @@ impl Response {
// Step 4
// see Step 4 continued
- let r = Response::new(global);
+ let r = Response::new(global.as_global_scope());
// Step 5
*r.status.borrow_mut() = Some(StatusCode::from_u16(status));
@@ -292,7 +293,7 @@ impl ResponseMethods for Response {
// https://fetch.spec.whatwg.org/#dom-response-headers
fn Headers(&self) -> Root<Headers> {
- self.headers_reflector.or_init(|| Headers::for_response(self.global().r()))
+ self.headers_reflector.or_init(|| Headers::for_response(self.global().r().as_global_scope()))
}
// https://fetch.spec.whatwg.org/#dom-response-clone
@@ -301,7 +302,7 @@ impl ResponseMethods for Response {
// TODO: This step relies on body and stream, which are still unimplemented.
// Step 2
- let new_response = Response::new(self.global().r());
+ let new_response = Response::new(self.global().r().as_global_scope());
new_response.Headers().set_guard(self.Headers().get_guard());
// https://fetch.spec.whatwg.org/#concept-response-clone
diff --git a/components/script/dom/screen.rs b/components/script/dom/screen.rs
index 158615e84dc..2c9fe185de1 100644
--- a/components/script/dom/screen.rs
+++ b/components/script/dom/screen.rs
@@ -4,7 +4,6 @@
use dom::bindings::codegen::Bindings::ScreenBinding;
use dom::bindings::codegen::Bindings::ScreenBinding::ScreenMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::window::Window;
@@ -23,7 +22,7 @@ impl Screen {
pub fn new(window: &Window) -> Root<Screen> {
reflect_dom_object(box Screen::new_inherited(),
- GlobalRef::Window(window),
+ window,
ScreenBinding::Wrap)
}
}
diff --git a/components/script/dom/serviceworker.rs b/components/script/dom/serviceworker.rs
index 8abcec513ce..cce149b5368 100644
--- a/components/script/dom/serviceworker.rs
+++ b/components/script/dom/serviceworker.rs
@@ -7,7 +7,6 @@ use dom::bindings::cell::DOMRefCell;
use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull;
use dom::bindings::codegen::Bindings::ServiceWorkerBinding::{ServiceWorkerMethods, ServiceWorkerState, Wrap};
use dom::bindings::error::{ErrorResult, Error};
-use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::refcounted::Trusted;
@@ -15,6 +14,7 @@ use dom::bindings::reflector::{Reflectable, reflect_dom_object};
use dom::bindings::str::USVString;
use dom::bindings::structuredclone::StructuredCloneData;
use dom::eventtarget::EventTarget;
+use dom::globalscope::GlobalScope;
use js::jsapi::{HandleValue, JSContext};
use script_thread::Runnable;
use script_traits::{ScriptMsg, DOMMessage};
@@ -45,7 +45,7 @@ impl ServiceWorker {
}
}
- pub fn install_serviceworker(global: GlobalRef,
+ pub fn install_serviceworker(global: &GlobalScope,
script_url: Url,
scope_url: Url,
skip_waiting: bool) -> Root<ServiceWorker> {
diff --git a/components/script/dom/serviceworkercontainer.rs b/components/script/dom/serviceworkercontainer.rs
index abeb69f2ea3..3d9202accf4 100644
--- a/components/script/dom/serviceworkercontainer.rs
+++ b/components/script/dom/serviceworkercontainer.rs
@@ -5,12 +5,12 @@
use dom::bindings::codegen::Bindings::ServiceWorkerContainerBinding::{ServiceWorkerContainerMethods, Wrap};
use dom::bindings::codegen::Bindings::ServiceWorkerContainerBinding::RegistrationOptions;
use dom::bindings::error::{Error, Fallible};
-use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, MutNullableHeap, Root};
use dom::bindings::reflector::{Reflectable, reflect_dom_object};
use dom::bindings::str::USVString;
use dom::eventtarget::EventTarget;
+use dom::globalscope::GlobalScope;
use dom::serviceworker::ServiceWorker;
use dom::serviceworkerregistration::ServiceWorkerRegistration;
use script_thread::ScriptThread;
@@ -31,7 +31,7 @@ impl ServiceWorkerContainer {
}
}
- pub fn new(global: GlobalRef) -> Root<ServiceWorkerContainer> {
+ pub fn new(global: &GlobalScope) -> Root<ServiceWorkerContainer> {
reflect_dom_object(box ServiceWorkerContainer::new_inherited(), global, Wrap)
}
}
@@ -95,7 +95,7 @@ impl ServiceWorkerContainerMethods for ServiceWorkerContainer {
return Err(Error::Type("Scope URL contains forbidden characters".to_owned()));
}
- let worker_registration = ServiceWorkerRegistration::new(self.global().r(),
+ let worker_registration = ServiceWorkerRegistration::new(self.global().r().as_global_scope(),
script_url,
scope.clone(),
self);
diff --git a/components/script/dom/serviceworkerglobalscope.rs b/components/script/dom/serviceworkerglobalscope.rs
index 6efd555c909..d635f1cd41f 100644
--- a/components/script/dom/serviceworkerglobalscope.rs
+++ b/components/script/dom/serviceworkerglobalscope.rs
@@ -302,8 +302,7 @@ impl ServiceWorkerGlobalScope {
}
fn dispatch_activate(&self) {
- let global = GlobalRef::Worker(self.upcast::<WorkerGlobalScope>());
- let event = ExtendableEvent::new(global, atom!("activate"), false, false);
+ let event = ExtendableEvent::new(self.upcast(), atom!("activate"), false, false);
let event = (&*event).upcast::<Event>();
self.upcast::<EventTarget>().dispatch_event(event);
}
diff --git a/components/script/dom/serviceworkerregistration.rs b/components/script/dom/serviceworkerregistration.rs
index f7c47b8ecec..b0580457f1c 100644
--- a/components/script/dom/serviceworkerregistration.rs
+++ b/components/script/dom/serviceworkerregistration.rs
@@ -9,6 +9,7 @@ use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::reflect_dom_object;
use dom::bindings::str::USVString;
use dom::eventtarget::EventTarget;
+use dom::globalscope::GlobalScope;
use dom::serviceworker::ServiceWorker;
use dom::serviceworkercontainer::Controllable;
use dom::workerglobalscope::prepare_workerscope_init;
@@ -35,7 +36,7 @@ impl ServiceWorkerRegistration {
}
}
#[allow(unrooted_must_root)]
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
script_url: Url,
scope: Url,
container: &Controllable) -> Root<ServiceWorkerRegistration> {
diff --git a/components/script/dom/servohtmlparser.rs b/components/script/dom/servohtmlparser.rs
index 24a22be75dd..0f0976d0f78 100644
--- a/components/script/dom/servohtmlparser.rs
+++ b/components/script/dom/servohtmlparser.rs
@@ -11,7 +11,6 @@ use dom::bindings::codegen::Bindings::DocumentBinding::DocumentMethods;
use dom::bindings::codegen::Bindings::HTMLImageElementBinding::HTMLImageElementMethods;
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
use dom::bindings::codegen::Bindings::ServoHTMLParserBinding;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, Root};
use dom::bindings::refcounted::Trusted;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
@@ -277,8 +276,7 @@ impl ServoHTMLParser {
pipeline: pipeline,
};
- reflect_dom_object(box parser, GlobalRef::Window(document.window()),
- ServoHTMLParserBinding::Wrap)
+ reflect_dom_object(box parser, document.window(), ServoHTMLParserBinding::Wrap)
}
#[allow(unrooted_must_root)]
@@ -314,8 +312,7 @@ impl ServoHTMLParser {
pipeline: None,
};
- reflect_dom_object(box parser, GlobalRef::Window(document.window()),
- ServoHTMLParserBinding::Wrap)
+ reflect_dom_object(box parser, document.window(), ServoHTMLParserBinding::Wrap)
}
#[inline]
diff --git a/components/script/dom/servoxmlparser.rs b/components/script/dom/servoxmlparser.rs
index 892477ffd0f..2b79a5cf117 100644
--- a/components/script/dom/servoxmlparser.rs
+++ b/components/script/dom/servoxmlparser.rs
@@ -4,7 +4,6 @@
use dom::bindings::cell::DOMRefCell;
use dom::bindings::codegen::Bindings::ServoXMLParserBinding;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::bindings::trace::JSTraceable;
@@ -95,8 +94,7 @@ impl ServoXMLParser {
pipeline: pipeline,
};
- reflect_dom_object(box parser, GlobalRef::Window(document.window()),
- ServoXMLParserBinding::Wrap)
+ reflect_dom_object(box parser, document.window(), ServoXMLParserBinding::Wrap)
}
pub fn window(&self) -> &Window {
diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs
index 411e304b2f5..986cd8edcbe 100644
--- a/components/script/dom/storage.rs
+++ b/components/script/dom/storage.rs
@@ -5,13 +5,13 @@
use dom::bindings::codegen::Bindings::StorageBinding;
use dom::bindings::codegen::Bindings::StorageBinding::StorageMethods;
use dom::bindings::error::{Error, ErrorResult};
-use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::refcounted::Trusted;
use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
use dom::bindings::str::DOMString;
use dom::event::{Event, EventBubbles, EventCancelable};
+use dom::globalscope::GlobalScope;
use dom::storageevent::StorageEvent;
use dom::urlhelper::UrlHelper;
use ipc_channel::ipc::{self, IpcSender};
@@ -35,8 +35,8 @@ impl Storage {
}
}
- pub fn new(global: &GlobalRef, storage_type: StorageType) -> Root<Storage> {
- reflect_dom_object(box Storage::new_inherited(storage_type), *global, StorageBinding::Wrap)
+ pub fn new(global: &GlobalScope, storage_type: StorageType) -> Root<Storage> {
+ reflect_dom_object(box Storage::new_inherited(storage_type), global, StorageBinding::Wrap)
}
fn get_url(&self) -> Url {
@@ -191,7 +191,7 @@ impl Runnable for StorageEventRunnable {
let ev_url = storage.get_url();
let storage_event = StorageEvent::new(
- global_ref,
+ global_ref.as_global_scope(),
atom!("storage"),
EventBubbles::DoesNotBubble, EventCancelable::NotCancelable,
this.key.map(DOMString::from), this.old_value.map(DOMString::from), this.new_value.map(DOMString::from),
diff --git a/components/script/dom/storageevent.rs b/components/script/dom/storageevent.rs
index 69fe7c257d5..0b4a484ebc0 100644
--- a/components/script/dom/storageevent.rs
+++ b/components/script/dom/storageevent.rs
@@ -12,6 +12,7 @@ use dom::bindings::js::{JS, MutNullableHeap, Root, RootedReference};
use dom::bindings::reflector::reflect_dom_object;
use dom::bindings::str::DOMString;
use dom::event::{Event, EventBubbles, EventCancelable};
+use dom::globalscope::GlobalScope;
use dom::storage::Storage;
use dom::window::Window;
use string_cache::Atom;
@@ -46,11 +47,11 @@ impl StorageEvent {
pub fn new_uninitialized(window: &Window,
url: DOMString) -> Root<StorageEvent> {
reflect_dom_object(box StorageEvent::new_inherited(None, None, None, url, None),
- GlobalRef::Window(window),
+ window,
StorageEventBinding::Wrap)
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
type_: Atom,
bubbles: EventBubbles,
cancelable: EventCancelable,
@@ -80,7 +81,7 @@ impl StorageEvent {
let storageArea = init.storageArea.r();
let bubbles = EventBubbles::from(init.parent.bubbles);
let cancelable = EventCancelable::from(init.parent.cancelable);
- let event = StorageEvent::new(global, Atom::from(type_),
+ let event = StorageEvent::new(global.as_global_scope(), Atom::from(type_),
bubbles, cancelable,
key, oldValue, newValue,
url, storageArea);
diff --git a/components/script/dom/stylesheet.rs b/components/script/dom/stylesheet.rs
index 15b8693c537..02c96623800 100644
--- a/components/script/dom/stylesheet.rs
+++ b/components/script/dom/stylesheet.rs
@@ -4,7 +4,6 @@
use dom::bindings::codegen::Bindings::StyleSheetBinding;
use dom::bindings::codegen::Bindings::StyleSheetBinding::StyleSheetMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::bindings::str::DOMString;
@@ -35,7 +34,7 @@ impl StyleSheet {
href: Option<DOMString>,
title: Option<DOMString>) -> Root<StyleSheet> {
reflect_dom_object(box StyleSheet::new_inherited(type_, href, title),
- GlobalRef::Window(window),
+ window,
StyleSheetBinding::Wrap)
}
}
diff --git a/components/script/dom/stylesheetlist.rs b/components/script/dom/stylesheetlist.rs
index 721ac06525c..a4541fc9bb4 100644
--- a/components/script/dom/stylesheetlist.rs
+++ b/components/script/dom/stylesheetlist.rs
@@ -4,7 +4,6 @@
use dom::bindings::codegen::Bindings::StyleSheetListBinding;
use dom::bindings::codegen::Bindings::StyleSheetListBinding::StyleSheetListMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::document::Document;
@@ -29,7 +28,7 @@ impl StyleSheetList {
#[allow(unrooted_must_root)]
pub fn new(window: &Window, document: JS<Document>) -> Root<StyleSheetList> {
reflect_dom_object(box StyleSheetList::new_inherited(document),
- GlobalRef::Window(window), StyleSheetListBinding::Wrap)
+ window, StyleSheetListBinding::Wrap)
}
}
diff --git a/components/script/dom/testbinding.rs b/components/script/dom/testbinding.rs
index 6f7d7baf770..62714dfc220 100644
--- a/components/script/dom/testbinding.rs
+++ b/components/script/dom/testbinding.rs
@@ -30,6 +30,7 @@ use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
use dom::bindings::str::{ByteString, DOMString, USVString};
use dom::bindings::weakref::MutableWeakRef;
use dom::blob::{Blob, BlobImpl};
+use dom::globalscope::GlobalScope;
use dom::promise::Promise;
use dom::promisenativehandler::{PromiseNativeHandler, Callback};
use dom::url::URL;
@@ -57,23 +58,23 @@ impl TestBinding {
}
}
- pub fn new(global: GlobalRef) -> Root<TestBinding> {
+ pub fn new(global: &GlobalScope) -> Root<TestBinding> {
reflect_dom_object(box TestBinding::new_inherited(),
global, TestBindingBinding::Wrap)
}
pub fn Constructor(global: GlobalRef) -> Fallible<Root<TestBinding>> {
- Ok(TestBinding::new(global))
+ Ok(TestBinding::new(global.as_global_scope()))
}
#[allow(unused_variables)]
pub fn Constructor_(global: GlobalRef, nums: Vec<f64>) -> Fallible<Root<TestBinding>> {
- Ok(TestBinding::new(global))
+ Ok(TestBinding::new(global.as_global_scope()))
}
#[allow(unused_variables)]
pub fn Constructor__(global: GlobalRef, num: f64) -> Fallible<Root<TestBinding>> {
- Ok(TestBinding::new(global))
+ Ok(TestBinding::new(global.as_global_scope()))
}
}
@@ -113,7 +114,7 @@ impl TestBindingMethods for TestBinding {
fn EnumAttribute(&self) -> TestEnum { TestEnum::_empty }
fn SetEnumAttribute(&self, _: TestEnum) {}
fn InterfaceAttribute(&self) -> Root<Blob> {
- Blob::new(self.global().r(), BlobImpl::new_from_bytes(vec![]), "".to_owned())
+ Blob::new(self.global().r().as_global_scope(), BlobImpl::new_from_bytes(vec![]), "".to_owned())
}
fn SetInterfaceAttribute(&self, _: &Blob) {}
fn UnionAttribute(&self) -> HTMLElementOrLong { HTMLElementOrLong::Long(0) }
@@ -209,7 +210,7 @@ impl TestBindingMethods for TestBinding {
fn SetAttr_to_automatically_rename(&self, _: DOMString) {}
fn GetEnumAttributeNullable(&self) -> Option<TestEnum> { Some(TestEnum::_empty) }
fn GetInterfaceAttributeNullable(&self) -> Option<Root<Blob>> {
- Some(Blob::new(self.global().r(), BlobImpl::new_from_bytes(vec![]), "".to_owned()))
+ Some(Blob::new(self.global().r().as_global_scope(), BlobImpl::new_from_bytes(vec![]), "".to_owned()))
}
fn SetInterfaceAttributeNullable(&self, _: Option<&Blob>) {}
fn GetInterfaceAttributeWeak(&self) -> Option<Root<URL>> {
@@ -264,7 +265,7 @@ impl TestBindingMethods for TestBinding {
fn ReceiveByteString(&self) -> ByteString { ByteString::new(vec!()) }
fn ReceiveEnum(&self) -> TestEnum { TestEnum::_empty }
fn ReceiveInterface(&self) -> Root<Blob> {
- Blob::new(self.global().r(), BlobImpl::new_from_bytes(vec![]), "".to_owned())
+ Blob::new(self.global().r().as_global_scope(), BlobImpl::new_from_bytes(vec![]), "".to_owned())
}
fn ReceiveAny(&self, _: *mut JSContext) -> JSVal { NullValue() }
fn ReceiveObject(&self, cx: *mut JSContext) -> NonZero<*mut JSObject> {
@@ -287,7 +288,7 @@ impl TestBindingMethods for TestBinding {
}
fn ReceiveSequence(&self) -> Vec<i32> { vec![1] }
fn ReceiveInterfaceSequence(&self) -> Vec<Root<Blob>> {
- vec![Blob::new(self.global().r(), BlobImpl::new_from_bytes(vec![]), "".to_owned())]
+ vec![Blob::new(self.global().r().as_global_scope(), BlobImpl::new_from_bytes(vec![]), "".to_owned())]
}
fn ReceiveNullableBoolean(&self) -> Option<bool> { Some(false) }
@@ -308,7 +309,7 @@ impl TestBindingMethods for TestBinding {
fn ReceiveNullableByteString(&self) -> Option<ByteString> { Some(ByteString::new(vec!())) }
fn ReceiveNullableEnum(&self) -> Option<TestEnum> { Some(TestEnum::_empty) }
fn ReceiveNullableInterface(&self) -> Option<Root<Blob>> {
- Some(Blob::new(self.global().r(), BlobImpl::new_from_bytes(vec![]), "".to_owned()))
+ Some(Blob::new(self.global().r().as_global_scope(), BlobImpl::new_from_bytes(vec![]), "".to_owned()))
}
fn ReceiveNullableObject(&self, cx: *mut JSContext) -> Option<NonZero<*mut JSObject>> {
self.GetObjectAttributeNullable(cx)
@@ -691,7 +692,7 @@ impl TestBindingMethods for TestBinding {
resolve: Option<Rc<SimpleCallback>>,
reject: Option<Rc<SimpleCallback>>) -> Rc<Promise> {
let global = self.global();
- let handler = PromiseNativeHandler::new(global.r(),
+ let handler = PromiseNativeHandler::new(global.r().as_global_scope(),
resolve.map(SimpleHandler::new),
reject.map(SimpleHandler::new));
let p = Promise::new(global.r());
diff --git a/components/script/dom/testbindingiterable.rs b/components/script/dom/testbindingiterable.rs
index 2ad0df6dbb6..6023051d8f6 100644
--- a/components/script/dom/testbindingiterable.rs
+++ b/components/script/dom/testbindingiterable.rs
@@ -11,6 +11,7 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::bindings::str::DOMString;
+use dom::globalscope::GlobalScope;
#[dom_struct]
pub struct TestBindingIterable {
@@ -19,7 +20,7 @@ pub struct TestBindingIterable {
}
impl TestBindingIterable {
- fn new(global: GlobalRef) -> Root<TestBindingIterable> {
+ fn new(global: &GlobalScope) -> Root<TestBindingIterable> {
reflect_dom_object(box TestBindingIterable {
reflector: Reflector::new(),
vals: DOMRefCell::new(vec![]),
@@ -27,7 +28,7 @@ impl TestBindingIterable {
}
pub fn Constructor(global: GlobalRef) -> Fallible<Root<TestBindingIterable>> {
- Ok(TestBindingIterable::new(global))
+ Ok(TestBindingIterable::new(global.as_global_scope()))
}
}
diff --git a/components/script/dom/testbindingpairiterable.rs b/components/script/dom/testbindingpairiterable.rs
index 9bceedd4980..7e3ad537aa5 100644
--- a/components/script/dom/testbindingpairiterable.rs
+++ b/components/script/dom/testbindingpairiterable.rs
@@ -13,6 +13,7 @@ use dom::bindings::iterable::Iterable;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::bindings::str::DOMString;
+use dom::globalscope::GlobalScope;
#[dom_struct]
pub struct TestBindingPairIterable {
@@ -35,7 +36,7 @@ impl Iterable for TestBindingPairIterable {
}
impl TestBindingPairIterable {
- fn new(global: GlobalRef) -> Root<TestBindingPairIterable> {
+ fn new(global: &GlobalScope) -> Root<TestBindingPairIterable> {
reflect_dom_object(box TestBindingPairIterable {
reflector: Reflector::new(),
map: DOMRefCell::new(vec![]),
@@ -43,7 +44,7 @@ impl TestBindingPairIterable {
}
pub fn Constructor(global: GlobalRef) -> Fallible<Root<TestBindingPairIterable>> {
- Ok(TestBindingPairIterable::new(global))
+ Ok(TestBindingPairIterable::new(global.as_global_scope()))
}
}
diff --git a/components/script/dom/textdecoder.rs b/components/script/dom/textdecoder.rs
index fae78342a73..4d0e18e87f6 100644
--- a/components/script/dom/textdecoder.rs
+++ b/components/script/dom/textdecoder.rs
@@ -10,6 +10,7 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::bindings::str::{DOMString, USVString};
+use dom::globalscope::GlobalScope;
use encoding::label::encoding_from_whatwg_label;
use encoding::types::{DecoderTrap, EncodingRef};
use js::jsapi::{JSContext, JSObject};
@@ -36,7 +37,7 @@ impl TextDecoder {
Err(Error::Range("The given encoding is not supported.".to_owned()))
}
- pub fn new(global: GlobalRef, encoding: EncodingRef, fatal: bool) -> Root<TextDecoder> {
+ pub fn new(global: &GlobalScope, encoding: EncodingRef, fatal: bool) -> Root<TextDecoder> {
reflect_dom_object(box TextDecoder::new_inherited(encoding, fatal),
global,
TextDecoderBinding::Wrap)
@@ -60,7 +61,7 @@ impl TextDecoder {
Some("replacement") => return TextDecoder::make_range_error(),
_ => ()
};
- Ok(TextDecoder::new(global, encoding, options.fatal))
+ Ok(TextDecoder::new(global.as_global_scope(), encoding, options.fatal))
}
}
diff --git a/components/script/dom/textencoder.rs b/components/script/dom/textencoder.rs
index 996e5d28e98..5076c82190d 100644
--- a/components/script/dom/textencoder.rs
+++ b/components/script/dom/textencoder.rs
@@ -10,6 +10,7 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::bindings::str::{DOMString, USVString};
+use dom::globalscope::GlobalScope;
use encoding::EncoderTrap;
use encoding::Encoding;
use encoding::all::UTF_8;
@@ -30,7 +31,7 @@ impl TextEncoder {
}
}
- pub fn new(global: GlobalRef) -> Root<TextEncoder> {
+ pub fn new(global: &GlobalScope) -> Root<TextEncoder> {
reflect_dom_object(box TextEncoder::new_inherited(),
global,
TextEncoderBinding::Wrap)
@@ -38,7 +39,7 @@ impl TextEncoder {
// https://encoding.spec.whatwg.org/#dom-textencoder
pub fn Constructor(global: GlobalRef) -> Fallible<Root<TextEncoder>> {
- Ok(TextEncoder::new(global))
+ Ok(TextEncoder::new(global.as_global_scope()))
}
}
diff --git a/components/script/dom/touch.rs b/components/script/dom/touch.rs
index 29bfac34152..32eeb24b6e1 100644
--- a/components/script/dom/touch.rs
+++ b/components/script/dom/touch.rs
@@ -4,7 +4,6 @@
use dom::bindings::codegen::Bindings::TouchBinding;
use dom::bindings::codegen::Bindings::TouchBinding::TouchMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, MutHeap, Root};
use dom::bindings::num::Finite;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
@@ -50,7 +49,8 @@ impl Touch {
screen_x, screen_y,
client_x, client_y,
page_x, page_y),
- GlobalRef::Window(window), TouchBinding::Wrap)
+ window,
+ TouchBinding::Wrap)
}
}
diff --git a/components/script/dom/touchevent.rs b/components/script/dom/touchevent.rs
index 1a2f7334cdf..9b4b3a250d5 100644
--- a/components/script/dom/touchevent.rs
+++ b/components/script/dom/touchevent.rs
@@ -5,7 +5,6 @@
use dom::bindings::codegen::Bindings::TouchEventBinding;
use dom::bindings::codegen::Bindings::TouchEventBinding::TouchEventMethods;
use dom::bindings::codegen::Bindings::UIEventBinding::UIEventMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, MutHeap, Root};
use dom::bindings::reflector::reflect_dom_object;
@@ -49,7 +48,7 @@ impl TouchEvent {
changed_touches: &TouchList,
target_touches: &TouchList) -> Root<TouchEvent> {
reflect_dom_object(box TouchEvent::new_inherited(touches, changed_touches, target_touches),
- GlobalRef::Window(window),
+ window,
TouchEventBinding::Wrap)
}
diff --git a/components/script/dom/touchlist.rs b/components/script/dom/touchlist.rs
index 14bb8a68766..a4ff7f8443e 100644
--- a/components/script/dom/touchlist.rs
+++ b/components/script/dom/touchlist.rs
@@ -4,7 +4,6 @@
use dom::bindings::codegen::Bindings::TouchListBinding;
use dom::bindings::codegen::Bindings::TouchListBinding::TouchListMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::touch::Touch;
@@ -26,7 +25,7 @@ impl TouchList {
pub fn new(window: &Window, touches: &[&Touch]) -> Root<TouchList> {
reflect_dom_object(box TouchList::new_inherited(touches),
- GlobalRef::Window(window), TouchListBinding::Wrap)
+ window, TouchListBinding::Wrap)
}
}
diff --git a/components/script/dom/treewalker.rs b/components/script/dom/treewalker.rs
index c4097fc761a..7c749a5c502 100644
--- a/components/script/dom/treewalker.rs
+++ b/components/script/dom/treewalker.rs
@@ -9,7 +9,6 @@ use dom::bindings::codegen::Bindings::NodeFilterBinding::NodeFilterConstants;
use dom::bindings::codegen::Bindings::TreeWalkerBinding;
use dom::bindings::codegen::Bindings::TreeWalkerBinding::TreeWalkerMethods;
use dom::bindings::error::Fallible;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, MutHeap};
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
@@ -46,7 +45,7 @@ impl TreeWalker {
what_to_show: u32,
filter: Filter) -> Root<TreeWalker> {
reflect_dom_object(box TreeWalker::new_inherited(root_node, what_to_show, filter),
- GlobalRef::Window(document.window()),
+ document.window(),
TreeWalkerBinding::Wrap)
}
diff --git a/components/script/dom/uievent.rs b/components/script/dom/uievent.rs
index a0f35868662..0b64e36c62f 100644
--- a/components/script/dom/uievent.rs
+++ b/components/script/dom/uievent.rs
@@ -37,7 +37,7 @@ impl UIEvent {
pub fn new_uninitialized(window: &Window) -> Root<UIEvent> {
reflect_dom_object(box UIEvent::new_inherited(),
- GlobalRef::Window(window),
+ window,
UIEventBinding::Wrap)
}
diff --git a/components/script/dom/url.rs b/components/script/dom/url.rs
index bc686d23cc4..5fd4a9b005f 100644
--- a/components/script/dom/url.rs
+++ b/components/script/dom/url.rs
@@ -11,6 +11,7 @@ use dom::bindings::js::{JS, MutNullableHeap, Root};
use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
use dom::bindings::str::{DOMString, USVString};
use dom::blob::Blob;
+use dom::globalscope::GlobalScope;
use dom::urlhelper::UrlHelper;
use dom::urlsearchparams::URLSearchParams;
use ipc_channel::ipc;
@@ -44,7 +45,7 @@ impl URL {
}
}
- pub fn new(global: GlobalRef, url: Url) -> Root<URL> {
+ pub fn new(global: &GlobalScope, url: Url) -> Root<URL> {
reflect_dom_object(box URL::new_inherited(url),
global, URLBinding::Wrap)
}
@@ -89,7 +90,7 @@ impl URL {
};
// Step 5: Skip (see step 8 below).
// Steps 6-7.
- let result = URL::new(global, parsed_url);
+ let result = URL::new(global.as_global_scope(), parsed_url);
// Step 8: Instead of construcing a new `URLSearchParams` object here, construct it
// on-demand inside `URL::SearchParams`.
// Step 9.
@@ -283,7 +284,9 @@ impl URLMethods for URL {
// https://url.spec.whatwg.org/#dom-url-searchparams
fn SearchParams(&self) -> Root<URLSearchParams> {
- self.search_params.or_init(|| URLSearchParams::new(self.global().r(), Some(self)))
+ self.search_params.or_init(|| {
+ URLSearchParams::new(self.global().r().as_global_scope(), Some(self))
+ })
}
// https://url.spec.whatwg.org/#dom-url-href
diff --git a/components/script/dom/urlsearchparams.rs b/components/script/dom/urlsearchparams.rs
index 44eadea0932..a7b1672852f 100644
--- a/components/script/dom/urlsearchparams.rs
+++ b/components/script/dom/urlsearchparams.rs
@@ -12,6 +12,7 @@ use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::bindings::str::{DOMString, USVString};
use dom::bindings::weakref::MutableWeakRef;
+use dom::globalscope::GlobalScope;
use dom::url::URL;
use encoding::types::EncodingRef;
use url::form_urlencoded;
@@ -35,7 +36,7 @@ impl URLSearchParams {
}
}
- pub fn new(global: GlobalRef, url: Option<&URL>) -> Root<URLSearchParams> {
+ pub fn new(global: &GlobalScope, url: Option<&URL>) -> Root<URLSearchParams> {
reflect_dom_object(box URLSearchParams::new_inherited(url), global,
URLSearchParamsBinding::Wrap)
}
@@ -44,7 +45,7 @@ impl URLSearchParams {
pub fn Constructor(global: GlobalRef, init: Option<USVStringOrURLSearchParams>) ->
Fallible<Root<URLSearchParams>> {
// Step 1.
- let query = URLSearchParams::new(global, None);
+ let query = URLSearchParams::new(global.as_global_scope(), None);
match init {
Some(USVStringOrURLSearchParams::USVString(init)) => {
// Step 2.
diff --git a/components/script/dom/validitystate.rs b/components/script/dom/validitystate.rs
index 7595566f275..938320b7254 100644
--- a/components/script/dom/validitystate.rs
+++ b/components/script/dom/validitystate.rs
@@ -4,7 +4,6 @@
use dom::bindings::codegen::Bindings::ValidityStateBinding;
use dom::bindings::codegen::Bindings::ValidityStateBinding::ValidityStateMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::element::Element;
@@ -47,7 +46,7 @@ impl ValidityState {
pub fn new(window: &Window, element: &Element) -> Root<ValidityState> {
reflect_dom_object(box ValidityState::new_inherited(element),
- GlobalRef::Window(window),
+ window,
ValidityStateBinding::Wrap)
}
}
diff --git a/components/script/dom/webglactiveinfo.rs b/components/script/dom/webglactiveinfo.rs
index 00f70b682b7..ff82ce3b05f 100644
--- a/components/script/dom/webglactiveinfo.rs
+++ b/components/script/dom/webglactiveinfo.rs
@@ -5,10 +5,10 @@
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
use dom::bindings::codegen::Bindings::WebGLActiveInfoBinding;
use dom::bindings::codegen::Bindings::WebGLActiveInfoBinding::WebGLActiveInfoMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::bindings::str::DOMString;
+use dom::globalscope::GlobalScope;
#[dom_struct]
pub struct WebGLActiveInfo {
@@ -29,7 +29,7 @@ impl WebGLActiveInfo {
}
}
- pub fn new(global: GlobalRef, size: i32, ty: u32, name: DOMString) -> Root<WebGLActiveInfo> {
+ pub fn new(global: &GlobalScope, size: i32, ty: u32, name: DOMString) -> Root<WebGLActiveInfo> {
reflect_dom_object(box WebGLActiveInfo::new_inherited(size, ty, name), global, WebGLActiveInfoBinding::Wrap)
}
}
diff --git a/components/script/dom/webglbuffer.rs b/components/script/dom/webglbuffer.rs
index 3899d417b38..af8f83d256d 100644
--- a/components/script/dom/webglbuffer.rs
+++ b/components/script/dom/webglbuffer.rs
@@ -5,9 +5,9 @@
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
use canvas_traits::CanvasMsg;
use dom::bindings::codegen::Bindings::WebGLBufferBinding;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
+use dom::globalscope::GlobalScope;
use dom::webglobject::WebGLObject;
use ipc_channel::ipc::{self, IpcSender};
use std::cell::Cell;
@@ -39,7 +39,7 @@ impl WebGLBuffer {
}
}
- pub fn maybe_new(global: GlobalRef, renderer: IpcSender<CanvasMsg>)
+ pub fn maybe_new(global: &GlobalScope, renderer: IpcSender<CanvasMsg>)
-> Option<Root<WebGLBuffer>> {
let (sender, receiver) = ipc::channel().unwrap();
renderer.send(CanvasMsg::WebGL(WebGLCommand::CreateBuffer(sender))).unwrap();
@@ -48,7 +48,7 @@ impl WebGLBuffer {
result.map(|buffer_id| WebGLBuffer::new(global, renderer, buffer_id))
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
renderer: IpcSender<CanvasMsg>,
id: WebGLBufferId)
-> Root<WebGLBuffer> {
diff --git a/components/script/dom/webglcontextevent.rs b/components/script/dom/webglcontextevent.rs
index 9c73a9f6b65..01ab7e0eec1 100644
--- a/components/script/dom/webglcontextevent.rs
+++ b/components/script/dom/webglcontextevent.rs
@@ -13,6 +13,7 @@ use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
use dom::bindings::str::DOMString;
use dom::event::{Event, EventBubbles, EventCancelable};
+use dom::globalscope::GlobalScope;
use string_cache::Atom;
#[dom_struct]
@@ -41,7 +42,7 @@ impl WebGLContextEvent {
}
}
- pub fn new_uninitialized(global_ref: GlobalRef) -> Root<WebGLContextEvent> {
+ pub fn new_uninitialized(global_ref: &GlobalScope) -> Root<WebGLContextEvent> {
// according to https://www.khronos.org/registry/webgl/specs/1.0/#5.15 this is
// additional information or the empty string if no additional information is
// available.
@@ -52,7 +53,7 @@ impl WebGLContextEvent {
WebGLContextEventBinding::Wrap)
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
type_: Atom,
bubbles: EventBubbles,
cancelable: EventCancelable,
@@ -82,7 +83,8 @@ impl WebGLContextEvent {
let cancelable = EventCancelable::from(init.parent.cancelable);
- Ok(WebGLContextEvent::new(global, Atom::from(type_),
+ Ok(WebGLContextEvent::new(global.as_global_scope(),
+ Atom::from(type_),
bubbles,
cancelable,
status_message))
diff --git a/components/script/dom/webglframebuffer.rs b/components/script/dom/webglframebuffer.rs
index cd212d644bf..22749832389 100644
--- a/components/script/dom/webglframebuffer.rs
+++ b/components/script/dom/webglframebuffer.rs
@@ -6,9 +6,9 @@
use canvas_traits::CanvasMsg;
use dom::bindings::codegen::Bindings::WebGLFramebufferBinding;
use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
+use dom::globalscope::GlobalScope;
use dom::webglobject::WebGLObject;
use ipc_channel::ipc::{self, IpcSender};
use std::cell::Cell;
@@ -38,7 +38,7 @@ impl WebGLFramebuffer {
}
}
- pub fn maybe_new(global: GlobalRef, renderer: IpcSender<CanvasMsg>)
+ pub fn maybe_new(global: &GlobalScope, renderer: IpcSender<CanvasMsg>)
-> Option<Root<WebGLFramebuffer>> {
let (sender, receiver) = ipc::channel().unwrap();
renderer.send(CanvasMsg::WebGL(WebGLCommand::CreateFramebuffer(sender))).unwrap();
@@ -47,7 +47,7 @@ impl WebGLFramebuffer {
result.map(|fb_id| WebGLFramebuffer::new(global, renderer, fb_id))
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
renderer: IpcSender<CanvasMsg>,
id: WebGLFramebufferId)
-> Root<WebGLFramebuffer> {
diff --git a/components/script/dom/webglobject.rs b/components/script/dom/webglobject.rs
index c6bc733de62..0964fc5d0cf 100644
--- a/components/script/dom/webglobject.rs
+++ b/components/script/dom/webglobject.rs
@@ -4,9 +4,9 @@
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
use dom::bindings::codegen::Bindings::WebGLObjectBinding;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::globalscope::GlobalScope;
#[dom_struct]
pub struct WebGLObject {
@@ -20,7 +20,7 @@ impl WebGLObject {
}
}
- pub fn new(global: GlobalRef) -> Root<WebGLObject> {
+ pub fn new(global: &GlobalScope) -> Root<WebGLObject> {
reflect_dom_object(box WebGLObject::new_inherited(), global, WebGLObjectBinding::Wrap)
}
}
diff --git a/components/script/dom/webglprogram.rs b/components/script/dom/webglprogram.rs
index 6382897efb3..4b3b39b05cc 100644
--- a/components/script/dom/webglprogram.rs
+++ b/components/script/dom/webglprogram.rs
@@ -6,10 +6,10 @@
use canvas_traits::CanvasMsg;
use dom::bindings::codegen::Bindings::WebGLProgramBinding;
use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, MutNullableHeap, Root};
use dom::bindings::reflector::{Reflectable, reflect_dom_object};
use dom::bindings::str::DOMString;
+use dom::globalscope::GlobalScope;
use dom::webglactiveinfo::WebGLActiveInfo;
use dom::webglobject::WebGLObject;
use dom::webglrenderingcontext::MAX_UNIFORM_AND_ATTRIBUTE_LEN;
@@ -48,7 +48,7 @@ impl WebGLProgram {
}
}
- pub fn maybe_new(global: GlobalRef, renderer: IpcSender<CanvasMsg>)
+ pub fn maybe_new(global: &GlobalScope, renderer: IpcSender<CanvasMsg>)
-> Option<Root<WebGLProgram>> {
let (sender, receiver) = ipc::channel().unwrap();
renderer.send(CanvasMsg::WebGL(WebGLCommand::CreateProgram(sender))).unwrap();
@@ -57,7 +57,7 @@ impl WebGLProgram {
result.map(|program_id| WebGLProgram::new(global, renderer, program_id))
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
renderer: IpcSender<CanvasMsg>,
id: WebGLProgramId)
-> Root<WebGLProgram> {
@@ -230,7 +230,7 @@ impl WebGLProgram {
.unwrap();
receiver.recv().unwrap().map(|(size, ty, name)|
- WebGLActiveInfo::new(self.global().r(), size, ty, DOMString::from(name)))
+ WebGLActiveInfo::new(self.global().r().as_global_scope(), size, ty, DOMString::from(name)))
}
/// glGetActiveAttrib
@@ -244,7 +244,7 @@ impl WebGLProgram {
.unwrap();
receiver.recv().unwrap().map(|(size, ty, name)|
- WebGLActiveInfo::new(self.global().r(), size, ty, DOMString::from(name)))
+ WebGLActiveInfo::new(self.global().r().as_global_scope(), size, ty, DOMString::from(name)))
}
/// glGetAttribLocation
diff --git a/components/script/dom/webglrenderbuffer.rs b/components/script/dom/webglrenderbuffer.rs
index b7e89f2eb22..de4eaa2d2c8 100644
--- a/components/script/dom/webglrenderbuffer.rs
+++ b/components/script/dom/webglrenderbuffer.rs
@@ -5,9 +5,9 @@
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
use canvas_traits::CanvasMsg;
use dom::bindings::codegen::Bindings::WebGLRenderbufferBinding;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
+use dom::globalscope::GlobalScope;
use dom::webglobject::WebGLObject;
use ipc_channel::ipc::{self, IpcSender};
use std::cell::Cell;
@@ -36,7 +36,7 @@ impl WebGLRenderbuffer {
}
}
- pub fn maybe_new(global: GlobalRef, renderer: IpcSender<CanvasMsg>)
+ pub fn maybe_new(global: &GlobalScope, renderer: IpcSender<CanvasMsg>)
-> Option<Root<WebGLRenderbuffer>> {
let (sender, receiver) = ipc::channel().unwrap();
renderer.send(CanvasMsg::WebGL(WebGLCommand::CreateRenderbuffer(sender))).unwrap();
@@ -45,7 +45,7 @@ impl WebGLRenderbuffer {
result.map(|renderbuffer_id| WebGLRenderbuffer::new(global, renderer, renderbuffer_id))
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
renderer: IpcSender<CanvasMsg>,
id: WebGLRenderbufferId)
-> Root<WebGLRenderbuffer> {
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs
index b69f11146fd..4b6e8b2cefd 100644
--- a/components/script/dom/webglrenderingcontext.rs
+++ b/components/script/dom/webglrenderingcontext.rs
@@ -162,11 +162,11 @@ impl WebGLRenderingContext {
pub fn new(global: GlobalRef, canvas: &HTMLCanvasElement, size: Size2D<i32>, attrs: GLContextAttributes)
-> Option<Root<WebGLRenderingContext>> {
match WebGLRenderingContext::new_inherited(global, canvas, size, attrs) {
- Ok(ctx) => Some(reflect_dom_object(box ctx, global,
+ Ok(ctx) => Some(reflect_dom_object(box ctx, global.as_global_scope(),
WebGLRenderingContextBinding::Wrap)),
Err(msg) => {
error!("Couldn't create WebGLRenderingContext: {}", msg);
- let event = WebGLContextEvent::new(global,
+ let event = WebGLContextEvent::new(global.as_global_scope(),
atom!("webglcontextcreationerror"),
EventBubbles::DoesNotBubble,
EventCancelable::Cancelable,
@@ -1154,27 +1154,27 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
// generated objects, either here or in the webgl thread
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.5
fn CreateBuffer(&self) -> Option<Root<WebGLBuffer>> {
- WebGLBuffer::maybe_new(self.global().r(), self.ipc_renderer.clone())
+ WebGLBuffer::maybe_new(self.global().r().as_global_scope(), self.ipc_renderer.clone())
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.6
fn CreateFramebuffer(&self) -> Option<Root<WebGLFramebuffer>> {
- WebGLFramebuffer::maybe_new(self.global().r(), self.ipc_renderer.clone())
+ WebGLFramebuffer::maybe_new(self.global().r().as_global_scope(), self.ipc_renderer.clone())
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.7
fn CreateRenderbuffer(&self) -> Option<Root<WebGLRenderbuffer>> {
- WebGLRenderbuffer::maybe_new(self.global().r(), self.ipc_renderer.clone())
+ WebGLRenderbuffer::maybe_new(self.global().r().as_global_scope(), self.ipc_renderer.clone())
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.8
fn CreateTexture(&self) -> Option<Root<WebGLTexture>> {
- WebGLTexture::maybe_new(self.global().r(), self.ipc_renderer.clone())
+ WebGLTexture::maybe_new(self.global().r().as_global_scope(), self.ipc_renderer.clone())
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.9
fn CreateProgram(&self) -> Option<Root<WebGLProgram>> {
- WebGLProgram::maybe_new(self.global().r(), self.ipc_renderer.clone())
+ WebGLProgram::maybe_new(self.global().r().as_global_scope(), self.ipc_renderer.clone())
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.9
@@ -1186,7 +1186,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
return None;
}
}
- WebGLShader::maybe_new(self.global().r(), self.ipc_renderer.clone(), shader_type)
+ WebGLShader::maybe_new(self.global().r().as_global_scope(), self.ipc_renderer.clone(), shader_type)
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.5
@@ -1480,7 +1480,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
name: DOMString) -> Option<Root<WebGLUniformLocation>> {
program.and_then(|p| {
handle_potential_webgl_error!(self, p.get_uniform_location(name), None)
- .map(|location| WebGLUniformLocation::new(self.global().r(), location, p.id()))
+ .map(|location| WebGLUniformLocation::new(self.global().r().as_global_scope(), location, p.id()))
})
}
diff --git a/components/script/dom/webglshader.rs b/components/script/dom/webglshader.rs
index ca2555faa8e..82d1b88a7da 100644
--- a/components/script/dom/webglshader.rs
+++ b/components/script/dom/webglshader.rs
@@ -7,10 +7,10 @@ use angle::hl::{BuiltInResources, Output, ShaderValidator};
use canvas_traits::CanvasMsg;
use dom::bindings::cell::DOMRefCell;
use dom::bindings::codegen::Bindings::WebGLShaderBinding;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
use dom::bindings::str::DOMString;
+use dom::globalscope::GlobalScope;
use dom::webglobject::WebGLObject;
use ipc_channel::ipc::{self, IpcSender};
use std::cell::Cell;
@@ -65,7 +65,7 @@ impl WebGLShader {
}
}
- pub fn maybe_new(global: GlobalRef,
+ pub fn maybe_new(global: &GlobalScope,
renderer: IpcSender<CanvasMsg>,
shader_type: u32) -> Option<Root<WebGLShader>> {
let (sender, receiver) = ipc::channel().unwrap();
@@ -75,7 +75,7 @@ impl WebGLShader {
result.map(|shader_id| WebGLShader::new(global, renderer, shader_id, shader_type))
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
renderer: IpcSender<CanvasMsg>,
id: WebGLShaderId,
shader_type: u32)
diff --git a/components/script/dom/webglshaderprecisionformat.rs b/components/script/dom/webglshaderprecisionformat.rs
index 6cd78b8d51a..18ba8c189a5 100644
--- a/components/script/dom/webglshaderprecisionformat.rs
+++ b/components/script/dom/webglshaderprecisionformat.rs
@@ -5,9 +5,9 @@
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
use dom::bindings::codegen::Bindings::WebGLShaderPrecisionFormatBinding;
use dom::bindings::codegen::Bindings::WebGLShaderPrecisionFormatBinding::WebGLShaderPrecisionFormatMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::globalscope::GlobalScope;
#[dom_struct]
pub struct WebGLShaderPrecisionFormat {
@@ -27,7 +27,7 @@ impl WebGLShaderPrecisionFormat {
}
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
range_min: i32,
range_max: i32,
precision: i32) -> Root<WebGLShaderPrecisionFormat> {
diff --git a/components/script/dom/webgltexture.rs b/components/script/dom/webgltexture.rs
index e189835ee9d..31fdaafcffd 100644
--- a/components/script/dom/webgltexture.rs
+++ b/components/script/dom/webgltexture.rs
@@ -7,9 +7,9 @@ use canvas_traits::CanvasMsg;
use dom::bindings::cell::DOMRefCell;
use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants;
use dom::bindings::codegen::Bindings::WebGLTextureBinding;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
+use dom::globalscope::GlobalScope;
use dom::webgl_validations::types::{TexImageTarget, TexFormat, TexDataType};
use dom::webglobject::WebGLObject;
use ipc_channel::ipc::{self, IpcSender};
@@ -60,7 +60,7 @@ impl WebGLTexture {
}
}
- pub fn maybe_new(global: GlobalRef, renderer: IpcSender<CanvasMsg>)
+ pub fn maybe_new(global: &GlobalScope, renderer: IpcSender<CanvasMsg>)
-> Option<Root<WebGLTexture>> {
let (sender, receiver) = ipc::channel().unwrap();
renderer.send(CanvasMsg::WebGL(WebGLCommand::CreateTexture(sender))).unwrap();
@@ -69,7 +69,7 @@ impl WebGLTexture {
result.map(|texture_id| WebGLTexture::new(global, renderer, texture_id))
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
renderer: IpcSender<CanvasMsg>,
id: WebGLTextureId)
-> Root<WebGLTexture> {
diff --git a/components/script/dom/webgluniformlocation.rs b/components/script/dom/webgluniformlocation.rs
index f52cb899eb8..6e0683ec833 100644
--- a/components/script/dom/webgluniformlocation.rs
+++ b/components/script/dom/webgluniformlocation.rs
@@ -4,9 +4,9 @@
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
use dom::bindings::codegen::Bindings::WebGLUniformLocationBinding;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::globalscope::GlobalScope;
use webrender_traits::WebGLProgramId;
#[dom_struct]
@@ -27,7 +27,7 @@ impl WebGLUniformLocation {
}
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
id: i32,
program_id: WebGLProgramId)
-> Root<WebGLUniformLocation> {
diff --git a/components/script/dom/websocket.rs b/components/script/dom/websocket.rs
index df9c2e5ed34..4e86241f36a 100644
--- a/components/script/dom/websocket.rs
+++ b/components/script/dom/websocket.rs
@@ -20,6 +20,7 @@ use dom::blob::{Blob, BlobImpl};
use dom::closeevent::CloseEvent;
use dom::event::{Event, EventBubbles, EventCancelable};
use dom::eventtarget::EventTarget;
+use dom::globalscope::GlobalScope;
use dom::messageevent::MessageEvent;
use dom::urlhelper::UrlHelper;
use ipc_channel::ipc::{self, IpcReceiver, IpcSender};
@@ -190,7 +191,7 @@ impl WebSocket {
}
}
- fn new(global: GlobalRef, url: Url) -> Root<WebSocket> {
+ fn new(global: &GlobalScope, url: Url) -> Root<WebSocket> {
reflect_dom_object(box WebSocket::new_inherited(url),
global, WebSocketBinding::Wrap)
}
@@ -241,7 +242,7 @@ impl WebSocket {
let origin = UrlHelper::Origin(&global.get_url()).0;
// Step 7.
- let ws = WebSocket::new(global, resource_url.clone());
+ let ws = WebSocket::new(global.as_global_scope(), resource_url.clone());
let address = Trusted::new(ws.r());
let connect_data = WebSocketConnectData {
@@ -557,7 +558,7 @@ impl Runnable for CloseTask {
let clean_close = !self.failed;
let code = self.code.unwrap_or(close_code::NO_STATUS);
let reason = DOMString::from(self.reason.unwrap_or("".to_owned()));
- let close_event = CloseEvent::new(global.r(),
+ let close_event = CloseEvent::new(global.r().as_global_scope(),
atom!("close"),
EventBubbles::DoesNotBubble,
EventCancelable::NotCancelable,
@@ -599,7 +600,10 @@ impl Runnable for MessageReceivedTask {
MessageData::Binary(data) => {
match ws.binary_type.get() {
BinaryType::Blob => {
- let blob = Blob::new(global.r(), BlobImpl::new_from_bytes(data), "".to_owned());
+ let blob = Blob::new(
+ global.r().as_global_scope(),
+ BlobImpl::new_from_bytes(data),
+ "".to_owned());
blob.to_jsval(cx, message.handle_mut());
}
BinaryType::Arraybuffer => {
diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs
index 85c8f46fc63..0b764f6fa05 100644
--- a/components/script/dom/window.rs
+++ b/components/script/dom/window.rs
@@ -495,17 +495,17 @@ impl WindowMethods for Window {
// https://html.spec.whatwg.org/multipage/#dom-sessionstorage
fn SessionStorage(&self) -> Root<Storage> {
- self.session_storage.or_init(|| Storage::new(&GlobalRef::Window(self), StorageType::Session))
+ self.session_storage.or_init(|| Storage::new(self.upcast(), StorageType::Session))
}
// https://html.spec.whatwg.org/multipage/#dom-localstorage
fn LocalStorage(&self) -> Root<Storage> {
- self.local_storage.or_init(|| Storage::new(&GlobalRef::Window(self), StorageType::Local))
+ self.local_storage.or_init(|| Storage::new(self.upcast(), StorageType::Local))
}
// https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html#dfn-GlobalCrypto
fn Crypto(&self) -> Root<Crypto> {
- self.crypto.or_init(|| Crypto::new(GlobalRef::Window(self)))
+ self.crypto.or_init(|| Crypto::new(self.upcast()))
}
// https://html.spec.whatwg.org/multipage/#dom-frameelement
@@ -1708,7 +1708,7 @@ impl Window {
// Steps 3-12.
// FIXME(#13195): muted errors.
- let event = ErrorEvent::new(GlobalRef::Window(self),
+ let event = ErrorEvent::new(self.upcast(),
atom!("error"),
EventBubbles::DoesNotBubble,
EventCancelable::Cancelable,
diff --git a/components/script/dom/worker.rs b/components/script/dom/worker.rs
index fb6b170ab1d..9c43f1c148d 100644
--- a/components/script/dom/worker.rs
+++ b/components/script/dom/worker.rs
@@ -21,6 +21,7 @@ use dom::errorevent::ErrorEvent;
use dom::event::{Event, EventBubbles, EventCancelable};
use dom::eventdispatcher::EventStatus;
use dom::eventtarget::EventTarget;
+use dom::globalscope::GlobalScope;
use dom::messageevent::MessageEvent;
use dom::workerglobalscope::prepare_workerscope_init;
use ipc_channel::ipc;
@@ -61,7 +62,7 @@ impl Worker {
}
}
- pub fn new(global: GlobalRef,
+ pub fn new(global: &GlobalScope,
sender: Sender<(TrustedWorkerAddress, WorkerScriptMsg)>,
closing: Arc<AtomicBool>) -> Root<Worker> {
reflect_dom_object(box Worker::new_inherited(sender, closing),
@@ -80,7 +81,7 @@ impl Worker {
let (sender, receiver) = channel();
let closing = Arc::new(AtomicBool::new(false));
- let worker = Worker::new(global, sender.clone(), closing.clone());
+ let worker = Worker::new(global.as_global_scope(), sender.clone(), closing.clone());
let worker_ref = Trusted::new(worker.r());
let worker_load_origin = WorkerScriptLoadOrigin {
@@ -144,7 +145,7 @@ impl Worker {
#[allow(unsafe_code)]
fn dispatch_error(&self, error_info: ErrorInfo) {
let global = self.global();
- let event = ErrorEvent::new(global.r(),
+ let event = ErrorEvent::new(global.r().as_global_scope(),
atom!("error"),
EventBubbles::DoesNotBubble,
EventCancelable::Cancelable,
diff --git a/components/script/dom/workerglobalscope.rs b/components/script/dom/workerglobalscope.rs
index 95e8b425c25..83cef1d994f 100644
--- a/components/script/dom/workerglobalscope.rs
+++ b/components/script/dom/workerglobalscope.rs
@@ -343,7 +343,7 @@ impl WorkerGlobalScopeMethods for WorkerGlobalScope {
// https://html.spec.whatwg.org/multipage/#dfn-Crypto
fn Crypto(&self) -> Root<Crypto> {
- self.crypto.or_init(|| Crypto::new(GlobalRef::Worker(self)))
+ self.crypto.or_init(|| Crypto::new(self.upcast()))
}
// https://html.spec.whatwg.org/multipage/#dom-windowbase64-btoa
@@ -505,7 +505,7 @@ impl WorkerGlobalScope {
// Steps 3-12.
// FIXME(#13195): muted errors.
- let event = ErrorEvent::new(GlobalRef::Worker(self),
+ let event = ErrorEvent::new(self.upcast(),
atom!("error"),
EventBubbles::DoesNotBubble,
EventCancelable::Cancelable,
diff --git a/components/script/dom/workerlocation.rs b/components/script/dom/workerlocation.rs
index a037f7737a8..287a803a612 100644
--- a/components/script/dom/workerlocation.rs
+++ b/components/script/dom/workerlocation.rs
@@ -4,7 +4,6 @@
use dom::bindings::codegen::Bindings::WorkerLocationBinding;
use dom::bindings::codegen::Bindings::WorkerLocationBinding::WorkerLocationMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::bindings::str::{DOMString, USVString};
@@ -29,7 +28,7 @@ impl WorkerLocation {
pub fn new(global: &WorkerGlobalScope, url: Url) -> Root<WorkerLocation> {
reflect_dom_object(box WorkerLocation::new_inherited(url),
- GlobalRef::Worker(global),
+ global,
WorkerLocationBinding::Wrap)
}
}
diff --git a/components/script/dom/workernavigator.rs b/components/script/dom/workernavigator.rs
index 1114a91a169..f6cd521634d 100644
--- a/components/script/dom/workernavigator.rs
+++ b/components/script/dom/workernavigator.rs
@@ -4,7 +4,6 @@
use dom::bindings::codegen::Bindings::WorkerNavigatorBinding;
use dom::bindings::codegen::Bindings::WorkerNavigatorBinding::WorkerNavigatorMethods;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
use dom::bindings::str::DOMString;
@@ -26,7 +25,7 @@ impl WorkerNavigator {
pub fn new(global: &WorkerGlobalScope) -> Root<WorkerNavigator> {
reflect_dom_object(box WorkerNavigator::new_inherited(),
- GlobalRef::Worker(global),
+ global,
WorkerNavigatorBinding::Wrap)
}
}
diff --git a/components/script/dom/xmldocument.rs b/components/script/dom/xmldocument.rs
index 1a00f67b80c..6fb57ea52fd 100644
--- a/components/script/dom/xmldocument.rs
+++ b/components/script/dom/xmldocument.rs
@@ -6,7 +6,6 @@ use core::nonzero::NonZero;
use document_loader::DocumentLoader;
use dom::bindings::codegen::Bindings::DocumentBinding::DocumentMethods;
use dom::bindings::codegen::Bindings::XMLDocumentBinding::{self, XMLDocumentMethods};
-use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
@@ -66,7 +65,7 @@ impl XMLDocument {
last_modified,
source,
doc_loader),
- GlobalRef::Window(window),
+ window,
XMLDocumentBinding::Wrap);
{
let node = doc.upcast::<Node>();
diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs
index caebbddd09e..4c9397db566 100644
--- a/components/script/dom/xmlhttprequest.rs
+++ b/components/script/dom/xmlhttprequest.rs
@@ -167,7 +167,7 @@ impl XMLHttpRequest {
ready_state: Cell::new(XMLHttpRequestState::Unsent),
timeout: Cell::new(0u32),
with_credentials: Cell::new(false),
- upload: JS::from_ref(&*XMLHttpRequestUpload::new(global)),
+ upload: JS::from_ref(&*XMLHttpRequestUpload::new(global.as_global_scope())),
response_url: DOMRefCell::new(String::from("")),
status: Cell::new(0),
status_text: DOMRefCell::new(ByteString::new(vec!())),
@@ -198,7 +198,7 @@ impl XMLHttpRequest {
}
pub fn new(global: GlobalRef) -> Root<XMLHttpRequest> {
reflect_dom_object(box XMLHttpRequest::new_inherited(global),
- global,
+ global.as_global_scope(),
XMLHttpRequestBinding::Wrap)
}
@@ -860,7 +860,7 @@ impl XMLHttpRequest {
assert!(self.ready_state.get() != rs);
self.ready_state.set(rs);
let global = self.global();
- let event = Event::new(global.r(),
+ let event = Event::new(global.r().as_global_scope(),
atom!("readystatechange"),
EventBubbles::DoesNotBubble,
EventCancelable::Cancelable);
@@ -977,7 +977,7 @@ impl XMLHttpRequest {
}
let global = self.global();
let event = Event::new(
- global.r(),
+ global.r().as_global_scope(),
atom!("readystatechange"),
EventBubbles::DoesNotBubble,
EventCancelable::Cancelable);
@@ -1050,7 +1050,7 @@ impl XMLHttpRequest {
fn dispatch_progress_event(&self, upload: bool, type_: Atom, loaded: u64, total: Option<u64>) {
let global = self.global();
- let progressevent = ProgressEvent::new(global.r(),
+ let progressevent = ProgressEvent::new(global.r().as_global_scope(),
type_,
EventBubbles::DoesNotBubble,
EventCancelable::NotCancelable,
@@ -1118,7 +1118,7 @@ impl XMLHttpRequest {
// Step 3, 4
let bytes = self.response.borrow().to_vec();
- let blob = Blob::new(self.global().r(), BlobImpl::new_from_bytes(bytes), mime);
+ let blob = Blob::new(self.global().r().as_global_scope(), BlobImpl::new_from_bytes(bytes), mime);
self.response_blob.set(Some(blob.r()));
blob
}
diff --git a/components/script/dom/xmlhttprequestupload.rs b/components/script/dom/xmlhttprequestupload.rs
index 900548f2e05..6c53fe15eca 100644
--- a/components/script/dom/xmlhttprequestupload.rs
+++ b/components/script/dom/xmlhttprequestupload.rs
@@ -3,9 +3,9 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use dom::bindings::codegen::Bindings::XMLHttpRequestUploadBinding;
-use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
+use dom::globalscope::GlobalScope;
use dom::xmlhttprequesteventtarget::XMLHttpRequestEventTarget;
#[dom_struct]
@@ -19,7 +19,7 @@ impl XMLHttpRequestUpload {
eventtarget: XMLHttpRequestEventTarget::new_inherited(),
}
}
- pub fn new(global: GlobalRef) -> Root<XMLHttpRequestUpload> {
+ pub fn new(global: &GlobalScope) -> Root<XMLHttpRequestUpload> {
reflect_dom_object(box XMLHttpRequestUpload::new_inherited(),
global,
XMLHttpRequestUploadBinding::Wrap)
diff --git a/components/script/fetch.rs b/components/script/fetch.rs
index 634439c7c7d..75d6e3b0848 100644
--- a/components/script/fetch.rs
+++ b/components/script/fetch.rs
@@ -71,7 +71,7 @@ pub fn Fetch(global: GlobalRef, input: RequestOrUSVString, init: &RequestInit) -
// Step 1
let promise = Promise::new(global);
- let response = Response::new(global);
+ let response = Response::new(global.as_global_scope());
// Step 2
let request = match Request::Constructor(global, input, init) {