aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlinputelement.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/htmlinputelement.rs')
-rw-r--r--components/script/dom/htmlinputelement.rs54
1 files changed, 27 insertions, 27 deletions
diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs
index b13a458f3d4..a2ad92517c0 100644
--- a/components/script/dom/htmlinputelement.rs
+++ b/components/script/dom/htmlinputelement.rs
@@ -11,9 +11,7 @@ use dom::bindings::codegen::Bindings::EventBinding::EventMethods;
use dom::bindings::codegen::Bindings::HTMLInputElementBinding;
use dom::bindings::codegen::Bindings::HTMLInputElementBinding::HTMLInputElementMethods;
use dom::bindings::codegen::Bindings::KeyboardEventBinding::KeyboardEventMethods;
-use dom::bindings::codegen::InheritTypes::{ElementCast, EventTargetCast, HTMLElementCast};
-use dom::bindings::codegen::InheritTypes::{HTMLFieldSetElementDerived, HTMLInputElementCast};
-use dom::bindings::codegen::InheritTypes::{KeyboardEventCast, NodeCast};
+use dom::bindings::conversions::Castable;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, LayoutJS, Root, RootedReference};
use dom::document::Document;
@@ -21,6 +19,7 @@ use dom::element::{AttributeMutation, Element, IN_ENABLED_STATE, RawLayoutElemen
use dom::event::{Event, EventBubbles, EventCancelable};
use dom::eventtarget::EventTarget;
use dom::htmlelement::HTMLElement;
+use dom::htmlfieldsetelement::HTMLFieldSetElement;
use dom::htmlformelement::{FormControl, FormDatum, FormSubmitter, HTMLFormElement};
use dom::htmlformelement::{ResetFrom, SubmittedFrom};
use dom::keyboardevent::KeyboardEvent;
@@ -165,7 +164,7 @@ impl LayoutHTMLInputElementHelpers for LayoutJS<HTMLInputElement> {
#[allow(unsafe_code)]
unsafe fn get_raw_attr_value(input: LayoutJS<HTMLInputElement>) -> Option<String> {
- let elem = ElementCast::from_layout_js(&input);
+ let elem = input.upcast::<Element>();
(*elem.unsafe_get()).get_attr_val_for_layout(&ns!(""), &atom!("value"))
.map(|s| s.to_owned())
}
@@ -354,13 +353,13 @@ fn broadcast_radio_checked(broadcaster: &HTMLInputElement, group: Option<&Atom>)
//TODO: if not in document, use root ancestor instead of document
let owner = broadcaster.form_owner();
let doc = document_from_node(broadcaster);
- let doc_node = NodeCast::from_ref(doc.r());
+ let doc_node = doc.upcast::<Node>();
// This function is a workaround for lifetime constraint difficulties.
fn do_broadcast(doc_node: &Node, broadcaster: &HTMLInputElement,
owner: Option<&HTMLFormElement>, group: Option<&Atom>) {
- let iter = doc_node.query_selector_iter("input[type=radio]".to_owned())
- .unwrap().filter_map(HTMLInputElementCast::to_root)
+ let iter = doc_node.query_selector_iter("input[type=radio]".to_owned()).unwrap()
+ .filter_map(Root::downcast::<HTMLInputElement>)
.filter(|r| in_same_group(r.r(), owner, group) && broadcaster != r.r());
for ref r in iter {
if r.r().Checked() {
@@ -389,7 +388,7 @@ fn in_same_group(other: &HTMLInputElement, owner: Option<&HTMLFormElement>,
impl HTMLInputElement {
fn force_relayout(&self) {
let doc = document_from_node(self);
- let node = NodeCast::from_ref(self);
+ let node = self.upcast::<Node>();
doc.r().content_changed(node, NodeDamage::OtherNodeDamage)
}
@@ -440,7 +439,7 @@ impl HTMLInputElement {
// https://html.spec.whatwg.org/multipage/#radio-button-group
fn get_radio_group_name(&self) -> Option<Atom> {
//TODO: determine form owner
- let elem = ElementCast::from_ref(self);
+ let elem = self.upcast::<Element>();
elem.get_attribute(&ns!(""), &atom!("name"))
.map(|name| name.value().as_atom().clone())
}
@@ -469,7 +468,7 @@ impl HTMLInputElement {
fn mutable(&self) -> bool {
// https://html.spec.whatwg.org/multipage/#the-input-element:concept-fe-mutable
// https://html.spec.whatwg.org/multipage/#the-readonly-attribute:concept-fe-mutable
- let el = ElementCast::from_ref(self);
+ let el = self.upcast::<Element>();
!(el.get_disabled_state() || self.ReadOnly())
}
@@ -492,7 +491,7 @@ impl HTMLInputElement {
impl VirtualMethods for HTMLInputElement {
fn super_type(&self) -> Option<&VirtualMethods> {
- let htmlelement: &HTMLElement = HTMLElementCast::from_ref(self);
+ let htmlelement: &HTMLElement = self.upcast::<HTMLElement>();
Some(htmlelement as &VirtualMethods)
}
@@ -508,7 +507,7 @@ impl VirtualMethods for HTMLInputElement {
},
AttributeMutation::Removed => false,
};
- let el = ElementCast::from_ref(self);
+ let el = self.upcast::<Element>();
el.set_disabled_state(disabled_state);
el.set_enabled_state(!disabled_state);
el.check_ancestors_disabled_state_for_form_control();
@@ -593,7 +592,7 @@ impl VirtualMethods for HTMLInputElement {
s.bind_to_tree(tree_in_doc);
}
- let el = ElementCast::from_ref(self);
+ let el = self.upcast::<Element>();
el.check_ancestors_disabled_state_for_form_control();
}
@@ -602,9 +601,9 @@ impl VirtualMethods for HTMLInputElement {
s.unbind_from_tree(tree_in_doc);
}
- let node = NodeCast::from_ref(self);
- let el = ElementCast::from_ref(self);
- if node.ancestors().any(|ancestor| ancestor.r().is_htmlfieldsetelement()) {
+ let node = self.upcast::<Node>();
+ let el = self.upcast::<Element>();
+ if node.ancestors().any(|ancestor| ancestor.is::<HTMLFieldSetElement>()) {
el.check_ancestors_disabled_state_for_form_control();
} else {
el.check_disabled_attribute();
@@ -628,11 +627,11 @@ impl VirtualMethods for HTMLInputElement {
//TODO: set the editing position for text inputs
let doc = document_from_node(self);
- doc.r().request_focus(ElementCast::from_ref(self));
+ doc.r().request_focus(self.upcast::<Element>());
} else if &*event.Type() == "keydown" && !event.DefaultPrevented() &&
(self.input_type.get() == InputType::InputText ||
self.input_type.get() == InputType::InputPassword) {
- let keyevent: Option<&KeyboardEvent> = KeyboardEventCast::to_ref(event);
+ let keyevent: Option<&KeyboardEvent> = event.downcast::<KeyboardEvent>();
keyevent.map(|keyevent| {
// This can't be inlined, as holding on to textinput.borrow_mut()
// during self.implicit_submission will cause a panic.
@@ -663,7 +662,7 @@ impl FormControl for HTMLInputElement {}
impl Activatable for HTMLInputElement {
fn as_element(&self) -> &Element {
- ElementCast::from_ref(self)
+ self.upcast::<Element>()
}
fn is_instance_activatable(&self) -> bool {
@@ -708,11 +707,12 @@ impl Activatable for HTMLInputElement {
//TODO: if not in document, use root ancestor instead of document
let owner = self.form_owner();
let doc = document_from_node(self);
- let doc_node = NodeCast::from_ref(doc.r());
+ let doc_node = doc.upcast::<Node>();
let group = self.get_radio_group_name();;
+ // Safe since we only manipulate the DOM tree after finding an element
let checked_member = doc_node.query_selector_iter("input[type=radio]".to_owned()).unwrap()
- .filter_map(HTMLInputElementCast::to_root)
+ .filter_map(Root::downcast::<HTMLInputElement>)
.find(|r| {
in_same_group(r.r(), owner.r(), group.as_ref()) &&
r.r().Checked()
@@ -813,14 +813,14 @@ impl Activatable for HTMLInputElement {
"input".to_owned(),
EventBubbles::Bubbles,
EventCancelable::NotCancelable);
- let target = EventTargetCast::from_ref(self);
+ let target = self.upcast::<EventTarget>();
event.r().fire(target);
let event = Event::new(GlobalRef::Window(win.r()),
"change".to_owned(),
EventBubbles::Bubbles,
EventCancelable::NotCancelable);
- let target = EventTargetCast::from_ref(self);
+ let target = self.upcast::<EventTarget>();
event.r().fire(target);
}
},
@@ -832,20 +832,20 @@ impl Activatable for HTMLInputElement {
#[allow(unsafe_code)]
fn implicit_submission(&self, ctrlKey: bool, shiftKey: bool, altKey: bool, metaKey: bool) {
let doc = document_from_node(self);
- let node = NodeCast::from_ref(doc.r());
+ let node = doc.upcast::<Node>();
let owner = self.form_owner();
let form = match owner {
None => return,
Some(ref f) => f
};
- let elem = ElementCast::from_ref(self);
+ let elem = self.upcast::<Element>();
if elem.click_in_progress() {
return;
}
let submit_button;
submit_button = node.query_selector_iter("input[type=submit]".to_owned()).unwrap()
- .filter_map(HTMLInputElementCast::to_root)
+ .filter_map(Root::downcast::<HTMLInputElement>)
.find(|r| r.r().form_owner() == owner);
match submit_button {
Some(ref button) => {
@@ -855,7 +855,7 @@ impl Activatable for HTMLInputElement {
}
None => {
let inputs = node.query_selector_iter("input".to_owned()).unwrap()
- .filter_map(HTMLInputElementCast::to_root)
+ .filter_map(Root::downcast::<HTMLInputElement>)
.filter(|input| {
input.r().form_owner() == owner && match &*input.r().Type() {
"text" | "search" | "url" | "tel" |