Pass an Atom to before_remove_attr and after_set_attr.

This commit is contained in:
Ms2ger 2014-08-16 12:32:19 +02:00
parent 9501d2e451
commit 1b543144f1
19 changed files with 107 additions and 72 deletions

View file

@ -116,7 +116,7 @@ impl Attr {
ReplacedAttr => {
if namespace_is_null {
vtable_for(node).before_remove_attr(
self.local_name().as_slice().to_string(),
self.local_name(),
self.value.deref().borrow().as_slice().to_string());
}
}
@ -127,7 +127,7 @@ impl Attr {
if namespace_is_null {
vtable_for(node).after_set_attr(
self.local_name().as_slice().to_string(),
self.local_name(),
self.value.deref().borrow().as_slice().to_string());
}
}

View file

@ -252,7 +252,7 @@ pub trait AttributeHandlers {
value: DOMString) -> AttrValue;
fn remove_attribute(&self, namespace: Namespace, name: &str);
fn notify_attribute_changed(&self, local_name: DOMString);
fn notify_attribute_changed(&self, local_name: &Atom);
fn has_class(&self, name: &str) -> bool;
fn set_atomic_attribute(&self, name: &str, value: DOMString);
@ -356,7 +356,7 @@ impl<'a> AttributeHandlers for JSRef<'a, Element> {
if namespace == namespace::Null {
let removed_raw_value = (*self.deref().attrs.borrow())[idx].root().Value();
vtable_for(NodeCast::from_ref(self))
.before_remove_attr(local_name.as_slice().to_string(),
.before_remove_attr(&local_name,
removed_raw_value);
}
@ -365,7 +365,7 @@ impl<'a> AttributeHandlers for JSRef<'a, Element> {
};
}
fn notify_attribute_changed(&self, local_name: DOMString) {
fn notify_attribute_changed(&self, local_name: &Atom) {
let node: &JSRef<Node> = NodeCast::from_ref(self);
if node.is_in_doc() {
let damage = match local_name.as_slice() {
@ -816,9 +816,9 @@ impl<'a> VirtualMethods for JSRef<'a, Element> {
Some(node as &VirtualMethods)
}
fn after_set_attr(&self, name: DOMString, value: DOMString) {
fn after_set_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
Some(ref s) => s.after_set_attr(name, value.clone()),
_ => (),
}
@ -842,9 +842,9 @@ impl<'a> VirtualMethods for JSRef<'a, Element> {
self.notify_attribute_changed(name);
}
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.before_remove_attr(name.clone(), value.clone()),
Some(ref s) => s.before_remove_attr(name, value.clone()),
_ => (),
}

View file

@ -16,6 +16,8 @@ use dom::eventtarget::{EventTarget, NodeTargetTypeId};
use dom::htmlelement::HTMLElement;
use dom::node::{Node, NodeHelpers, ElementNodeTypeId};
use dom::virtualmethods::VirtualMethods;
use servo_util::atom::Atom;
use servo_util::namespace::Null;
use servo_util::str::DOMString;
@ -72,9 +74,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLAnchorElement> {
Some(htmlelement as &VirtualMethods)
}
fn after_set_attr(&self, name: DOMString, value: DOMString) {
fn after_set_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
Some(ref s) => s.after_set_attr(name, value.clone()),
_ => (),
}
@ -85,9 +87,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLAnchorElement> {
}
}
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.before_remove_attr(name.clone(), value.clone()),
Some(ref s) => s.before_remove_attr(name, value.clone()),
_ => (),
}

View file

@ -13,6 +13,8 @@ use dom::eventtarget::{EventTarget, NodeTargetTypeId};
use dom::htmlelement::HTMLElement;
use dom::node::{Node, NodeHelpers, ElementNodeTypeId};
use dom::virtualmethods::VirtualMethods;
use servo_util::atom::Atom;
use servo_util::str::DOMString;
#[deriving(Encodable)]
@ -45,9 +47,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLAreaElement> {
Some(htmlelement as &VirtualMethods)
}
fn after_set_attr(&self, name: DOMString, value: DOMString) {
fn after_set_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
Some(ref s) => s.after_set_attr(name, value.clone()),
_ => (),
}
@ -58,9 +60,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLAreaElement> {
}
}
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.before_remove_attr(name.clone(), value.clone()),
Some(ref s) => s.before_remove_attr(name, value.clone()),
_ => (),
}

View file

@ -16,6 +16,8 @@ use dom::eventtarget::{EventTarget, NodeTargetTypeId, EventTargetHelpers};
use dom::htmlelement::HTMLElement;
use dom::node::{Node, ElementNodeTypeId, window_from_node};
use dom::virtualmethods::VirtualMethods;
use servo_util::atom::Atom;
use servo_util::str::DOMString;
#[deriving(Encodable)]
@ -60,9 +62,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLBodyElement> {
Some(element as &VirtualMethods)
}
fn after_set_attr(&self, name: DOMString, value: DOMString) {
fn after_set_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
Some(ref s) => s.after_set_attr(name, value.clone()),
_ => (),
}

View file

@ -15,6 +15,8 @@ use dom::htmlelement::HTMLElement;
use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId, window_from_node};
use dom::validitystate::ValidityState;
use dom::virtualmethods::VirtualMethods;
use servo_util::atom::Atom;
use servo_util::str::DOMString;
#[deriving(Encodable)]
@ -66,9 +68,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLButtonElement> {
Some(htmlelement as &VirtualMethods)
}
fn after_set_attr(&self, name: DOMString, value: DOMString) {
fn after_set_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
Some(ref s) => s.after_set_attr(name, value.clone()),
_ => (),
}
@ -82,9 +84,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLButtonElement> {
}
}
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.before_remove_attr(name.clone(), value),
Some(ref s) => s.before_remove_attr(name, value),
_ => (),
}

View file

@ -18,6 +18,7 @@ use dom::htmlelement::HTMLElement;
use dom::node::{Node, ElementNodeTypeId, window_from_node};
use dom::virtualmethods::VirtualMethods;
use servo_util::atom::Atom;
use servo_util::str::DOMString;
use geom::size::Size2D;
@ -98,9 +99,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLCanvasElement> {
Some(element as &VirtualMethods)
}
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.before_remove_attr(name.clone(), value.clone()),
Some(ref s) => s.before_remove_attr(name, value.clone()),
_ => (),
}
@ -125,9 +126,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLCanvasElement> {
}
}
fn after_set_attr(&self, name: DOMString, value: DOMString) {
fn after_set_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
Some(ref s) => s.after_set_attr(name, value.clone()),
_ => (),
}

View file

@ -16,6 +16,8 @@ use dom::element::{Element, ElementTypeId, HTMLElementTypeId};
use dom::eventtarget::{EventTarget, EventTargetHelpers, NodeTargetTypeId};
use dom::node::{Node, ElementNodeTypeId, window_from_node};
use dom::virtualmethods::VirtualMethods;
use servo_util::atom::Atom;
use servo_util::namespace;
use servo_util::str::DOMString;
@ -92,9 +94,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLElement> {
Some(element as &VirtualMethods)
}
fn after_set_attr(&self, name: DOMString, value: DOMString) {
fn after_set_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
Some(ref s) => s.after_set_attr(name, value.clone()),
_ => (),
}

View file

@ -17,6 +17,8 @@ use dom::htmlelement::HTMLElement;
use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId, window_from_node};
use dom::validitystate::ValidityState;
use dom::virtualmethods::VirtualMethods;
use servo_util::atom::Atom;
use servo_util::str::{DOMString, StaticStringVec};
#[deriving(Encodable)]
@ -85,9 +87,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLFieldSetElement> {
Some(htmlelement as &VirtualMethods)
}
fn after_set_attr(&self, name: DOMString, value: DOMString) {
fn after_set_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
Some(ref s) => s.after_set_attr(name, value.clone()),
_ => (),
}
@ -117,9 +119,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLFieldSetElement> {
}
}
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.before_remove_attr(name.clone(), value),
Some(ref s) => s.before_remove_attr(name, value),
_ => (),
}

View file

@ -18,9 +18,11 @@ use dom::node::{Node, NodeHelpers, ElementNodeTypeId, window_from_node};
use dom::virtualmethods::VirtualMethods;
use dom::window::Window;
use page::IterablePage;
use servo_msg::constellation_msg::{PipelineId, SubpageId};
use servo_msg::constellation_msg::{IFrameSandboxed, IFrameUnsandboxed};
use servo_msg::constellation_msg::{ConstellationChan, LoadIframeUrlMsg};
use servo_util::atom::Atom;
use servo_util::namespace::Null;
use servo_util::str::DOMString;
@ -163,9 +165,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLIFrameElement> {
Some(htmlelement as &VirtualMethods)
}
fn after_set_attr(&self, name: DOMString, value: DOMString) {
fn after_set_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
Some(ref s) => s.after_set_attr(name, value.clone()),
_ => (),
}
@ -193,9 +195,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLIFrameElement> {
}
}
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.before_remove_attr(name.clone(), value),
Some(ref s) => s.before_remove_attr(name, value),
_ => (),
}

View file

@ -16,12 +16,16 @@ use dom::eventtarget::{EventTarget, NodeTargetTypeId};
use dom::htmlelement::HTMLElement;
use dom::node::{Node, ElementNodeTypeId, NodeHelpers, window_from_node};
use dom::virtualmethods::VirtualMethods;
use servo_util::geometry::to_px;
use servo_net::image_cache_task;
use servo_util::atom::Atom;
use servo_util::geometry::to_px;
use servo_util::str::DOMString;
use std::cell::RefCell;
use url::{Url, UrlParser};
use std::cell::RefCell;
#[deriving(Encodable)]
pub struct HTMLImageElement {
pub htmlelement: HTMLElement,
@ -221,9 +225,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLImageElement> {
Some(htmlelement as &VirtualMethods)
}
fn after_set_attr(&self, name: DOMString, value: DOMString) {
fn after_set_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
Some(ref s) => s.after_set_attr(name, value.clone()),
_ => (),
}
@ -234,9 +238,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLImageElement> {
}
}
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.before_remove_attr(name.clone(), value.clone()),
Some(ref s) => s.before_remove_attr(name, value.clone()),
_ => (),
}

View file

@ -14,6 +14,8 @@ use dom::eventtarget::{EventTarget, NodeTargetTypeId};
use dom::htmlelement::HTMLElement;
use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId};
use dom::virtualmethods::VirtualMethods;
use servo_util::atom::Atom;
use servo_util::str::DOMString;
#[deriving(Encodable)]
@ -60,9 +62,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLInputElement> {
Some(htmlelement as &VirtualMethods)
}
fn after_set_attr(&self, name: DOMString, value: DOMString) {
fn after_set_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
Some(ref s) => s.after_set_attr(name, value.clone()),
_ => (),
}
@ -76,9 +78,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLInputElement> {
}
}
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.before_remove_attr(name.clone(), value),
Some(ref s) => s.before_remove_attr(name, value),
_ => (),
}

View file

@ -13,6 +13,8 @@ use dom::eventtarget::{EventTarget, NodeTargetTypeId};
use dom::htmlelement::HTMLElement;
use dom::node::{Node, NodeHelpers, ElementNodeTypeId};
use dom::virtualmethods::VirtualMethods;
use servo_util::atom::Atom;
use servo_util::str::DOMString;
#[deriving(Encodable)]
@ -45,9 +47,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLLinkElement> {
Some(htmlelement as &VirtualMethods)
}
fn after_set_attr(&self, name: DOMString, value: DOMString) {
fn after_set_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
Some(ref s) => s.after_set_attr(name, value.clone()),
_ => (),
}
@ -58,9 +60,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLLinkElement> {
}
}
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.before_remove_attr(name.clone(), value.clone()),
Some(ref s) => s.before_remove_attr(name, value.clone()),
_ => (),
}

View file

@ -17,11 +17,13 @@ use dom::htmlelement::HTMLElement;
use dom::node::{Node, ElementNodeTypeId, NodeHelpers, window_from_node};
use dom::validitystate::ValidityState;
use dom::virtualmethods::VirtualMethods;
use servo_util::str::DOMString;
use servo_net::image_cache_task;
use servo_net::image_cache_task::ImageCacheTask;
use servo_util::atom::Atom;
use servo_util::namespace::Null;
use servo_util::str::DOMString;
use url::Url;
#[deriving(Encodable)]
@ -91,9 +93,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLObjectElement> {
Some(htmlelement as &VirtualMethods)
}
fn after_set_attr(&self, name: DOMString, value: DOMString) {
fn after_set_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.after_set_attr(name.clone(), value),
Some(ref s) => s.after_set_attr(name, value),
_ => (),
}

View file

@ -14,6 +14,8 @@ use dom::eventtarget::{EventTarget, NodeTargetTypeId};
use dom::htmlelement::HTMLElement;
use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId};
use dom::virtualmethods::VirtualMethods;
use servo_util::atom::Atom;
use servo_util::str::DOMString;
#[deriving(Encodable)]
@ -60,9 +62,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLOptGroupElement> {
Some(htmlelement as &VirtualMethods)
}
fn after_set_attr(&self, name: DOMString, value: DOMString) {
fn after_set_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
Some(ref s) => s.after_set_attr(name, value.clone()),
_ => (),
}
@ -80,9 +82,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLOptGroupElement> {
}
}
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.before_remove_attr(name.clone(), value),
Some(ref s) => s.before_remove_attr(name, value),
_ => (),
}

View file

@ -14,6 +14,8 @@ use dom::eventtarget::{EventTarget, NodeTargetTypeId};
use dom::htmlelement::HTMLElement;
use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId};
use dom::virtualmethods::VirtualMethods;
use servo_util::atom::Atom;
use servo_util::str::DOMString;
#[deriving(Encodable)]
@ -60,9 +62,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLOptionElement> {
Some(htmlelement as &VirtualMethods)
}
fn after_set_attr(&self, name: DOMString, value: DOMString) {
fn after_set_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
Some(ref s) => s.after_set_attr(name, value.clone()),
_ => (),
}
@ -76,9 +78,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLOptionElement> {
}
}
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.before_remove_attr(name.clone(), value),
Some(ref s) => s.before_remove_attr(name, value),
_ => (),
}

View file

@ -17,6 +17,8 @@ use dom::htmlelement::HTMLElement;
use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId, window_from_node};
use dom::validitystate::ValidityState;
use dom::virtualmethods::VirtualMethods;
use servo_util::atom::Atom;
use servo_util::str::DOMString;
#[deriving(Encodable)]
@ -72,9 +74,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLSelectElement> {
Some(htmlelement as &VirtualMethods)
}
fn after_set_attr(&self, name: DOMString, value: DOMString) {
fn after_set_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
Some(ref s) => s.after_set_attr(name, value.clone()),
_ => (),
}
@ -88,9 +90,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLSelectElement> {
}
}
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.before_remove_attr(name.clone(), value),
Some(ref s) => s.before_remove_attr(name, value),
_ => (),
}

View file

@ -14,6 +14,8 @@ use dom::eventtarget::{EventTarget, NodeTargetTypeId};
use dom::htmlelement::HTMLElement;
use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId};
use dom::virtualmethods::VirtualMethods;
use servo_util::atom::Atom;
use servo_util::str::DOMString;
#[deriving(Encodable)]
@ -60,9 +62,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLTextAreaElement> {
Some(htmlelement as &VirtualMethods)
}
fn after_set_attr(&self, name: DOMString, value: DOMString) {
fn after_set_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
Some(ref s) => s.after_set_attr(name, value.clone()),
_ => (),
}
@ -76,9 +78,9 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLTextAreaElement> {
}
}
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.before_remove_attr(name.clone(), value),
Some(ref s) => s.before_remove_attr(name, value),
_ => (),
}

View file

@ -59,6 +59,8 @@ use dom::htmlselectelement::HTMLSelectElement;
use dom::htmlstyleelement::HTMLStyleElement;
use dom::htmltextareaelement::HTMLTextAreaElement;
use dom::node::{Node, NodeHelpers, ElementNodeTypeId};
use servo_util::atom::Atom;
use servo_util::str::DOMString;
/// Trait to allow DOM nodes to opt-in to overriding (or adding to) common
@ -70,7 +72,7 @@ pub trait VirtualMethods {
/// Called when changing or adding attributes, after the attribute's value
/// has been updated.
fn after_set_attr(&self, name: DOMString, value: DOMString) {
fn after_set_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.after_set_attr(name, value),
_ => (),
@ -79,7 +81,7 @@ pub trait VirtualMethods {
/// Called when changing or removing attributes, before any modification
/// has taken place.
fn before_remove_attr(&self, name: DOMString, value: DOMString) {
fn before_remove_attr(&self, name: &Atom, value: DOMString) {
match self.super_type() {
Some(ref s) => s.before_remove_attr(name, value),
_ => (),