diff --git a/components/layout/construct.rs b/components/layout/construct.rs index a95caed9c9a..30df9591f5f 100644 --- a/components/layout/construct.rs +++ b/components/layout/construct.rs @@ -1077,9 +1077,9 @@ impl<'ln> NodeUtils for ThreadSafeLayoutNode<'ln> { } /// Methods for interacting with HTMLObjectElement nodes -trait ObjectElement { +trait ObjectElement<'a> { /// Returns None if this node is not matching attributes. - fn get_type_and_data(&self) -> (Option<&'static str>, Option<&'static str>); + fn get_type_and_data(&self) -> (Option<&'a str>, Option<&'a str>); /// Returns true if this node has object data that is correct uri. fn has_object_data(&self) -> bool; @@ -1088,8 +1088,8 @@ trait ObjectElement { fn get_object_data(&self) -> Option; } -impl<'ln> ObjectElement for ThreadSafeLayoutNode<'ln> { - fn get_type_and_data(&self) -> (Option<&'static str>, Option<&'static str>) { +impl<'ln> ObjectElement<'ln> for ThreadSafeLayoutNode<'ln> { + fn get_type_and_data(&self) -> (Option<&'ln str>, Option<&'ln str>) { let elem = self.as_element(); (elem.get_attr(&namespace::Null, "type"), elem.get_attr(&namespace::Null, "data")) } diff --git a/components/layout/wrapper.rs b/components/layout/wrapper.rs index 517fdb36fef..4b4f3eef939 100644 --- a/components/layout/wrapper.rs +++ b/components/layout/wrapper.rs @@ -401,11 +401,11 @@ impl<'le> TElement<'le> for LayoutElement<'le> { } #[inline] - fn get_attr(&self, namespace: &Namespace, name: &str) -> Option<&'static str> { + fn get_attr(&self, namespace: &Namespace, name: &str) -> Option<&'le str> { unsafe { self.element.get_attr_val_for_layout(namespace, name) } } - fn get_link(&self) -> Option<&'static str> { + fn get_link(&self) -> Option<&'le str> { // FIXME: This is HTML only. match self.element.node.type_id_for_layout() { // http://www.whatwg.org/specs/web-apps/current-work/multipage/selectors.html# @@ -791,7 +791,7 @@ pub struct ThreadSafeLayoutElement<'le> { impl<'le> ThreadSafeLayoutElement<'le> { #[inline] - pub fn get_attr(&self, namespace: &Namespace, name: &str) -> Option<&'static str> { + pub fn get_attr(&self, namespace: &Namespace, name: &str) -> Option<&'le str> { unsafe { self.element.get_attr_val_for_layout(namespace, name) } } } diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 97e841eb80b..7852f7aae0a 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -170,7 +170,7 @@ impl Element { } pub trait RawLayoutElementHelpers { - unsafe fn get_attr_val_for_layout(&self, namespace: &Namespace, name: &str) -> Option<&'static str>; + unsafe fn get_attr_val_for_layout<'a>(&'a self, namespace: &Namespace, name: &str) -> Option<&'a str>; unsafe fn get_attr_atom_for_layout(&self, namespace: &Namespace, name: &str) -> Option; unsafe fn has_class_for_layout(&self, name: &str) -> bool; } @@ -178,8 +178,8 @@ pub trait RawLayoutElementHelpers { impl RawLayoutElementHelpers for Element { #[inline] #[allow(unrooted_must_root)] - unsafe fn get_attr_val_for_layout(&self, namespace: &Namespace, name: &str) - -> Option<&'static str> { + unsafe fn get_attr_val_for_layout<'a>(&'a self, namespace: &Namespace, name: &str) + -> Option<&'a str> { // cast to point to T in RefCell directly let attrs: *const Vec> = mem::transmute(&self.attrs); (*attrs).iter().find(|attr: & &JS| { @@ -949,12 +949,12 @@ impl<'a> VirtualMethods for JSRef<'a, Element> { } impl<'a> style::TElement<'a> for JSRef<'a, Element> { - fn get_attr(&self, namespace: &Namespace, attr: &str) -> Option<&'static str> { + fn get_attr(&self, namespace: &Namespace, attr: &str) -> Option<&'a str> { self.get_attribute(namespace.clone(), attr).root().map(|attr| { unsafe { mem::transmute(attr.deref().value().as_slice()) } }) } - fn get_link(&self) -> Option<&'static str> { + fn get_link(&self) -> Option<&'a str> { // FIXME: This is HTML only. let node: JSRef = NodeCast::from_ref(*self); match node.type_id() { @@ -966,10 +966,10 @@ impl<'a> style::TElement<'a> for JSRef<'a, Element> { _ => None, } } - fn get_local_name<'a>(&'a self) -> &'a Atom { + fn get_local_name<'b>(&'b self) -> &'b Atom { (self as &ElementHelpers).get_local_name() } - fn get_namespace<'a>(&'a self) -> &'a Namespace { + fn get_namespace<'b>(&'b self) -> &'b Namespace { (self as &ElementHelpers).get_namespace() } fn get_hover_state(&self) -> bool { diff --git a/components/style/node.rs b/components/style/node.rs index 5179db5f6af..8b05097f9c0 100644 --- a/components/style/node.rs +++ b/components/style/node.rs @@ -24,10 +24,10 @@ pub trait TNode<'a, E: TElement<'a>> : Clone { } pub trait TElement<'a> { - fn get_attr(&self, namespace: &Namespace, attr: &str) -> Option<&'static str>; - fn get_link(&self) -> Option<&'static str>; - fn get_local_name<'a>(&'a self) -> &'a Atom; - fn get_namespace<'a>(&'a self) -> &'a Namespace; + fn get_attr(&self, namespace: &Namespace, attr: &str) -> Option<&'a str>; + fn get_link(&self) -> Option<&'a str>; + fn get_local_name<'b>(&'b self) -> &'b Atom; + fn get_namespace<'b>(&'b self) -> &'b Namespace; fn get_hover_state(&self) -> bool; fn get_id(&self) -> Option; fn get_disabled_state(&self) -> bool;