diff options
author | Corey Farwell <coreyf@rwell.org> | 2016-01-02 16:32:09 -0800 |
---|---|---|
committer | Corey Farwell <coreyf@rwell.org> | 2016-01-02 16:54:38 -0800 |
commit | 1a808219a8e51b8cac8c32a2361a930f24041557 (patch) | |
tree | 80c3895ba76e8451f17c79d8ce73715ca608bc84 /components/script/dom/htmlbodyelement.rs | |
parent | 9a1fd472ab7b136112bb8668d32ba5b324d35220 (diff) | |
download | servo-1a808219a8e51b8cac8c32a2361a930f24041557.tar.gz servo-1a808219a8e51b8cac8c32a2361a930f24041557.zip |
Remove parsed attribute 'background' field on HTMLBodyElement
https://github.com/servo/servo/issues/7863
Diffstat (limited to 'components/script/dom/htmlbodyelement.rs')
-rw-r--r-- | components/script/dom/htmlbodyelement.rs | 24 |
1 files changed, 6 insertions, 18 deletions
diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index cdc8f4cfac0..f082a4c8ced 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -4,7 +4,6 @@ use cssparser::RGBA; use dom::attr::{Attr, AttrValue}; -use dom::bindings::cell::DOMRefCell; use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull; use dom::bindings::codegen::Bindings::HTMLBodyElementBinding::{self, HTMLBodyElementMethods}; use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; @@ -32,7 +31,6 @@ const INITIAL_REFLOW_DELAY: u64 = 200_000_000; #[dom_struct] pub struct HTMLBodyElement { htmlelement: HTMLElement, - background: DOMRefCell<Option<Url>> } impl HTMLBodyElement { @@ -40,7 +38,6 @@ impl HTMLBodyElement { -> HTMLBodyElement { HTMLBodyElement { htmlelement: HTMLElement::new_inherited(localName, prefix, document), - background: DOMRefCell::new(None) } } @@ -89,12 +86,7 @@ impl HTMLBodyElementMethods for HTMLBodyElement { make_getter!(Background, "background"); // https://html.spec.whatwg.org/multipage/#dom-body-background - fn SetBackground(&self, value: DOMString) { - let document = document_from_node(self); - let base = document.url(); - *self.background.borrow_mut() = base.join(&value).ok(); - self.upcast::<Element>().set_string_attribute(&atom!("background"), value); - } + make_url_setter!(SetBackground, "background"); } pub trait HTMLBodyElementLayoutHelpers { @@ -127,7 +119,10 @@ impl HTMLBodyElementLayoutHelpers for LayoutJS<HTMLBodyElement> { #[allow(unsafe_code)] fn get_background(&self) -> Option<Url> { unsafe { - (*self.unsafe_get()).background.borrow_for_layout().clone() + (*self.upcast::<Element>().unsafe_get()) + .get_attr_for_layout(&ns!(), &atom!("background")) + .and_then(AttrValue::as_url) + .cloned() } } } @@ -158,20 +153,13 @@ impl VirtualMethods for HTMLBodyElement { match *name { atom!("bgcolor") | atom!("text") => AttrValue::from_legacy_color(value), + atom!("background") => AttrValue::from_url(document_from_node(self).url(), value), _ => self.super_type().unwrap().parse_plain_attribute(name, value), } } fn attribute_mutated(&self, attr: &Attr, mutation: AttributeMutation) { let do_super_mutate = match (attr.local_name(), mutation) { - (&atom!("background"), _) => { - *self.background.borrow_mut() = mutation.new_value(attr).and_then(|value| { - let document = document_from_node(self); - let base = document.url(); - base.join(&value).ok() - }); - true - }, (name, AttributeMutation::Set(_)) if name.starts_with("on") => { let window = window_from_node(self); let (cx, url, reflector) = (window.get_cx(), |