From 6c518c89b969d1e9a96c3c5b9fe0da6cfc3637d1 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Tue, 2 May 2017 11:10:49 +0200 Subject: Upgrade to html5ever 0.16 --- components/script/dom/htmlbodyelement.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index ef2855fa512..432c15334ba 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -18,7 +18,7 @@ use dom::htmlelement::HTMLElement; use dom::node::{Node, document_from_node, window_from_node}; use dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; -use html5ever_atoms::LocalName; +use html5ever::LocalName; use script_traits::ScriptMsg as ConstellationMsg; use servo_url::ServoUrl; use style::attr::AttrValue; -- cgit v1.2.3 From 875e422fe67f68bdf57bd3635279e224b0c90996 Mon Sep 17 00:00:00 2001 From: Christian Poveda Date: Wed, 3 May 2017 10:17:42 -0500 Subject: Changed all prefixes from DOMString to the atomic Prefix from html5ever --- components/script/dom/htmlbodyelement.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index ef2855fa512..6dc742b880c 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -18,7 +18,7 @@ use dom::htmlelement::HTMLElement; use dom::node::{Node, document_from_node, window_from_node}; use dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; -use html5ever_atoms::LocalName; +use html5ever_atoms::{LocalName, Prefix}; use script_traits::ScriptMsg as ConstellationMsg; use servo_url::ServoUrl; use style::attr::AttrValue; @@ -34,7 +34,7 @@ pub struct HTMLBodyElement { } impl HTMLBodyElement { - fn new_inherited(local_name: LocalName, prefix: Option, document: &Document) + fn new_inherited(local_name: LocalName, prefix: Option, document: &Document) -> HTMLBodyElement { HTMLBodyElement { htmlelement: HTMLElement::new_inherited(local_name, prefix, document), @@ -42,7 +42,7 @@ impl HTMLBodyElement { } #[allow(unrooted_must_root)] - pub fn new(local_name: LocalName, prefix: Option, document: &Document) + pub fn new(local_name: LocalName, prefix: Option, document: &Document) -> Root { Node::reflect_node(box HTMLBodyElement::new_inherited(local_name, prefix, document), document, -- cgit v1.2.3 From d2413891292bfb4d5f17d7eb1e3882e07f6ac626 Mon Sep 17 00:00:00 2001 From: Paul Rouget Date: Tue, 18 Jul 2017 08:19:44 +0200 Subject: make use of ScriptToConstellationChan --- components/script/dom/htmlbodyelement.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index c5c03164a61..e1b0c86f5c0 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -19,7 +19,7 @@ use dom::node::{Node, document_from_node, window_from_node}; use dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; -use script_traits::ScriptMsg as ConstellationMsg; +use script_traits::ScriptMsg; use servo_url::ServoUrl; use style::attr::AttrValue; use time; @@ -138,8 +138,8 @@ impl VirtualMethods for HTMLBodyElement { let window = window_from_node(self); let document = window.Document(); document.set_reflow_timeout(time::precise_time_ns() + INITIAL_REFLOW_DELAY); - let event = ConstellationMsg::HeadParsed; - window.upcast::().constellation_chan().send(event).unwrap(); + let event = ScriptMsg::HeadParsed; + window.upcast::().script_to_constellation_chan().send(event).unwrap(); } fn parse_plain_attribute(&self, name: &LocalName, value: DOMString) -> AttrValue { -- cgit v1.2.3 From 7875fea6cf4f5560aca412fd5c3c6bb362872e24 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Wed, 30 Aug 2017 15:58:02 +0200 Subject: Use absolute paths in the event handlers macros --- components/script/dom/htmlbodyelement.rs | 1 - 1 file changed, 1 deletion(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index e1b0c86f5c0..7c9c53ade45 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -4,7 +4,6 @@ use cssparser::RGBA; use dom::attr::Attr; -use dom::bindings::codegen::Bindings::EventHandlerBinding::{EventHandlerNonNull, OnBeforeUnloadEventHandlerNonNull}; use dom::bindings::codegen::Bindings::HTMLBodyElementBinding::{self, HTMLBodyElementMethods}; use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; use dom::bindings::inheritance::Castable; -- cgit v1.2.3 From 0e3c54c1911ba2c3bf305ee04f04fcd9bf2fc2fe Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Mon, 25 Sep 2017 23:30:24 +0200 Subject: Rename dom::bindings::js to dom::bindings::root --- components/script/dom/htmlbodyelement.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index 7c9c53ade45..3eca3fba978 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -7,7 +7,7 @@ use dom::attr::Attr; use dom::bindings::codegen::Bindings::HTMLBodyElementBinding::{self, HTMLBodyElementMethods}; use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; use dom::bindings::inheritance::Castable; -use dom::bindings::js::{LayoutJS, Root}; +use dom::bindings::root::{LayoutJS, Root}; use dom::bindings::str::DOMString; use dom::document::Document; use dom::element::{AttributeMutation, Element, RawLayoutElementHelpers}; -- cgit v1.2.3 From e2dac78d3600cb4b2b4474f1db4f0fcaadbe24ea Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Tue, 26 Sep 2017 01:30:06 +0200 Subject: Rename LayoutJS to LayoutDom --- components/script/dom/htmlbodyelement.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index 3eca3fba978..3ec993ca3df 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -7,7 +7,7 @@ use dom::attr::Attr; use dom::bindings::codegen::Bindings::HTMLBodyElementBinding::{self, HTMLBodyElementMethods}; use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; use dom::bindings::inheritance::Castable; -use dom::bindings::root::{LayoutJS, Root}; +use dom::bindings::root::{LayoutDom, Root}; use dom::bindings::str::DOMString; use dom::document::Document; use dom::element::{AttributeMutation, Element, RawLayoutElementHelpers}; @@ -88,7 +88,7 @@ pub trait HTMLBodyElementLayoutHelpers { fn get_background(&self) -> Option; } -impl HTMLBodyElementLayoutHelpers for LayoutJS { +impl HTMLBodyElementLayoutHelpers for LayoutDom { #[allow(unsafe_code)] fn get_background_color(&self) -> Option { unsafe { -- cgit v1.2.3 From f87c2a8d7616112ca924e30292db2d244cf87eec Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Tue, 26 Sep 2017 01:53:40 +0200 Subject: Rename Root to DomRoot In a later PR, DomRoot will become a type alias of Root>, where Root will be able to handle all the things that need to be rooted that have a stable traceable address that doesn't move for the whole lifetime of the root. Stay tuned. --- components/script/dom/htmlbodyelement.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index 3ec993ca3df..4ade5560700 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -7,7 +7,7 @@ use dom::attr::Attr; use dom::bindings::codegen::Bindings::HTMLBodyElementBinding::{self, HTMLBodyElementMethods}; use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; use dom::bindings::inheritance::Castable; -use dom::bindings::root::{LayoutDom, Root}; +use dom::bindings::root::{LayoutDom, DomRoot}; use dom::bindings::str::DOMString; use dom::document::Document; use dom::element::{AttributeMutation, Element, RawLayoutElementHelpers}; @@ -42,7 +42,7 @@ impl HTMLBodyElement { #[allow(unrooted_must_root)] pub fn new(local_name: LocalName, prefix: Option, document: &Document) - -> Root { + -> DomRoot { Node::reflect_node(box HTMLBodyElement::new_inherited(local_name, prefix, document), document, HTMLBodyElementBinding::Wrap) -- cgit v1.2.3 From 3b4deb4388d6da5ade541a39bfea431bba0d82b3 Mon Sep 17 00:00:00 2001 From: Stuart Nelson Date: Thu, 5 Oct 2017 10:41:49 +0200 Subject: Add support for dynamic bgcolor change --- components/script/dom/htmlbodyelement.rs | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index 4ade5560700..53fb0637b0d 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -125,6 +125,14 @@ impl VirtualMethods for HTMLBodyElement { Some(self.upcast::() as &VirtualMethods) } + fn attribute_affects_presentational_hints(&self, attr: &Attr) -> bool { + if attr.local_name() == &local_name!("bgcolor") { + return true; + } + + self.super_type().unwrap().attribute_affects_presentational_hints(attr) + } + fn bind_to_tree(&self, tree_in_doc: bool) { if let Some(ref s) = self.super_type() { s.bind_to_tree(tree_in_doc); -- cgit v1.2.3 From 605c679fee29302321878a74b88aa7165519b516 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Tue, 10 Oct 2017 16:14:40 +0200 Subject: Fix URL attributes URL attributes should always use AttrValue::Url, and the input should be resolved against the document's base URL at setting time always. --- components/script/dom/htmlbodyelement.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index 53fb0637b0d..580dc0a8808 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -4,6 +4,7 @@ use cssparser::RGBA; use dom::attr::Attr; +use dom::bindings::codegen::Bindings::AttrBinding::AttrBinding::AttrMethods; use dom::bindings::codegen::Bindings::HTMLBodyElementBinding::{self, HTMLBodyElementMethods}; use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; use dom::bindings::inheritance::Castable; @@ -73,7 +74,12 @@ impl HTMLBodyElementMethods for HTMLBodyElement { make_legacy_color_setter!(SetText, "text"); // https://html.spec.whatwg.org/multipage/#dom-body-background - make_getter!(Background, "background"); + fn Background(&self) -> DOMString { + self.upcast::() + .get_attribute(&ns!(), &local_name!("background")) + .map(|attr| attr.Value()) + .unwrap_or_default() + } // https://html.spec.whatwg.org/multipage/#dom-body-background make_url_setter!(SetBackground, "background"); @@ -154,7 +160,7 @@ impl VirtualMethods for HTMLBodyElement { local_name!("bgcolor") | local_name!("text") => AttrValue::from_legacy_color(value.into()), local_name!("background") => { - AttrValue::from_url(document_from_node(self).url(), value.into()) + AttrValue::from_url(document_from_node(self).base_url(), value.into()) }, _ => self.super_type().unwrap().parse_plain_attribute(name, value), } -- cgit v1.2.3 From c7b1d3054f9e87cf7ae7b10df5fbf5a97f6448f4 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 15 Oct 2017 10:59:01 +0200 Subject: Change AttrValue::Url to AttrValue::ResolvedUrl There is actually only one attribute that can use that, the one for . --- components/script/dom/htmlbodyelement.rs | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index 580dc0a8808..69d56b31b95 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -4,7 +4,6 @@ use cssparser::RGBA; use dom::attr::Attr; -use dom::bindings::codegen::Bindings::AttrBinding::AttrBinding::AttrMethods; use dom::bindings::codegen::Bindings::HTMLBodyElementBinding::{self, HTMLBodyElementMethods}; use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; use dom::bindings::inheritance::Castable; @@ -74,15 +73,16 @@ impl HTMLBodyElementMethods for HTMLBodyElement { make_legacy_color_setter!(SetText, "text"); // https://html.spec.whatwg.org/multipage/#dom-body-background - fn Background(&self) -> DOMString { - self.upcast::() - .get_attribute(&ns!(), &local_name!("background")) - .map(|attr| attr.Value()) - .unwrap_or_default() - } + make_getter!(Background, "background"); // https://html.spec.whatwg.org/multipage/#dom-body-background - make_url_setter!(SetBackground, "background"); + fn SetBackground(&self, input: DOMString) { + let value = AttrValue::from_resolved_url( + &document_from_node(self).base_url(), + input.into(), + ); + self.upcast::().set_attribute(&local_name!("background"), value); + } // https://html.spec.whatwg.org/multipage/#windoweventhandlers window_event_handlers!(ForwardToWindow); @@ -120,7 +120,7 @@ impl HTMLBodyElementLayoutHelpers for LayoutDom { unsafe { (*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("background")) - .and_then(AttrValue::as_url) + .and_then(AttrValue::as_resolved_url) .cloned() } } @@ -160,7 +160,10 @@ impl VirtualMethods for HTMLBodyElement { local_name!("bgcolor") | local_name!("text") => AttrValue::from_legacy_color(value.into()), local_name!("background") => { - AttrValue::from_url(document_from_node(self).base_url(), value.into()) + AttrValue::from_resolved_url( + &document_from_node(self).base_url(), + value.into(), + ) }, _ => self.super_type().unwrap().parse_plain_attribute(name, value), } -- cgit v1.2.3 From aa15dc269f41503d81ad44cd7e85d69e6f4aeac7 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Mon, 16 Oct 2017 14:35:30 +0200 Subject: Remove use of unstable box syntax. http://www.robohornet.org gives a score of 101.36 on master, and 102.68 with this PR. The latter is slightly better, but probably within noise level. So it looks like this PR does not affect DOM performance. This is expected since `Box::new` is defined as: ```rust impl Box { #[inline(always)] pub fn new(x: T) -> Box { box x } } ``` With inlining, it should compile to the same as box syntax. --- components/script/dom/htmlbodyelement.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index 69d56b31b95..843ce1b35cb 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -43,7 +43,7 @@ impl HTMLBodyElement { #[allow(unrooted_must_root)] pub fn new(local_name: LocalName, prefix: Option, document: &Document) -> DomRoot { - Node::reflect_node(box HTMLBodyElement::new_inherited(local_name, prefix, document), + Node::reflect_node(Box::new(HTMLBodyElement::new_inherited(local_name, prefix, document)), document, HTMLBodyElementBinding::Wrap) } -- cgit v1.2.3 From efc3683cc7ceff0cd8c8528a168a78d42fb1a0e8 Mon Sep 17 00:00:00 2001 From: Matt Brubeck Date: Tue, 17 Oct 2017 09:39:20 -0700 Subject: Fix commonmark Markdown warnings in docs, part 1 Fixes warnings from rust-lang/rust#44229 when `--enable-commonmark` is passed to rustdoc. This is mostly a global find-and-replace for bare URIs on lines by themselves in doc comments. --- components/script/dom/htmlbodyelement.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index 843ce1b35cb..c3ac339e33c 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -48,7 +48,7 @@ impl HTMLBodyElement { HTMLBodyElementBinding::Wrap) } - /// https://drafts.csswg.org/cssom-view/#the-html-body-element + /// pub fn is_the_html_body_element(&self) -> bool { let self_node = self.upcast::(); let root_elem = self.upcast::().root_element(); -- cgit v1.2.3 From d4382407722108a52bf23b1f3a3114984f13fb90 Mon Sep 17 00:00:00 2001 From: Gregory Terzian Date: Sat, 28 Apr 2018 22:48:14 +0800 Subject: move msg to embedder_traits, use in script, handle send error in embedder --- components/script/dom/htmlbodyelement.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index c3ac339e33c..51ed2fcd0ea 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -12,13 +12,12 @@ use dom::bindings::str::DOMString; use dom::document::Document; use dom::element::{AttributeMutation, Element, RawLayoutElementHelpers}; use dom::eventtarget::EventTarget; -use dom::globalscope::GlobalScope; use dom::htmlelement::HTMLElement; use dom::node::{Node, document_from_node, window_from_node}; use dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; +use embedder_traits::EmbedderMsg; use html5ever::{LocalName, Prefix}; -use script_traits::ScriptMsg; use servo_url::ServoUrl; use style::attr::AttrValue; use time; @@ -151,8 +150,11 @@ impl VirtualMethods for HTMLBodyElement { let window = window_from_node(self); let document = window.Document(); document.set_reflow_timeout(time::precise_time_ns() + INITIAL_REFLOW_DELAY); - let event = ScriptMsg::HeadParsed; - window.upcast::().script_to_constellation_chan().send(event).unwrap(); + if window.is_top_level() { + let top_level_browsing_context_id = window.top_level_browsing_context_id(); + let msg = EmbedderMsg::HeadParsed(top_level_browsing_context_id); + window.send_to_embedder(msg); + } } fn parse_plain_attribute(&self, name: &LocalName, value: DOMString) -> AttrValue { -- cgit v1.2.3 From 4234b1252af9b4da08d8cd372dd4c1db9c3f2662 Mon Sep 17 00:00:00 2001 From: Gregory Terzian Date: Fri, 18 May 2018 10:59:41 +0800 Subject: move top_level_browsing_context_id out of embedder msg --- components/script/dom/htmlbodyelement.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index 51ed2fcd0ea..7d921d57ce8 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -151,8 +151,7 @@ impl VirtualMethods for HTMLBodyElement { let document = window.Document(); document.set_reflow_timeout(time::precise_time_ns() + INITIAL_REFLOW_DELAY); if window.is_top_level() { - let top_level_browsing_context_id = window.top_level_browsing_context_id(); - let msg = EmbedderMsg::HeadParsed(top_level_browsing_context_id); + let msg = EmbedderMsg::HeadParsed; window.send_to_embedder(msg); } } -- cgit v1.2.3 From c37a345dc9f4dda6ea29c42f96f6c7201c42cbac Mon Sep 17 00:00:00 2001 From: chansuke Date: Tue, 18 Sep 2018 23:24:15 +0900 Subject: Format script component --- components/script/dom/htmlbodyelement.rs | 103 +++++++++++++++++++------------ 1 file changed, 62 insertions(+), 41 deletions(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index 7d921d57ce8..da0c641e5c3 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -32,19 +32,27 @@ pub struct HTMLBodyElement { } impl HTMLBodyElement { - fn new_inherited(local_name: LocalName, prefix: Option, document: &Document) - -> HTMLBodyElement { + fn new_inherited( + local_name: LocalName, + prefix: Option, + document: &Document, + ) -> HTMLBodyElement { HTMLBodyElement { htmlelement: HTMLElement::new_inherited(local_name, prefix, document), } } #[allow(unrooted_must_root)] - pub fn new(local_name: LocalName, prefix: Option, document: &Document) - -> DomRoot { - Node::reflect_node(Box::new(HTMLBodyElement::new_inherited(local_name, prefix, document)), - document, - HTMLBodyElementBinding::Wrap) + pub fn new( + local_name: LocalName, + prefix: Option, + document: &Document, + ) -> DomRoot { + Node::reflect_node( + Box::new(HTMLBodyElement::new_inherited(local_name, prefix, document)), + document, + HTMLBodyElementBinding::Wrap, + ) } /// @@ -52,10 +60,10 @@ impl HTMLBodyElement { let self_node = self.upcast::(); let root_elem = self.upcast::().root_element(); let root_node = root_elem.upcast::(); - root_node.is_parent_of(self_node) && - self_node.preceding_siblings().all(|n| !n.is::()) + root_node.is_parent_of(self_node) && self_node + .preceding_siblings() + .all(|n| !n.is::()) } - } impl HTMLBodyElementMethods for HTMLBodyElement { @@ -76,11 +84,10 @@ impl HTMLBodyElementMethods for HTMLBodyElement { // https://html.spec.whatwg.org/multipage/#dom-body-background fn SetBackground(&self, input: DOMString) { - let value = AttrValue::from_resolved_url( - &document_from_node(self).base_url(), - input.into(), - ); - self.upcast::().set_attribute(&local_name!("background"), value); + let value = + AttrValue::from_resolved_url(&document_from_node(self).base_url(), input.into()); + self.upcast::() + .set_attribute(&local_name!("background"), value); } // https://html.spec.whatwg.org/multipage/#windoweventhandlers @@ -135,7 +142,9 @@ impl VirtualMethods for HTMLBodyElement { return true; } - self.super_type().unwrap().attribute_affects_presentational_hints(attr) + self.super_type() + .unwrap() + .attribute_affects_presentational_hints(attr) } fn bind_to_tree(&self, tree_in_doc: bool) { @@ -144,7 +153,7 @@ impl VirtualMethods for HTMLBodyElement { } if !tree_in_doc { - return + return; } let window = window_from_node(self); @@ -158,15 +167,16 @@ impl VirtualMethods for HTMLBodyElement { fn parse_plain_attribute(&self, name: &LocalName, value: DOMString) -> AttrValue { match *name { - local_name!("bgcolor") | - local_name!("text") => AttrValue::from_legacy_color(value.into()), + local_name!("bgcolor") | local_name!("text") => { + AttrValue::from_legacy_color(value.into()) + }, local_name!("background") => { - AttrValue::from_resolved_url( - &document_from_node(self).base_url(), - value.into(), - ) + AttrValue::from_resolved_url(&document_from_node(self).base_url(), value.into()) }, - _ => self.super_type().unwrap().parse_plain_attribute(name, value), + _ => self + .super_type() + .unwrap() + .parse_plain_attribute(name, value), } } @@ -177,23 +187,34 @@ impl VirtualMethods for HTMLBodyElement { // https://html.spec.whatwg.org/multipage/ // #event-handlers-on-elements,-document-objects,-and-window-objects:event-handlers-3 match name { - &local_name!("onfocus") | &local_name!("onload") | &local_name!("onscroll") | - &local_name!("onafterprint") | &local_name!("onbeforeprint") | - &local_name!("onbeforeunload") | &local_name!("onhashchange") | - &local_name!("onlanguagechange") | &local_name!("onmessage") | - &local_name!("onoffline") | &local_name!("ononline") | - &local_name!("onpagehide") | &local_name!("onpageshow") | - &local_name!("onpopstate") | &local_name!("onstorage") | - &local_name!("onresize") | &local_name!("onunload") | &local_name!("onerror") - => { - let evtarget = window.upcast::(); // forwarded event - let source_line = 1; //TODO(#9604) obtain current JS execution line - evtarget.set_event_handler_uncompiled(window.get_url(), - source_line, - &name[2..], - DOMString::from((**attr.value()).to_owned())); - false - } + &local_name!("onfocus") | + &local_name!("onload") | + &local_name!("onscroll") | + &local_name!("onafterprint") | + &local_name!("onbeforeprint") | + &local_name!("onbeforeunload") | + &local_name!("onhashchange") | + &local_name!("onlanguagechange") | + &local_name!("onmessage") | + &local_name!("onoffline") | + &local_name!("ononline") | + &local_name!("onpagehide") | + &local_name!("onpageshow") | + &local_name!("onpopstate") | + &local_name!("onstorage") | + &local_name!("onresize") | + &local_name!("onunload") | + &local_name!("onerror") => { + let evtarget = window.upcast::(); // forwarded event + let source_line = 1; //TODO(#9604) obtain current JS execution line + evtarget.set_event_handler_uncompiled( + window.get_url(), + source_line, + &name[2..], + DOMString::from((**attr.value()).to_owned()), + ); + false + }, _ => true, // HTMLElement::attribute_mutated will take care of this. } }, -- cgit v1.2.3 From 45f7199eee82c66637ec68287eafa40a651001c4 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Thu, 1 Nov 2018 23:45:06 +0100 Subject: `cargo fix --edition` --- components/script/dom/htmlbodyelement.rs | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index da0c641e5c3..2af9d637d5e 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -3,18 +3,18 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use cssparser::RGBA; -use dom::attr::Attr; -use dom::bindings::codegen::Bindings::HTMLBodyElementBinding::{self, HTMLBodyElementMethods}; -use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; -use dom::bindings::inheritance::Castable; -use dom::bindings::root::{LayoutDom, DomRoot}; -use dom::bindings::str::DOMString; -use dom::document::Document; -use dom::element::{AttributeMutation, Element, RawLayoutElementHelpers}; -use dom::eventtarget::EventTarget; -use dom::htmlelement::HTMLElement; -use dom::node::{Node, document_from_node, window_from_node}; -use dom::virtualmethods::VirtualMethods; +use crate::dom::attr::Attr; +use crate::dom::bindings::codegen::Bindings::HTMLBodyElementBinding::{self, HTMLBodyElementMethods}; +use crate::dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; +use crate::dom::bindings::inheritance::Castable; +use crate::dom::bindings::root::{LayoutDom, DomRoot}; +use crate::dom::bindings::str::DOMString; +use crate::dom::document::Document; +use crate::dom::element::{AttributeMutation, Element, RawLayoutElementHelpers}; +use crate::dom::eventtarget::EventTarget; +use crate::dom::htmlelement::HTMLElement; +use crate::dom::node::{Node, document_from_node, window_from_node}; +use crate::dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; use embedder_traits::EmbedderMsg; use html5ever::{LocalName, Prefix}; -- cgit v1.2.3 From 76e59a46d3aff701b2e8dfbaf047f6d5c3edcced Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Thu, 1 Nov 2018 17:23:56 +0100 Subject: Sort `use` statements --- components/script/dom/htmlbodyelement.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index 2af9d637d5e..a72906e1337 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -2,7 +2,6 @@ * 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 cssparser::RGBA; use crate::dom::attr::Attr; use crate::dom::bindings::codegen::Bindings::HTMLBodyElementBinding::{self, HTMLBodyElementMethods}; use crate::dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; @@ -15,6 +14,7 @@ use crate::dom::eventtarget::EventTarget; use crate::dom::htmlelement::HTMLElement; use crate::dom::node::{Node, document_from_node, window_from_node}; use crate::dom::virtualmethods::VirtualMethods; +use cssparser::RGBA; use dom_struct::dom_struct; use embedder_traits::EmbedderMsg; use html5ever::{LocalName, Prefix}; -- cgit v1.2.3 From 9e92eb205a2a12fe0be883e42cb7f82deebc9031 Mon Sep 17 00:00:00 2001 From: Pyfisch Date: Tue, 6 Nov 2018 20:38:02 +0100 Subject: Reorder imports --- components/script/dom/htmlbodyelement.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index a72906e1337..b3bf5e6a76e 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -3,16 +3,18 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use crate::dom::attr::Attr; -use crate::dom::bindings::codegen::Bindings::HTMLBodyElementBinding::{self, HTMLBodyElementMethods}; +use crate::dom::bindings::codegen::Bindings::HTMLBodyElementBinding::{ + self, HTMLBodyElementMethods, +}; use crate::dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::root::{LayoutDom, DomRoot}; +use crate::dom::bindings::root::{DomRoot, LayoutDom}; use crate::dom::bindings::str::DOMString; use crate::dom::document::Document; use crate::dom::element::{AttributeMutation, Element, RawLayoutElementHelpers}; use crate::dom::eventtarget::EventTarget; use crate::dom::htmlelement::HTMLElement; -use crate::dom::node::{Node, document_from_node, window_from_node}; +use crate::dom::node::{document_from_node, window_from_node, Node}; use crate::dom::virtualmethods::VirtualMethods; use cssparser::RGBA; use dom_struct::dom_struct; -- cgit v1.2.3 From 2012be4a8bd97f2fd69f986c8fffb1af1eec21dc Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Thu, 1 Nov 2018 21:43:04 +0100 Subject: `cargo fix --edition-idioms` --- components/script/dom/htmlbodyelement.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index b3bf5e6a76e..fa368f11c12 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -135,8 +135,8 @@ impl HTMLBodyElementLayoutHelpers for LayoutDom { } impl VirtualMethods for HTMLBodyElement { - fn super_type(&self) -> Option<&VirtualMethods> { - Some(self.upcast::() as &VirtualMethods) + fn super_type(&self) -> Option<&dyn VirtualMethods> { + Some(self.upcast::() as &dyn VirtualMethods) } fn attribute_affects_presentational_hints(&self, attr: &Attr) -> bool { -- cgit v1.2.3 From 9f977c52878e3638f475ca9a78e9f57d0d22893d Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Wed, 7 Nov 2018 17:08:14 +0100 Subject: Remove useless `use crate_name;` imports. A `crate_name::foo` path always works in 2018 --- components/script/dom/htmlbodyelement.rs | 1 - 1 file changed, 1 deletion(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index fa368f11c12..61d11c54f9a 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -22,7 +22,6 @@ use embedder_traits::EmbedderMsg; use html5ever::{LocalName, Prefix}; use servo_url::ServoUrl; use style::attr::AttrValue; -use time; /// How long we should wait before performing the initial reflow after `` is parsed, in /// nanoseconds. -- cgit v1.2.3 From a1a14459c141afc6ac6771b8a6c9ca374537edf2 Mon Sep 17 00:00:00 2001 From: Jan Andre Ikenmeyer Date: Mon, 19 Nov 2018 14:47:12 +0100 Subject: Update MPL license to https (part 3) --- components/script/dom/htmlbodyelement.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index 61d11c54f9a..666df0eefed 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -1,6 +1,6 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ use crate::dom::attr::Attr; use crate::dom::bindings::codegen::Bindings::HTMLBodyElementBinding::{ -- cgit v1.2.3 From be69f9c3e6a6f5efb5ba1edd50955cb12c111bf8 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Fri, 14 Dec 2018 08:31:30 +0100 Subject: Rustfmt has changed its default style :/ --- components/script/dom/htmlbodyelement.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index 666df0eefed..951643c7ea7 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -61,9 +61,10 @@ impl HTMLBodyElement { let self_node = self.upcast::(); let root_elem = self.upcast::().root_element(); let root_node = root_elem.upcast::(); - root_node.is_parent_of(self_node) && self_node - .preceding_siblings() - .all(|n| !n.is::()) + root_node.is_parent_of(self_node) && + self_node + .preceding_siblings() + .all(|n| !n.is::()) } } -- cgit v1.2.3 From 441357b74e38b604a60206ff38e5cf3719a15e08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Jim=C3=A9nez=20Moreno?= Date: Sun, 27 Jan 2019 17:11:11 +0100 Subject: Add is_connected flag to node and use it to replace most uses of is_in_doc --- components/script/dom/htmlbodyelement.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index 951643c7ea7..ccef81f2cd8 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -149,12 +149,12 @@ impl VirtualMethods for HTMLBodyElement { .attribute_affects_presentational_hints(attr) } - fn bind_to_tree(&self, tree_in_doc: bool) { + fn bind_to_tree(&self, tree_connected: bool) { if let Some(ref s) = self.super_type() { - s.bind_to_tree(tree_in_doc); + s.bind_to_tree(tree_connected); } - if !tree_in_doc { + if !tree_connected { return; } -- cgit v1.2.3 From 813b242419d41505641b433c3b38b0d0542c559d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Jim=C3=A9nez=20Moreno?= Date: Tue, 5 Mar 2019 18:01:59 +0100 Subject: Introduce BindContext with in_doc and connected flags Fix some is_in_doc -> is_connected mistakes --- components/script/dom/htmlbodyelement.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index ccef81f2cd8..f59d163d163 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -14,7 +14,7 @@ use crate::dom::document::Document; use crate::dom::element::{AttributeMutation, Element, RawLayoutElementHelpers}; use crate::dom::eventtarget::EventTarget; use crate::dom::htmlelement::HTMLElement; -use crate::dom::node::{document_from_node, window_from_node, Node}; +use crate::dom::node::{document_from_node, window_from_node, BindContext, Node}; use crate::dom::virtualmethods::VirtualMethods; use cssparser::RGBA; use dom_struct::dom_struct; @@ -149,12 +149,12 @@ impl VirtualMethods for HTMLBodyElement { .attribute_affects_presentational_hints(attr) } - fn bind_to_tree(&self, tree_connected: bool) { + fn bind_to_tree(&self, context: &BindContext) { if let Some(ref s) = self.super_type() { - s.bind_to_tree(tree_connected); + s.bind_to_tree(context); } - if !tree_connected { + if !context.tree_in_doc { return; } -- cgit v1.2.3 From 3ea6d87bcc37167464e856949a4b9b77d0e9318a Mon Sep 17 00:00:00 2001 From: YUAN LYU Date: Fri, 20 Mar 2020 22:14:18 -0400 Subject: Add trait DomObjectWrap to provide WRAP function --- components/script/dom/htmlbodyelement.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index f59d163d163..cc2e20e68a9 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -3,9 +3,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ use crate::dom::attr::Attr; -use crate::dom::bindings::codegen::Bindings::HTMLBodyElementBinding::{ - self, HTMLBodyElementMethods, -}; +use crate::dom::bindings::codegen::Bindings::HTMLBodyElementBinding::HTMLBodyElementMethods; use crate::dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::root::{DomRoot, LayoutDom}; @@ -52,7 +50,6 @@ impl HTMLBodyElement { Node::reflect_node( Box::new(HTMLBodyElement::new_inherited(local_name, prefix, document)), document, - HTMLBodyElementBinding::Wrap, ) } -- cgit v1.2.3 From dba6a635e5df980b2837495aae59711739c23716 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Fri, 27 Mar 2020 17:37:56 +0100 Subject: Give a lifetime parameter to LayoutDom --- components/script/dom/htmlbodyelement.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index cc2e20e68a9..0f3a0d51e15 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -99,7 +99,7 @@ pub trait HTMLBodyElementLayoutHelpers { fn get_background(&self) -> Option; } -impl HTMLBodyElementLayoutHelpers for LayoutDom { +impl HTMLBodyElementLayoutHelpers for LayoutDom<'_, HTMLBodyElement> { #[allow(unsafe_code)] fn get_background_color(&self) -> Option { unsafe { -- cgit v1.2.3 From e7cfd0c409fdb2af7d80e37fd8c39d3b01cab1b1 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 29 Mar 2020 17:17:00 +0200 Subject: Make HTMLBodyElementLayoutHelpers methods take self --- components/script/dom/htmlbodyelement.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index 0f3a0d51e15..1d9d2dc69b8 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -94,14 +94,14 @@ impl HTMLBodyElementMethods for HTMLBodyElement { } pub trait HTMLBodyElementLayoutHelpers { - fn get_background_color(&self) -> Option; - fn get_color(&self) -> Option; - fn get_background(&self) -> Option; + fn get_background_color(self) -> Option; + fn get_color(self) -> Option; + fn get_background(self) -> Option; } impl HTMLBodyElementLayoutHelpers for LayoutDom<'_, HTMLBodyElement> { #[allow(unsafe_code)] - fn get_background_color(&self) -> Option { + fn get_background_color(self) -> Option { unsafe { (*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("bgcolor")) @@ -111,7 +111,7 @@ impl HTMLBodyElementLayoutHelpers for LayoutDom<'_, HTMLBodyElement> { } #[allow(unsafe_code)] - fn get_color(&self) -> Option { + fn get_color(self) -> Option { unsafe { (*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("text")) @@ -121,7 +121,7 @@ impl HTMLBodyElementLayoutHelpers for LayoutDom<'_, HTMLBodyElement> { } #[allow(unsafe_code)] - fn get_background(&self) -> Option { + fn get_background(self) -> Option { unsafe { (*self.upcast::().unsafe_get()) .get_attr_for_layout(&ns!(), &local_name!("background")) -- cgit v1.2.3 From 0bda1748230b4d54c274a014d770daf461fec50f Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Tue, 31 Mar 2020 18:30:42 +0200 Subject: Merge RawLayoutElementHelpers into LayoutElementHelpers --- components/script/dom/htmlbodyelement.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index 1d9d2dc69b8..4bf835cbee9 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -9,7 +9,7 @@ use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::root::{DomRoot, LayoutDom}; use crate::dom::bindings::str::DOMString; use crate::dom::document::Document; -use crate::dom::element::{AttributeMutation, Element, RawLayoutElementHelpers}; +use crate::dom::element::{AttributeMutation, Element, LayoutElementHelpers}; use crate::dom::eventtarget::EventTarget; use crate::dom::htmlelement::HTMLElement; use crate::dom::node::{document_from_node, window_from_node, BindContext, Node}; @@ -103,7 +103,7 @@ impl HTMLBodyElementLayoutHelpers for LayoutDom<'_, HTMLBodyElement> { #[allow(unsafe_code)] fn get_background_color(self) -> Option { unsafe { - (*self.upcast::().unsafe_get()) + self.upcast::() .get_attr_for_layout(&ns!(), &local_name!("bgcolor")) .and_then(AttrValue::as_color) .cloned() @@ -113,7 +113,7 @@ impl HTMLBodyElementLayoutHelpers for LayoutDom<'_, HTMLBodyElement> { #[allow(unsafe_code)] fn get_color(self) -> Option { unsafe { - (*self.upcast::().unsafe_get()) + self.upcast::() .get_attr_for_layout(&ns!(), &local_name!("text")) .and_then(AttrValue::as_color) .cloned() @@ -123,7 +123,7 @@ impl HTMLBodyElementLayoutHelpers for LayoutDom<'_, HTMLBodyElement> { #[allow(unsafe_code)] fn get_background(self) -> Option { unsafe { - (*self.upcast::().unsafe_get()) + self.upcast::() .get_attr_for_layout(&ns!(), &local_name!("background")) .and_then(AttrValue::as_resolved_url) .cloned() -- cgit v1.2.3 From 5ff931d1717ac0e7a6e5d9d63f0cfa47c1f3cd50 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Tue, 31 Mar 2020 18:46:49 +0200 Subject: Introduce >::attrs() This safe method is the basic block to access element attributes from layout. We reuse it in the other attr-related layout methods to remove a pretty big source of rampant unsafe code between script and layout. --- components/script/dom/htmlbodyelement.rs | 33 ++++++++++++-------------------- 1 file changed, 12 insertions(+), 21 deletions(-) (limited to 'components/script/dom/htmlbodyelement.rs') diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index 4bf835cbee9..775af6a686c 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -100,34 +100,25 @@ pub trait HTMLBodyElementLayoutHelpers { } impl HTMLBodyElementLayoutHelpers for LayoutDom<'_, HTMLBodyElement> { - #[allow(unsafe_code)] fn get_background_color(self) -> Option { - unsafe { - self.upcast::() - .get_attr_for_layout(&ns!(), &local_name!("bgcolor")) - .and_then(AttrValue::as_color) - .cloned() - } + self.upcast::() + .get_attr_for_layout(&ns!(), &local_name!("bgcolor")) + .and_then(AttrValue::as_color) + .cloned() } - #[allow(unsafe_code)] fn get_color(self) -> Option { - unsafe { - self.upcast::() - .get_attr_for_layout(&ns!(), &local_name!("text")) - .and_then(AttrValue::as_color) - .cloned() - } + self.upcast::() + .get_attr_for_layout(&ns!(), &local_name!("text")) + .and_then(AttrValue::as_color) + .cloned() } - #[allow(unsafe_code)] fn get_background(self) -> Option { - unsafe { - self.upcast::() - .get_attr_for_layout(&ns!(), &local_name!("background")) - .and_then(AttrValue::as_resolved_url) - .cloned() - } + self.upcast::() + .get_attr_for_layout(&ns!(), &local_name!("background")) + .and_then(AttrValue::as_resolved_url) + .cloned() } } -- cgit v1.2.3