diff options
author | Philipp Hartwig <ph@phhart.de> | 2015-09-30 22:02:56 +0200 |
---|---|---|
committer | Philipp Hartwig <ph@phhart.de> | 2015-09-30 22:02:56 +0200 |
commit | bae4abd388fd4f27335704f8dfe590809691f765 (patch) | |
tree | fcbd9fc4c6b16ef8ec5e81c81b4d3ad98755a188 /components/script/dom | |
parent | a72d7a4f5222d029a34b2b4a7da21ebe095fde53 (diff) | |
download | servo-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.rs | 6 | ||||
-rw-r--r-- | components/script/dom/htmlfieldsetelement.rs | 8 | ||||
-rw-r--r-- | components/script/dom/htmlformelement.rs | 14 | ||||
-rw-r--r-- | components/script/dom/htmlinputelement.rs | 6 | ||||
-rw-r--r-- | components/script/dom/htmllabelelement.rs | 9 | ||||
-rw-r--r-- | components/script/dom/htmlobjectelement.rs | 8 | ||||
-rw-r--r-- | components/script/dom/htmloutputelement.rs | 9 | ||||
-rw-r--r-- | components/script/dom/htmlselectelement.rs | 10 | ||||
-rw-r--r-- | components/script/dom/htmltextareaelement.rs | 8 |
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>, |