diff options
-rw-r--r-- | components/script/dom/htmlbuttonelement.rs | 19 | ||||
-rw-r--r-- | components/script/dom/htmlinputelement.rs | 21 | ||||
-rw-r--r-- | components/script/dom/htmlobjectelement.rs | 6 | ||||
-rw-r--r-- | components/script/dom/htmlselectelement.rs | 14 | ||||
-rw-r--r-- | components/script/dom/htmltextareaelement.rs | 5 | ||||
-rw-r--r-- | components/script/dom/webidls/HTMLButtonElement.webidl | 2 | ||||
-rw-r--r-- | components/script/dom/webidls/HTMLInputElement.webidl | 2 | ||||
-rw-r--r-- | components/script/dom/webidls/HTMLObjectElement.webidl | 2 | ||||
-rw-r--r-- | components/script/dom/webidls/HTMLSelectElement.webidl | 2 | ||||
-rw-r--r-- | components/script/dom/webidls/HTMLTextAreaElement.webidl | 2 |
10 files changed, 66 insertions, 9 deletions
diff --git a/components/script/dom/htmlbuttonelement.rs b/components/script/dom/htmlbuttonelement.rs index baf3fba6c93..f12035d148e 100644 --- a/components/script/dom/htmlbuttonelement.rs +++ b/components/script/dom/htmlbuttonelement.rs @@ -4,18 +4,19 @@ use dom::bindings::codegen::Bindings::HTMLButtonElementBinding; use dom::bindings::codegen::Bindings::HTMLButtonElementBinding::HTMLButtonElementMethods; -use dom::bindings::codegen::InheritTypes::{HTMLElementCast, NodeCast}; +use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLElementCast, NodeCast}; use dom::bindings::codegen::InheritTypes::{HTMLButtonElementDerived, HTMLFieldSetElementDerived}; use dom::bindings::js::{JSRef, Temporary}; use dom::bindings::utils::{Reflectable, Reflector}; use dom::document::Document; -use dom::element::{AttributeHandlers, HTMLButtonElementTypeId}; +use dom::element::{AttributeHandlers, Element, HTMLButtonElementTypeId}; use dom::eventtarget::{EventTarget, NodeTargetTypeId}; use dom::htmlelement::HTMLElement; use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId, window_from_node}; use dom::validitystate::ValidityState; use dom::virtualmethods::VirtualMethods; +use std::ascii::OwnedStrAsciiExt; use servo_util::str::DOMString; use string_cache::Atom; @@ -56,6 +57,20 @@ impl<'a> HTMLButtonElementMethods for JSRef<'a, HTMLButtonElement> { // http://www.whatwg.org/html/#dom-fe-disabled make_bool_setter!(SetDisabled, "disabled") + + // https://html.spec.whatwg.org/multipage/forms.html#dom-button-type + fn Type(self) -> DOMString { + let elem: JSRef<Element> = ElementCast::from_ref(self); + let ty = elem.get_string_attribute("type").into_ascii_lower(); + // https://html.spec.whatwg.org/multipage/forms.html#attr-button-type + match ty.as_slice() { + "reset" | "button" | "menu" => ty, + _ => "submit".to_string() + } + } + + // https://html.spec.whatwg.org/multipage/forms.html#dom-button-type + make_setter!(SetType, "type") } impl<'a> VirtualMethods for JSRef<'a, HTMLButtonElement> { diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs index 9908807a713..162be352bba 100644 --- a/components/script/dom/htmlinputelement.rs +++ b/components/script/dom/htmlinputelement.rs @@ -24,6 +24,7 @@ use dom::virtualmethods::VirtualMethods; use servo_util::str::{DOMString, parse_unsigned_integer}; use string_cache::Atom; +use std::ascii::OwnedStrAsciiExt; use std::cell::{Cell, RefCell}; use std::mem; @@ -131,6 +132,26 @@ impl<'a> HTMLInputElementMethods for JSRef<'a, HTMLInputElement> { // https://html.spec.whatwg.org/multipage/forms.html#dom-input-size make_uint_setter!(SetSize, "size") + // https://html.spec.whatwg.org/multipage/forms.html#dom-input-type + fn Type(self) -> DOMString { + let elem: JSRef<Element> = ElementCast::from_ref(self); + let ty = elem.get_string_attribute("type").into_ascii_lower(); + // https://html.spec.whatwg.org/multipage/forms.html#attr-input-type + match ty.as_slice() { + "hidden" | "search" | "tel" | + "url" | "email" | "password" | + "datetime" | "date" | "month" | + "week" | "time" | "datetime-local" | + "number" | "range" | "color" | + "checkbox" | "radio" | "file" | + "submit" | "image" | "reset" | "button" => ty, + _ => "text".to_string() + } + } + + // https://html.spec.whatwg.org/multipage/forms.html#dom-input-type + make_setter!(SetType, "type") + // https://html.spec.whatwg.org/multipage/forms.html#dom-input-value make_getter!(Value) diff --git a/components/script/dom/htmlobjectelement.rs b/components/script/dom/htmlobjectelement.rs index f5aadd3c956..1d39c3a07f5 100644 --- a/components/script/dom/htmlobjectelement.rs +++ b/components/script/dom/htmlobjectelement.rs @@ -86,6 +86,12 @@ impl<'a> HTMLObjectElementMethods for JSRef<'a, HTMLObjectElement> { let window = window_from_node(self).root(); ValidityState::new(*window) } + + // https://html.spec.whatwg.org/multipage/embedded-content.html#dom-object-type + make_getter!(Type) + + // https://html.spec.whatwg.org/multipage/embedded-content.html#dom-object-type + make_setter!(SetType, "type") } impl<'a> VirtualMethods for JSRef<'a, HTMLObjectElement> { diff --git a/components/script/dom/htmlselectelement.rs b/components/script/dom/htmlselectelement.rs index 53f8ce3efff..8c86318c38c 100644 --- a/components/script/dom/htmlselectelement.rs +++ b/components/script/dom/htmlselectelement.rs @@ -5,13 +5,13 @@ use dom::bindings::codegen::Bindings::HTMLSelectElementBinding; use dom::bindings::codegen::Bindings::HTMLSelectElementBinding::HTMLSelectElementMethods; use dom::bindings::codegen::InheritTypes::{HTMLElementCast, NodeCast}; -use dom::bindings::codegen::InheritTypes::{HTMLSelectElementDerived, HTMLFieldSetElementDerived}; +use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLSelectElementDerived, HTMLFieldSetElementDerived}; use dom::bindings::codegen::UnionTypes::HTMLElementOrLong::HTMLElementOrLong; use dom::bindings::codegen::UnionTypes::HTMLOptionElementOrHTMLOptGroupElement::HTMLOptionElementOrHTMLOptGroupElement; use dom::bindings::js::{JSRef, Temporary}; use dom::bindings::utils::{Reflectable, Reflector}; use dom::document::Document; -use dom::element::{AttributeHandlers, HTMLSelectElementTypeId}; +use dom::element::{AttributeHandlers, Element, HTMLSelectElementTypeId}; use dom::eventtarget::{EventTarget, NodeTargetTypeId}; use dom::htmlelement::HTMLElement; use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId, window_from_node}; @@ -62,6 +62,16 @@ impl<'a> HTMLSelectElementMethods for JSRef<'a, HTMLSelectElement> { // http://www.whatwg.org/html/#dom-fe-disabled make_bool_setter!(SetDisabled, "disabled") + + // https://html.spec.whatwg.org/multipage/forms.html#dom-select-type + fn Type(self) -> DOMString { + let elem: JSRef<Element> = ElementCast::from_ref(self); + if elem.has_attribute("multiple") { + "select-multiple".to_string() + } else { + "select-one".to_string() + } + } } impl<'a> VirtualMethods for JSRef<'a, HTMLSelectElement> { diff --git a/components/script/dom/htmltextareaelement.rs b/components/script/dom/htmltextareaelement.rs index 5dd688782cf..d109a26c524 100644 --- a/components/script/dom/htmltextareaelement.rs +++ b/components/script/dom/htmltextareaelement.rs @@ -50,6 +50,11 @@ impl<'a> HTMLTextAreaElementMethods for JSRef<'a, HTMLTextAreaElement> { // http://www.whatwg.org/html/#dom-fe-disabled make_bool_setter!(SetDisabled, "disabled") + + // https://html.spec.whatwg.org/multipage/forms.html#dom-textarea-type + fn Type(self) -> DOMString { + "textarea".to_string() + } } impl<'a> VirtualMethods for JSRef<'a, HTMLTextAreaElement> { diff --git a/components/script/dom/webidls/HTMLButtonElement.webidl b/components/script/dom/webidls/HTMLButtonElement.webidl index ad21e11370f..622abbd1cf5 100644 --- a/components/script/dom/webidls/HTMLButtonElement.webidl +++ b/components/script/dom/webidls/HTMLButtonElement.webidl @@ -14,7 +14,7 @@ interface HTMLButtonElement : HTMLElement { // attribute boolean formNoValidate; // attribute DOMString formTarget; // attribute DOMString name; - // attribute DOMString type; + attribute DOMString type; // attribute DOMString value; // attribute HTMLMenuElement? menu; diff --git a/components/script/dom/webidls/HTMLInputElement.webidl b/components/script/dom/webidls/HTMLInputElement.webidl index a418f50928c..adc3ddb5a86 100644 --- a/components/script/dom/webidls/HTMLInputElement.webidl +++ b/components/script/dom/webidls/HTMLInputElement.webidl @@ -37,7 +37,7 @@ interface HTMLInputElement : HTMLElement { attribute unsigned long size; // attribute DOMString src; // attribute DOMString step; - // attribute DOMString type; //XXXjdm need binaryName + attribute DOMString type; //XXXjdm need binaryName // attribute DOMString defaultValue; [TreatNullAs=EmptyString] attribute DOMString value; // attribute Date? valueAsDate; diff --git a/components/script/dom/webidls/HTMLObjectElement.webidl b/components/script/dom/webidls/HTMLObjectElement.webidl index 56fc290e546..e2f6aa3cb75 100644 --- a/components/script/dom/webidls/HTMLObjectElement.webidl +++ b/components/script/dom/webidls/HTMLObjectElement.webidl @@ -6,7 +6,7 @@ // http://www.whatwg.org/html/#htmlobjectelement interface HTMLObjectElement : HTMLElement { // attribute DOMString data; - // attribute DOMString type; + attribute DOMString type; // attribute boolean typeMustMatch; // attribute DOMString name; // attribute DOMString useMap; diff --git a/components/script/dom/webidls/HTMLSelectElement.webidl b/components/script/dom/webidls/HTMLSelectElement.webidl index 91d4c3b0917..6b36b65e709 100644 --- a/components/script/dom/webidls/HTMLSelectElement.webidl +++ b/components/script/dom/webidls/HTMLSelectElement.webidl @@ -13,7 +13,7 @@ interface HTMLSelectElement : HTMLElement { // attribute boolean required; // attribute unsigned long size; - //readonly attribute DOMString type; + readonly attribute DOMString type; //readonly attribute HTMLOptionsCollection options; // attribute unsigned long length; diff --git a/components/script/dom/webidls/HTMLTextAreaElement.webidl b/components/script/dom/webidls/HTMLTextAreaElement.webidl index 534bb87a0e5..f3fb5b3cf40 100644 --- a/components/script/dom/webidls/HTMLTextAreaElement.webidl +++ b/components/script/dom/webidls/HTMLTextAreaElement.webidl @@ -21,7 +21,7 @@ interface HTMLTextAreaElement : HTMLElement { // attribute unsigned long rows; // attribute DOMString wrap; - //readonly attribute DOMString type; + readonly attribute DOMString type; // attribute DOMString defaultValue; //[TreatNullAs=EmptyString] attribute DOMString value; //readonly attribute unsigned long textLength; |