aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authorPhilipp Hartwig <ph@phhart.de>2015-09-30 22:02:56 +0200
committerPhilipp Hartwig <ph@phhart.de>2015-09-30 22:02:56 +0200
commitbae4abd388fd4f27335704f8dfe590809691f765 (patch)
treefcbd9fc4c6b16ef8ec5e81c81b4d3ad98755a188 /components/script/dom
parenta72d7a4f5222d029a34b2b4a7da21ebe095fde53 (diff)
downloadservo-bae4abd388fd4f27335704f8dfe590809691f765.tar.gz
servo-bae4abd388fd4f27335704f8dfe590809691f765.zip
Refactor FormControl trait
The trait is now implemented for HTMLFooElement instead of &HTMLFooElement and does no longer require an impl body.
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/htmlbuttonelement.rs6
-rw-r--r--components/script/dom/htmlfieldsetelement.rs8
-rw-r--r--components/script/dom/htmlformelement.rs14
-rw-r--r--components/script/dom/htmlinputelement.rs6
-rw-r--r--components/script/dom/htmllabelelement.rs9
-rw-r--r--components/script/dom/htmlobjectelement.rs8
-rw-r--r--components/script/dom/htmloutputelement.rs9
-rw-r--r--components/script/dom/htmlselectelement.rs10
-rw-r--r--components/script/dom/htmltextareaelement.rs8
9 files changed, 24 insertions, 54 deletions
diff --git a/components/script/dom/htmlbuttonelement.rs b/components/script/dom/htmlbuttonelement.rs
index 7023a8ffdfe..8406fa2f895 100644
--- a/components/script/dom/htmlbuttonelement.rs
+++ b/components/script/dom/htmlbuttonelement.rs
@@ -191,11 +191,7 @@ impl VirtualMethods for HTMLButtonElement {
}
}
-impl<'a> FormControl<'a> for &'a HTMLButtonElement {
- fn to_element(self) -> &'a Element {
- ElementCast::from_ref(self)
- }
-}
+impl FormControl for HTMLButtonElement {}
impl<'a> Activatable for &'a HTMLButtonElement {
fn as_element<'b>(&'b self) -> &'b Element {
diff --git a/components/script/dom/htmlfieldsetelement.rs b/components/script/dom/htmlfieldsetelement.rs
index a38c6e9a7b2..c4c2f5a86f9 100644
--- a/components/script/dom/htmlfieldsetelement.rs
+++ b/components/script/dom/htmlfieldsetelement.rs
@@ -5,7 +5,7 @@
use dom::attr::Attr;
use dom::bindings::codegen::Bindings::HTMLFieldSetElementBinding;
use dom::bindings::codegen::Bindings::HTMLFieldSetElementBinding::HTMLFieldSetElementMethods;
-use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLElementCast, HTMLLegendElementDerived};
+use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLLegendElementDerived};
use dom::bindings::codegen::InheritTypes::{HTMLFieldSetElementDerived, NodeCast};
use dom::bindings::js::{Root, RootedReference};
use dom::document::Document;
@@ -157,8 +157,4 @@ impl VirtualMethods for HTMLFieldSetElement {
}
}
-impl<'a> FormControl<'a> for &'a HTMLFieldSetElement {
- fn to_element(self) -> &'a Element {
- ElementCast::from_ref(self)
- }
-}
+impl FormControl for HTMLFieldSetElement {}
diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs
index b16b2ec5609..0d9e0176d0e 100644
--- a/components/script/dom/htmlformelement.rs
+++ b/components/script/dom/htmlformelement.rs
@@ -9,6 +9,7 @@ use dom::bindings::codegen::Bindings::HTMLButtonElementBinding::HTMLButtonElemen
use dom::bindings::codegen::Bindings::HTMLFormElementBinding;
use dom::bindings::codegen::Bindings::HTMLFormElementBinding::HTMLFormElementMethods;
use dom::bindings::codegen::Bindings::HTMLInputElementBinding::HTMLInputElementMethods;
+use dom::bindings::codegen::InheritTypes::{ElementBase, ElementCast};
use dom::bindings::codegen::InheritTypes::EventTargetCast;
use dom::bindings::codegen::InheritTypes::HTMLDataListElementCast;
use dom::bindings::codegen::InheritTypes::HTMLElementCast;
@@ -18,6 +19,7 @@ use dom::bindings::codegen::InheritTypes::HTMLInputElementCast;
use dom::bindings::codegen::InheritTypes::{HTMLTextAreaElementCast, NodeCast};
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{Root};
+use dom::bindings::utils::Reflectable;
use dom::document::Document;
use dom::element::{Element, ElementTypeId};
use dom::event::{Event, EventBubbles, EventCancelable};
@@ -515,10 +517,10 @@ impl<'a> FormSubmitter<'a> {
}
}
-pub trait FormControl<'a> : Copy + Sized {
+pub trait FormControl: ElementBase + Reflectable {
// FIXME: This is wrong (https://github.com/servo/servo/issues/3553)
// but we need html5ever to do it correctly
- fn form_owner(self) -> Option<Root<HTMLFormElement>> {
+ fn form_owner(&self) -> Option<Root<HTMLFormElement>> {
// https://html.spec.whatwg.org/multipage/#reset-the-form-owner
let elem = self.to_element();
let owner = elem.get_string_attribute(&atom!("form"));
@@ -544,12 +546,12 @@ pub trait FormControl<'a> : Copy + Sized {
None
}
- fn get_form_attribute<InputFn, OwnerFn>(self,
+ fn get_form_attribute<InputFn, OwnerFn>(&self,
attr: &Atom,
input: InputFn,
owner: OwnerFn)
-> DOMString
- where InputFn: Fn(Self) -> DOMString,
+ where InputFn: Fn(&Self) -> DOMString,
OwnerFn: Fn(&HTMLFormElement) -> DOMString
{
if self.to_element().has_attribute(attr) {
@@ -559,7 +561,9 @@ pub trait FormControl<'a> : Copy + Sized {
}
}
- fn to_element(self) -> &'a Element;
+ fn to_element(&self) -> &Element {
+ ElementCast::from_ref(self)
+ }
}
impl VirtualMethods for HTMLFormElement {
diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs
index 40020a74d14..524faaee91c 100644
--- a/components/script/dom/htmlinputelement.rs
+++ b/components/script/dom/htmlinputelement.rs
@@ -629,11 +629,7 @@ impl VirtualMethods for HTMLInputElement {
}
}
-impl<'a> FormControl<'a> for &'a HTMLInputElement {
- fn to_element(self) -> &'a Element {
- ElementCast::from_ref(self)
- }
-}
+impl FormControl for HTMLInputElement {}
impl Activatable for HTMLInputElement {
fn as_element<'b>(&'b self) -> &'b Element {
diff --git a/components/script/dom/htmllabelelement.rs b/components/script/dom/htmllabelelement.rs
index ec3f1fa7865..624d0e3f722 100644
--- a/components/script/dom/htmllabelelement.rs
+++ b/components/script/dom/htmllabelelement.rs
@@ -4,11 +4,10 @@
use dom::bindings::codegen::Bindings::HTMLLabelElementBinding;
use dom::bindings::codegen::Bindings::HTMLLabelElementBinding::HTMLLabelElementMethods;
-use dom::bindings::codegen::InheritTypes::ElementCast;
use dom::bindings::codegen::InheritTypes::HTMLLabelElementDerived;
use dom::bindings::js::Root;
use dom::document::Document;
-use dom::element::{Element, ElementTypeId};
+use dom::element::ElementTypeId;
use dom::eventtarget::{EventTarget, EventTargetTypeId};
use dom::htmlelement::{HTMLElement, HTMLElementTypeId};
use dom::htmlformelement::{FormControl, HTMLFormElement};
@@ -54,8 +53,4 @@ impl HTMLLabelElementMethods for HTMLLabelElement {
}
}
-impl<'a> FormControl<'a> for &'a HTMLLabelElement {
- fn to_element(self) -> &'a Element {
- ElementCast::from_ref(self)
- }
-}
+impl FormControl for HTMLLabelElement {}
diff --git a/components/script/dom/htmlobjectelement.rs b/components/script/dom/htmlobjectelement.rs
index e197f1d60c4..fb6c7a39860 100644
--- a/components/script/dom/htmlobjectelement.rs
+++ b/components/script/dom/htmlobjectelement.rs
@@ -10,7 +10,7 @@ use dom::bindings::codegen::InheritTypes::HTMLObjectElementDerived;
use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLElementCast};
use dom::bindings::js::Root;
use dom::document::Document;
-use dom::element::{AttributeMutation, Element, ElementTypeId};
+use dom::element::{AttributeMutation, ElementTypeId};
use dom::eventtarget::{EventTarget, EventTargetTypeId};
use dom::htmlelement::{HTMLElement, HTMLElementTypeId};
use dom::htmlformelement::{FormControl, HTMLFormElement};
@@ -119,8 +119,4 @@ impl VirtualMethods for HTMLObjectElement {
}
}
-impl<'a> FormControl<'a> for &'a HTMLObjectElement {
- fn to_element(self) -> &'a Element {
- ElementCast::from_ref(self)
- }
-}
+impl FormControl for HTMLObjectElement {}
diff --git a/components/script/dom/htmloutputelement.rs b/components/script/dom/htmloutputelement.rs
index 781ba2f9e83..c0e98571358 100644
--- a/components/script/dom/htmloutputelement.rs
+++ b/components/script/dom/htmloutputelement.rs
@@ -4,11 +4,10 @@
use dom::bindings::codegen::Bindings::HTMLOutputElementBinding;
use dom::bindings::codegen::Bindings::HTMLOutputElementBinding::HTMLOutputElementMethods;
-use dom::bindings::codegen::InheritTypes::ElementCast;
use dom::bindings::codegen::InheritTypes::HTMLOutputElementDerived;
use dom::bindings::js::Root;
use dom::document::Document;
-use dom::element::{Element, ElementTypeId};
+use dom::element::ElementTypeId;
use dom::eventtarget::{EventTarget, EventTargetTypeId};
use dom::htmlelement::{HTMLElement, HTMLElementTypeId};
use dom::htmlformelement::{FormControl, HTMLFormElement};
@@ -61,8 +60,4 @@ impl HTMLOutputElementMethods for HTMLOutputElement {
}
}
-impl<'a> FormControl<'a> for &'a HTMLOutputElement {
- fn to_element(self) -> &'a Element {
- ElementCast::from_ref(self)
- }
-}
+impl FormControl for HTMLOutputElement {}
diff --git a/components/script/dom/htmlselectelement.rs b/components/script/dom/htmlselectelement.rs
index 48aea7422ee..8c6b73c564b 100644
--- a/components/script/dom/htmlselectelement.rs
+++ b/components/script/dom/htmlselectelement.rs
@@ -5,13 +5,13 @@
use dom::attr::{Attr, AttrValue};
use dom::bindings::codegen::Bindings::HTMLSelectElementBinding;
use dom::bindings::codegen::Bindings::HTMLSelectElementBinding::HTMLSelectElementMethods;
-use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLElementCast, NodeCast};
+use dom::bindings::codegen::InheritTypes::{HTMLElementCast, NodeCast};
use dom::bindings::codegen::InheritTypes::{HTMLFieldSetElementDerived, HTMLSelectElementDerived};
use dom::bindings::codegen::UnionTypes::HTMLElementOrLong;
use dom::bindings::codegen::UnionTypes::HTMLOptionElementOrHTMLOptGroupElement;
use dom::bindings::js::Root;
use dom::document::Document;
-use dom::element::{AttributeMutation, Element, ElementTypeId};
+use dom::element::{AttributeMutation, ElementTypeId};
use dom::eventtarget::{EventTarget, EventTargetTypeId};
use dom::htmlelement::{HTMLElement, HTMLElementTypeId};
use dom::htmlformelement::{FormControl, HTMLFormElement};
@@ -161,8 +161,4 @@ impl VirtualMethods for HTMLSelectElement {
}
}
-impl<'a> FormControl<'a> for &'a HTMLSelectElement {
- fn to_element(self) -> &'a Element {
- ElementCast::from_ref(self)
- }
-}
+impl FormControl for HTMLSelectElement {}
diff --git a/components/script/dom/htmltextareaelement.rs b/components/script/dom/htmltextareaelement.rs
index 9c20b4ad2b2..c2231b070b7 100644
--- a/components/script/dom/htmltextareaelement.rs
+++ b/components/script/dom/htmltextareaelement.rs
@@ -15,7 +15,7 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::js::{LayoutJS, Root};
use dom::bindings::refcounted::Trusted;
use dom::document::Document;
-use dom::element::{AttributeMutation, Element, ElementTypeId};
+use dom::element::{AttributeMutation, ElementTypeId};
use dom::event::{Event, EventBubbles, EventCancelable};
use dom::eventtarget::{EventTarget, EventTargetTypeId};
use dom::htmlelement::{HTMLElement, HTMLElementTypeId};
@@ -363,11 +363,7 @@ impl VirtualMethods for HTMLTextAreaElement {
}
}
-impl<'a> FormControl<'a> for &'a HTMLTextAreaElement {
- fn to_element(self) -> &'a Element {
- ElementCast::from_ref(self)
- }
-}
+impl FormControl for HTMLTextAreaElement {}
pub struct ChangeEventRunnable {
element: Trusted<HTMLTextAreaElement>,