aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/htmlbuttonelement.rs19
-rw-r--r--components/script/dom/htmlinputelement.rs21
-rw-r--r--components/script/dom/htmlobjectelement.rs6
-rw-r--r--components/script/dom/htmlselectelement.rs14
-rw-r--r--components/script/dom/htmltextareaelement.rs5
-rw-r--r--components/script/dom/webidls/HTMLButtonElement.webidl2
-rw-r--r--components/script/dom/webidls/HTMLInputElement.webidl2
-rw-r--r--components/script/dom/webidls/HTMLObjectElement.webidl2
-rw-r--r--components/script/dom/webidls/HTMLSelectElement.webidl2
-rw-r--r--components/script/dom/webidls/HTMLTextAreaElement.webidl2
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;