From 5b720879442ed4f05f0e2af25103e8e4e0a9ecef Mon Sep 17 00:00:00 2001 From: Tim Taubert Date: Sun, 12 Oct 2014 00:45:18 +0200 Subject: [PATCH 01/14] Add #[privatize] to allow enforcing private fields for struct definitions --- components/plugins/lib.rs | 1 + components/plugins/lints.rs | 25 ++++++++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/components/plugins/lib.rs b/components/plugins/lib.rs index 221de13d289..d4894963f8f 100644 --- a/components/plugins/lib.rs +++ b/components/plugins/lib.rs @@ -27,6 +27,7 @@ mod jstraceable; pub fn plugin_registrar(reg: &mut Registry) { reg.register_lint_pass(box lints::TransmutePass as LintPassObject); reg.register_lint_pass(box lints::UnrootedPass as LintPassObject); + reg.register_lint_pass(box lints::PrivatizePass as LintPassObject); reg.register_syntax_extension(intern("jstraceable"), Decorator(box jstraceable::expand_jstraceable)) } diff --git a/components/plugins/lints.rs b/components/plugins/lints.rs index 605240d74e9..01d6a81a7a8 100644 --- a/components/plugins/lints.rs +++ b/components/plugins/lints.rs @@ -2,7 +2,8 @@ * 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 syntax::{ast, codemap, visit}; +use syntax::{ast, ast_util, codemap, visit}; +use syntax::ast::Public; use syntax::attr::AttrMetaMethods; use rustc::lint::{Context, LintPass, LintArray}; use rustc::middle::ty::expr_ty; @@ -14,9 +15,12 @@ declare_lint!(TRANSMUTE_TYPE_LINT, Allow, "Warn and report types being transmuted") declare_lint!(UNROOTED_MUST_ROOT, Deny, "Warn and report usage of unrooted jsmanaged objects") +declare_lint!(PRIVATIZE, Deny, + "Allows to enforce private fields for struct definitions") pub struct TransmutePass; pub struct UnrootedPass; +pub struct PrivatizePass; impl LintPass for TransmutePass { fn get_lints(&self) -> LintArray { @@ -146,3 +150,22 @@ impl LintPass for UnrootedPass { } } +impl LintPass for PrivatizePass { + fn get_lints(&self) -> LintArray { + lint_array!(PRIVATIZE) + } + + fn check_struct_def(&mut self, cx: &Context, def: &ast::StructDef, _i: ast::Ident, _gen: &ast::Generics, id: ast::NodeId) { + if ty::has_attr(cx.tcx, ast_util::local_def(id), "privatize") { + for field in def.fields.iter() { + match field.node { + ast::StructField_ { kind: ast::NamedField(ident, visibility), .. } if visibility == Public => { + cx.span_lint(PRIVATIZE, field.span, + format!("Field {} is public where only private fields are allowed", ident.name).as_slice()); + } + _ => {} + } + } + } + } +} From acd98a73a4ea1aad96705c49ab960d9c87a38a28 Mon Sep 17 00:00:00 2001 From: Tim Taubert Date: Sun, 12 Oct 2014 19:06:56 +0200 Subject: [PATCH 02/14] Simple privatizations --- components/script/dom/blob.rs | 1 + components/script/dom/browsercontext.rs | 2 ++ .../script/dom/canvasrenderingcontext2d.rs | 1 + components/script/dom/console.rs | 3 ++- components/script/dom/customevent.rs | 1 + .../script/dom/dedicatedworkerglobalscope.rs | 1 + components/script/dom/documentfragment.rs | 3 ++- components/script/dom/domexception.rs | 5 ++-- components/script/dom/domimplementation.rs | 1 + components/script/dom/domparser.rs | 1 + components/script/dom/domrect.rs | 1 + components/script/dom/domrectlist.rs | 1 + components/script/dom/domtokenlist.rs | 1 + components/script/dom/formdata.rs | 1 + components/script/dom/htmlcollection.rs | 1 + components/script/dom/location.rs | 1 + components/script/dom/messageevent.rs | 1 + components/script/dom/mouseevent.rs | 23 ++++++++++--------- components/script/dom/namednodemap.rs | 1 + components/script/dom/navigator.rs | 3 ++- components/script/dom/nodeiterator.rs | 3 ++- components/script/dom/nodelist.rs | 1 + components/script/dom/performance.rs | 1 + components/script/dom/performancetiming.rs | 1 + components/script/dom/progressevent.rs | 1 + components/script/dom/range.rs | 1 + components/script/dom/screen.rs | 1 + components/script/dom/testbinding.rs | 1 + components/script/dom/treewalker.rs | 11 +++++---- components/script/dom/urlsearchparams.rs | 1 + components/script/dom/validitystate.rs | 1 + components/script/dom/worker.rs | 1 + components/script/dom/workerlocation.rs | 1 + components/script/dom/workernavigator.rs | 1 + components/script/dom/xmlhttprequest.rs | 1 + components/script/dom/xmlhttprequestupload.rs | 1 + 36 files changed, 59 insertions(+), 22 deletions(-) diff --git a/components/script/dom/blob.rs b/components/script/dom/blob.rs index 71f83dffd96..5849b75ff10 100644 --- a/components/script/dom/blob.rs +++ b/components/script/dom/blob.rs @@ -17,6 +17,7 @@ pub enum BlobType { #[jstraceable] #[must_root] +#[privatize] pub struct Blob { reflector_: Reflector, type_: BlobType diff --git a/components/script/dom/browsercontext.rs b/components/script/dom/browsercontext.rs index 094dc1a5e09..78b940aa240 100644 --- a/components/script/dom/browsercontext.rs +++ b/components/script/dom/browsercontext.rs @@ -15,6 +15,7 @@ use std::ptr; #[allow(raw_pointer_deriving)] #[jstraceable] +#[privatize] pub struct BrowserContext { history: Vec, active_index: uint, @@ -66,6 +67,7 @@ impl BrowserContext { #[jstraceable] #[must_root] +#[privatize] pub struct SessionHistoryEntry { document: JS, children: Vec diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs index eb80fa498da..c9a19c3301c 100644 --- a/components/script/dom/canvasrenderingcontext2d.rs +++ b/components/script/dom/canvasrenderingcontext2d.rs @@ -17,6 +17,7 @@ use canvas::canvas_render_task::{CanvasMsg, CanvasRenderTask, ClearRect, Close, #[jstraceable] #[must_root] +#[privatize] pub struct CanvasRenderingContext2D { reflector_: Reflector, global: GlobalField, diff --git a/components/script/dom/console.rs b/components/script/dom/console.rs index cefb8cfaa87..a62d2ad4047 100644 --- a/components/script/dom/console.rs +++ b/components/script/dom/console.rs @@ -11,8 +11,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct Console { - pub reflector_: Reflector + reflector_: Reflector } impl Console { diff --git a/components/script/dom/customevent.rs b/components/script/dom/customevent.rs index c25c328afaa..1366e6568a8 100644 --- a/components/script/dom/customevent.rs +++ b/components/script/dom/customevent.rs @@ -19,6 +19,7 @@ use std::cell::Cell; #[jstraceable] #[must_root] +#[privatize] pub struct CustomEvent { event: Event, detail: Cell, diff --git a/components/script/dom/dedicatedworkerglobalscope.rs b/components/script/dom/dedicatedworkerglobalscope.rs index cd873c39930..2d98b4819a5 100644 --- a/components/script/dom/dedicatedworkerglobalscope.rs +++ b/components/script/dom/dedicatedworkerglobalscope.rs @@ -37,6 +37,7 @@ use url::Url; #[jstraceable] #[must_root] +#[privatize] pub struct DedicatedWorkerGlobalScope { workerglobalscope: WorkerGlobalScope, receiver: Receiver, diff --git a/components/script/dom/documentfragment.rs b/components/script/dom/documentfragment.rs index 40a837125a6..ebbb3d0fe0d 100644 --- a/components/script/dom/documentfragment.rs +++ b/components/script/dom/documentfragment.rs @@ -20,8 +20,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct DocumentFragment { - pub node: Node, + node: Node, } impl DocumentFragmentDerived for EventTarget { diff --git a/components/script/dom/domexception.rs b/components/script/dom/domexception.rs index 924494c0455..73dc4c149fe 100644 --- a/components/script/dom/domexception.rs +++ b/components/script/dom/domexception.rs @@ -62,9 +62,10 @@ impl DOMErrorName { #[jstraceable] #[must_root] +#[privatize] pub struct DOMException { - pub code: DOMErrorName, - pub reflector_: Reflector + code: DOMErrorName, + reflector_: Reflector } impl DOMException { diff --git a/components/script/dom/domimplementation.rs b/components/script/dom/domimplementation.rs index 063153f369e..39c39454e60 100644 --- a/components/script/dom/domimplementation.rs +++ b/components/script/dom/domimplementation.rs @@ -24,6 +24,7 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct DOMImplementation { document: JS, reflector_: Reflector, diff --git a/components/script/dom/domparser.rs b/components/script/dom/domparser.rs index 315a3851bb1..7b6bbae3e7c 100644 --- a/components/script/dom/domparser.rs +++ b/components/script/dom/domparser.rs @@ -16,6 +16,7 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct DOMParser { window: JS, //XXXjdm Document instead? reflector_: Reflector diff --git a/components/script/dom/domrect.rs b/components/script/dom/domrect.rs index 3c79479edab..39e9c4cbb0e 100644 --- a/components/script/dom/domrect.rs +++ b/components/script/dom/domrect.rs @@ -12,6 +12,7 @@ use servo_util::geometry::Au; #[jstraceable] #[must_root] +#[privatize] pub struct DOMRect { reflector_: Reflector, top: f32, diff --git a/components/script/dom/domrectlist.rs b/components/script/dom/domrectlist.rs index 8be9ab9cbf6..88ec6d5e148 100644 --- a/components/script/dom/domrectlist.rs +++ b/components/script/dom/domrectlist.rs @@ -12,6 +12,7 @@ use dom::window::Window; #[jstraceable] #[must_root] +#[privatize] pub struct DOMRectList { reflector_: Reflector, rects: Vec>, diff --git a/components/script/dom/domtokenlist.rs b/components/script/dom/domtokenlist.rs index 71fb76bdb44..59d931dea31 100644 --- a/components/script/dom/domtokenlist.rs +++ b/components/script/dom/domtokenlist.rs @@ -17,6 +17,7 @@ use string_cache::Atom; #[jstraceable] #[must_root] +#[privatize] pub struct DOMTokenList { reflector_: Reflector, element: JS, diff --git a/components/script/dom/formdata.rs b/components/script/dom/formdata.rs index b0730355bcd..1e2e1ca7049 100644 --- a/components/script/dom/formdata.rs +++ b/components/script/dom/formdata.rs @@ -27,6 +27,7 @@ pub enum FormDatum { #[jstraceable] #[must_root] +#[privatize] pub struct FormData { data: RefCell>>, reflector_: Reflector, diff --git a/components/script/dom/htmlcollection.rs b/components/script/dom/htmlcollection.rs index 00c19ad8f92..9e20f4a6572 100644 --- a/components/script/dom/htmlcollection.rs +++ b/components/script/dom/htmlcollection.rs @@ -31,6 +31,7 @@ pub enum CollectionTypeId { #[jstraceable] #[must_root] +#[privatize] pub struct HTMLCollection { collection: CollectionTypeId, reflector_: Reflector, diff --git a/components/script/dom/location.rs b/components/script/dom/location.rs index baa57fba1c6..c55da71ad68 100644 --- a/components/script/dom/location.rs +++ b/components/script/dom/location.rs @@ -17,6 +17,7 @@ use std::rc::Rc; #[jstraceable] #[must_root] +#[privatize] pub struct Location { reflector_: Reflector, //XXXjdm cycle: window->Location->window page: Rc, diff --git a/components/script/dom/messageevent.rs b/components/script/dom/messageevent.rs index 97b37dedddf..da9d5fe13c6 100644 --- a/components/script/dom/messageevent.rs +++ b/components/script/dom/messageevent.rs @@ -20,6 +20,7 @@ use js::jsval::JSVal; #[jstraceable] #[must_root] +#[privatize] pub struct MessageEvent { event: Event, data: JSVal, diff --git a/components/script/dom/mouseevent.rs b/components/script/dom/mouseevent.rs index 9560af42f53..1eb18d4281f 100644 --- a/components/script/dom/mouseevent.rs +++ b/components/script/dom/mouseevent.rs @@ -21,18 +21,19 @@ use std::default::Default; #[jstraceable] #[must_root] +#[privatize] pub struct MouseEvent { - pub mouseevent: UIEvent, - pub screen_x: Cell, - pub screen_y: Cell, - pub client_x: Cell, - pub client_y: Cell, - pub ctrl_key: Cell, - pub shift_key: Cell, - pub alt_key: Cell, - pub meta_key: Cell, - pub button: Cell, - pub related_target: MutNullableJS + mouseevent: UIEvent, + screen_x: Cell, + screen_y: Cell, + client_x: Cell, + client_y: Cell, + ctrl_key: Cell, + shift_key: Cell, + alt_key: Cell, + meta_key: Cell, + button: Cell, + related_target: MutNullableJS } impl MouseEventDerived for Event { diff --git a/components/script/dom/namednodemap.rs b/components/script/dom/namednodemap.rs index 3762ec2ad6b..c190a39a37f 100644 --- a/components/script/dom/namednodemap.rs +++ b/components/script/dom/namednodemap.rs @@ -13,6 +13,7 @@ use dom::window::Window; #[jstraceable] #[must_root] +#[privatize] pub struct NamedNodeMap { reflector_: Reflector, owner: JS, diff --git a/components/script/dom/navigator.rs b/components/script/dom/navigator.rs index 9810c67a877..847259b052b 100644 --- a/components/script/dom/navigator.rs +++ b/components/script/dom/navigator.rs @@ -13,8 +13,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct Navigator { - pub reflector_: Reflector //XXXjdm cycle: window->navigator->window + reflector_: Reflector //XXXjdm cycle: window->navigator->window } impl Navigator { diff --git a/components/script/dom/nodeiterator.rs b/components/script/dom/nodeiterator.rs index 2e4fe3f442b..27656da9433 100644 --- a/components/script/dom/nodeiterator.rs +++ b/components/script/dom/nodeiterator.rs @@ -10,8 +10,9 @@ use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object}; #[jstraceable] #[must_root] +#[privatize] pub struct NodeIterator { - pub reflector_: Reflector + reflector_: Reflector } impl NodeIterator { diff --git a/components/script/dom/nodelist.rs b/components/script/dom/nodelist.rs index 598ebfa932b..f2da3a0c4ba 100644 --- a/components/script/dom/nodelist.rs +++ b/components/script/dom/nodelist.rs @@ -19,6 +19,7 @@ pub enum NodeListType { #[jstraceable] #[must_root] +#[privatize] pub struct NodeList { list_type: NodeListType, reflector_: Reflector, diff --git a/components/script/dom/performance.rs b/components/script/dom/performance.rs index f1c5896b2a7..ae6fb7061cc 100644 --- a/components/script/dom/performance.rs +++ b/components/script/dom/performance.rs @@ -15,6 +15,7 @@ pub type DOMHighResTimeStamp = f64; #[jstraceable] #[must_root] +#[privatize] pub struct Performance { reflector_: Reflector, timing: JS, diff --git a/components/script/dom/performancetiming.rs b/components/script/dom/performancetiming.rs index 955187f3dfb..30c2a57462f 100644 --- a/components/script/dom/performancetiming.rs +++ b/components/script/dom/performancetiming.rs @@ -11,6 +11,7 @@ use dom::window::Window; #[jstraceable] #[must_root] +#[privatize] pub struct PerformanceTiming { reflector_: Reflector, navigationStart: u64, diff --git a/components/script/dom/progressevent.rs b/components/script/dom/progressevent.rs index 2869a035b25..a8af71ab655 100644 --- a/components/script/dom/progressevent.rs +++ b/components/script/dom/progressevent.rs @@ -15,6 +15,7 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct ProgressEvent { event: Event, length_computable: bool, diff --git a/components/script/dom/range.rs b/components/script/dom/range.rs index 56197342d0b..0fe0c7f1751 100644 --- a/components/script/dom/range.rs +++ b/components/script/dom/range.rs @@ -13,6 +13,7 @@ use dom::document::Document; #[jstraceable] #[must_root] +#[privatize] pub struct Range { reflector_: Reflector } diff --git a/components/script/dom/screen.rs b/components/script/dom/screen.rs index 7fafbd4bc6a..ad4250ee1c6 100644 --- a/components/script/dom/screen.rs +++ b/components/script/dom/screen.rs @@ -11,6 +11,7 @@ use dom::window::Window; #[jstraceable] #[must_root] +#[privatize] pub struct Screen { reflector_: Reflector, } diff --git a/components/script/dom/testbinding.rs b/components/script/dom/testbinding.rs index 4937dfbd9a8..a409c70d1bf 100644 --- a/components/script/dom/testbinding.rs +++ b/components/script/dom/testbinding.rs @@ -20,6 +20,7 @@ use js::jsval::{JSVal, NullValue}; #[jstraceable] #[must_root] +#[privatize] pub struct TestBinding { reflector: Reflector, global: GlobalField, diff --git a/components/script/dom/treewalker.rs b/components/script/dom/treewalker.rs index 7bdb4403b1a..bc12f165595 100644 --- a/components/script/dom/treewalker.rs +++ b/components/script/dom/treewalker.rs @@ -23,12 +23,13 @@ use std::cell::Cell; // http://dom.spec.whatwg.org/#interface-treewalker #[jstraceable] #[must_root] +#[privatize] pub struct TreeWalker { - pub reflector_: Reflector, - pub root_node: JS, - pub current_node: Cell>, - pub what_to_show: u32, - pub filter: Filter + reflector_: Reflector, + root_node: JS, + current_node: Cell>, + what_to_show: u32, + filter: Filter } impl TreeWalker { diff --git a/components/script/dom/urlsearchparams.rs b/components/script/dom/urlsearchparams.rs index be95361fdbb..8174fafcc98 100644 --- a/components/script/dom/urlsearchparams.rs +++ b/components/script/dom/urlsearchparams.rs @@ -22,6 +22,7 @@ use std::ascii::OwnedStrAsciiExt; #[jstraceable] #[must_root] +#[privatize] pub struct URLSearchParams { data: RefCell>>, reflector_: Reflector, diff --git a/components/script/dom/validitystate.rs b/components/script/dom/validitystate.rs index 99bd9258416..ef76ac433e1 100644 --- a/components/script/dom/validitystate.rs +++ b/components/script/dom/validitystate.rs @@ -10,6 +10,7 @@ use dom::window::Window; #[jstraceable] #[must_root] +#[privatize] pub struct ValidityState { reflector_: Reflector, state: u8, diff --git a/components/script/dom/worker.rs b/components/script/dom/worker.rs index 4941a1c6a35..f7feec1929f 100644 --- a/components/script/dom/worker.rs +++ b/components/script/dom/worker.rs @@ -33,6 +33,7 @@ untraceable!(TrustedWorkerAddress) #[jstraceable] #[must_root] +#[privatize] pub struct Worker { eventtarget: EventTarget, refcount: Cell, diff --git a/components/script/dom/workerlocation.rs b/components/script/dom/workerlocation.rs index 1eaa40829da..145ba8c8f93 100644 --- a/components/script/dom/workerlocation.rs +++ b/components/script/dom/workerlocation.rs @@ -16,6 +16,7 @@ use url::Url; #[jstraceable] #[must_root] +#[privatize] pub struct WorkerLocation { reflector_: Reflector, url: Url, diff --git a/components/script/dom/workernavigator.rs b/components/script/dom/workernavigator.rs index 2265b23c6bc..85925e43586 100644 --- a/components/script/dom/workernavigator.rs +++ b/components/script/dom/workernavigator.rs @@ -13,6 +13,7 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct WorkerNavigator { reflector_: Reflector, } diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs index b51a4859253..37afac6e1b6 100644 --- a/components/script/dom/xmlhttprequest.rs +++ b/components/script/dom/xmlhttprequest.rs @@ -104,6 +104,7 @@ enum SyncOrAsync<'a> { #[jstraceable] #[must_root] +#[privatize] pub struct XMLHttpRequest { eventtarget: XMLHttpRequestEventTarget, ready_state: Cell, diff --git a/components/script/dom/xmlhttprequestupload.rs b/components/script/dom/xmlhttprequestupload.rs index 2059a69126d..cc686696534 100644 --- a/components/script/dom/xmlhttprequestupload.rs +++ b/components/script/dom/xmlhttprequestupload.rs @@ -13,6 +13,7 @@ use dom::xmlhttprequesteventtarget::XMLHttpRequestEventTarget; #[jstraceable] #[must_root] +#[privatize] pub struct XMLHttpRequestUpload { eventtarget: XMLHttpRequestEventTarget } From 9a52bb8310eb9d479a5211b0048bb682da0ac123 Mon Sep 17 00:00:00 2001 From: Tim Taubert Date: Sun, 12 Oct 2014 18:53:31 +0200 Subject: [PATCH 03/14] Privatize InheritTypes --- components/layout/wrapper.rs | 8 ++--- .../dom/bindings/codegen/CodegenRust.py | 2 +- components/script/dom/characterdata.rs | 22 ++++++++++++-- components/script/dom/document.rs | 2 +- components/script/dom/element.rs | 5 ++++ components/script/dom/htmlanchorelement.rs | 3 +- components/script/dom/htmlappletelement.rs | 3 +- components/script/dom/htmlareaelement.rs | 3 +- components/script/dom/htmlaudioelement.rs | 3 +- components/script/dom/htmlbaseelement.rs | 3 +- components/script/dom/htmlbodyelement.rs | 3 +- components/script/dom/htmlbrelement.rs | 3 +- components/script/dom/htmlbuttonelement.rs | 3 +- components/script/dom/htmlcanvaselement.rs | 3 +- components/script/dom/htmldataelement.rs | 3 +- components/script/dom/htmldatalistelement.rs | 3 +- components/script/dom/htmldirectoryelement.rs | 3 +- components/script/dom/htmldivelement.rs | 3 +- components/script/dom/htmldlistelement.rs | 3 +- components/script/dom/htmlelement.rs | 8 ++++- components/script/dom/htmlembedelement.rs | 3 +- components/script/dom/htmlfieldsetelement.rs | 3 +- components/script/dom/htmlfontelement.rs | 3 +- components/script/dom/htmlformelement.rs | 3 +- components/script/dom/htmlframeelement.rs | 3 +- components/script/dom/htmlframesetelement.rs | 3 +- components/script/dom/htmlheadelement.rs | 3 +- components/script/dom/htmlheadingelement.rs | 5 ++-- components/script/dom/htmlhrelement.rs | 3 +- components/script/dom/htmlhtmlelement.rs | 3 +- components/script/dom/htmliframeelement.rs | 29 +++++++++++++++---- components/script/dom/htmlimageelement.rs | 3 +- components/script/dom/htmlinputelement.rs | 3 +- components/script/dom/htmllabelelement.rs | 3 +- components/script/dom/htmllegendelement.rs | 3 +- components/script/dom/htmllielement.rs | 3 +- components/script/dom/htmllinkelement.rs | 3 +- components/script/dom/htmlmapelement.rs | 3 +- components/script/dom/htmlmediaelement.rs | 8 ++++- components/script/dom/htmlmetaelement.rs | 3 +- components/script/dom/htmlmeterelement.rs | 3 +- components/script/dom/htmlmodelement.rs | 3 +- components/script/dom/htmlobjectelement.rs | 3 +- components/script/dom/htmlolistelement.rs | 3 +- components/script/dom/htmloptgroupelement.rs | 3 +- components/script/dom/htmloptionelement.rs | 3 +- components/script/dom/htmloutputelement.rs | 3 +- components/script/dom/htmlparagraphelement.rs | 3 +- components/script/dom/htmlparamelement.rs | 3 +- components/script/dom/htmlpreelement.rs | 3 +- components/script/dom/htmlprogresselement.rs | 3 +- components/script/dom/htmlquoteelement.rs | 3 +- components/script/dom/htmlscriptelement.rs | 3 +- components/script/dom/htmlselectelement.rs | 3 +- components/script/dom/htmlserializer.rs | 12 ++++---- components/script/dom/htmlsourceelement.rs | 3 +- components/script/dom/htmlspanelement.rs | 3 +- components/script/dom/htmlstyleelement.rs | 3 +- .../script/dom/htmltablecaptionelement.rs | 3 +- components/script/dom/htmltablecellelement.rs | 8 ++++- components/script/dom/htmltablecolelement.rs | 3 +- .../script/dom/htmltabledatacellelement.rs | 3 +- components/script/dom/htmltableelement.rs | 3 +- .../script/dom/htmltableheadercellelement.rs | 3 +- components/script/dom/htmltablerowelement.rs | 3 +- .../script/dom/htmltablesectionelement.rs | 3 +- components/script/dom/htmltemplateelement.rs | 3 +- components/script/dom/htmltextareaelement.rs | 3 +- components/script/dom/htmltimeelement.rs | 3 +- components/script/dom/htmltitleelement.rs | 5 ++-- components/script/dom/htmltrackelement.rs | 3 +- components/script/dom/htmlulistelement.rs | 3 +- components/script/dom/htmlunknownelement.rs | 3 +- components/script/dom/htmlvideoelement.rs | 3 +- components/script/dom/node.rs | 19 +++++++----- components/script/dom/text.rs | 8 ++++- components/script/dom/uievent.rs | 8 ++++- components/script/dom/workerglobalscope.rs | 8 ++++- .../script/dom/xmlhttprequesteventtarget.rs | 8 ++++- components/script/html/hubbub_html_parser.rs | 2 +- 80 files changed, 252 insertions(+), 101 deletions(-) diff --git a/components/layout/wrapper.rs b/components/layout/wrapper.rs index 7cde321f058..f7b14cff10c 100644 --- a/components/layout/wrapper.rs +++ b/components/layout/wrapper.rs @@ -116,8 +116,8 @@ pub trait TLayoutNode { fail!("not an iframe element!") } let iframe_element: JS = self.get_jsmanaged().transmute_copy(); - let size = (*iframe_element.unsafe_get()).size.get().unwrap(); - (size.pipeline_id, size.subpage_id) + let size = (*iframe_element.unsafe_get()).size().unwrap(); + (*size.pipeline_id(), *size.subpage_id()) } } @@ -189,7 +189,7 @@ impl<'ln> TLayoutNode for LayoutNode<'ln> { unsafe { if self.get().is_text() { let text: JS = self.get_jsmanaged().transmute_copy(); - (*text.unsafe_get()).characterdata.data.borrow().clone() + (*text.unsafe_get()).characterdata().data().clone() } else if self.get().is_htmlinputelement() { let input: JS = self.get_jsmanaged().transmute_copy(); input.get_value_for_layout() @@ -765,7 +765,7 @@ impl<'ln> ThreadSafeLayoutNode<'ln> { Some(TextNodeTypeId) => { unsafe { let text: JS = self.get_jsmanaged().transmute_copy(); - if !is_whitespace((*text.unsafe_get()).characterdata.data.borrow().as_slice()) { + if !is_whitespace((*text.unsafe_get()).characterdata().data().as_slice()) { return false } diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index 9f80ca0dd5c..7cf193baf0c 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -5452,7 +5452,7 @@ class GlobalGenRoots(): protoDescriptor = config.getDescriptor(protoName) delegate = string.Template('''impl ${selfName} for ${baseName} { fn ${fname}(&self) -> bool { - self.${parentName}.${fname}() + self.${parentName}().${fname}() } } ''').substitute({'fname': 'is_' + name.lower(), diff --git a/components/script/dom/characterdata.rs b/components/script/dom/characterdata.rs index 277295daef9..c9ad75f9a22 100644 --- a/components/script/dom/characterdata.rs +++ b/components/script/dom/characterdata.rs @@ -14,13 +14,14 @@ use dom::eventtarget::{EventTarget, NodeTargetTypeId}; use dom::node::{CommentNodeTypeId, Node, NodeTypeId, TextNodeTypeId, ProcessingInstructionNodeTypeId, NodeHelpers}; use servo_util::str::DOMString; -use std::cell::RefCell; +use std::cell::{Ref, RefCell}; #[jstraceable] #[must_root] +#[privatize] pub struct CharacterData { - pub node: Node, - pub data: RefCell, + node: Node, + data: RefCell, } impl CharacterDataDerived for EventTarget { @@ -41,6 +42,21 @@ impl CharacterData { data: RefCell::new(data), } } + + #[inline] + pub fn node<'a>(&'a self) -> &'a Node { + &self.node + } + + #[inline] + pub fn data(&self) -> Ref { + self.data.borrow() + } + + #[inline] + pub fn set_data(&self, data: DOMString) { + *self.data.borrow_mut() = data; + } } impl<'a> CharacterDataMethods for JSRef<'a, CharacterData> { diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 99dde0e9f0c..7e698a9ec6a 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -641,7 +641,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> { for child in title_elem.children() { if child.is_text() { let text: JSRef = TextCast::to_ref(child).unwrap(); - title.push_str(text.characterdata.data.borrow().as_slice()); + title.push_str(text.characterdata().data().as_slice()); } } }); diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index ef5ec630670..82b54229201 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -166,6 +166,11 @@ impl Element { Node::reflect_node(box Element::new_inherited(ElementTypeId_, local_name, namespace, prefix, document), document, ElementBinding::Wrap) } + + #[inline] + pub fn node<'a>(&'a self) -> &'a Node { + &self.node + } } pub trait RawLayoutElementHelpers { diff --git a/components/script/dom/htmlanchorelement.rs b/components/script/dom/htmlanchorelement.rs index 74ab2976456..f82027a93fa 100644 --- a/components/script/dom/htmlanchorelement.rs +++ b/components/script/dom/htmlanchorelement.rs @@ -23,8 +23,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLAnchorElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLAnchorElementDerived for EventTarget { diff --git a/components/script/dom/htmlappletelement.rs b/components/script/dom/htmlappletelement.rs index b40bc50bc67..5572b126634 100644 --- a/components/script/dom/htmlappletelement.rs +++ b/components/script/dom/htmlappletelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLAppletElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLAppletElementDerived for EventTarget { diff --git a/components/script/dom/htmlareaelement.rs b/components/script/dom/htmlareaelement.rs index 57c3fe883d4..49463f86b3f 100644 --- a/components/script/dom/htmlareaelement.rs +++ b/components/script/dom/htmlareaelement.rs @@ -16,8 +16,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLAreaElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLAreaElementDerived for EventTarget { diff --git a/components/script/dom/htmlaudioelement.rs b/components/script/dom/htmlaudioelement.rs index 0d419c40338..b281c6e3db7 100644 --- a/components/script/dom/htmlaudioelement.rs +++ b/components/script/dom/htmlaudioelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLAudioElement { - pub htmlmediaelement: HTMLMediaElement + htmlmediaelement: HTMLMediaElement } impl HTMLAudioElementDerived for EventTarget { diff --git a/components/script/dom/htmlbaseelement.rs b/components/script/dom/htmlbaseelement.rs index 1a9d0e833bd..6691c27e29c 100644 --- a/components/script/dom/htmlbaseelement.rs +++ b/components/script/dom/htmlbaseelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLBaseElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLBaseElementDerived for EventTarget { diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index a73e6ef40b6..a537ca52ba3 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -22,8 +22,9 @@ use string_cache::Atom; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLBodyElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLBodyElementDerived for EventTarget { diff --git a/components/script/dom/htmlbrelement.rs b/components/script/dom/htmlbrelement.rs index 4585c433ae2..e6cb0596bd5 100644 --- a/components/script/dom/htmlbrelement.rs +++ b/components/script/dom/htmlbrelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLBRElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, } impl HTMLBRElementDerived for EventTarget { diff --git a/components/script/dom/htmlbuttonelement.rs b/components/script/dom/htmlbuttonelement.rs index f12035d148e..e0ae3afa30a 100644 --- a/components/script/dom/htmlbuttonelement.rs +++ b/components/script/dom/htmlbuttonelement.rs @@ -22,8 +22,9 @@ use string_cache::Atom; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLButtonElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLButtonElementDerived for EventTarget { diff --git a/components/script/dom/htmlcanvaselement.rs b/components/script/dom/htmlcanvaselement.rs index 3f7d11531bc..d77657ed2df 100644 --- a/components/script/dom/htmlcanvaselement.rs +++ b/components/script/dom/htmlcanvaselement.rs @@ -30,8 +30,9 @@ static DefaultHeight: u32 = 150; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLCanvasElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, context: MutNullableJS, width: Cell, height: Cell, diff --git a/components/script/dom/htmldataelement.rs b/components/script/dom/htmldataelement.rs index aeafde6d06e..bae4916393b 100644 --- a/components/script/dom/htmldataelement.rs +++ b/components/script/dom/htmldataelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLDataElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLDataElementDerived for EventTarget { diff --git a/components/script/dom/htmldatalistelement.rs b/components/script/dom/htmldatalistelement.rs index 9c57a7176ff..a61299b560b 100644 --- a/components/script/dom/htmldatalistelement.rs +++ b/components/script/dom/htmldatalistelement.rs @@ -18,8 +18,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLDataListElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLDataListElementDerived for EventTarget { diff --git a/components/script/dom/htmldirectoryelement.rs b/components/script/dom/htmldirectoryelement.rs index b55bd539781..72553bf2a5e 100644 --- a/components/script/dom/htmldirectoryelement.rs +++ b/components/script/dom/htmldirectoryelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLDirectoryElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLDirectoryElementDerived for EventTarget { diff --git a/components/script/dom/htmldivelement.rs b/components/script/dom/htmldivelement.rs index c164beec7d0..cbbcd90c222 100644 --- a/components/script/dom/htmldivelement.rs +++ b/components/script/dom/htmldivelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLDivElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLDivElementDerived for EventTarget { diff --git a/components/script/dom/htmldlistelement.rs b/components/script/dom/htmldlistelement.rs index d107a277faf..983721ac429 100644 --- a/components/script/dom/htmldlistelement.rs +++ b/components/script/dom/htmldlistelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLDListElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLDListElementDerived for EventTarget { diff --git a/components/script/dom/htmlelement.rs b/components/script/dom/htmlelement.rs index 65f6fb33c36..cc920a50c42 100644 --- a/components/script/dom/htmlelement.rs +++ b/components/script/dom/htmlelement.rs @@ -22,8 +22,9 @@ use string_cache::Atom; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLElement { - pub element: Element + element: Element } impl HTMLElementDerived for EventTarget { @@ -48,6 +49,11 @@ impl HTMLElement { let element = HTMLElement::new_inherited(HTMLElementTypeId, localName, prefix, document); Node::reflect_node(box element, document, HTMLElementBinding::Wrap) } + + #[inline] + pub fn element<'a>(&'a self) -> &'a Element { + &self.element + } } trait PrivateHTMLElementHelpers { diff --git a/components/script/dom/htmlembedelement.rs b/components/script/dom/htmlembedelement.rs index 587a0d375f3..1860a3027f2 100644 --- a/components/script/dom/htmlembedelement.rs +++ b/components/script/dom/htmlembedelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLEmbedElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLEmbedElementDerived for EventTarget { diff --git a/components/script/dom/htmlfieldsetelement.rs b/components/script/dom/htmlfieldsetelement.rs index db043564710..6e59a2456e1 100644 --- a/components/script/dom/htmlfieldsetelement.rs +++ b/components/script/dom/htmlfieldsetelement.rs @@ -23,8 +23,9 @@ use string_cache::Atom; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLFieldSetElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLFieldSetElementDerived for EventTarget { diff --git a/components/script/dom/htmlfontelement.rs b/components/script/dom/htmlfontelement.rs index 0feede649a4..bd4cf31b33c 100644 --- a/components/script/dom/htmlfontelement.rs +++ b/components/script/dom/htmlfontelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLFontElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLFontElementDerived for EventTarget { diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs index 03bd593cb64..55a8ecf0190 100644 --- a/components/script/dom/htmlformelement.rs +++ b/components/script/dom/htmlformelement.rs @@ -31,8 +31,9 @@ use url::form_urlencoded::serialize; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLFormElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, } impl HTMLFormElementDerived for EventTarget { diff --git a/components/script/dom/htmlframeelement.rs b/components/script/dom/htmlframeelement.rs index 62febac5b7f..0f517ef7615 100644 --- a/components/script/dom/htmlframeelement.rs +++ b/components/script/dom/htmlframeelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLFrameElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLFrameElementDerived for EventTarget { diff --git a/components/script/dom/htmlframesetelement.rs b/components/script/dom/htmlframesetelement.rs index a2599a734d6..70ac2eb58e7 100644 --- a/components/script/dom/htmlframesetelement.rs +++ b/components/script/dom/htmlframesetelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLFrameSetElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLFrameSetElementDerived for EventTarget { diff --git a/components/script/dom/htmlheadelement.rs b/components/script/dom/htmlheadelement.rs index c972400c0d6..b1031def2c6 100644 --- a/components/script/dom/htmlheadelement.rs +++ b/components/script/dom/htmlheadelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLHeadElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLHeadElementDerived for EventTarget { diff --git a/components/script/dom/htmlheadingelement.rs b/components/script/dom/htmlheadingelement.rs index ace784a96a9..51df3db00c3 100644 --- a/components/script/dom/htmlheadingelement.rs +++ b/components/script/dom/htmlheadingelement.rs @@ -25,9 +25,10 @@ pub enum HeadingLevel { #[jstraceable] #[must_root] +#[privatize] pub struct HTMLHeadingElement { - pub htmlelement: HTMLElement, - pub level: HeadingLevel, + htmlelement: HTMLElement, + level: HeadingLevel, } impl HTMLHeadingElementDerived for EventTarget { diff --git a/components/script/dom/htmlhrelement.rs b/components/script/dom/htmlhrelement.rs index 8167c5854f7..e132835f499 100644 --- a/components/script/dom/htmlhrelement.rs +++ b/components/script/dom/htmlhrelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLHRElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, } impl HTMLHRElementDerived for EventTarget { diff --git a/components/script/dom/htmlhtmlelement.rs b/components/script/dom/htmlhtmlelement.rs index 279eb740709..bacc8d39650 100644 --- a/components/script/dom/htmlhtmlelement.rs +++ b/components/script/dom/htmlhtmlelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLHtmlElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLHtmlElementDerived for EventTarget { diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs index 94353173333..68ca275682f 100644 --- a/components/script/dom/htmliframeelement.rs +++ b/components/script/dom/htmliframeelement.rs @@ -41,10 +41,11 @@ enum SandboxAllowance { #[jstraceable] #[must_root] +#[privatize] pub struct HTMLIFrameElement { - pub htmlelement: HTMLElement, - pub size: Cell>, - pub sandbox: Cell>, + htmlelement: HTMLElement, + size: Cell>, + sandbox: Cell>, } impl HTMLIFrameElementDerived for EventTarget { @@ -54,9 +55,22 @@ impl HTMLIFrameElementDerived for EventTarget { } #[jstraceable] +#[privatize] pub struct IFrameSize { - pub pipeline_id: PipelineId, - pub subpage_id: SubpageId, + pipeline_id: PipelineId, + subpage_id: SubpageId, +} + +impl IFrameSize { + #[inline] + pub fn pipeline_id<'a>(&'a self) -> &'a PipelineId { + &self.pipeline_id + } + + #[inline] + pub fn subpage_id<'a>(&'a self) -> &'a SubpageId { + &self.subpage_id + } } pub trait HTMLIFrameElementHelpers { @@ -126,6 +140,11 @@ impl HTMLIFrameElement { let element = HTMLIFrameElement::new_inherited(localName, prefix, document); Node::reflect_node(box element, document, HTMLIFrameElementBinding::Wrap) } + + #[inline] + pub fn size(&self) -> Option { + self.size.get() + } } impl<'a> HTMLIFrameElementMethods for JSRef<'a, HTMLIFrameElement> { diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs index 299cb4923ca..5d7ffeb3c22 100644 --- a/components/script/dom/htmlimageelement.rs +++ b/components/script/dom/htmlimageelement.rs @@ -26,8 +26,9 @@ use std::cell::RefCell; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLImageElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, image: RefCell>, } diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs index ab9818d99f0..1e95e718d49 100644 --- a/components/script/dom/htmlinputelement.rs +++ b/components/script/dom/htmlinputelement.rs @@ -45,8 +45,9 @@ enum InputType { #[jstraceable] #[must_root] +#[privatize] pub struct HTMLInputElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, input_type: Cell, checked: Cell, uncommitted_value: RefCell>, diff --git a/components/script/dom/htmllabelelement.rs b/components/script/dom/htmllabelelement.rs index 7ff84e0075a..2b4b9aa2da9 100644 --- a/components/script/dom/htmllabelelement.rs +++ b/components/script/dom/htmllabelelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLLabelElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, } impl HTMLLabelElementDerived for EventTarget { diff --git a/components/script/dom/htmllegendelement.rs b/components/script/dom/htmllegendelement.rs index 86bf81ca7ec..f5e53167934 100644 --- a/components/script/dom/htmllegendelement.rs +++ b/components/script/dom/htmllegendelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLLegendElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, } impl HTMLLegendElementDerived for EventTarget { diff --git a/components/script/dom/htmllielement.rs b/components/script/dom/htmllielement.rs index 948430d3eda..6300d028235 100644 --- a/components/script/dom/htmllielement.rs +++ b/components/script/dom/htmllielement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLLIElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, } impl HTMLLIElementDerived for EventTarget { diff --git a/components/script/dom/htmllinkelement.rs b/components/script/dom/htmllinkelement.rs index 41810b51f26..eaaa72d86f3 100644 --- a/components/script/dom/htmllinkelement.rs +++ b/components/script/dom/htmllinkelement.rs @@ -23,8 +23,9 @@ use string_cache::Atom; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLLinkElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, } impl HTMLLinkElementDerived for EventTarget { diff --git a/components/script/dom/htmlmapelement.rs b/components/script/dom/htmlmapelement.rs index 585102c2af9..99a2593801a 100644 --- a/components/script/dom/htmlmapelement.rs +++ b/components/script/dom/htmlmapelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLMapElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLMapElementDerived for EventTarget { diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs index ef841c31a35..4141d7df79c 100644 --- a/components/script/dom/htmlmediaelement.rs +++ b/components/script/dom/htmlmediaelement.rs @@ -14,8 +14,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLMediaElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, } impl HTMLMediaElementDerived for EventTarget { @@ -34,6 +35,11 @@ impl HTMLMediaElement { htmlelement: HTMLElement::new_inherited(type_id, tag_name, prefix, document) } } + + #[inline] + pub fn htmlelement<'a>(&'a self) -> &'a HTMLElement { + &self.htmlelement + } } impl Reflectable for HTMLMediaElement { diff --git a/components/script/dom/htmlmetaelement.rs b/components/script/dom/htmlmetaelement.rs index 34873293440..7f01d7c0ef4 100644 --- a/components/script/dom/htmlmetaelement.rs +++ b/components/script/dom/htmlmetaelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLMetaElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, } impl HTMLMetaElementDerived for EventTarget { diff --git a/components/script/dom/htmlmeterelement.rs b/components/script/dom/htmlmeterelement.rs index 1648cde9751..045d6fb513c 100644 --- a/components/script/dom/htmlmeterelement.rs +++ b/components/script/dom/htmlmeterelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLMeterElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLMeterElementDerived for EventTarget { diff --git a/components/script/dom/htmlmodelement.rs b/components/script/dom/htmlmodelement.rs index 35ebb61e6ad..a71ee89c168 100644 --- a/components/script/dom/htmlmodelement.rs +++ b/components/script/dom/htmlmodelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLModElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLModElementDerived for EventTarget { diff --git a/components/script/dom/htmlobjectelement.rs b/components/script/dom/htmlobjectelement.rs index 1d39c3a07f5..bc61e468045 100644 --- a/components/script/dom/htmlobjectelement.rs +++ b/components/script/dom/htmlobjectelement.rs @@ -27,8 +27,9 @@ use url::Url; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLObjectElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, } impl HTMLObjectElementDerived for EventTarget { diff --git a/components/script/dom/htmlolistelement.rs b/components/script/dom/htmlolistelement.rs index ae36ce0d628..58f73fed5d6 100644 --- a/components/script/dom/htmlolistelement.rs +++ b/components/script/dom/htmlolistelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLOListElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, } impl HTMLOListElementDerived for EventTarget { diff --git a/components/script/dom/htmloptgroupelement.rs b/components/script/dom/htmloptgroupelement.rs index 9e0cade682d..e94ea81f9b4 100644 --- a/components/script/dom/htmloptgroupelement.rs +++ b/components/script/dom/htmloptgroupelement.rs @@ -20,8 +20,9 @@ use string_cache::Atom; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLOptGroupElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLOptGroupElementDerived for EventTarget { diff --git a/components/script/dom/htmloptionelement.rs b/components/script/dom/htmloptionelement.rs index ecd8b2d498b..8c1c5b0989e 100644 --- a/components/script/dom/htmloptionelement.rs +++ b/components/script/dom/htmloptionelement.rs @@ -24,8 +24,9 @@ use string_cache::Atom; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLOptionElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLOptionElementDerived for EventTarget { diff --git a/components/script/dom/htmloutputelement.rs b/components/script/dom/htmloutputelement.rs index 1442980de26..ec5622c59ac 100644 --- a/components/script/dom/htmloutputelement.rs +++ b/components/script/dom/htmloutputelement.rs @@ -17,8 +17,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLOutputElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLOutputElementDerived for EventTarget { diff --git a/components/script/dom/htmlparagraphelement.rs b/components/script/dom/htmlparagraphelement.rs index 6b91ba18afc..4a0976c2ff1 100644 --- a/components/script/dom/htmlparagraphelement.rs +++ b/components/script/dom/htmlparagraphelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLParagraphElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLParagraphElementDerived for EventTarget { diff --git a/components/script/dom/htmlparamelement.rs b/components/script/dom/htmlparamelement.rs index 2b664425e85..f729242b879 100644 --- a/components/script/dom/htmlparamelement.rs +++ b/components/script/dom/htmlparamelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLParamElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLParamElementDerived for EventTarget { diff --git a/components/script/dom/htmlpreelement.rs b/components/script/dom/htmlpreelement.rs index 9ec13769e78..22bd185804c 100644 --- a/components/script/dom/htmlpreelement.rs +++ b/components/script/dom/htmlpreelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLPreElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, } impl HTMLPreElementDerived for EventTarget { diff --git a/components/script/dom/htmlprogresselement.rs b/components/script/dom/htmlprogresselement.rs index c9506716562..879e86cb6fa 100644 --- a/components/script/dom/htmlprogresselement.rs +++ b/components/script/dom/htmlprogresselement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLProgressElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, } impl HTMLProgressElementDerived for EventTarget { diff --git a/components/script/dom/htmlquoteelement.rs b/components/script/dom/htmlquoteelement.rs index 532554254c2..ed5b8f818ce 100644 --- a/components/script/dom/htmlquoteelement.rs +++ b/components/script/dom/htmlquoteelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLQuoteElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, } impl HTMLQuoteElementDerived for EventTarget { diff --git a/components/script/dom/htmlscriptelement.rs b/components/script/dom/htmlscriptelement.rs index 3c200b9f324..0168bc8ad98 100644 --- a/components/script/dom/htmlscriptelement.rs +++ b/components/script/dom/htmlscriptelement.rs @@ -20,8 +20,9 @@ use servo_util::str::{DOMString, HTML_SPACE_CHARACTERS, StaticStringVec}; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLScriptElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, } impl HTMLScriptElementDerived for EventTarget { diff --git a/components/script/dom/htmlselectelement.rs b/components/script/dom/htmlselectelement.rs index 8c86318c38c..01c9e1c2348 100644 --- a/components/script/dom/htmlselectelement.rs +++ b/components/script/dom/htmlselectelement.rs @@ -23,8 +23,9 @@ use string_cache::Atom; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLSelectElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLSelectElementDerived for EventTarget { diff --git a/components/script/dom/htmlserializer.rs b/components/script/dom/htmlserializer.rs index f8b57996375..1dd648a6514 100644 --- a/components/script/dom/htmlserializer.rs +++ b/components/script/dom/htmlserializer.rs @@ -69,7 +69,7 @@ pub fn serialize(iterator: &mut NodeIterator) -> String { fn serialize_comment(comment: JSRef, html: &mut String) { html.push_str(""); } @@ -82,11 +82,11 @@ fn serialize_text(text: JSRef, html: &mut String) { "style" | "script" | "xmp" | "iframe" | "noembed" | "noframes" | "plaintext" | "noscript" if elem.namespace == ns!(HTML) - => html.push_str(text.characterdata.data.borrow().as_slice()), - _ => escape(text.characterdata.data.borrow().as_slice(), false, html) + => html.push_str(text.characterdata().data().as_slice()), + _ => escape(text.characterdata().data().as_slice(), false, html) } } - _ => escape(text.characterdata.data.borrow().as_slice(), false, html) + _ => escape(text.characterdata().data().as_slice(), false, html) } } @@ -95,7 +95,7 @@ fn serialize_processing_instruction(processing_instruction: JSRef"); } @@ -120,7 +120,7 @@ fn serialize_elem(elem: JSRef, open_elements: &mut Vec, html: & match node.first_child().map(|child| child.root()) { Some(ref child) if child.is_text() => { let text: JSRef = CharacterDataCast::to_ref(**child).unwrap(); - if text.data.borrow().len() > 0 && text.data.borrow().as_slice().char_at(0) == '\n' { + if text.data().len() > 0 && text.data().as_slice().char_at(0) == '\n' { html.push_char('\x0A'); } }, diff --git a/components/script/dom/htmlsourceelement.rs b/components/script/dom/htmlsourceelement.rs index 07d971c0dff..587262ebf3f 100644 --- a/components/script/dom/htmlsourceelement.rs +++ b/components/script/dom/htmlsourceelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLSourceElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLSourceElementDerived for EventTarget { diff --git a/components/script/dom/htmlspanelement.rs b/components/script/dom/htmlspanelement.rs index a3a55d5b00a..2dea84ed3c6 100644 --- a/components/script/dom/htmlspanelement.rs +++ b/components/script/dom/htmlspanelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLSpanElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLSpanElementDerived for EventTarget { diff --git a/components/script/dom/htmlstyleelement.rs b/components/script/dom/htmlstyleelement.rs index b0c190b7aeb..cf0a19243b4 100644 --- a/components/script/dom/htmlstyleelement.rs +++ b/components/script/dom/htmlstyleelement.rs @@ -19,8 +19,9 @@ use style::Stylesheet; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLStyleElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, } impl HTMLStyleElementDerived for EventTarget { diff --git a/components/script/dom/htmltablecaptionelement.rs b/components/script/dom/htmltablecaptionelement.rs index 68a0feab854..01f7d3a5731 100644 --- a/components/script/dom/htmltablecaptionelement.rs +++ b/components/script/dom/htmltablecaptionelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLTableCaptionElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLTableCaptionElementDerived for EventTarget { diff --git a/components/script/dom/htmltablecellelement.rs b/components/script/dom/htmltablecellelement.rs index f4fc2002fa9..97d85976614 100644 --- a/components/script/dom/htmltablecellelement.rs +++ b/components/script/dom/htmltablecellelement.rs @@ -14,8 +14,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLTableCellElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, } impl HTMLTableCellElementDerived for EventTarget { @@ -34,6 +35,11 @@ impl HTMLTableCellElement { htmlelement: HTMLElement::new_inherited(type_id, tag_name, prefix, document) } } + + #[inline] + pub fn htmlelement<'a>(&'a self) -> &'a HTMLElement { + &self.htmlelement + } } impl Reflectable for HTMLTableCellElement { diff --git a/components/script/dom/htmltablecolelement.rs b/components/script/dom/htmltablecolelement.rs index 88bc8b7beb5..9954bc1b09b 100644 --- a/components/script/dom/htmltablecolelement.rs +++ b/components/script/dom/htmltablecolelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLTableColElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, } impl HTMLTableColElementDerived for EventTarget { diff --git a/components/script/dom/htmltabledatacellelement.rs b/components/script/dom/htmltabledatacellelement.rs index 83569b1e08c..f4024581a49 100644 --- a/components/script/dom/htmltabledatacellelement.rs +++ b/components/script/dom/htmltabledatacellelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLTableDataCellElement { - pub htmltablecellelement: HTMLTableCellElement, + htmltablecellelement: HTMLTableCellElement, } impl HTMLTableDataCellElementDerived for EventTarget { diff --git a/components/script/dom/htmltableelement.rs b/components/script/dom/htmltableelement.rs index 1d9b4eff9d0..8faa3c573ad 100644 --- a/components/script/dom/htmltableelement.rs +++ b/components/script/dom/htmltableelement.rs @@ -19,8 +19,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLTableElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, } impl HTMLTableElementDerived for EventTarget { diff --git a/components/script/dom/htmltableheadercellelement.rs b/components/script/dom/htmltableheadercellelement.rs index 056c7b9d789..65db1e2c500 100644 --- a/components/script/dom/htmltableheadercellelement.rs +++ b/components/script/dom/htmltableheadercellelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLTableHeaderCellElement { - pub htmltablecellelement: HTMLTableCellElement, + htmltablecellelement: HTMLTableCellElement, } impl HTMLTableHeaderCellElementDerived for EventTarget { diff --git a/components/script/dom/htmltablerowelement.rs b/components/script/dom/htmltablerowelement.rs index 51fb63bd7e8..3552147fd96 100644 --- a/components/script/dom/htmltablerowelement.rs +++ b/components/script/dom/htmltablerowelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLTableRowElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, } impl HTMLTableRowElementDerived for EventTarget { diff --git a/components/script/dom/htmltablesectionelement.rs b/components/script/dom/htmltablesectionelement.rs index 7b3eb02ebc1..a4d9f3ad91b 100644 --- a/components/script/dom/htmltablesectionelement.rs +++ b/components/script/dom/htmltablesectionelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLTableSectionElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, } impl HTMLTableSectionElementDerived for EventTarget { diff --git a/components/script/dom/htmltemplateelement.rs b/components/script/dom/htmltemplateelement.rs index 523b8b8bae0..dcb4812c5dc 100644 --- a/components/script/dom/htmltemplateelement.rs +++ b/components/script/dom/htmltemplateelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLTemplateElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, } impl HTMLTemplateElementDerived for EventTarget { diff --git a/components/script/dom/htmltextareaelement.rs b/components/script/dom/htmltextareaelement.rs index d109a26c524..19a59a899e4 100644 --- a/components/script/dom/htmltextareaelement.rs +++ b/components/script/dom/htmltextareaelement.rs @@ -20,8 +20,9 @@ use string_cache::Atom; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLTextAreaElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, } impl HTMLTextAreaElementDerived for EventTarget { diff --git a/components/script/dom/htmltimeelement.rs b/components/script/dom/htmltimeelement.rs index 5d71321b88b..be8dafbcfef 100644 --- a/components/script/dom/htmltimeelement.rs +++ b/components/script/dom/htmltimeelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLTimeElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLTimeElementDerived for EventTarget { diff --git a/components/script/dom/htmltitleelement.rs b/components/script/dom/htmltitleelement.rs index 1004d1c7473..22b3a731002 100644 --- a/components/script/dom/htmltitleelement.rs +++ b/components/script/dom/htmltitleelement.rs @@ -18,8 +18,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLTitleElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, } impl HTMLTitleElementDerived for EventTarget { @@ -50,7 +51,7 @@ impl<'a> HTMLTitleElementMethods for JSRef<'a, HTMLTitleElement> { for child in node.children() { let text: Option> = TextCast::to_ref(child); match text { - Some(text) => content.push_str(text.characterdata.data.borrow().as_slice()), + Some(text) => content.push_str(text.characterdata().data().as_slice()), None => (), } } diff --git a/components/script/dom/htmltrackelement.rs b/components/script/dom/htmltrackelement.rs index a1c5c428d74..d73007310a6 100644 --- a/components/script/dom/htmltrackelement.rs +++ b/components/script/dom/htmltrackelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLTrackElement { - pub htmlelement: HTMLElement, + htmlelement: HTMLElement, } impl HTMLTrackElementDerived for EventTarget { diff --git a/components/script/dom/htmlulistelement.rs b/components/script/dom/htmlulistelement.rs index ffeb8affa11..b23b979c05c 100644 --- a/components/script/dom/htmlulistelement.rs +++ b/components/script/dom/htmlulistelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLUListElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLUListElementDerived for EventTarget { diff --git a/components/script/dom/htmlunknownelement.rs b/components/script/dom/htmlunknownelement.rs index f39329c8e1f..15329bd453f 100644 --- a/components/script/dom/htmlunknownelement.rs +++ b/components/script/dom/htmlunknownelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLUnknownElement { - pub htmlelement: HTMLElement + htmlelement: HTMLElement } impl HTMLUnknownElementDerived for EventTarget { diff --git a/components/script/dom/htmlvideoelement.rs b/components/script/dom/htmlvideoelement.rs index ecbabaa906b..c7626fc1987 100644 --- a/components/script/dom/htmlvideoelement.rs +++ b/components/script/dom/htmlvideoelement.rs @@ -15,8 +15,9 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct HTMLVideoElement { - pub htmlmediaelement: HTMLMediaElement + htmlmediaelement: HTMLMediaElement } impl HTMLVideoElementDerived for EventTarget { diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 9ef523ba9e9..98f39bf4888 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -1144,6 +1144,11 @@ impl Node { } } + #[inline] + pub fn eventtarget<'a>(&'a self) -> &'a EventTarget { + &self.eventtarget + } + // http://dom.spec.whatwg.org/#concept-node-adopt pub fn adopt(node: JSRef, document: JSRef) { // Step 1. @@ -1464,7 +1469,7 @@ impl Node { }, CommentNodeTypeId => { let comment: JSRef = CommentCast::to_ref(node).unwrap(); - let comment = Comment::new(comment.characterdata.data.borrow().clone(), *document); + let comment = Comment::new(comment.characterdata.data().clone(), *document); NodeCast::from_temporary(comment) }, DocumentNodeTypeId => { @@ -1486,13 +1491,13 @@ impl Node { }, TextNodeTypeId => { let text: JSRef = TextCast::to_ref(node).unwrap(); - let text = Text::new(text.characterdata.data.borrow().clone(), *document); + let text = Text::new(text.characterdata().data().clone(), *document); NodeCast::from_temporary(text) }, ProcessingInstructionNodeTypeId => { let pi: JSRef = ProcessingInstructionCast::to_ref(node).unwrap(); let pi = ProcessingInstruction::new(pi.target.clone(), - pi.characterdata.data.borrow().clone(), *document); + pi.characterdata.data().clone(), *document); NodeCast::from_temporary(pi) }, }.root(); @@ -1569,7 +1574,7 @@ impl Node { for node in iterator { let text: Option> = TextCast::to_ref(node); match text { - Some(text) => content.push_str(text.characterdata.data.borrow().as_slice()), + Some(text) => content.push_str(text.characterdata().data().as_slice()), None => (), } } @@ -1759,7 +1764,7 @@ impl<'a> NodeMethods for JSRef<'a, Node> { self.wait_until_safe_to_modify_dom(); let characterdata: JSRef = CharacterDataCast::to_ref(self).unwrap(); - *characterdata.data.borrow_mut() = value; + characterdata.set_data(value); // Notify the document that the content of this node is different let document = self.owner_doc().root(); @@ -1970,12 +1975,12 @@ impl<'a> NodeMethods for JSRef<'a, Node> { let pi: JSRef = ProcessingInstructionCast::to_ref(node).unwrap(); let other_pi: JSRef = ProcessingInstructionCast::to_ref(other).unwrap(); (pi.target == other_pi.target) && - (*pi.characterdata.data.borrow() == *other_pi.characterdata.data.borrow()) + (*pi.characterdata.data() == *other_pi.characterdata.data()) } fn is_equal_characterdata(node: JSRef, other: JSRef) -> bool { let characterdata: JSRef = CharacterDataCast::to_ref(node).unwrap(); let other_characterdata: JSRef = CharacterDataCast::to_ref(other).unwrap(); - *characterdata.data.borrow() == *other_characterdata.data.borrow() + *characterdata.data() == *other_characterdata.data() } fn is_equal_element_attrs(node: JSRef, other: JSRef) -> bool { let element: JSRef = ElementCast::to_ref(node).unwrap(); diff --git a/components/script/dom/text.rs b/components/script/dom/text.rs index b073f8ec298..7e251fd0b99 100644 --- a/components/script/dom/text.rs +++ b/components/script/dom/text.rs @@ -18,8 +18,9 @@ use servo_util::str::DOMString; /// An HTML text node. #[jstraceable] #[must_root] +#[privatize] pub struct Text { - pub characterdata: CharacterData, + characterdata: CharacterData, } impl TextDerived for EventTarget { @@ -44,6 +45,11 @@ impl Text { let document = global.as_window().Document().root(); Ok(Text::new(text, *document)) } + + #[inline] + pub fn characterdata<'a>(&'a self) -> &'a CharacterData { + &self.characterdata + } } impl Reflectable for Text { diff --git a/components/script/dom/uievent.rs b/components/script/dom/uievent.rs index 18fe2dc3585..126ae4d6432 100644 --- a/components/script/dom/uievent.rs +++ b/components/script/dom/uievent.rs @@ -21,8 +21,9 @@ use std::default::Default; #[jstraceable] #[must_root] +#[privatize] pub struct UIEvent { - pub event: Event, + event: Event, view: MutNullableJS, detail: Cell } @@ -67,6 +68,11 @@ impl UIEvent { init.view.root_ref(), init.detail); Ok(event) } + + #[inline] + pub fn event<'a>(&'a self) -> &'a Event { + &self.event + } } impl<'a> UIEventMethods for JSRef<'a, UIEvent> { diff --git a/components/script/dom/workerglobalscope.rs b/components/script/dom/workerglobalscope.rs index 355fb3f2cc3..a545cf05fbe 100644 --- a/components/script/dom/workerglobalscope.rs +++ b/components/script/dom/workerglobalscope.rs @@ -32,8 +32,9 @@ pub enum WorkerGlobalScopeId { #[jstraceable] #[must_root] +#[privatize] pub struct WorkerGlobalScope { - pub eventtarget: EventTarget, + eventtarget: EventTarget, worker_url: Url, js_context: Rc, resource_task: ResourceTask, @@ -61,6 +62,11 @@ impl WorkerGlobalScope { } } + #[inline] + pub fn eventtarget<'a>(&'a self) -> &'a EventTarget { + &self.eventtarget + } + pub fn get_cx(&self) -> *mut JSContext { self.js_context.ptr } diff --git a/components/script/dom/xmlhttprequesteventtarget.rs b/components/script/dom/xmlhttprequesteventtarget.rs index 9345c676a89..1b0954daf32 100644 --- a/components/script/dom/xmlhttprequesteventtarget.rs +++ b/components/script/dom/xmlhttprequesteventtarget.rs @@ -13,8 +13,9 @@ use dom::xmlhttprequest::XMLHttpRequestId; #[jstraceable] #[must_root] +#[privatize] pub struct XMLHttpRequestEventTarget { - pub eventtarget: EventTarget, + eventtarget: EventTarget, } impl XMLHttpRequestEventTarget { @@ -23,6 +24,11 @@ impl XMLHttpRequestEventTarget { eventtarget: EventTarget::new_inherited(XMLHttpRequestTargetTypeId(type_id)) } } + + #[inline] + pub fn eventtarget<'a>(&'a self) -> &'a EventTarget { + &self.eventtarget + } } impl XMLHttpRequestEventTargetDerived for EventTarget { fn is_xmlhttprequesteventtarget(&self) -> bool { diff --git a/components/script/html/hubbub_html_parser.rs b/components/script/html/hubbub_html_parser.rs index 4b943a4409a..27f37984517 100644 --- a/components/script/html/hubbub_html_parser.rs +++ b/components/script/html/hubbub_html_parser.rs @@ -503,7 +503,7 @@ pub fn parse_html(page: &Page, for child in scriptnode.children() { debug!("child = {:?}", child); let text: JSRef = TextCast::to_ref(child).unwrap(); - data.push_str(text.characterdata.data.borrow().as_slice()); + data.push_str(text.characterdata().data().as_slice()); } debug!("script data = {:?}", data); From 78fef7eec5b6f29396f6ffdcb08826173a3742f8 Mon Sep 17 00:00:00 2001 From: Tim Taubert Date: Sat, 11 Oct 2014 23:25:42 +0200 Subject: [PATCH 04/14] Privatize Attr --- components/script/dom/attr.rs | 22 +++++++++++++++++++--- components/script/dom/element.rs | 12 ++++++------ components/script/dom/htmlserializer.rs | 10 +++++----- components/script/dom/node.rs | 6 +++--- 4 files changed, 33 insertions(+), 17 deletions(-) diff --git a/components/script/dom/attr.rs b/components/script/dom/attr.rs index 0a3bacc856f..d54be57b8e0 100644 --- a/components/script/dom/attr.rs +++ b/components/script/dom/attr.rs @@ -72,13 +72,14 @@ impl Str for AttrValue { #[jstraceable] #[must_root] +#[privatize] pub struct Attr { reflector_: Reflector, local_name: Atom, value: RefCell, - pub name: Atom, - pub namespace: Namespace, - pub prefix: Option, + name: Atom, + namespace: Namespace, + prefix: Option, /// the element that owns this attribute. owner: JS, @@ -111,6 +112,21 @@ impl Attr { reflect_dom_object(box Attr::new_inherited(local_name, value, name, namespace, prefix, owner), &global::Window(window), AttrBinding::Wrap) } + + #[inline] + pub fn name<'a>(&'a self) -> &'a Atom { + &self.name + } + + #[inline] + pub fn namespace<'a>(&'a self) -> &'a Namespace { + &self.namespace + } + + #[inline] + pub fn prefix<'a>(&'a self) -> &'a Option { + &self.prefix + } } impl<'a> AttrMethods for JSRef<'a, Attr> { diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 82b54229201..a00fd1e9945 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -191,7 +191,7 @@ impl RawLayoutElementHelpers for Element { (*attrs).iter().find(|attr: & &JS| { let attr = attr.unsafe_get(); name == (*attr).local_name_atom_forever().as_slice() && - (*attr).namespace == *namespace + *(*attr).namespace() == *namespace }).map(|attr| { let attr = attr.unsafe_get(); (*attr).value_ref_forever() @@ -222,7 +222,7 @@ impl RawLayoutElementHelpers for Element { (*attrs).iter().find(|attr: & &JS| { let attr = attr.unsafe_get(); name == (*attr).local_name_atom_forever().as_slice() && - (*attr).namespace == *namespace + *(*attr).namespace() == *namespace }).and_then(|attr| { let attr = attr.unsafe_get(); (*attr).value_atom_forever() @@ -360,7 +360,7 @@ pub trait AttributeHandlers { impl<'a> AttributeHandlers for JSRef<'a, Element> { fn get_attribute(self, namespace: Namespace, local_name: &str) -> Option> { self.get_attributes(local_name).iter().map(|attr| attr.root()) - .find(|attr| attr.namespace == namespace) + .find(|attr| *attr.namespace() == namespace) .map(|x| Temporary::from_rooted(*x)) } @@ -496,7 +496,7 @@ impl<'a> AttributeHandlers for JSRef<'a, Element> { false => Atom::from_slice(name) }; self.attrs.borrow().iter().map(|attr| attr.root()).any(|attr| { - *attr.local_name() == name && attr.namespace == ns!("") + *attr.local_name() == name && *attr.namespace() == ns!("") }) } @@ -684,7 +684,7 @@ impl<'a> ElementMethods for JSRef<'a, Element> { let name = Atom::from_slice(name.as_slice()); let value = self.parse_attribute(&ns!(""), &name, value); self.do_set_attribute(name.clone(), value, name.clone(), ns!(""), None, |attr| { - attr.name.as_slice() == name.as_slice() + attr.name().as_slice() == name.as_slice() }); Ok(()) } @@ -753,7 +753,7 @@ impl<'a> ElementMethods for JSRef<'a, Element> { namespace.clone(), prefix.map(|s| s.to_string()), |attr| { *attr.local_name() == local_name && - attr.namespace == namespace + *attr.namespace() == namespace }); Ok(()) } diff --git a/components/script/dom/htmlserializer.rs b/components/script/dom/htmlserializer.rs index 1dd648a6514..c6f5252f3df 100644 --- a/components/script/dom/htmlserializer.rs +++ b/components/script/dom/htmlserializer.rs @@ -137,20 +137,20 @@ fn serialize_elem(elem: JSRef, open_elements: &mut Vec, html: & fn serialize_attr(attr: JSRef, html: &mut String) { html.push_char(' '); - if attr.namespace == ns!(XML) { + if *attr.namespace() == ns!(XML) { html.push_str("xml:"); html.push_str(attr.local_name().as_slice()); - } else if attr.namespace == ns!(XMLNS) && + } else if *attr.namespace() == ns!(XMLNS) && *attr.local_name() == Atom::from_slice("xmlns") { html.push_str("xmlns"); - } else if attr.namespace == ns!(XMLNS) { + } else if *attr.namespace() == ns!(XMLNS) { html.push_str("xmlns:"); html.push_str(attr.local_name().as_slice()); - } else if attr.namespace == ns!(XLink) { + } else if *attr.namespace() == ns!(XLink) { html.push_str("xlink:"); html.push_str(attr.local_name().as_slice()); } else { - html.push_str(attr.name.as_slice()); + html.push_str(attr.name().as_slice()); }; html.push_str("=\""); escape(attr.value().as_slice(), true, html); diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 98f39bf4888..3ca5515aeb9 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -1529,8 +1529,8 @@ impl Node { copy_elem.attrs.borrow_mut().push_unrooted( &Attr::new(*window, attr.local_name().clone(), attr.value().clone(), - attr.name.clone(), attr.namespace.clone(), - attr.prefix.clone(), copy_elem)); + attr.name().clone(), attr.namespace().clone(), + attr.prefix().clone(), copy_elem)); } }, _ => () @@ -1988,7 +1988,7 @@ impl<'a> NodeMethods for JSRef<'a, Node> { assert!(element.attrs.borrow().len() == other_element.attrs.borrow().len()); element.attrs.borrow().iter().map(|attr| attr.root()).all(|attr| { other_element.attrs.borrow().iter().map(|attr| attr.root()).any(|other_attr| { - (attr.namespace == other_attr.namespace) && + (*attr.namespace() == *other_attr.namespace()) && (attr.local_name() == other_attr.local_name()) && (attr.value().as_slice() == other_attr.value().as_slice()) }) From e15f8cb37f4c0c867ab237f06678fb33e903dee3 Mon Sep 17 00:00:00 2001 From: Tim Taubert Date: Sun, 12 Oct 2014 12:46:29 +0200 Subject: [PATCH 05/14] Privatize Comment --- components/script/dom/comment.rs | 8 +++++++- components/script/dom/htmlserializer.rs | 2 +- components/script/dom/node.rs | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/components/script/dom/comment.rs b/components/script/dom/comment.rs index a2c3c84a6a8..335b9744138 100644 --- a/components/script/dom/comment.rs +++ b/components/script/dom/comment.rs @@ -18,8 +18,9 @@ use servo_util::str::DOMString; /// An HTML comment. #[jstraceable] #[must_root] +#[privatize] pub struct Comment { - pub characterdata: CharacterData, + characterdata: CharacterData, } impl CommentDerived for EventTarget { @@ -44,6 +45,11 @@ impl Comment { let document = global.as_window().Document().root(); Ok(Comment::new(data, *document)) } + + #[inline] + pub fn characterdata<'a>(&'a self) -> &'a CharacterData { + &self.characterdata + } } impl Reflectable for Comment { diff --git a/components/script/dom/htmlserializer.rs b/components/script/dom/htmlserializer.rs index c6f5252f3df..aab4c8d922d 100644 --- a/components/script/dom/htmlserializer.rs +++ b/components/script/dom/htmlserializer.rs @@ -69,7 +69,7 @@ pub fn serialize(iterator: &mut NodeIterator) -> String { fn serialize_comment(comment: JSRef, html: &mut String) { html.push_str(""); } diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 3ca5515aeb9..3f657b2a755 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -1469,7 +1469,7 @@ impl Node { }, CommentNodeTypeId => { let comment: JSRef = CommentCast::to_ref(node).unwrap(); - let comment = Comment::new(comment.characterdata.data().clone(), *document); + let comment = Comment::new(comment.characterdata().data().clone(), *document); NodeCast::from_temporary(comment) }, DocumentNodeTypeId => { From ba073d7e99b11ce4fad34696d2b5c13b69026fd5 Mon Sep 17 00:00:00 2001 From: Tim Taubert Date: Sun, 12 Oct 2014 12:57:15 +0200 Subject: [PATCH 06/14] Privatize DocumentType --- components/script/dom/documenttype.rs | 24 ++++++++++++++++++++---- components/script/dom/htmlserializer.rs | 2 +- components/script/dom/node.rs | 14 +++++++------- 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/components/script/dom/documenttype.rs b/components/script/dom/documenttype.rs index 8d902a34b26..6983e6eb19b 100644 --- a/components/script/dom/documenttype.rs +++ b/components/script/dom/documenttype.rs @@ -15,11 +15,12 @@ use servo_util::str::DOMString; /// The `DOCTYPE` tag. #[jstraceable] #[must_root] +#[privatize] pub struct DocumentType { - pub node: Node, - pub name: DOMString, - pub public_id: DOMString, - pub system_id: DOMString, + node: Node, + name: DOMString, + public_id: DOMString, + system_id: DOMString, } impl DocumentTypeDerived for EventTarget { @@ -53,6 +54,21 @@ impl DocumentType { document); Node::reflect_node(box documenttype, document, DocumentTypeBinding::Wrap) } + + #[inline] + pub fn name<'a>(&'a self) -> &'a DOMString { + &self.name + } + + #[inline] + pub fn public_id<'a>(&'a self) -> &'a DOMString { + &self.public_id + } + + #[inline] + pub fn system_id<'a>(&'a self) -> &'a DOMString { + &self.system_id + } } impl<'a> DocumentTypeMethods for JSRef<'a, DocumentType> { diff --git a/components/script/dom/htmlserializer.rs b/components/script/dom/htmlserializer.rs index aab4c8d922d..07c5b3d7121 100644 --- a/components/script/dom/htmlserializer.rs +++ b/components/script/dom/htmlserializer.rs @@ -101,7 +101,7 @@ fn serialize_processing_instruction(processing_instruction: JSRef, html: &mut String) { html.push_str("'); } diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 3f657b2a755..8ff8b29eca6 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -1458,9 +1458,9 @@ impl Node { let copy: Root = match node.type_id() { DoctypeNodeTypeId => { let doctype: JSRef = DocumentTypeCast::to_ref(node).unwrap(); - let doctype = DocumentType::new(doctype.name.clone(), - Some(doctype.public_id.clone()), - Some(doctype.system_id.clone()), *document); + let doctype = DocumentType::new(doctype.name().clone(), + Some(doctype.public_id().clone()), + Some(doctype.system_id().clone()), *document); NodeCast::from_temporary(doctype) }, DocumentFragmentNodeTypeId => { @@ -1612,7 +1612,7 @@ impl<'a> NodeMethods for JSRef<'a, Node> { CommentNodeTypeId => "#comment".to_string(), DoctypeNodeTypeId => { let doctype: JSRef = DocumentTypeCast::to_ref(self).unwrap(); - doctype.name.clone() + doctype.name().clone() }, DocumentFragmentNodeTypeId => "#document-fragment".to_string(), DocumentNodeTypeId => "#document".to_string() @@ -1959,9 +1959,9 @@ impl<'a> NodeMethods for JSRef<'a, Node> { fn is_equal_doctype(node: JSRef, other: JSRef) -> bool { let doctype: JSRef = DocumentTypeCast::to_ref(node).unwrap(); let other_doctype: JSRef = DocumentTypeCast::to_ref(other).unwrap(); - (doctype.name == other_doctype.name) && - (doctype.public_id == other_doctype.public_id) && - (doctype.system_id == other_doctype.system_id) + (*doctype.name() == *other_doctype.name()) && + (*doctype.public_id() == *other_doctype.public_id()) && + (*doctype.system_id() == *other_doctype.system_id()) } fn is_equal_element(node: JSRef, other: JSRef) -> bool { let element: JSRef = ElementCast::to_ref(node).unwrap(); From df60f8b2c559cb4119b96174231fc4161bdcb4da Mon Sep 17 00:00:00 2001 From: Tim Taubert Date: Sun, 12 Oct 2014 13:24:24 +0200 Subject: [PATCH 07/14] Privatize EventTarget and EventListenerEntry --- components/script/dom/characterdata.rs | 2 +- components/script/dom/comment.rs | 2 +- components/script/dom/dedicatedworkerglobalscope.rs | 2 +- components/script/dom/document.rs | 2 +- components/script/dom/documentfragment.rs | 2 +- components/script/dom/documenttype.rs | 2 +- components/script/dom/element.rs | 2 +- components/script/dom/eventtarget.rs | 13 ++++++++++--- components/script/dom/htmlanchorelement.rs | 2 +- components/script/dom/htmlappletelement.rs | 2 +- components/script/dom/htmlareaelement.rs | 2 +- components/script/dom/htmlaudioelement.rs | 2 +- components/script/dom/htmlbaseelement.rs | 2 +- components/script/dom/htmlbodyelement.rs | 2 +- components/script/dom/htmlbrelement.rs | 2 +- components/script/dom/htmlbuttonelement.rs | 2 +- components/script/dom/htmlcanvaselement.rs | 2 +- components/script/dom/htmldataelement.rs | 2 +- components/script/dom/htmldatalistelement.rs | 2 +- components/script/dom/htmldirectoryelement.rs | 2 +- components/script/dom/htmldivelement.rs | 2 +- components/script/dom/htmldlistelement.rs | 2 +- components/script/dom/htmlelement.rs | 2 +- components/script/dom/htmlembedelement.rs | 2 +- components/script/dom/htmlfieldsetelement.rs | 2 +- components/script/dom/htmlfontelement.rs | 2 +- components/script/dom/htmlformelement.rs | 2 +- components/script/dom/htmlframeelement.rs | 2 +- components/script/dom/htmlframesetelement.rs | 2 +- components/script/dom/htmlheadelement.rs | 2 +- components/script/dom/htmlheadingelement.rs | 2 +- components/script/dom/htmlhrelement.rs | 2 +- components/script/dom/htmlhtmlelement.rs | 2 +- components/script/dom/htmliframeelement.rs | 2 +- components/script/dom/htmlimageelement.rs | 2 +- components/script/dom/htmlinputelement.rs | 2 +- components/script/dom/htmllabelelement.rs | 2 +- components/script/dom/htmllegendelement.rs | 2 +- components/script/dom/htmllielement.rs | 2 +- components/script/dom/htmllinkelement.rs | 2 +- components/script/dom/htmlmapelement.rs | 2 +- components/script/dom/htmlmediaelement.rs | 2 +- components/script/dom/htmlmetaelement.rs | 2 +- components/script/dom/htmlmeterelement.rs | 2 +- components/script/dom/htmlmodelement.rs | 2 +- components/script/dom/htmlobjectelement.rs | 2 +- components/script/dom/htmlolistelement.rs | 2 +- components/script/dom/htmloptgroupelement.rs | 2 +- components/script/dom/htmloptionelement.rs | 2 +- components/script/dom/htmloutputelement.rs | 2 +- components/script/dom/htmlparagraphelement.rs | 2 +- components/script/dom/htmlparamelement.rs | 2 +- components/script/dom/htmlpreelement.rs | 2 +- components/script/dom/htmlprogresselement.rs | 2 +- components/script/dom/htmlquoteelement.rs | 2 +- components/script/dom/htmlscriptelement.rs | 2 +- components/script/dom/htmlselectelement.rs | 2 +- components/script/dom/htmlsourceelement.rs | 2 +- components/script/dom/htmlspanelement.rs | 2 +- components/script/dom/htmlstyleelement.rs | 2 +- components/script/dom/htmltablecaptionelement.rs | 2 +- components/script/dom/htmltablecellelement.rs | 2 +- components/script/dom/htmltablecolelement.rs | 2 +- components/script/dom/htmltabledatacellelement.rs | 2 +- components/script/dom/htmltableelement.rs | 2 +- components/script/dom/htmltableheadercellelement.rs | 2 +- components/script/dom/htmltablerowelement.rs | 2 +- components/script/dom/htmltablesectionelement.rs | 2 +- components/script/dom/htmltemplateelement.rs | 2 +- components/script/dom/htmltextareaelement.rs | 2 +- components/script/dom/htmltimeelement.rs | 2 +- components/script/dom/htmltitleelement.rs | 2 +- components/script/dom/htmltrackelement.rs | 2 +- components/script/dom/htmlulistelement.rs | 2 +- components/script/dom/htmlunknownelement.rs | 2 +- components/script/dom/htmlvideoelement.rs | 2 +- components/script/dom/node.rs | 2 +- components/script/dom/processinginstruction.rs | 2 +- components/script/dom/text.rs | 2 +- components/script/dom/xmlhttprequest.rs | 2 +- components/script/dom/xmlhttprequesteventtarget.rs | 2 +- components/script/dom/xmlhttprequestupload.rs | 2 +- 82 files changed, 91 insertions(+), 84 deletions(-) diff --git a/components/script/dom/characterdata.rs b/components/script/dom/characterdata.rs index c9ad75f9a22..8201965bdb3 100644 --- a/components/script/dom/characterdata.rs +++ b/components/script/dom/characterdata.rs @@ -26,7 +26,7 @@ pub struct CharacterData { impl CharacterDataDerived for EventTarget { fn is_characterdata(&self) -> bool { - match self.type_id { + match *self.type_id() { NodeTargetTypeId(TextNodeTypeId) | NodeTargetTypeId(CommentNodeTypeId) | NodeTargetTypeId(ProcessingInstructionNodeTypeId) => true, diff --git a/components/script/dom/comment.rs b/components/script/dom/comment.rs index 335b9744138..8da33dab01f 100644 --- a/components/script/dom/comment.rs +++ b/components/script/dom/comment.rs @@ -25,7 +25,7 @@ pub struct Comment { impl CommentDerived for EventTarget { fn is_comment(&self) -> bool { - self.type_id == NodeTargetTypeId(CommentNodeTypeId) + *self.type_id() == NodeTargetTypeId(CommentNodeTypeId) } } diff --git a/components/script/dom/dedicatedworkerglobalscope.rs b/components/script/dom/dedicatedworkerglobalscope.rs index 2d98b4819a5..22e5c4c6454 100644 --- a/components/script/dom/dedicatedworkerglobalscope.rs +++ b/components/script/dom/dedicatedworkerglobalscope.rs @@ -193,7 +193,7 @@ impl Reflectable for DedicatedWorkerGlobalScope { impl DedicatedWorkerGlobalScopeDerived for EventTarget { fn is_dedicatedworkerglobalscope(&self) -> bool { - match self.type_id { + match *self.type_id() { WorkerGlobalScopeTypeId(DedicatedGlobalScope) => true, _ => false } diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 7e698a9ec6a..c67604942da 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -98,7 +98,7 @@ pub struct Document { impl DocumentDerived for EventTarget { fn is_document(&self) -> bool { - self.type_id == NodeTargetTypeId(DocumentNodeTypeId) + *self.type_id() == NodeTargetTypeId(DocumentNodeTypeId) } } diff --git a/components/script/dom/documentfragment.rs b/components/script/dom/documentfragment.rs index ebbb3d0fe0d..8b3b8e6bba6 100644 --- a/components/script/dom/documentfragment.rs +++ b/components/script/dom/documentfragment.rs @@ -27,7 +27,7 @@ pub struct DocumentFragment { impl DocumentFragmentDerived for EventTarget { fn is_documentfragment(&self) -> bool { - self.type_id == NodeTargetTypeId(DocumentFragmentNodeTypeId) + *self.type_id() == NodeTargetTypeId(DocumentFragmentNodeTypeId) } } diff --git a/components/script/dom/documenttype.rs b/components/script/dom/documenttype.rs index 6983e6eb19b..683b1c56ae0 100644 --- a/components/script/dom/documenttype.rs +++ b/components/script/dom/documenttype.rs @@ -25,7 +25,7 @@ pub struct DocumentType { impl DocumentTypeDerived for EventTarget { fn is_documenttype(&self) -> bool { - self.type_id == NodeTargetTypeId(DoctypeNodeTypeId) + *self.type_id() == NodeTargetTypeId(DoctypeNodeTypeId) } } diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index a00fd1e9945..580b79276a6 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -57,7 +57,7 @@ pub struct Element { impl ElementDerived for EventTarget { fn is_element(&self) -> bool { - match self.type_id { + match *self.type_id() { NodeTargetTypeId(ElementNodeTypeId(_)) => true, _ => false } diff --git a/components/script/dom/eventtarget.rs b/components/script/dom/eventtarget.rs index bb6c8000426..d2bb567c8ca 100644 --- a/components/script/dom/eventtarget.rs +++ b/components/script/dom/eventtarget.rs @@ -59,15 +59,17 @@ impl EventListenerType { #[deriving(PartialEq)] #[jstraceable] +#[privatize] pub struct EventListenerEntry { - pub phase: ListenerPhase, - pub listener: EventListenerType + phase: ListenerPhase, + listener: EventListenerType } #[jstraceable] #[must_root] +#[privatize] pub struct EventTarget { - pub type_id: EventTargetTypeId, + type_id: EventTargetTypeId, reflector_: Reflector, handlers: RefCell>>, } @@ -94,6 +96,11 @@ impl EventTarget { filtered.map(|entry| entry.listener.get_listener()).collect() }) } + + #[inline] + pub fn type_id<'a>(&'a self) -> &'a EventTargetTypeId { + &self.type_id + } } pub trait EventTargetHelpers { diff --git a/components/script/dom/htmlanchorelement.rs b/components/script/dom/htmlanchorelement.rs index f82027a93fa..19492ef6264 100644 --- a/components/script/dom/htmlanchorelement.rs +++ b/components/script/dom/htmlanchorelement.rs @@ -30,7 +30,7 @@ pub struct HTMLAnchorElement { impl HTMLAnchorElementDerived for EventTarget { fn is_htmlanchorelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLAnchorElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLAnchorElementTypeId)) } } diff --git a/components/script/dom/htmlappletelement.rs b/components/script/dom/htmlappletelement.rs index 5572b126634..eeb7eb35188 100644 --- a/components/script/dom/htmlappletelement.rs +++ b/components/script/dom/htmlappletelement.rs @@ -22,7 +22,7 @@ pub struct HTMLAppletElement { impl HTMLAppletElementDerived for EventTarget { fn is_htmlappletelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLAppletElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLAppletElementTypeId)) } } diff --git a/components/script/dom/htmlareaelement.rs b/components/script/dom/htmlareaelement.rs index 49463f86b3f..c4272fde753 100644 --- a/components/script/dom/htmlareaelement.rs +++ b/components/script/dom/htmlareaelement.rs @@ -23,7 +23,7 @@ pub struct HTMLAreaElement { impl HTMLAreaElementDerived for EventTarget { fn is_htmlareaelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLAreaElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLAreaElementTypeId)) } } diff --git a/components/script/dom/htmlaudioelement.rs b/components/script/dom/htmlaudioelement.rs index b281c6e3db7..9eed3b6c1db 100644 --- a/components/script/dom/htmlaudioelement.rs +++ b/components/script/dom/htmlaudioelement.rs @@ -22,7 +22,7 @@ pub struct HTMLAudioElement { impl HTMLAudioElementDerived for EventTarget { fn is_htmlaudioelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLAudioElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLAudioElementTypeId)) } } diff --git a/components/script/dom/htmlbaseelement.rs b/components/script/dom/htmlbaseelement.rs index 6691c27e29c..7bf12bb0822 100644 --- a/components/script/dom/htmlbaseelement.rs +++ b/components/script/dom/htmlbaseelement.rs @@ -22,7 +22,7 @@ pub struct HTMLBaseElement { impl HTMLBaseElementDerived for EventTarget { fn is_htmlbaseelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLBaseElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLBaseElementTypeId)) } } diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index a537ca52ba3..7c0c0c17711 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -29,7 +29,7 @@ pub struct HTMLBodyElement { impl HTMLBodyElementDerived for EventTarget { fn is_htmlbodyelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLBodyElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLBodyElementTypeId)) } } diff --git a/components/script/dom/htmlbrelement.rs b/components/script/dom/htmlbrelement.rs index e6cb0596bd5..74811afe074 100644 --- a/components/script/dom/htmlbrelement.rs +++ b/components/script/dom/htmlbrelement.rs @@ -22,7 +22,7 @@ pub struct HTMLBRElement { impl HTMLBRElementDerived for EventTarget { fn is_htmlbrelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLBRElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLBRElementTypeId)) } } diff --git a/components/script/dom/htmlbuttonelement.rs b/components/script/dom/htmlbuttonelement.rs index e0ae3afa30a..af4dec6dcb3 100644 --- a/components/script/dom/htmlbuttonelement.rs +++ b/components/script/dom/htmlbuttonelement.rs @@ -29,7 +29,7 @@ pub struct HTMLButtonElement { impl HTMLButtonElementDerived for EventTarget { fn is_htmlbuttonelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLButtonElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLButtonElementTypeId)) } } diff --git a/components/script/dom/htmlcanvaselement.rs b/components/script/dom/htmlcanvaselement.rs index d77657ed2df..ac5a5d7ded5 100644 --- a/components/script/dom/htmlcanvaselement.rs +++ b/components/script/dom/htmlcanvaselement.rs @@ -40,7 +40,7 @@ pub struct HTMLCanvasElement { impl HTMLCanvasElementDerived for EventTarget { fn is_htmlcanvaselement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLCanvasElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLCanvasElementTypeId)) } } diff --git a/components/script/dom/htmldataelement.rs b/components/script/dom/htmldataelement.rs index bae4916393b..58e2ad90f73 100644 --- a/components/script/dom/htmldataelement.rs +++ b/components/script/dom/htmldataelement.rs @@ -22,7 +22,7 @@ pub struct HTMLDataElement { impl HTMLDataElementDerived for EventTarget { fn is_htmldataelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLDataElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLDataElementTypeId)) } } diff --git a/components/script/dom/htmldatalistelement.rs b/components/script/dom/htmldatalistelement.rs index a61299b560b..3363997142b 100644 --- a/components/script/dom/htmldatalistelement.rs +++ b/components/script/dom/htmldatalistelement.rs @@ -25,7 +25,7 @@ pub struct HTMLDataListElement { impl HTMLDataListElementDerived for EventTarget { fn is_htmldatalistelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLDataListElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLDataListElementTypeId)) } } diff --git a/components/script/dom/htmldirectoryelement.rs b/components/script/dom/htmldirectoryelement.rs index 72553bf2a5e..f1cd840e298 100644 --- a/components/script/dom/htmldirectoryelement.rs +++ b/components/script/dom/htmldirectoryelement.rs @@ -22,7 +22,7 @@ pub struct HTMLDirectoryElement { impl HTMLDirectoryElementDerived for EventTarget { fn is_htmldirectoryelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLDirectoryElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLDirectoryElementTypeId)) } } diff --git a/components/script/dom/htmldivelement.rs b/components/script/dom/htmldivelement.rs index cbbcd90c222..d35ad9dc4be 100644 --- a/components/script/dom/htmldivelement.rs +++ b/components/script/dom/htmldivelement.rs @@ -22,7 +22,7 @@ pub struct HTMLDivElement { impl HTMLDivElementDerived for EventTarget { fn is_htmldivelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLDivElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLDivElementTypeId)) } } diff --git a/components/script/dom/htmldlistelement.rs b/components/script/dom/htmldlistelement.rs index 983721ac429..643f7e81263 100644 --- a/components/script/dom/htmldlistelement.rs +++ b/components/script/dom/htmldlistelement.rs @@ -22,7 +22,7 @@ pub struct HTMLDListElement { impl HTMLDListElementDerived for EventTarget { fn is_htmldlistelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLDListElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLDListElementTypeId)) } } diff --git a/components/script/dom/htmlelement.rs b/components/script/dom/htmlelement.rs index cc920a50c42..00ea736a07f 100644 --- a/components/script/dom/htmlelement.rs +++ b/components/script/dom/htmlelement.rs @@ -29,7 +29,7 @@ pub struct HTMLElement { impl HTMLElementDerived for EventTarget { fn is_htmlelement(&self) -> bool { - match self.type_id { + match *self.type_id() { NodeTargetTypeId(ElementNodeTypeId(ElementTypeId_)) => false, NodeTargetTypeId(ElementNodeTypeId(_)) => true, _ => false diff --git a/components/script/dom/htmlembedelement.rs b/components/script/dom/htmlembedelement.rs index 1860a3027f2..e8de6bbd08a 100644 --- a/components/script/dom/htmlembedelement.rs +++ b/components/script/dom/htmlembedelement.rs @@ -22,7 +22,7 @@ pub struct HTMLEmbedElement { impl HTMLEmbedElementDerived for EventTarget { fn is_htmlembedelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLEmbedElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLEmbedElementTypeId)) } } diff --git a/components/script/dom/htmlfieldsetelement.rs b/components/script/dom/htmlfieldsetelement.rs index 6e59a2456e1..6f0d2695897 100644 --- a/components/script/dom/htmlfieldsetelement.rs +++ b/components/script/dom/htmlfieldsetelement.rs @@ -30,7 +30,7 @@ pub struct HTMLFieldSetElement { impl HTMLFieldSetElementDerived for EventTarget { fn is_htmlfieldsetelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLFieldSetElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLFieldSetElementTypeId)) } } diff --git a/components/script/dom/htmlfontelement.rs b/components/script/dom/htmlfontelement.rs index bd4cf31b33c..5f11a672cc4 100644 --- a/components/script/dom/htmlfontelement.rs +++ b/components/script/dom/htmlfontelement.rs @@ -22,7 +22,7 @@ pub struct HTMLFontElement { impl HTMLFontElementDerived for EventTarget { fn is_htmlfontelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLFontElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLFontElementTypeId)) } } diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs index 55a8ecf0190..825805703e4 100644 --- a/components/script/dom/htmlformelement.rs +++ b/components/script/dom/htmlformelement.rs @@ -38,7 +38,7 @@ pub struct HTMLFormElement { impl HTMLFormElementDerived for EventTarget { fn is_htmlformelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLFormElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLFormElementTypeId)) } } diff --git a/components/script/dom/htmlframeelement.rs b/components/script/dom/htmlframeelement.rs index 0f517ef7615..76a8b190cb1 100644 --- a/components/script/dom/htmlframeelement.rs +++ b/components/script/dom/htmlframeelement.rs @@ -22,7 +22,7 @@ pub struct HTMLFrameElement { impl HTMLFrameElementDerived for EventTarget { fn is_htmlframeelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLFrameElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLFrameElementTypeId)) } } diff --git a/components/script/dom/htmlframesetelement.rs b/components/script/dom/htmlframesetelement.rs index 70ac2eb58e7..168ab8f73ec 100644 --- a/components/script/dom/htmlframesetelement.rs +++ b/components/script/dom/htmlframesetelement.rs @@ -22,7 +22,7 @@ pub struct HTMLFrameSetElement { impl HTMLFrameSetElementDerived for EventTarget { fn is_htmlframesetelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLFrameSetElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLFrameSetElementTypeId)) } } diff --git a/components/script/dom/htmlheadelement.rs b/components/script/dom/htmlheadelement.rs index b1031def2c6..51cbf9f9b88 100644 --- a/components/script/dom/htmlheadelement.rs +++ b/components/script/dom/htmlheadelement.rs @@ -22,7 +22,7 @@ pub struct HTMLHeadElement { impl HTMLHeadElementDerived for EventTarget { fn is_htmlheadelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLHeadElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLHeadElementTypeId)) } } diff --git a/components/script/dom/htmlheadingelement.rs b/components/script/dom/htmlheadingelement.rs index 51df3db00c3..1f91a89abee 100644 --- a/components/script/dom/htmlheadingelement.rs +++ b/components/script/dom/htmlheadingelement.rs @@ -33,7 +33,7 @@ pub struct HTMLHeadingElement { impl HTMLHeadingElementDerived for EventTarget { fn is_htmlheadingelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLHeadingElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLHeadingElementTypeId)) } } diff --git a/components/script/dom/htmlhrelement.rs b/components/script/dom/htmlhrelement.rs index e132835f499..95400b2713d 100644 --- a/components/script/dom/htmlhrelement.rs +++ b/components/script/dom/htmlhrelement.rs @@ -22,7 +22,7 @@ pub struct HTMLHRElement { impl HTMLHRElementDerived for EventTarget { fn is_htmlhrelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLHRElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLHRElementTypeId)) } } diff --git a/components/script/dom/htmlhtmlelement.rs b/components/script/dom/htmlhtmlelement.rs index bacc8d39650..f3cd408a31d 100644 --- a/components/script/dom/htmlhtmlelement.rs +++ b/components/script/dom/htmlhtmlelement.rs @@ -22,7 +22,7 @@ pub struct HTMLHtmlElement { impl HTMLHtmlElementDerived for EventTarget { fn is_htmlhtmlelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLHtmlElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLHtmlElementTypeId)) } } diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs index 68ca275682f..90edb8201c1 100644 --- a/components/script/dom/htmliframeelement.rs +++ b/components/script/dom/htmliframeelement.rs @@ -50,7 +50,7 @@ pub struct HTMLIFrameElement { impl HTMLIFrameElementDerived for EventTarget { fn is_htmliframeelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLIFrameElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLIFrameElementTypeId)) } } diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs index 5d7ffeb3c22..e9c916e2eec 100644 --- a/components/script/dom/htmlimageelement.rs +++ b/components/script/dom/htmlimageelement.rs @@ -34,7 +34,7 @@ pub struct HTMLImageElement { impl HTMLImageElementDerived for EventTarget { fn is_htmlimageelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLImageElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLImageElementTypeId)) } } diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs index 1e95e718d49..b63fee7917b 100644 --- a/components/script/dom/htmlinputelement.rs +++ b/components/script/dom/htmlinputelement.rs @@ -57,7 +57,7 @@ pub struct HTMLInputElement { impl HTMLInputElementDerived for EventTarget { fn is_htmlinputelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLInputElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLInputElementTypeId)) } } diff --git a/components/script/dom/htmllabelelement.rs b/components/script/dom/htmllabelelement.rs index 2b4b9aa2da9..59fe5479f53 100644 --- a/components/script/dom/htmllabelelement.rs +++ b/components/script/dom/htmllabelelement.rs @@ -22,7 +22,7 @@ pub struct HTMLLabelElement { impl HTMLLabelElementDerived for EventTarget { fn is_htmllabelelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLLabelElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLLabelElementTypeId)) } } diff --git a/components/script/dom/htmllegendelement.rs b/components/script/dom/htmllegendelement.rs index f5e53167934..2d4725528ab 100644 --- a/components/script/dom/htmllegendelement.rs +++ b/components/script/dom/htmllegendelement.rs @@ -22,7 +22,7 @@ pub struct HTMLLegendElement { impl HTMLLegendElementDerived for EventTarget { fn is_htmllegendelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLLegendElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLLegendElementTypeId)) } } diff --git a/components/script/dom/htmllielement.rs b/components/script/dom/htmllielement.rs index 6300d028235..f4d789ec549 100644 --- a/components/script/dom/htmllielement.rs +++ b/components/script/dom/htmllielement.rs @@ -22,7 +22,7 @@ pub struct HTMLLIElement { impl HTMLLIElementDerived for EventTarget { fn is_htmllielement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLLIElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLLIElementTypeId)) } } diff --git a/components/script/dom/htmllinkelement.rs b/components/script/dom/htmllinkelement.rs index eaaa72d86f3..1c641562d81 100644 --- a/components/script/dom/htmllinkelement.rs +++ b/components/script/dom/htmllinkelement.rs @@ -30,7 +30,7 @@ pub struct HTMLLinkElement { impl HTMLLinkElementDerived for EventTarget { fn is_htmllinkelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLLinkElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLLinkElementTypeId)) } } diff --git a/components/script/dom/htmlmapelement.rs b/components/script/dom/htmlmapelement.rs index 99a2593801a..0cca9e14a84 100644 --- a/components/script/dom/htmlmapelement.rs +++ b/components/script/dom/htmlmapelement.rs @@ -22,7 +22,7 @@ pub struct HTMLMapElement { impl HTMLMapElementDerived for EventTarget { fn is_htmlmapelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLMapElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLMapElementTypeId)) } } diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs index 4141d7df79c..54ff9308672 100644 --- a/components/script/dom/htmlmediaelement.rs +++ b/components/script/dom/htmlmediaelement.rs @@ -21,7 +21,7 @@ pub struct HTMLMediaElement { impl HTMLMediaElementDerived for EventTarget { fn is_htmlmediaelement(&self) -> bool { - match self.type_id { + match *self.type_id() { NodeTargetTypeId(ElementNodeTypeId(HTMLVideoElementTypeId)) | NodeTargetTypeId(ElementNodeTypeId(HTMLAudioElementTypeId)) => true, _ => false diff --git a/components/script/dom/htmlmetaelement.rs b/components/script/dom/htmlmetaelement.rs index 7f01d7c0ef4..4a38ebfbc3a 100644 --- a/components/script/dom/htmlmetaelement.rs +++ b/components/script/dom/htmlmetaelement.rs @@ -22,7 +22,7 @@ pub struct HTMLMetaElement { impl HTMLMetaElementDerived for EventTarget { fn is_htmlmetaelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLMetaElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLMetaElementTypeId)) } } diff --git a/components/script/dom/htmlmeterelement.rs b/components/script/dom/htmlmeterelement.rs index 045d6fb513c..76e2f9400d0 100644 --- a/components/script/dom/htmlmeterelement.rs +++ b/components/script/dom/htmlmeterelement.rs @@ -22,7 +22,7 @@ pub struct HTMLMeterElement { impl HTMLMeterElementDerived for EventTarget { fn is_htmlmeterelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLMeterElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLMeterElementTypeId)) } } diff --git a/components/script/dom/htmlmodelement.rs b/components/script/dom/htmlmodelement.rs index a71ee89c168..0fa5e2e0cd2 100644 --- a/components/script/dom/htmlmodelement.rs +++ b/components/script/dom/htmlmodelement.rs @@ -22,7 +22,7 @@ pub struct HTMLModElement { impl HTMLModElementDerived for EventTarget { fn is_htmlmodelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLModElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLModElementTypeId)) } } diff --git a/components/script/dom/htmlobjectelement.rs b/components/script/dom/htmlobjectelement.rs index bc61e468045..b059257830f 100644 --- a/components/script/dom/htmlobjectelement.rs +++ b/components/script/dom/htmlobjectelement.rs @@ -34,7 +34,7 @@ pub struct HTMLObjectElement { impl HTMLObjectElementDerived for EventTarget { fn is_htmlobjectelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLObjectElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLObjectElementTypeId)) } } diff --git a/components/script/dom/htmlolistelement.rs b/components/script/dom/htmlolistelement.rs index 58f73fed5d6..82c67341c31 100644 --- a/components/script/dom/htmlolistelement.rs +++ b/components/script/dom/htmlolistelement.rs @@ -22,7 +22,7 @@ pub struct HTMLOListElement { impl HTMLOListElementDerived for EventTarget { fn is_htmlolistelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLOListElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLOListElementTypeId)) } } diff --git a/components/script/dom/htmloptgroupelement.rs b/components/script/dom/htmloptgroupelement.rs index e94ea81f9b4..e7fe66c2e0d 100644 --- a/components/script/dom/htmloptgroupelement.rs +++ b/components/script/dom/htmloptgroupelement.rs @@ -27,7 +27,7 @@ pub struct HTMLOptGroupElement { impl HTMLOptGroupElementDerived for EventTarget { fn is_htmloptgroupelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLOptGroupElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLOptGroupElementTypeId)) } } diff --git a/components/script/dom/htmloptionelement.rs b/components/script/dom/htmloptionelement.rs index 8c1c5b0989e..715f0d6f1f5 100644 --- a/components/script/dom/htmloptionelement.rs +++ b/components/script/dom/htmloptionelement.rs @@ -31,7 +31,7 @@ pub struct HTMLOptionElement { impl HTMLOptionElementDerived for EventTarget { fn is_htmloptionelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLOptionElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLOptionElementTypeId)) } } diff --git a/components/script/dom/htmloutputelement.rs b/components/script/dom/htmloutputelement.rs index ec5622c59ac..0b9f0b0d872 100644 --- a/components/script/dom/htmloutputelement.rs +++ b/components/script/dom/htmloutputelement.rs @@ -24,7 +24,7 @@ pub struct HTMLOutputElement { impl HTMLOutputElementDerived for EventTarget { fn is_htmloutputelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLOutputElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLOutputElementTypeId)) } } diff --git a/components/script/dom/htmlparagraphelement.rs b/components/script/dom/htmlparagraphelement.rs index 4a0976c2ff1..66a70b6963f 100644 --- a/components/script/dom/htmlparagraphelement.rs +++ b/components/script/dom/htmlparagraphelement.rs @@ -22,7 +22,7 @@ pub struct HTMLParagraphElement { impl HTMLParagraphElementDerived for EventTarget { fn is_htmlparagraphelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLParagraphElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLParagraphElementTypeId)) } } diff --git a/components/script/dom/htmlparamelement.rs b/components/script/dom/htmlparamelement.rs index f729242b879..7845a767512 100644 --- a/components/script/dom/htmlparamelement.rs +++ b/components/script/dom/htmlparamelement.rs @@ -22,7 +22,7 @@ pub struct HTMLParamElement { impl HTMLParamElementDerived for EventTarget { fn is_htmlparamelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLParamElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLParamElementTypeId)) } } diff --git a/components/script/dom/htmlpreelement.rs b/components/script/dom/htmlpreelement.rs index 22bd185804c..89799212226 100644 --- a/components/script/dom/htmlpreelement.rs +++ b/components/script/dom/htmlpreelement.rs @@ -22,7 +22,7 @@ pub struct HTMLPreElement { impl HTMLPreElementDerived for EventTarget { fn is_htmlpreelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLPreElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLPreElementTypeId)) } } diff --git a/components/script/dom/htmlprogresselement.rs b/components/script/dom/htmlprogresselement.rs index 879e86cb6fa..65db0e536af 100644 --- a/components/script/dom/htmlprogresselement.rs +++ b/components/script/dom/htmlprogresselement.rs @@ -22,7 +22,7 @@ pub struct HTMLProgressElement { impl HTMLProgressElementDerived for EventTarget { fn is_htmlprogresselement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLProgressElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLProgressElementTypeId)) } } diff --git a/components/script/dom/htmlquoteelement.rs b/components/script/dom/htmlquoteelement.rs index ed5b8f818ce..f028b3d9c5d 100644 --- a/components/script/dom/htmlquoteelement.rs +++ b/components/script/dom/htmlquoteelement.rs @@ -22,7 +22,7 @@ pub struct HTMLQuoteElement { impl HTMLQuoteElementDerived for EventTarget { fn is_htmlquoteelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLQuoteElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLQuoteElementTypeId)) } } diff --git a/components/script/dom/htmlscriptelement.rs b/components/script/dom/htmlscriptelement.rs index 0168bc8ad98..138c7ea8679 100644 --- a/components/script/dom/htmlscriptelement.rs +++ b/components/script/dom/htmlscriptelement.rs @@ -27,7 +27,7 @@ pub struct HTMLScriptElement { impl HTMLScriptElementDerived for EventTarget { fn is_htmlscriptelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLScriptElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLScriptElementTypeId)) } } diff --git a/components/script/dom/htmlselectelement.rs b/components/script/dom/htmlselectelement.rs index 01c9e1c2348..d825bf1f3a1 100644 --- a/components/script/dom/htmlselectelement.rs +++ b/components/script/dom/htmlselectelement.rs @@ -30,7 +30,7 @@ pub struct HTMLSelectElement { impl HTMLSelectElementDerived for EventTarget { fn is_htmlselectelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLSelectElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLSelectElementTypeId)) } } diff --git a/components/script/dom/htmlsourceelement.rs b/components/script/dom/htmlsourceelement.rs index 587262ebf3f..8a7578febdf 100644 --- a/components/script/dom/htmlsourceelement.rs +++ b/components/script/dom/htmlsourceelement.rs @@ -22,7 +22,7 @@ pub struct HTMLSourceElement { impl HTMLSourceElementDerived for EventTarget { fn is_htmlsourceelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLSourceElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLSourceElementTypeId)) } } diff --git a/components/script/dom/htmlspanelement.rs b/components/script/dom/htmlspanelement.rs index 2dea84ed3c6..fba53a8b795 100644 --- a/components/script/dom/htmlspanelement.rs +++ b/components/script/dom/htmlspanelement.rs @@ -22,7 +22,7 @@ pub struct HTMLSpanElement { impl HTMLSpanElementDerived for EventTarget { fn is_htmlspanelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLSpanElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLSpanElementTypeId)) } } diff --git a/components/script/dom/htmlstyleelement.rs b/components/script/dom/htmlstyleelement.rs index cf0a19243b4..46c631fc730 100644 --- a/components/script/dom/htmlstyleelement.rs +++ b/components/script/dom/htmlstyleelement.rs @@ -26,7 +26,7 @@ pub struct HTMLStyleElement { impl HTMLStyleElementDerived for EventTarget { fn is_htmlstyleelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLStyleElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLStyleElementTypeId)) } } diff --git a/components/script/dom/htmltablecaptionelement.rs b/components/script/dom/htmltablecaptionelement.rs index 01f7d3a5731..e1ecf1914ce 100644 --- a/components/script/dom/htmltablecaptionelement.rs +++ b/components/script/dom/htmltablecaptionelement.rs @@ -22,7 +22,7 @@ pub struct HTMLTableCaptionElement { impl HTMLTableCaptionElementDerived for EventTarget { fn is_htmltablecaptionelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLTableCaptionElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLTableCaptionElementTypeId)) } } diff --git a/components/script/dom/htmltablecellelement.rs b/components/script/dom/htmltablecellelement.rs index 97d85976614..95bcebf5480 100644 --- a/components/script/dom/htmltablecellelement.rs +++ b/components/script/dom/htmltablecellelement.rs @@ -21,7 +21,7 @@ pub struct HTMLTableCellElement { impl HTMLTableCellElementDerived for EventTarget { fn is_htmltablecellelement(&self) -> bool { - match self.type_id { + match *self.type_id() { NodeTargetTypeId(ElementNodeTypeId(HTMLTableDataCellElementTypeId)) | NodeTargetTypeId(ElementNodeTypeId(HTMLTableHeaderCellElementTypeId)) => true, _ => false diff --git a/components/script/dom/htmltablecolelement.rs b/components/script/dom/htmltablecolelement.rs index 9954bc1b09b..03caf0e22b8 100644 --- a/components/script/dom/htmltablecolelement.rs +++ b/components/script/dom/htmltablecolelement.rs @@ -22,7 +22,7 @@ pub struct HTMLTableColElement { impl HTMLTableColElementDerived for EventTarget { fn is_htmltablecolelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLTableColElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLTableColElementTypeId)) } } diff --git a/components/script/dom/htmltabledatacellelement.rs b/components/script/dom/htmltabledatacellelement.rs index f4024581a49..11b8b117a2c 100644 --- a/components/script/dom/htmltabledatacellelement.rs +++ b/components/script/dom/htmltabledatacellelement.rs @@ -22,7 +22,7 @@ pub struct HTMLTableDataCellElement { impl HTMLTableDataCellElementDerived for EventTarget { fn is_htmltabledatacellelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLTableDataCellElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLTableDataCellElementTypeId)) } } diff --git a/components/script/dom/htmltableelement.rs b/components/script/dom/htmltableelement.rs index 8faa3c573ad..e33a44cdd58 100644 --- a/components/script/dom/htmltableelement.rs +++ b/components/script/dom/htmltableelement.rs @@ -26,7 +26,7 @@ pub struct HTMLTableElement { impl HTMLTableElementDerived for EventTarget { fn is_htmltableelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLTableElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLTableElementTypeId)) } } diff --git a/components/script/dom/htmltableheadercellelement.rs b/components/script/dom/htmltableheadercellelement.rs index 65db1e2c500..eae776a6903 100644 --- a/components/script/dom/htmltableheadercellelement.rs +++ b/components/script/dom/htmltableheadercellelement.rs @@ -22,7 +22,7 @@ pub struct HTMLTableHeaderCellElement { impl HTMLTableHeaderCellElementDerived for EventTarget { fn is_htmltableheadercellelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLTableHeaderCellElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLTableHeaderCellElementTypeId)) } } diff --git a/components/script/dom/htmltablerowelement.rs b/components/script/dom/htmltablerowelement.rs index 3552147fd96..45f1f06fe28 100644 --- a/components/script/dom/htmltablerowelement.rs +++ b/components/script/dom/htmltablerowelement.rs @@ -22,7 +22,7 @@ pub struct HTMLTableRowElement { impl HTMLTableRowElementDerived for EventTarget { fn is_htmltablerowelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLTableRowElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLTableRowElementTypeId)) } } diff --git a/components/script/dom/htmltablesectionelement.rs b/components/script/dom/htmltablesectionelement.rs index a4d9f3ad91b..f4a26c709ec 100644 --- a/components/script/dom/htmltablesectionelement.rs +++ b/components/script/dom/htmltablesectionelement.rs @@ -22,7 +22,7 @@ pub struct HTMLTableSectionElement { impl HTMLTableSectionElementDerived for EventTarget { fn is_htmltablesectionelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLTableSectionElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLTableSectionElementTypeId)) } } diff --git a/components/script/dom/htmltemplateelement.rs b/components/script/dom/htmltemplateelement.rs index dcb4812c5dc..9e959937ec6 100644 --- a/components/script/dom/htmltemplateelement.rs +++ b/components/script/dom/htmltemplateelement.rs @@ -22,7 +22,7 @@ pub struct HTMLTemplateElement { impl HTMLTemplateElementDerived for EventTarget { fn is_htmltemplateelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLTemplateElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLTemplateElementTypeId)) } } diff --git a/components/script/dom/htmltextareaelement.rs b/components/script/dom/htmltextareaelement.rs index 19a59a899e4..37fd0544f4f 100644 --- a/components/script/dom/htmltextareaelement.rs +++ b/components/script/dom/htmltextareaelement.rs @@ -27,7 +27,7 @@ pub struct HTMLTextAreaElement { impl HTMLTextAreaElementDerived for EventTarget { fn is_htmltextareaelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLTextAreaElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLTextAreaElementTypeId)) } } diff --git a/components/script/dom/htmltimeelement.rs b/components/script/dom/htmltimeelement.rs index be8dafbcfef..4cf70e20214 100644 --- a/components/script/dom/htmltimeelement.rs +++ b/components/script/dom/htmltimeelement.rs @@ -22,7 +22,7 @@ pub struct HTMLTimeElement { impl HTMLTimeElementDerived for EventTarget { fn is_htmltimeelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLTimeElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLTimeElementTypeId)) } } diff --git a/components/script/dom/htmltitleelement.rs b/components/script/dom/htmltitleelement.rs index 22b3a731002..5e7d8fbd1b3 100644 --- a/components/script/dom/htmltitleelement.rs +++ b/components/script/dom/htmltitleelement.rs @@ -25,7 +25,7 @@ pub struct HTMLTitleElement { impl HTMLTitleElementDerived for EventTarget { fn is_htmltitleelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLTitleElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLTitleElementTypeId)) } } diff --git a/components/script/dom/htmltrackelement.rs b/components/script/dom/htmltrackelement.rs index d73007310a6..f1ae254b365 100644 --- a/components/script/dom/htmltrackelement.rs +++ b/components/script/dom/htmltrackelement.rs @@ -22,7 +22,7 @@ pub struct HTMLTrackElement { impl HTMLTrackElementDerived for EventTarget { fn is_htmltrackelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLTrackElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLTrackElementTypeId)) } } diff --git a/components/script/dom/htmlulistelement.rs b/components/script/dom/htmlulistelement.rs index b23b979c05c..bd417aef8ca 100644 --- a/components/script/dom/htmlulistelement.rs +++ b/components/script/dom/htmlulistelement.rs @@ -22,7 +22,7 @@ pub struct HTMLUListElement { impl HTMLUListElementDerived for EventTarget { fn is_htmlulistelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLUListElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLUListElementTypeId)) } } diff --git a/components/script/dom/htmlunknownelement.rs b/components/script/dom/htmlunknownelement.rs index 15329bd453f..1194346baa9 100644 --- a/components/script/dom/htmlunknownelement.rs +++ b/components/script/dom/htmlunknownelement.rs @@ -22,7 +22,7 @@ pub struct HTMLUnknownElement { impl HTMLUnknownElementDerived for EventTarget { fn is_htmlunknownelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLUnknownElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLUnknownElementTypeId)) } } diff --git a/components/script/dom/htmlvideoelement.rs b/components/script/dom/htmlvideoelement.rs index c7626fc1987..6e7080aca68 100644 --- a/components/script/dom/htmlvideoelement.rs +++ b/components/script/dom/htmlvideoelement.rs @@ -22,7 +22,7 @@ pub struct HTMLVideoElement { impl HTMLVideoElementDerived for EventTarget { fn is_htmlvideoelement(&self) -> bool { - self.type_id == NodeTargetTypeId(ElementNodeTypeId(HTMLVideoElementTypeId)) + *self.type_id() == NodeTargetTypeId(ElementNodeTypeId(HTMLVideoElementTypeId)) } } diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 8ff8b29eca6..8a2179a0760 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -115,7 +115,7 @@ pub struct Node { impl NodeDerived for EventTarget { fn is_node(&self) -> bool { - match self.type_id { + match *self.type_id() { NodeTargetTypeId(_) => true, _ => false } diff --git a/components/script/dom/processinginstruction.rs b/components/script/dom/processinginstruction.rs index dc6631ad34e..ed5c9522aa0 100644 --- a/components/script/dom/processinginstruction.rs +++ b/components/script/dom/processinginstruction.rs @@ -23,7 +23,7 @@ pub struct ProcessingInstruction { impl ProcessingInstructionDerived for EventTarget { fn is_processinginstruction(&self) -> bool { - self.type_id == NodeTargetTypeId(ProcessingInstructionNodeTypeId) + *self.type_id() == NodeTargetTypeId(ProcessingInstructionNodeTypeId) } } diff --git a/components/script/dom/text.rs b/components/script/dom/text.rs index 7e251fd0b99..b8fea7c23cb 100644 --- a/components/script/dom/text.rs +++ b/components/script/dom/text.rs @@ -25,7 +25,7 @@ pub struct Text { impl TextDerived for EventTarget { fn is_text(&self) -> bool { - self.type_id == NodeTargetTypeId(TextNodeTypeId) + *self.type_id() == NodeTargetTypeId(TextNodeTypeId) } } diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs index 37afac6e1b6..e1b026699e8 100644 --- a/components/script/dom/xmlhttprequest.rs +++ b/components/script/dom/xmlhttprequest.rs @@ -680,7 +680,7 @@ impl Reflectable for XMLHttpRequest { impl XMLHttpRequestDerived for EventTarget { fn is_xmlhttprequest(&self) -> bool { - match self.type_id { + match *self.type_id() { XMLHttpRequestTargetTypeId(XMLHttpRequestTypeId) => true, _ => false } diff --git a/components/script/dom/xmlhttprequesteventtarget.rs b/components/script/dom/xmlhttprequesteventtarget.rs index 1b0954daf32..0b9c9e7a75f 100644 --- a/components/script/dom/xmlhttprequesteventtarget.rs +++ b/components/script/dom/xmlhttprequesteventtarget.rs @@ -32,7 +32,7 @@ impl XMLHttpRequestEventTarget { } impl XMLHttpRequestEventTargetDerived for EventTarget { fn is_xmlhttprequesteventtarget(&self) -> bool { - match self.type_id { + match *self.type_id() { XMLHttpRequestTargetTypeId(_) => true, _ => false } diff --git a/components/script/dom/xmlhttprequestupload.rs b/components/script/dom/xmlhttprequestupload.rs index cc686696534..7e11df328a8 100644 --- a/components/script/dom/xmlhttprequestupload.rs +++ b/components/script/dom/xmlhttprequestupload.rs @@ -38,6 +38,6 @@ impl Reflectable for XMLHttpRequestUpload { impl XMLHttpRequestUploadDerived for EventTarget { fn is_xmlhttprequestupload(&self) -> bool { - self.type_id == XMLHttpRequestTargetTypeId(XMLHttpRequestUploadTypeId) + *self.type_id() == XMLHttpRequestTargetTypeId(XMLHttpRequestUploadTypeId) } } From ad6649d1022890eb3ecc295e01ebd23fd974eef2 Mon Sep 17 00:00:00 2001 From: Tim Taubert Date: Sun, 12 Oct 2014 13:27:00 +0200 Subject: [PATCH 08/14] Privatize File --- components/script/dom/file.rs | 11 ++++++++--- components/script/dom/formdata.rs | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/components/script/dom/file.rs b/components/script/dom/file.rs index 69eaf491d1c..cb42537f63f 100644 --- a/components/script/dom/file.rs +++ b/components/script/dom/file.rs @@ -12,10 +12,11 @@ use servo_util::str::DOMString; #[jstraceable] #[must_root] +#[privatize] pub struct File { - pub blob: Blob, - pub name: DOMString, - pub type_: BlobType + blob: Blob, + name: DOMString, + type_: BlobType } impl File { @@ -34,6 +35,10 @@ impl File { global, FileBinding::Wrap) } + + pub fn name<'a>(&'a self) -> &'a DOMString { + &self.name + } } impl<'a> FileMethods for JSRef<'a, File> { diff --git a/components/script/dom/formdata.rs b/components/script/dom/formdata.rs index 1e2e1ca7049..140ff809125 100644 --- a/components/script/dom/formdata.rs +++ b/components/script/dom/formdata.rs @@ -113,7 +113,7 @@ impl PrivateFormDataHelpers for FormData { fn get_file_from_blob(&self, value: JSRef, filename: Option) -> Temporary { let global = self.global.root(); let f: Option> = FileCast::to_ref(value); - let name = filename.unwrap_or(f.map(|inner| inner.name.clone()).unwrap_or("blob".to_string())); + let name = filename.unwrap_or(f.map(|inner| inner.name().clone()).unwrap_or("blob".to_string())); File::new(&global.root_ref(), value, name) } } From d0addd36bb83d56071200b051e21ae3ad7417ac2 Mon Sep 17 00:00:00 2001 From: Tim Taubert Date: Sun, 12 Oct 2014 14:12:37 +0200 Subject: [PATCH 09/14] Privatize ProcessingInstruction --- components/script/dom/htmlserializer.rs | 4 ++-- components/script/dom/node.rs | 8 ++++---- components/script/dom/processinginstruction.rs | 13 +++++++++++-- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/components/script/dom/htmlserializer.rs b/components/script/dom/htmlserializer.rs index 07c5b3d7121..9e84900a9c0 100644 --- a/components/script/dom/htmlserializer.rs +++ b/components/script/dom/htmlserializer.rs @@ -93,9 +93,9 @@ fn serialize_text(text: JSRef, html: &mut String) { fn serialize_processing_instruction(processing_instruction: JSRef, html: &mut String) { html.push_str(""); } diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 8a2179a0760..68119f33d23 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -1496,8 +1496,8 @@ impl Node { }, ProcessingInstructionNodeTypeId => { let pi: JSRef = ProcessingInstructionCast::to_ref(node).unwrap(); - let pi = ProcessingInstruction::new(pi.target.clone(), - pi.characterdata.data().clone(), *document); + let pi = ProcessingInstruction::new(pi.target().clone(), + pi.characterdata().data().clone(), *document); NodeCast::from_temporary(pi) }, }.root(); @@ -1974,8 +1974,8 @@ impl<'a> NodeMethods for JSRef<'a, Node> { fn is_equal_processinginstruction(node: JSRef, other: JSRef) -> bool { let pi: JSRef = ProcessingInstructionCast::to_ref(node).unwrap(); let other_pi: JSRef = ProcessingInstructionCast::to_ref(other).unwrap(); - (pi.target == other_pi.target) && - (*pi.characterdata.data() == *other_pi.characterdata.data()) + (*pi.target() == *other_pi.target()) && + (*pi.characterdata().data() == *other_pi.characterdata().data()) } fn is_equal_characterdata(node: JSRef, other: JSRef) -> bool { let characterdata: JSRef = CharacterDataCast::to_ref(node).unwrap(); diff --git a/components/script/dom/processinginstruction.rs b/components/script/dom/processinginstruction.rs index ed5c9522aa0..19017ae9050 100644 --- a/components/script/dom/processinginstruction.rs +++ b/components/script/dom/processinginstruction.rs @@ -16,9 +16,10 @@ use servo_util::str::DOMString; /// An HTML processing instruction node. #[jstraceable] #[must_root] +#[privatize] pub struct ProcessingInstruction { - pub characterdata: CharacterData, - pub target: DOMString, + characterdata: CharacterData, + target: DOMString, } impl ProcessingInstructionDerived for EventTarget { @@ -39,6 +40,14 @@ impl ProcessingInstruction { Node::reflect_node(box ProcessingInstruction::new_inherited(target, data, document), document, ProcessingInstructionBinding::Wrap) } + + pub fn characterdata<'a>(&'a self) -> &'a CharacterData { + &self.characterdata + } + + pub fn target<'a>(&'a self) -> &'a DOMString { + &self.target + } } impl<'a> ProcessingInstructionMethods for JSRef<'a, ProcessingInstruction> { From 88252968690511cc8d06ece32ded42f915d41d09 Mon Sep 17 00:00:00 2001 From: Tim Taubert Date: Sun, 12 Oct 2014 23:29:52 +0200 Subject: [PATCH 10/14] Privatize Document --- components/script/dom/browsercontext.rs | 2 +- components/script/dom/document.rs | 26 +++++++++++++++++----- components/script/dom/domimplementation.rs | 6 ++--- components/script/dom/element.rs | 4 ++-- components/script/dom/htmlimageelement.rs | 2 +- components/script/dom/node.rs | 16 ++++++------- components/script/dom/range.rs | 2 +- components/script/dom/treewalker.rs | 2 +- 8 files changed, 38 insertions(+), 22 deletions(-) diff --git a/components/script/dom/browsercontext.rs b/components/script/dom/browsercontext.rs index 78b940aa240..9f6041710e3 100644 --- a/components/script/dom/browsercontext.rs +++ b/components/script/dom/browsercontext.rs @@ -39,7 +39,7 @@ impl BrowserContext { pub fn active_window(&self) -> Temporary { let doc = self.active_document().root(); - Temporary::new(doc.window.clone()) + Temporary::new(doc.window().clone()) } pub fn window_proxy(&self) -> *mut JSObject { diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index c67604942da..f37a8feb2f6 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -62,7 +62,7 @@ use url::Url; use std::collections::hashmap::HashMap; use std::ascii::StrAsciiExt; -use std::cell::{Cell, RefCell}; +use std::cell::{Cell, Ref, RefCell}; use std::default::Default; use time; @@ -75,16 +75,17 @@ pub enum IsHTMLDocument { #[jstraceable] #[must_root] +#[privatize] pub struct Document { - pub node: Node, + node: Node, reflector_: Reflector, - pub window: JS, + window: JS, idmap: RefCell>>>, implementation: MutNullableJS, content_type: DOMString, last_modified: RefCell>, - pub encoding_name: RefCell, - pub is_html_document: bool, + encoding_name: RefCell, + is_html_document: bool, url: Url, quirks_mode: Cell, images: MutNullableJS, @@ -343,6 +344,21 @@ impl Document { node.set_owner_doc(*document); Temporary::from_rooted(*document) } + + #[inline] + pub fn window<'a>(&'a self) -> &'a JS { + &self.window + } + + #[inline] + pub fn encoding_name(&self) -> Ref { + self.encoding_name.borrow() + } + + #[inline] + pub fn is_html_document(&self) -> bool { + self.is_html_document + } } impl Reflectable for Document { diff --git a/components/script/dom/domimplementation.rs b/components/script/dom/domimplementation.rs index 39c39454e60..7e23d86f2bc 100644 --- a/components/script/dom/domimplementation.rs +++ b/components/script/dom/domimplementation.rs @@ -39,7 +39,7 @@ impl DOMImplementation { } pub fn new(document: JSRef) -> Temporary { - let window = document.window.root(); + let window = document.window().root(); reflect_dom_object(box DOMImplementation::new_inherited(document), &Window(*window), DOMImplementationBinding::Wrap) @@ -73,7 +73,7 @@ impl<'a> DOMImplementationMethods for JSRef<'a, DOMImplementation> { fn CreateDocument(self, namespace: Option, qname: DOMString, maybe_doctype: Option>) -> Fallible> { let doc = self.document.root(); - let win = doc.window.root(); + let win = doc.window().root(); // Step 1. let doc = Document::new(*win, None, NonHTMLDocument, None).root(); @@ -118,7 +118,7 @@ impl<'a> DOMImplementationMethods for JSRef<'a, DOMImplementation> { // http://dom.spec.whatwg.org/#dom-domimplementation-createhtmldocument fn CreateHTMLDocument(self, title: Option) -> Temporary { let document = self.document.root(); - let win = document.window.root(); + let win = document.window().root(); // Step 1-2. let doc = Document::new(*win, None, HTMLDocument, None).root(); diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 580b79276a6..8a929bd913a 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -268,7 +268,7 @@ impl LayoutElementHelpers for JS { } let node: JS = self.transmute_copy(); let owner_doc = node.owner_doc_for_layout().unsafe_get(); - (*owner_doc).is_html_document + (*owner_doc).is_html_document() } } @@ -631,7 +631,7 @@ impl<'a> ElementMethods for JSRef<'a, Element> { let node: JSRef = NodeCast::from_ref(self); node.owner_doc().root() }; - let window = doc.window.root(); + let window = doc.window().root(); let list = NamedNodeMap::new(*window, self); self.attr_list.assign(Some(list)); } diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs index e9c916e2eec..0a616d9585d 100644 --- a/components/script/dom/htmlimageelement.rs +++ b/components/script/dom/htmlimageelement.rs @@ -48,7 +48,7 @@ impl<'a> PrivateHTMLImageElementHelpers for JSRef<'a, HTMLImageElement> { fn update_image(self, value: Option<(DOMString, &Url)>) { let node: JSRef = NodeCast::from_ref(self); let document = node.owner_doc().root(); - let window = document.window.root(); + let window = document.window().root(); let image_cache = &window.image_cache_task; match value { None => { diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 68119f33d23..448d50620fb 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -741,7 +741,7 @@ impl<'a> NodeHelpers<'a> for JSRef<'a, Node> { } fn is_in_html_doc(self) -> bool { - self.owner_doc().root().is_html_document + self.owner_doc().root().is_html_document() } fn children(self) -> AbstractNodeChildrenIterator<'a> { @@ -1112,7 +1112,7 @@ impl Node { document: JSRef, wrap_fn: extern "Rust" fn(*mut JSContext, &GlobalRef, Box) -> Temporary) -> Temporary { - let window = document.window.root(); + let window = document.window().root(); reflect_dom_object(node, &global::Window(*window), wrap_fn) } @@ -1474,11 +1474,11 @@ impl Node { }, DocumentNodeTypeId => { let document: JSRef = DocumentCast::to_ref(node).unwrap(); - let is_html_doc = match document.is_html_document { + let is_html_doc = match document.is_html_document() { true => HTMLDocument, false => NonHTMLDocument }; - let window = document.window.root(); + let window = document.window().root(); let document = Document::new(*window, Some(document.url().clone()), is_html_doc, None); NodeCast::from_temporary(document) @@ -1516,7 +1516,7 @@ impl Node { DocumentNodeTypeId => { let node_doc: JSRef = DocumentCast::to_ref(node).unwrap(); let copy_doc: JSRef = DocumentCast::to_ref(*copy).unwrap(); - copy_doc.set_encoding_name(node_doc.encoding_name.borrow().clone()); + copy_doc.set_encoding_name(node_doc.encoding_name().clone()); copy_doc.set_quirks_mode(node_doc.quirks_mode()); }, ElementNodeTypeId(..) => { @@ -1524,7 +1524,7 @@ impl Node { let copy_elem: JSRef = ElementCast::to_ref(*copy).unwrap(); // FIXME: https://github.com/mozilla/servo/issues/1737 - let window = document.window.root(); + let window = document.window().root(); for attr in node_elem.attrs.borrow().iter().map(|attr| attr.root()) { copy_elem.attrs.borrow_mut().push_unrooted( &Attr::new(*window, @@ -1667,7 +1667,7 @@ impl<'a> NodeMethods for JSRef<'a, Node> { } let doc = self.owner_doc().root(); - let window = doc.window.root(); + let window = doc.window().root(); let child_list = NodeList::new_child_list(*window, self); self.child_list.assign(Some(child_list)); self.child_list.get().unwrap() @@ -2125,7 +2125,7 @@ pub fn document_from_node(derived: JSRef) -> Tempora pub fn window_from_node(derived: JSRef) -> Temporary { let document = document_from_node(derived).root(); - Temporary::new(document.window.clone()) + Temporary::new(document.window().clone()) } impl<'a> VirtualMethods for JSRef<'a, Node> { diff --git a/components/script/dom/range.rs b/components/script/dom/range.rs index 0fe0c7f1751..a611604e6bb 100644 --- a/components/script/dom/range.rs +++ b/components/script/dom/range.rs @@ -26,7 +26,7 @@ impl Range { } pub fn new(document: JSRef) -> Temporary { - let window = document.window.root(); + let window = document.window().root(); reflect_dom_object(box Range::new_inherited(), &Window(*window), RangeBinding::Wrap) diff --git a/components/script/dom/treewalker.rs b/components/script/dom/treewalker.rs index bc12f165595..f9100dd15be 100644 --- a/components/script/dom/treewalker.rs +++ b/components/script/dom/treewalker.rs @@ -49,7 +49,7 @@ impl TreeWalker { root_node: JSRef, what_to_show: u32, filter: Filter) -> Temporary { - let window = document.window.root(); + let window = document.window().root(); reflect_dom_object(box TreeWalker::new_inherited(root_node, what_to_show, filter), &Window(*window), TreeWalkerBinding::Wrap) From da7590d108be2f000bae2c00f9ea721ebd11f626 Mon Sep 17 00:00:00 2001 From: Tim Taubert Date: Mon, 13 Oct 2014 00:06:48 +0200 Subject: [PATCH 11/14] Privatize Window --- components/script/dom/bindings/global.rs | 2 +- components/script/dom/bindings/utils.rs | 2 +- components/script/dom/htmlformelement.rs | 4 +- components/script/dom/htmliframeelement.rs | 2 +- components/script/dom/htmlimageelement.rs | 2 +- components/script/dom/htmlobjectelement.rs | 2 +- components/script/dom/performancetiming.rs | 4 +- components/script/dom/window.rs | 62 ++++++++++++++++------ components/script/page.rs | 2 +- 9 files changed, 57 insertions(+), 25 deletions(-) diff --git a/components/script/dom/bindings/global.rs b/components/script/dom/bindings/global.rs index b4b7d85452b..a1933db4aa5 100644 --- a/components/script/dom/bindings/global.rs +++ b/components/script/dom/bindings/global.rs @@ -83,7 +83,7 @@ impl<'a> GlobalRef<'a> { /// thread. pub fn script_chan<'b>(&'b self) -> &'b ScriptChan { match *self { - Window(ref window) => &window.script_chan, + Window(ref window) => window.script_chan(), Worker(ref worker) => worker.script_chan(), } } diff --git a/components/script/dom/bindings/utils.rs b/components/script/dom/bindings/utils.rs index 834f274096f..082172a1f60 100644 --- a/components/script/dom/bindings/utils.rs +++ b/components/script/dom/bindings/utils.rs @@ -660,7 +660,7 @@ pub extern fn outerize_global(_cx: *mut JSContext, obj: JSHandleObject) -> *mut IDLInterface::get_prototype_depth(None::)) .unwrap() .root(); - win.browser_context.borrow().as_ref().unwrap().window_proxy() + win.browser_context().as_ref().unwrap().window_proxy() } } diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs index 825805703e4..8bc0b8ede8f 100644 --- a/components/script/dom/htmlformelement.rs +++ b/components/script/dom/htmlformelement.rs @@ -218,8 +218,8 @@ impl<'a> HTMLFormElementHelpers for JSRef<'a, HTMLFormElement> { } // This is wrong. https://html.spec.whatwg.org/multipage/forms.html#planned-navigation - let ScriptChan(ref script_chan) = win.script_chan; - script_chan.send(TriggerLoadMsg(win.page.id, load_data)); + let ScriptChan(ref script_chan) = *win.script_chan(); + script_chan.send(TriggerLoadMsg(win.page().id, load_data)); } fn get_form_dataset(self, _submitter: Option) -> Vec { diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs index 90edb8201c1..77bbfcf9013 100644 --- a/components/script/dom/htmliframeelement.rs +++ b/components/script/dom/htmliframeelement.rs @@ -171,7 +171,7 @@ impl<'a> HTMLIFrameElementMethods for JSRef<'a, HTMLIFrameElement> { fn GetContentWindow(self) -> Option> { self.size.get().and_then(|size| { let window = window_from_node(self).root(); - let children = window.page.children.borrow(); + let children = window.page().children.borrow(); let child = children.iter().find(|child| { child.subpage_id.unwrap() == size.subpage_id }); diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs index 0a616d9585d..d8a4f9d67f6 100644 --- a/components/script/dom/htmlimageelement.rs +++ b/components/script/dom/htmlimageelement.rs @@ -49,7 +49,7 @@ impl<'a> PrivateHTMLImageElementHelpers for JSRef<'a, HTMLImageElement> { let node: JSRef = NodeCast::from_ref(self); let document = node.owner_doc().root(); let window = document.window().root(); - let image_cache = &window.image_cache_task; + let image_cache = window.image_cache_task(); match value { None => { *self.image.borrow_mut() = None; diff --git a/components/script/dom/htmlobjectelement.rs b/components/script/dom/htmlobjectelement.rs index b059257830f..d7a073150ef 100644 --- a/components/script/dom/htmlobjectelement.rs +++ b/components/script/dom/htmlobjectelement.rs @@ -109,7 +109,7 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLObjectElement> { if "data" == name.as_slice() { let window = window_from_node(*self).root(); - self.process_data_url(window.image_cache_task.clone()); + self.process_data_url(window.image_cache_task().clone()); } } } diff --git a/components/script/dom/performancetiming.rs b/components/script/dom/performancetiming.rs index 30c2a57462f..0c8b6a60008 100644 --- a/components/script/dom/performancetiming.rs +++ b/components/script/dom/performancetiming.rs @@ -30,8 +30,8 @@ impl PerformanceTiming { #[allow(unrooted_must_root)] pub fn new(window: JSRef) -> Temporary { - let timing = PerformanceTiming::new_inherited(window.navigationStart, - window.navigationStartPrecise); + let timing = PerformanceTiming::new_inherited(window.navigation_start(), + window.navigation_start_precise()); reflect_dom_object(box timing, &global::Window(window), PerformanceTimingBinding::Wrap) } diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index f3edfc04943..9a7eeef11c0 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -40,7 +40,7 @@ use url::{Url, UrlParser}; use libc; use serialize::base64::{FromBase64, ToBase64, STANDARD}; use std::collections::hashmap::HashMap; -use std::cell::{Cell, RefCell}; +use std::cell::{Cell, Ref, RefCell}; use std::cmp; use std::comm::{channel, Sender}; use std::comm::Select; @@ -57,9 +57,10 @@ use time; pub struct TimerId(i32); #[jstraceable] +#[privatize] pub struct TimerHandle { handle: TimerId, - pub data: TimerData, + data: TimerData, cancel_chan: Option>, } @@ -78,22 +79,23 @@ impl TimerHandle { #[jstraceable] #[must_root] +#[privatize] pub struct Window { eventtarget: EventTarget, - pub script_chan: ScriptChan, - pub control_chan: ScriptControlChan, + script_chan: ScriptChan, + control_chan: ScriptControlChan, console: MutNullableJS, location: MutNullableJS, navigator: MutNullableJS, - pub image_cache_task: ImageCacheTask, - pub active_timers: RefCell>, + image_cache_task: ImageCacheTask, + active_timers: RefCell>, next_timer_handle: Cell, - pub compositor: Box, - pub browser_context: RefCell>, - pub page: Rc, + compositor: Box, + browser_context: RefCell>, + page: Rc, performance: MutNullableJS, - pub navigationStart: u64, - pub navigationStartPrecise: f64, + navigation_start: u64, + navigation_start_precise: f64, screen: MutNullableJS, } @@ -103,9 +105,38 @@ impl Window { (*js_info.as_ref().unwrap().js_context).ptr } + pub fn script_chan<'a>(&'a self) -> &'a ScriptChan { + &self.script_chan + } + + pub fn control_chan<'a>(&'a self) -> &'a ScriptControlChan { + &self.control_chan + } + + pub fn image_cache_task<'a>(&'a self) -> &'a ImageCacheTask { + &self.image_cache_task + } + + pub fn compositor<'a>(&'a self) -> &'a ScriptListener+'static { + &*self.compositor + } + + pub fn browser_context(&self) -> Ref> { + self.browser_context.borrow() + } + pub fn page<'a>(&'a self) -> &'a Page { &*self.page } + + pub fn navigation_start(&self) -> u64 { + self.navigation_start + } + + pub fn navigation_start_precise(&self) -> f64 { + self.navigation_start_precise + } + pub fn get_url(&self) -> Url { self.page().get_url() } @@ -124,9 +155,10 @@ impl Drop for Window { // (ie. function value to invoke and all arguments to pass // to the function when calling it) #[jstraceable] +#[privatize] pub struct TimerData { - pub is_interval: bool, - pub funval: JSVal, + is_interval: bool, + funval: JSVal, } // http://www.whatwg.org/html/#atob @@ -543,8 +575,8 @@ impl Window { next_timer_handle: Cell::new(0), browser_context: RefCell::new(None), performance: Default::default(), - navigationStart: time::get_time().sec as u64, - navigationStartPrecise: time::precise_time_s(), + navigation_start: time::get_time().sec as u64, + navigation_start_precise: time::precise_time_s(), screen: Default::default(), }; diff --git a/components/script/page.rs b/components/script/page.rs index f8a2248d447..90f07955bfb 100644 --- a/components/script/page.rs +++ b/components/script/page.rs @@ -167,7 +167,7 @@ impl Page { if self.damaged.get() { let frame = self.frame(); let window = frame.as_ref().unwrap().window.root(); - self.reflow(goal, window.control_chan.clone(), &*window.compositor); + self.reflow(goal, window.control_chan().clone(), window.compositor()); } else { self.avoided_reflows.set(self.avoided_reflows.get() + 1); } From 28061b1c913c432d46e935e632862e0164d2cbfd Mon Sep 17 00:00:00 2001 From: Tim Taubert Date: Mon, 13 Oct 2014 00:32:48 +0200 Subject: [PATCH 12/14] Privatize Node --- components/layout/util.rs | 6 +++--- components/layout/wrapper.rs | 4 ++-- components/script/dom/node.rs | 20 ++++++++++++++++++-- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/components/layout/util.rs b/components/layout/util.rs index 198607473f1..9bb1a3ffa1f 100644 --- a/components/layout/util.rs +++ b/components/layout/util.rs @@ -78,20 +78,20 @@ pub trait LayoutDataAccess { impl<'ln> LayoutDataAccess for LayoutNode<'ln> { #[inline(always)] unsafe fn borrow_layout_data_unchecked(&self) -> *const Option { - mem::transmute(self.get().layout_data.borrow_unchecked()) + mem::transmute(self.get().layout_data_unchecked()) } #[inline(always)] fn borrow_layout_data<'a>(&'a self) -> Ref<'a,Option> { unsafe { - mem::transmute(self.get().layout_data.borrow()) + mem::transmute(self.get().layout_data()) } } #[inline(always)] fn mutate_layout_data<'a>(&'a self) -> RefMut<'a,Option> { unsafe { - mem::transmute(self.get().layout_data.borrow_mut()) + mem::transmute(self.get().layout_data_mut()) } } } diff --git a/components/layout/wrapper.rs b/components/layout/wrapper.rs index f7b14cff10c..2aac0411c4a 100644 --- a/components/layout/wrapper.rs +++ b/components/layout/wrapper.rs @@ -721,7 +721,7 @@ impl<'ln> ThreadSafeLayoutNode<'ln> { #[inline(always)] pub fn borrow_layout_data<'a>(&'a self) -> Ref<'a,Option> { unsafe { - mem::transmute(self.get().layout_data.borrow()) + mem::transmute(self.get().layout_data()) } } @@ -729,7 +729,7 @@ impl<'ln> ThreadSafeLayoutNode<'ln> { #[inline(always)] pub fn mutate_layout_data<'a>(&'a self) -> RefMut<'a,Option> { unsafe { - mem::transmute(self.get().layout_data.borrow_mut()) + mem::transmute(self.get().layout_data_mut()) } } diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 448d50620fb..81946a2738e 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -73,9 +73,10 @@ use uuid; /// An HTML node. #[jstraceable] #[must_root] +#[privatize] pub struct Node { /// The JavaScript reflector for this node. - pub eventtarget: EventTarget, + eventtarget: EventTarget, /// The type of node that this is. type_id: NodeTypeId, @@ -108,7 +109,7 @@ pub struct Node { /// /// Must be sent back to the layout task to be destroyed when this /// node is finalized. - pub layout_data: LayoutDataRef, + layout_data: LayoutDataRef, unique_id: RefCell, } @@ -1149,6 +1150,21 @@ impl Node { &self.eventtarget } + #[inline] + pub fn layout_data(&self) -> Ref> { + self.layout_data.borrow() + } + + #[inline] + pub fn layout_data_mut(&self) -> RefMut> { + self.layout_data.borrow_mut() + } + + #[inline] + pub unsafe fn layout_data_unchecked(&self) -> *const Option { + self.layout_data.borrow_unchecked() + } + // http://dom.spec.whatwg.org/#concept-node-adopt pub fn adopt(node: JSRef, document: JSRef) { // Step 1. From cd9de0508813a763a3a26da4458229be1471276c Mon Sep 17 00:00:00 2001 From: Tim Taubert Date: Mon, 13 Oct 2014 10:43:24 +0200 Subject: [PATCH 13/14] Privatize Event --- components/script/dom/customevent.rs | 2 +- components/script/dom/event.rs | 80 ++++++++++++++++++++---- components/script/dom/eventdispatcher.rs | 42 ++++++------- components/script/dom/eventtarget.rs | 2 +- components/script/dom/messageevent.rs | 2 +- components/script/dom/mouseevent.rs | 2 +- components/script/dom/progressevent.rs | 2 +- components/script/dom/uievent.rs | 2 +- 8 files changed, 95 insertions(+), 39 deletions(-) diff --git a/components/script/dom/customevent.rs b/components/script/dom/customevent.rs index 1366e6568a8..b6549f28a16 100644 --- a/components/script/dom/customevent.rs +++ b/components/script/dom/customevent.rs @@ -27,7 +27,7 @@ pub struct CustomEvent { impl CustomEventDerived for Event { fn is_customevent(&self) -> bool { - self.type_id == CustomEventTypeId + *self.type_id() == CustomEventTypeId } } diff --git a/components/script/dom/event.rs b/components/script/dom/event.rs index 085a30baad4..804193103f2 100644 --- a/components/script/dom/event.rs +++ b/components/script/dom/event.rs @@ -37,21 +37,22 @@ pub enum EventTypeId { #[jstraceable] #[must_root] +#[privatize] pub struct Event { - pub type_id: EventTypeId, + type_id: EventTypeId, reflector_: Reflector, - pub current_target: MutNullableJS, - pub target: MutNullableJS, + current_target: MutNullableJS, + target: MutNullableJS, type_: RefCell, - pub phase: Cell, - pub canceled: Cell, - pub stop_propagation: Cell, - pub stop_immediate: Cell, - pub cancelable: Cell, - pub bubbles: Cell, - pub trusted: Cell, - pub dispatching: Cell, - pub initialized: Cell, + phase: Cell, + canceled: Cell, + stop_propagation: Cell, + stop_immediate: Cell, + cancelable: Cell, + bubbles: Cell, + trusted: Cell, + dispatching: Cell, + initialized: Cell, timestamp: u64, } @@ -96,6 +97,61 @@ impl Event { init: &EventBinding::EventInit) -> Fallible> { Ok(Event::new(global, type_, init.bubbles, init.cancelable)) } + + #[inline] + pub fn type_id<'a>(&'a self) -> &'a EventTypeId { + &self.type_id + } + + #[inline] + pub fn clear_current_target(&self) { + self.current_target.clear(); + } + + #[inline] + pub fn set_current_target(&self, val: JSRef) { + self.current_target.assign(Some(val)); + } + + #[inline] + pub fn set_target(&self, val: JSRef) { + self.target.assign(Some(val)); + } + + #[inline] + pub fn set_phase(&self, val: EventPhase) { + self.phase.set(val) + } + + #[inline] + pub fn stop_propagation(&self) -> bool { + self.stop_propagation.get() + } + + #[inline] + pub fn stop_immediate(&self) -> bool { + self.stop_immediate.get() + } + + #[inline] + pub fn bubbles(&self) -> bool { + self.bubbles.get() + } + + #[inline] + pub fn dispatching(&self) -> bool { + self.dispatching.get() + } + + #[inline] + pub fn set_dispatching(&self, val: bool) { + self.dispatching.set(val) + } + + #[inline] + pub fn initialized(&self) -> bool { + self.initialized.get() + } } impl<'a> EventMethods for JSRef<'a, Event> { diff --git a/components/script/dom/eventdispatcher.rs b/components/script/dom/eventdispatcher.rs index 54f2814db79..bdfb98c7bae 100644 --- a/components/script/dom/eventdispatcher.rs +++ b/components/script/dom/eventdispatcher.rs @@ -5,7 +5,7 @@ use dom::bindings::callback::ReportExceptions; use dom::bindings::codegen::Bindings::EventBinding::EventMethods; use dom::bindings::codegen::InheritTypes::{EventTargetCast, NodeCast, NodeDerived}; -use dom::bindings::js::{JS, JSRef, OptionalSettable, OptionalRootable, Root}; +use dom::bindings::js::{JS, JSRef, OptionalRootable, Root}; use dom::eventtarget::{Capturing, Bubbling, EventTarget}; use dom::event::{Event, PhaseAtTarget, PhaseNone, PhaseBubbling, PhaseCapturing}; use dom::node::{Node, NodeHelpers}; @@ -15,13 +15,13 @@ use dom::virtualmethods::vtable_for; pub fn dispatch_event<'a, 'b>(target: JSRef<'a, EventTarget>, pseudo_target: Option>, event: JSRef) -> bool { - assert!(!event.dispatching.get()); + assert!(!event.dispatching()); - event.target.assign(Some(match pseudo_target { + event.set_target(match pseudo_target { Some(pseudo_target) => pseudo_target, None => target.clone(), - })); - event.dispatching.set(true); + }); + event.set_dispatching(true); let type_ = event.Type(); @@ -36,7 +36,7 @@ pub fn dispatch_event<'a, 'b>(target: JSRef<'a, EventTarget>, vec!() }; - event.phase.set(PhaseCapturing); + event.set_phase(PhaseCapturing); //FIXME: The "callback this value" should be currentTarget @@ -44,17 +44,17 @@ pub fn dispatch_event<'a, 'b>(target: JSRef<'a, EventTarget>, for cur_target in chain.as_slice().iter().rev() { let stopped = match cur_target.get_listeners_for(type_.as_slice(), Capturing) { Some(listeners) => { - event.current_target.assign(Some(cur_target.deref().clone())); + event.set_current_target(cur_target.deref().clone()); for listener in listeners.iter() { // Explicitly drop any exception on the floor. let _ = listener.HandleEvent_(**cur_target, event, ReportExceptions); - if event.stop_immediate.get() { + if event.stop_immediate() { break; } } - event.stop_propagation.get() + event.stop_propagation() } None => false }; @@ -65,9 +65,9 @@ pub fn dispatch_event<'a, 'b>(target: JSRef<'a, EventTarget>, } /* at target */ - if !event.stop_propagation.get() { - event.phase.set(PhaseAtTarget); - event.current_target.assign(Some(target.clone())); + if !event.stop_propagation() { + event.set_phase(PhaseAtTarget); + event.set_current_target(target.clone()); let opt_listeners = target.get_listeners(type_.as_slice()); for listeners in opt_listeners.iter() { @@ -75,7 +75,7 @@ pub fn dispatch_event<'a, 'b>(target: JSRef<'a, EventTarget>, // Explicitly drop any exception on the floor. let _ = listener.HandleEvent_(target, event, ReportExceptions); - if event.stop_immediate.get() { + if event.stop_immediate() { break; } } @@ -83,23 +83,23 @@ pub fn dispatch_event<'a, 'b>(target: JSRef<'a, EventTarget>, } /* bubbling */ - if event.bubbles.get() && !event.stop_propagation.get() { - event.phase.set(PhaseBubbling); + if event.bubbles() && !event.stop_propagation() { + event.set_phase(PhaseBubbling); for cur_target in chain.iter() { let stopped = match cur_target.get_listeners_for(type_.as_slice(), Bubbling) { Some(listeners) => { - event.current_target.assign(Some(cur_target.deref().clone())); + event.set_current_target(cur_target.deref().clone()); for listener in listeners.iter() { // Explicitly drop any exception on the floor. let _ = listener.HandleEvent_(**cur_target, event, ReportExceptions); - if event.stop_immediate.get() { + if event.stop_immediate() { break; } } - event.stop_propagation.get() + event.stop_propagation() } None => false }; @@ -131,9 +131,9 @@ pub fn dispatch_event<'a, 'b>(target: JSRef<'a, EventTarget>, let _ = chain.pop(); } - event.dispatching.set(false); - event.phase.set(PhaseNone); - event.current_target.clear(); + event.set_dispatching(false); + event.set_phase(PhaseNone); + event.clear_current_target(); !event.DefaultPrevented() } diff --git a/components/script/dom/eventtarget.rs b/components/script/dom/eventtarget.rs index d2bb567c8ca..e51272cff6b 100644 --- a/components/script/dom/eventtarget.rs +++ b/components/script/dom/eventtarget.rs @@ -128,7 +128,7 @@ impl<'a> EventTargetHelpers for JSRef<'a, EventTarget> { fn dispatch_event_with_target(self, target: Option>, event: JSRef) -> Fallible { - if event.dispatching.get() || !event.initialized.get() { + if event.dispatching() || !event.initialized() { return Err(InvalidState); } Ok(dispatch_event(self, target, event)) diff --git a/components/script/dom/messageevent.rs b/components/script/dom/messageevent.rs index da9d5fe13c6..0f21a0b8096 100644 --- a/components/script/dom/messageevent.rs +++ b/components/script/dom/messageevent.rs @@ -30,7 +30,7 @@ pub struct MessageEvent { impl MessageEventDerived for Event { fn is_messageevent(&self) -> bool { - self.type_id == MessageEventTypeId + *self.type_id() == MessageEventTypeId } } diff --git a/components/script/dom/mouseevent.rs b/components/script/dom/mouseevent.rs index 1eb18d4281f..2ecfaa06ca5 100644 --- a/components/script/dom/mouseevent.rs +++ b/components/script/dom/mouseevent.rs @@ -38,7 +38,7 @@ pub struct MouseEvent { impl MouseEventDerived for Event { fn is_mouseevent(&self) -> bool { - self.type_id == MouseEventTypeId + *self.type_id() == MouseEventTypeId } } diff --git a/components/script/dom/progressevent.rs b/components/script/dom/progressevent.rs index a8af71ab655..52d1f6f35ff 100644 --- a/components/script/dom/progressevent.rs +++ b/components/script/dom/progressevent.rs @@ -25,7 +25,7 @@ pub struct ProgressEvent { impl ProgressEventDerived for Event { fn is_progressevent(&self) -> bool { - self.type_id == ProgressEventTypeId + *self.type_id() == ProgressEventTypeId } } diff --git a/components/script/dom/uievent.rs b/components/script/dom/uievent.rs index 126ae4d6432..d5dd2cfc4df 100644 --- a/components/script/dom/uievent.rs +++ b/components/script/dom/uievent.rs @@ -30,7 +30,7 @@ pub struct UIEvent { impl UIEventDerived for Event { fn is_uievent(&self) -> bool { - self.type_id == UIEventTypeId + *self.type_id() == UIEventTypeId } } From cbe50f1f149943212aa722b411d275614fbe9a5d Mon Sep 17 00:00:00 2001 From: Tim Taubert Date: Mon, 13 Oct 2014 11:11:05 +0200 Subject: [PATCH 14/14] Privatize Element --- components/layout/wrapper.rs | 14 +++--- components/script/dom/element.rs | 47 ++++++++++++++++---- components/script/dom/htmlcollection.rs | 10 ++--- components/script/dom/htmlfieldsetelement.rs | 2 +- components/script/dom/htmloptionelement.rs | 2 +- components/script/dom/htmlserializer.rs | 14 +++--- components/script/dom/namednodemap.rs | 4 +- components/script/dom/node.rs | 20 ++++----- 8 files changed, 72 insertions(+), 41 deletions(-) diff --git a/components/layout/wrapper.rs b/components/layout/wrapper.rs index 2aac0411c4a..e7ace898d01 100644 --- a/components/layout/wrapper.rs +++ b/components/layout/wrapper.rs @@ -425,7 +425,7 @@ pub struct LayoutElement<'le> { impl<'le> LayoutElement<'le> { pub fn style_attribute(&self) -> &'le Option { let style: &Option = unsafe { - let style: &RefCell> = &self.element.style_attribute; + let style: &RefCell> = self.element.style_attribute(); // cast to the direct reference to T placed on the head of RefCell mem::transmute(style) }; @@ -436,12 +436,12 @@ impl<'le> LayoutElement<'le> { impl<'le> TElement<'le> for LayoutElement<'le> { #[inline] fn get_local_name(self) -> &'le Atom { - &self.element.local_name + self.element.local_name() } #[inline] fn get_namespace(self) -> &'le Namespace { - &self.element.namespace + self.element.namespace() } #[inline] @@ -456,7 +456,7 @@ impl<'le> TElement<'le> for LayoutElement<'le> { fn get_link(self) -> Option<&'le str> { // FIXME: This is HTML only. - match self.element.node.type_id_for_layout() { + match self.element.node().type_id_for_layout() { // http://www.whatwg.org/specs/web-apps/current-work/multipage/selectors.html# // selector-link ElementNodeTypeId(HTMLAnchorElementTypeId) | @@ -470,7 +470,7 @@ impl<'le> TElement<'le> for LayoutElement<'le> { fn get_hover_state(self) -> bool { unsafe { - self.element.node.get_hover_state_for_layout() + self.element.node().get_hover_state_for_layout() } } @@ -481,13 +481,13 @@ impl<'le> TElement<'le> for LayoutElement<'le> { fn get_disabled_state(self) -> bool { unsafe { - self.element.node.get_disabled_state_for_layout() + self.element.node().get_disabled_state_for_layout() } } fn get_enabled_state(self) -> bool { unsafe { - self.element.node.get_enabled_state_for_layout() + self.element.node().get_enabled_state_for_layout() } } diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 8a929bd913a..6ff62874731 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -35,7 +35,7 @@ use servo_util::namespace; use servo_util::str::DOMString; use std::ascii::StrAsciiExt; -use std::cell::RefCell; +use std::cell::{Ref, RefMut, RefCell}; use std::default::Default; use std::mem; use std::slice::Items; @@ -44,14 +44,15 @@ use url::UrlParser; #[jstraceable] #[must_root] +#[privatize] pub struct Element { - pub node: Node, - pub local_name: Atom, - pub namespace: Namespace, - pub prefix: Option, - pub attrs: RefCell>>, - pub style_attribute: RefCell>, - pub attr_list: MutNullableJS, + node: Node, + local_name: Atom, + namespace: Namespace, + prefix: Option, + attrs: RefCell>>, + style_attribute: RefCell>, + attr_list: MutNullableJS, class_list: MutNullableJS, } @@ -171,6 +172,36 @@ impl Element { pub fn node<'a>(&'a self) -> &'a Node { &self.node } + + #[inline] + pub fn local_name<'a>(&'a self) -> &'a Atom { + &self.local_name + } + + #[inline] + pub fn namespace<'a>(&'a self) -> &'a Namespace { + &self.namespace + } + + #[inline] + pub fn prefix<'a>(&'a self) -> &'a Option { + &self.prefix + } + + #[inline] + pub fn attrs(&self) -> Ref>> { + self.attrs.borrow() + } + + #[inline] + pub fn attrs_mut(&self) -> RefMut>> { + self.attrs.borrow_mut() + } + + #[inline] + pub fn style_attribute<'a>(&'a self) -> &'a RefCell> { + &self.style_attribute + } } pub trait RawLayoutElementHelpers { diff --git a/components/script/dom/htmlcollection.rs b/components/script/dom/htmlcollection.rs index 9e20f4a6572..035ee8287a4 100644 --- a/components/script/dom/htmlcollection.rs +++ b/components/script/dom/htmlcollection.rs @@ -67,7 +67,7 @@ impl HTMLCollection { fn filter(&self, elem: JSRef, _root: JSRef) -> bool { match self.namespace_filter { None => true, - Some(ref namespace) => elem.namespace == *namespace + Some(ref namespace) => *elem.namespace() == *namespace } } } @@ -89,9 +89,9 @@ impl HTMLCollection { impl CollectionFilter for TagNameFilter { fn filter(&self, elem: JSRef, _root: JSRef) -> bool { if elem.html_element_in_html_document() { - elem.local_name == self.ascii_lower_tag + *elem.local_name() == self.ascii_lower_tag } else { - elem.local_name == self.tag + *elem.local_name() == self.tag } } } @@ -121,11 +121,11 @@ impl HTMLCollection { fn filter(&self, elem: JSRef, _root: JSRef) -> bool { let ns_match = match self.namespace_filter { Some(ref namespace) => { - elem.namespace == *namespace + *elem.namespace() == *namespace }, None => true }; - ns_match && elem.local_name == self.tag + ns_match && *elem.local_name() == self.tag } } let filter = TagNameNSFilter { diff --git a/components/script/dom/htmlfieldsetelement.rs b/components/script/dom/htmlfieldsetelement.rs index 6f0d2695897..4ec69852e95 100644 --- a/components/script/dom/htmlfieldsetelement.rs +++ b/components/script/dom/htmlfieldsetelement.rs @@ -58,7 +58,7 @@ impl<'a> HTMLFieldSetElementMethods for JSRef<'a, HTMLFieldSetElement> { static tag_names: StaticStringVec = &["button", "fieldset", "input", "keygen", "object", "output", "select", "textarea"]; let root: JSRef = ElementCast::to_ref(root).unwrap(); - elem != root && tag_names.iter().any(|&tag_name| tag_name == elem.local_name.as_slice()) + elem != root && tag_names.iter().any(|&tag_name| tag_name == elem.local_name().as_slice()) } } let node: JSRef = NodeCast::from_ref(self); diff --git a/components/script/dom/htmloptionelement.rs b/components/script/dom/htmloptionelement.rs index 715f0d6f1f5..e44011bc2ce 100644 --- a/components/script/dom/htmloptionelement.rs +++ b/components/script/dom/htmloptionelement.rs @@ -51,7 +51,7 @@ impl HTMLOptionElement { fn collect_text(node: &JSRef, value: &mut DOMString) { let elem: JSRef = ElementCast::to_ref(*node).unwrap(); - let svg_script = elem.namespace == ns!(SVG) && elem.local_name.as_slice() == "script"; + let svg_script = *elem.namespace() == ns!(SVG) && elem.local_name().as_slice() == "script"; let html_script = node.is_htmlscriptelement(); if svg_script || html_script { return; diff --git a/components/script/dom/htmlserializer.rs b/components/script/dom/htmlserializer.rs index 9e84900a9c0..e9de8987ac0 100644 --- a/components/script/dom/htmlserializer.rs +++ b/components/script/dom/htmlserializer.rs @@ -78,10 +78,10 @@ fn serialize_text(text: JSRef, html: &mut String) { match text_node.parent_node().map(|node| node.root()) { Some(ref parent) if parent.is_element() => { let elem: JSRef = ElementCast::to_ref(**parent).unwrap(); - match elem.local_name.as_slice() { + match elem.local_name().as_slice() { "style" | "script" | "xmp" | "iframe" | "noembed" | "noframes" | "plaintext" | - "noscript" if elem.namespace == ns!(HTML) + "noscript" if *elem.namespace() == ns!(HTML) => html.push_str(text.characterdata().data().as_slice()), _ => escape(text.characterdata().data().as_slice(), false, html) } @@ -107,15 +107,15 @@ fn serialize_doctype(doctype: JSRef, html: &mut String) { fn serialize_elem(elem: JSRef, open_elements: &mut Vec, html: &mut String) { html.push_char('<'); - html.push_str(elem.local_name.as_slice()); - for attr in elem.attrs.borrow().iter() { + html.push_str(elem.local_name().as_slice()); + for attr in elem.attrs().iter() { let attr = attr.root(); serialize_attr(*attr, html); }; html.push_char('>'); - match elem.local_name.as_slice() { - "pre" | "listing" | "textarea" if elem.namespace == ns!(HTML) => { + match elem.local_name().as_slice() { + "pre" | "listing" | "textarea" if *elem.namespace() == ns!(HTML) => { let node: JSRef = NodeCast::from_ref(elem); match node.first_child().map(|child| child.root()) { Some(ref child) if child.is_text() => { @@ -131,7 +131,7 @@ fn serialize_elem(elem: JSRef, open_elements: &mut Vec, html: & } if !(elem.is_void()) { - open_elements.push(elem.local_name.as_slice().to_string()); + open_elements.push(elem.local_name().as_slice().to_string()); } } diff --git a/components/script/dom/namednodemap.rs b/components/script/dom/namednodemap.rs index c190a39a37f..c0304510c68 100644 --- a/components/script/dom/namednodemap.rs +++ b/components/script/dom/namednodemap.rs @@ -35,11 +35,11 @@ impl NamedNodeMap { impl<'a> NamedNodeMapMethods for JSRef<'a, NamedNodeMap> { fn Length(self) -> u32 { - self.owner.root().attrs.borrow().len() as u32 + self.owner.root().attrs().len() as u32 } fn Item(self, index: u32) -> Option> { - self.owner.root().attrs.borrow().as_slice().get(index as uint).map(|x| Temporary::new(x.clone())) + self.owner.root().attrs().as_slice().get(index as uint).map(|x| Temporary::new(x.clone())) } fn IndexedGetter(self, index: u32, found: &mut bool) -> Option> { diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 81946a2738e..2716c56dc5c 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -1501,8 +1501,8 @@ impl Node { }, ElementNodeTypeId(..) => { let element: JSRef = ElementCast::to_ref(node).unwrap(); - let element = build_element_from_tag(element.local_name.as_slice().to_string(), - element.namespace.clone(), Some(element.prefix.as_slice().to_string()), *document); + let element = build_element_from_tag(element.local_name().as_slice().to_string(), + element.namespace().clone(), Some(element.prefix().as_slice().to_string()), *document); NodeCast::from_temporary(element) }, TextNodeTypeId => { @@ -1541,8 +1541,8 @@ impl Node { // FIXME: https://github.com/mozilla/servo/issues/1737 let window = document.window().root(); - for attr in node_elem.attrs.borrow().iter().map(|attr| attr.root()) { - copy_elem.attrs.borrow_mut().push_unrooted( + for attr in node_elem.attrs().iter().map(|attr| attr.root()) { + copy_elem.attrs_mut().push_unrooted( &Attr::new(*window, attr.local_name().clone(), attr.value().clone(), attr.name().clone(), attr.namespace().clone(), @@ -1983,9 +1983,9 @@ impl<'a> NodeMethods for JSRef<'a, Node> { let element: JSRef = ElementCast::to_ref(node).unwrap(); let other_element: JSRef = ElementCast::to_ref(other).unwrap(); // FIXME: namespace prefix - (element.namespace == other_element.namespace) && - (element.local_name == other_element.local_name) && - (element.attrs.borrow().len() == other_element.attrs.borrow().len()) + (*element.namespace() == *other_element.namespace()) && + (*element.local_name() == *other_element.local_name()) && + (element.attrs().len() == other_element.attrs().len()) } fn is_equal_processinginstruction(node: JSRef, other: JSRef) -> bool { let pi: JSRef = ProcessingInstructionCast::to_ref(node).unwrap(); @@ -2001,9 +2001,9 @@ impl<'a> NodeMethods for JSRef<'a, Node> { fn is_equal_element_attrs(node: JSRef, other: JSRef) -> bool { let element: JSRef = ElementCast::to_ref(node).unwrap(); let other_element: JSRef = ElementCast::to_ref(other).unwrap(); - assert!(element.attrs.borrow().len() == other_element.attrs.borrow().len()); - element.attrs.borrow().iter().map(|attr| attr.root()).all(|attr| { - other_element.attrs.borrow().iter().map(|attr| attr.root()).any(|other_attr| { + assert!(element.attrs().len() == other_element.attrs().len()); + element.attrs().iter().map(|attr| attr.root()).all(|attr| { + other_element.attrs().iter().map(|attr| attr.root()).any(|other_attr| { (*attr.namespace() == *other_attr.namespace()) && (attr.local_name() == other_attr.local_name()) && (attr.value().as_slice() == other_attr.value().as_slice())