diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2016-09-07 04:17:36 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-07 04:17:36 -0500 |
commit | dd33be45485fefd148759c77462c484157026055 (patch) | |
tree | e8c3d032fd5cb0134d12565bbf6acf44dc5ae933 /components/script/dom | |
parent | bba3eefde86d7716c35b6dcb6f45c9d42fbe758f (diff) | |
parent | 61fcc72d3565e116dc484d702b1c17dcb5ed4a6f (diff) | |
download | servo-dd33be45485fefd148759c77462c484157026055.tar.gz servo-dd33be45485fefd148759c77462c484157026055.zip |
Auto merge of #13194 - servo:mutreflectable, r=Ms2ger
Extract mutability out of Reflectable trait.
<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/13194)
<!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/bindings/codegen/CodegenRust.py | 1 | ||||
-rw-r--r-- | components/script/dom/bindings/global.rs | 17 | ||||
-rw-r--r-- | components/script/dom/bindings/iterable.rs | 5 | ||||
-rw-r--r-- | components/script/dom/bindings/reflector.rs | 8 | ||||
-rw-r--r-- | components/script/dom/browsingcontext.rs | 2 |
5 files changed, 21 insertions, 12 deletions
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index cb7e796c627..71331dfe503 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -5452,6 +5452,7 @@ def generate_imports(config, cgthings, descriptors, callbacks=None, dictionaries 'dom::bindings::js::OptionalRootedReference', 'dom::bindings::js::Root', 'dom::bindings::js::RootedReference', + 'dom::bindings::reflector::MutReflectable', 'dom::bindings::reflector::Reflectable', 'dom::bindings::utils::DOMClass', 'dom::bindings::utils::DOMJSClass', diff --git a/components/script/dom/bindings/global.rs b/components/script/dom/bindings/global.rs index af4cd59a86f..54efb11250d 100644 --- a/components/script/dom/bindings/global.rs +++ b/components/script/dom/bindings/global.rs @@ -271,14 +271,6 @@ impl<'a> GlobalRef<'a> { } } - /// Returns the receiver's reflector. - pub fn reflector(&self) -> &Reflector { - match *self { - GlobalRef::Window(ref window) => window.reflector(), - GlobalRef::Worker(ref worker) => worker.reflector(), - } - } - /// Returns a wrapper for runnables to ensure they are cancelled if the global /// is being destroyed. pub fn get_runnable_wrapper(&self) -> RunnableWrapper { @@ -297,6 +289,15 @@ impl<'a> GlobalRef<'a> { } } +impl<'a> Reflectable for GlobalRef<'a> { + fn reflector(&self) -> &Reflector { + match *self { + GlobalRef::Window(ref window) => window.reflector(), + GlobalRef::Worker(ref worker) => worker.reflector(), + } + } +} + impl GlobalRoot { /// Obtain a safe reference to the global object that cannot outlive the /// lifetime of this root. diff --git a/components/script/dom/bindings/iterable.rs b/components/script/dom/bindings/iterable.rs index a3092ed73b6..84381b52655 100644 --- a/components/script/dom/bindings/iterable.rs +++ b/components/script/dom/bindings/iterable.rs @@ -12,7 +12,7 @@ use dom::bindings::codegen::Bindings::IterableIteratorBinding::IterableKeyOrValu use dom::bindings::error::Fallible; use dom::bindings::global::GlobalRef; use dom::bindings::js::{JS, Root}; -use dom::bindings::reflector::{Reflector, Reflectable, reflect_dom_object}; +use dom::bindings::reflector::{Reflector, Reflectable, MutReflectable, reflect_dom_object}; use dom::bindings::trace::JSTraceable; use js::conversions::ToJSValConvertible; use js::jsapi::{JSContext, JSObject, MutableHandleValue, MutableHandleObject, HandleValue}; @@ -63,6 +63,9 @@ impl<T: Reflectable + JSTraceable + Iterable> Reflectable for IterableIterator<T fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector } +} + +impl<T: Reflectable + JSTraceable + Iterable> MutReflectable for IterableIterator<T> { fn init_reflector(&mut self, obj: *mut JSObject) { self.reflector.set_jsobject(obj); } diff --git a/components/script/dom/bindings/reflector.rs b/components/script/dom/bindings/reflector.rs index 04466ea6926..d5280712a03 100644 --- a/components/script/dom/bindings/reflector.rs +++ b/components/script/dom/bindings/reflector.rs @@ -73,11 +73,15 @@ impl Reflector { pub trait Reflectable { /// Returns the receiver's reflector. fn reflector(&self) -> &Reflector; - /// Initializes the Reflector - fn init_reflector(&mut self, obj: *mut JSObject); /// Returns the global object of the realm that the Reflectable was created in. fn global(&self) -> GlobalRoot where Self: Sized { global_root_from_reflector(self) } } + +/// A trait to initialize the `Reflector` for a DOM object. +pub trait MutReflectable: Reflectable { + /// Initializes the Reflector + fn init_reflector(&mut self, obj: *mut JSObject); +} diff --git a/components/script/dom/browsingcontext.rs b/components/script/dom/browsingcontext.rs index 18fbe914cef..919b574c27a 100644 --- a/components/script/dom/browsingcontext.rs +++ b/components/script/dom/browsingcontext.rs @@ -7,7 +7,7 @@ use dom::bindings::codegen::Bindings::DocumentBinding::DocumentMethods; use dom::bindings::conversions::{ToJSValConvertible, root_from_handleobject}; use dom::bindings::js::{JS, Root, RootedReference}; use dom::bindings::proxyhandler::{fill_property_descriptor, get_property_descriptor}; -use dom::bindings::reflector::{Reflectable, Reflector}; +use dom::bindings::reflector::{Reflectable, MutReflectable, Reflector}; use dom::bindings::str::DOMString; use dom::bindings::trace::JSTraceable; use dom::bindings::utils::WindowProxyHandler; |