aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlbodyelement.rs
diff options
context:
space:
mode:
authorCorey Farwell <coreyf@rwell.org>2016-01-02 16:32:09 -0800
committerCorey Farwell <coreyf@rwell.org>2016-01-02 16:54:38 -0800
commit1a808219a8e51b8cac8c32a2361a930f24041557 (patch)
tree80c3895ba76e8451f17c79d8ce73715ca608bc84 /components/script/dom/htmlbodyelement.rs
parent9a1fd472ab7b136112bb8668d32ba5b324d35220 (diff)
downloadservo-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.rs24
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(),