aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2014-10-03 18:45:27 -0600
committerbors-servo <metajack+bors@gmail.com>2014-10-03 18:45:27 -0600
commitd23e45fe5db54994f4f3569f8bda1ec5a6121610 (patch)
tree0b32ac01b2f09ee8bab9d2128c4b1f2e6c736fec
parenta6cd13c89054b605e1000bc3475153fbd2fde7bf (diff)
parent815a701455284a923f2d4ee80a3e36c2ff119b67 (diff)
downloadservo-d23e45fe5db54994f4f3569f8bda1ec5a6121610.tar.gz
servo-d23e45fe5db54994f4f3569f8bda1ec5a6121610.zip
auto merge of #3569 : andrewguertin/servo/mutnullablejs, r=Manishearth
https://github.com/servo/servo/issues/3564
-rw-r--r--components/script/dom/document.rs42
-rw-r--r--components/script/dom/htmlcanvaselement.rs9
-rw-r--r--components/script/dom/window.rs8
-rw-r--r--components/script/dom/workerglobalscope.rs22
4 files changed, 41 insertions, 40 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs
index 9ccea6cf84c..6a39a301b41 100644
--- a/components/script/dom/document.rs
+++ b/components/script/dom/document.rs
@@ -89,13 +89,13 @@ pub struct Document {
pub is_html_document: bool,
url: Untraceable<Url>,
quirks_mode: Untraceable<Cell<QuirksMode>>,
- images: Cell<Option<JS<HTMLCollection>>>,
- embeds: Cell<Option<JS<HTMLCollection>>>,
- links: Cell<Option<JS<HTMLCollection>>>,
- forms: Cell<Option<JS<HTMLCollection>>>,
- scripts: Cell<Option<JS<HTMLCollection>>>,
- anchors: Cell<Option<JS<HTMLCollection>>>,
- applets: Cell<Option<JS<HTMLCollection>>>,
+ images: MutNullableJS<HTMLCollection>,
+ embeds: MutNullableJS<HTMLCollection>,
+ links: MutNullableJS<HTMLCollection>,
+ forms: MutNullableJS<HTMLCollection>,
+ scripts: MutNullableJS<HTMLCollection>,
+ anchors: MutNullableJS<HTMLCollection>,
+ applets: MutNullableJS<HTMLCollection>,
}
impl DocumentDerived for EventTarget {
@@ -327,13 +327,13 @@ impl Document {
// http://dom.spec.whatwg.org/#concept-document-encoding
encoding_name: Traceable::new(RefCell::new("utf-8".to_string())),
is_html_document: is_html_document == HTMLDocument,
- images: Cell::new(None),
- embeds: Cell::new(None),
- links: Cell::new(None),
- forms: Cell::new(None),
- scripts: Cell::new(None),
- anchors: Cell::new(None),
- applets: Cell::new(None),
+ images: Default::default(),
+ embeds: Default::default(),
+ links: Default::default(),
+ forms: Default::default(),
+ scripts: Default::default(),
+ anchors: Default::default(),
+ applets: Default::default(),
}
}
@@ -789,7 +789,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> {
let filter = box ImagesFilter;
self.images.assign(Some(HTMLCollection::create(*window, root, filter)));
}
- Temporary::new(self.images.get().as_ref().unwrap().clone())
+ self.images.get().unwrap()
}
fn Embeds(self) -> Temporary<HTMLCollection> {
@@ -799,7 +799,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> {
let filter = box EmbedsFilter;
self.embeds.assign(Some(HTMLCollection::create(*window, root, filter)));
}
- Temporary::new(self.embeds.get().as_ref().unwrap().clone())
+ self.embeds.get().unwrap()
}
fn Plugins(self) -> Temporary<HTMLCollection> {
@@ -813,7 +813,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> {
let filter = box LinksFilter;
self.links.assign(Some(HTMLCollection::create(*window, root, filter)));
}
- Temporary::new(self.links.get().as_ref().unwrap().clone())
+ self.links.get().unwrap()
}
fn Forms(self) -> Temporary<HTMLCollection> {
@@ -823,7 +823,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> {
let filter = box FormsFilter;
self.forms.assign(Some(HTMLCollection::create(*window, root, filter)));
}
- Temporary::new(self.forms.get().as_ref().unwrap().clone())
+ self.forms.get().unwrap()
}
fn Scripts(self) -> Temporary<HTMLCollection> {
@@ -833,7 +833,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> {
let filter = box ScriptsFilter;
self.scripts.assign(Some(HTMLCollection::create(*window, root, filter)));
}
- Temporary::new(self.scripts.get().as_ref().unwrap().clone())
+ self.scripts.get().unwrap()
}
fn Anchors(self) -> Temporary<HTMLCollection> {
@@ -843,7 +843,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> {
let filter = box AnchorsFilter;
self.anchors.assign(Some(HTMLCollection::create(*window, root, filter)));
}
- Temporary::new(self.anchors.get().as_ref().unwrap().clone())
+ self.anchors.get().unwrap()
}
fn Applets(self) -> Temporary<HTMLCollection> {
@@ -854,7 +854,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> {
let filter = box AppletsFilter;
self.applets.assign(Some(HTMLCollection::create(*window, root, filter)));
}
- Temporary::new(self.applets.get().as_ref().unwrap().clone())
+ self.applets.get().unwrap()
}
fn Location(self) -> Temporary<Location> {
diff --git a/components/script/dom/htmlcanvaselement.rs b/components/script/dom/htmlcanvaselement.rs
index d0f0e37ff55..c2396700a68 100644
--- a/components/script/dom/htmlcanvaselement.rs
+++ b/components/script/dom/htmlcanvaselement.rs
@@ -7,7 +7,7 @@ use dom::bindings::codegen::Bindings::HTMLCanvasElementBinding::HTMLCanvasElemen
use dom::bindings::codegen::InheritTypes::HTMLCanvasElementDerived;
use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLElementCast};
use dom::bindings::global::Window;
-use dom::bindings::js::{JS, JSRef, Temporary, OptionalSettable};
+use dom::bindings::js::{MutNullableJS, JSRef, Temporary, OptionalSettable};
use dom::bindings::trace::Traceable;
use dom::bindings::utils::{Reflectable, Reflector};
use dom::canvasrenderingcontext2d::CanvasRenderingContext2D;
@@ -24,6 +24,7 @@ use string_cache::Atom;
use geom::size::Size2D;
use std::cell::Cell;
+use std::default::Default;
static DefaultWidth: u32 = 300;
static DefaultHeight: u32 = 150;
@@ -32,7 +33,7 @@ static DefaultHeight: u32 = 150;
#[must_root]
pub struct HTMLCanvasElement {
pub htmlelement: HTMLElement,
- context: Traceable<Cell<Option<JS<CanvasRenderingContext2D>>>>,
+ context: Traceable<MutNullableJS<CanvasRenderingContext2D>>,
width: Traceable<Cell<u32>>,
height: Traceable<Cell<u32>>,
}
@@ -47,7 +48,7 @@ impl HTMLCanvasElement {
fn new_inherited(localName: DOMString, document: JSRef<Document>) -> HTMLCanvasElement {
HTMLCanvasElement {
htmlelement: HTMLElement::new_inherited(HTMLCanvasElementTypeId, localName, document),
- context: Traceable::new(Cell::new(None)),
+ context: Traceable::new(Default::default()),
width: Traceable::new(Cell::new(DefaultWidth)),
height: Traceable::new(Cell::new(DefaultHeight)),
}
@@ -90,7 +91,7 @@ impl<'a> HTMLCanvasElementMethods for JSRef<'a, HTMLCanvasElement> {
let context = CanvasRenderingContext2D::new(&Window(*window), self, Size2D(w, h));
self.context.assign(Some(context));
}
- self.context.get().map(|context| Temporary::new(context))
+ self.context.get()
}
}
diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs
index f48fb5a2e43..dd01611bab7 100644
--- a/components/script/dom/window.rs
+++ b/components/script/dom/window.rs
@@ -8,7 +8,7 @@ use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
use dom::bindings::codegen::InheritTypes::EventTargetCast;
use dom::bindings::error::{Fallible, InvalidCharacter};
use dom::bindings::global;
-use dom::bindings::js::{MutNullableJS, JS, JSRef, Temporary, OptionalSettable};
+use dom::bindings::js::{MutNullableJS, JSRef, Temporary, OptionalSettable};
use dom::bindings::trace::{Traceable, Untraceable};
use dom::bindings::utils::{Reflectable, Reflector};
use dom::browsercontext::BrowserContext;
@@ -94,7 +94,7 @@ pub struct Window {
performance: MutNullableJS<Performance>,
pub navigationStart: u64,
pub navigationStartPrecise: f64,
- screen: Cell<Option<JS<Screen>>>,
+ screen: MutNullableJS<Screen>,
}
impl Window {
@@ -338,7 +338,7 @@ impl<'a> WindowMethods for JSRef<'a, Window> {
let screen = Screen::new(self);
self.screen.assign(Some(screen));
}
- Temporary::new(self.screen.get().as_ref().unwrap().clone())
+ self.screen.get().unwrap()
}
fn Debug(self, message: DOMString) {
@@ -542,7 +542,7 @@ impl Window {
performance: Default::default(),
navigationStart: time::get_time().sec as u64,
navigationStartPrecise: time::precise_time_s(),
- screen: Cell::new(None),
+ screen: Default::default(),
};
WindowBinding::Wrap(cx, win)
diff --git a/components/script/dom/workerglobalscope.rs b/components/script/dom/workerglobalscope.rs
index a77513f3b21..15751620172 100644
--- a/components/script/dom/workerglobalscope.rs
+++ b/components/script/dom/workerglobalscope.rs
@@ -6,7 +6,7 @@ use dom::bindings::codegen::Bindings::WorkerGlobalScopeBinding::WorkerGlobalScop
use dom::bindings::error::{ErrorResult, Fallible, Syntax, Network, FailureUnknown};
use dom::bindings::trace::Untraceable;
use dom::bindings::global;
-use dom::bindings::js::{JS, JSRef, Temporary, OptionalSettable};
+use dom::bindings::js::{MutNullableJS, JSRef, Temporary, OptionalSettable};
use dom::bindings::utils::{Reflectable, Reflector};
use dom::console::Console;
use dom::eventtarget::{EventTarget, WorkerGlobalScopeTypeId};
@@ -21,7 +21,7 @@ use servo_util::str::DOMString;
use js::jsapi::JSContext;
use js::rust::Cx;
-use std::cell::Cell;
+use std::default::Default;
use std::rc::Rc;
use url::{Url, UrlParser};
@@ -39,9 +39,9 @@ pub struct WorkerGlobalScope {
js_context: Untraceable<Rc<Cx>>,
resource_task: Untraceable<ResourceTask>,
script_chan: ScriptChan,
- location: Cell<Option<JS<WorkerLocation>>>,
- navigator: Cell<Option<JS<WorkerNavigator>>>,
- console: Cell<Option<JS<Console>>>,
+ location: MutNullableJS<WorkerLocation>,
+ navigator: MutNullableJS<WorkerNavigator>,
+ console: MutNullableJS<Console>,
}
impl WorkerGlobalScope {
@@ -56,9 +56,9 @@ impl WorkerGlobalScope {
js_context: Untraceable::new(cx),
resource_task: Untraceable::new(resource_task),
script_chan: script_chan,
- location: Cell::new(None),
- navigator: Cell::new(None),
- console: Cell::new(None),
+ location: Default::default(),
+ navigator: Default::default(),
+ console: Default::default(),
}
}
@@ -89,7 +89,7 @@ impl<'a> WorkerGlobalScopeMethods for JSRef<'a, WorkerGlobalScope> {
let location = WorkerLocation::new(self, self.worker_url.deref().clone());
self.location.assign(Some(location));
}
- Temporary::new(self.location.get().as_ref().unwrap().clone())
+ self.location.get().unwrap()
}
fn ImportScripts(self, url_strings: Vec<DOMString>) -> ErrorResult {
@@ -129,7 +129,7 @@ impl<'a> WorkerGlobalScopeMethods for JSRef<'a, WorkerGlobalScope> {
let navigator = WorkerNavigator::new(self);
self.navigator.assign(Some(navigator));
}
- Temporary::new(self.navigator.get().as_ref().unwrap().clone())
+ self.navigator.get().unwrap()
}
fn Console(self) -> Temporary<Console> {
@@ -137,7 +137,7 @@ impl<'a> WorkerGlobalScopeMethods for JSRef<'a, WorkerGlobalScope> {
let console = Console::new(&global::Worker(self));
self.console.assign(Some(console));
}
- Temporary::new(self.console.get().as_ref().unwrap().clone())
+ self.console.get().unwrap()
}
fn Btoa(self, btoa: DOMString) -> Fallible<DOMString> {