aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/document.rs1
-rwxr-xr-xcomponents/script/dom/htmlinputelement.rs25
-rwxr-xr-xcomponents/script/dom/htmltextareaelement.rs21
3 files changed, 23 insertions, 24 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs
index 0f427cdb069..f263eee9210 100644
--- a/components/script/dom/document.rs
+++ b/components/script/dom/document.rs
@@ -1334,7 +1334,6 @@ impl Document {
let ev = event.upcast::<Event>();
ev.fire(target);
cancel_state = ev.get_cancel_state();
- // TODO: if keypress event is canceled, prevent firing input events
}
if cancel_state == EventDefault::Allowed {
diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs
index 8784c1f39df..d133efd5e14 100755
--- a/components/script/dom/htmlinputelement.rs
+++ b/components/script/dom/htmlinputelement.rs
@@ -1105,17 +1105,6 @@ impl VirtualMethods for HTMLInputElement {
DispatchInput => {
self.value_changed.set(true);
self.update_placeholder_shown_state();
-
- if event.IsTrusted() {
- let window = window_from_node(self);
- let _ = window.user_interaction_task_source().queue_event(
- &self.upcast(),
- atom!("input"),
- EventBubbles::Bubbles,
- EventCancelable::NotCancelable,
- &window);
- }
-
self.upcast::<Node>().dirty(NodeDamage::OtherNodeDamage);
event.mark_as_handled();
}
@@ -1126,7 +1115,19 @@ impl VirtualMethods for HTMLInputElement {
Nothing => (),
}
}
- }
+ } else if event.type_() == atom!("keypress") && !event.DefaultPrevented() &&
+ (self.input_type.get() == InputType::InputText ||
+ self.input_type.get() == InputType::InputPassword) {
+ if event.IsTrusted() {
+ let window = window_from_node(self);
+ let _ = window.user_interaction_task_source()
+ .queue_event(&self.upcast(),
+ atom!("input"),
+ EventBubbles::Bubbles,
+ EventCancelable::NotCancelable,
+ &window);
+ }
+ }
}
}
diff --git a/components/script/dom/htmltextareaelement.rs b/components/script/dom/htmltextareaelement.rs
index 74db028859a..2582b13514a 100755
--- a/components/script/dom/htmltextareaelement.rs
+++ b/components/script/dom/htmltextareaelement.rs
@@ -403,17 +403,6 @@ impl VirtualMethods for HTMLTextAreaElement {
KeyReaction::DispatchInput => {
self.value_changed.set(true);
self.update_placeholder_shown_state();
-
- if event.IsTrusted() {
- let window = window_from_node(self);
- let _ = window.user_interaction_task_source().queue_event(
- &self.upcast(),
- atom!("input"),
- EventBubbles::Bubbles,
- EventCancelable::NotCancelable,
- &window);
- }
-
self.upcast::<Node>().dirty(NodeDamage::OtherNodeDamage);
event.mark_as_handled();
}
@@ -424,6 +413,16 @@ impl VirtualMethods for HTMLTextAreaElement {
KeyReaction::Nothing => (),
}
}
+ } else if event.type_() == atom!("keypress") && !event.DefaultPrevented() {
+ if event.IsTrusted() {
+ let window = window_from_node(self);
+ let _ = window.user_interaction_task_source()
+ .queue_event(&self.upcast(),
+ atom!("input"),
+ EventBubbles::Bubbles,
+ EventCancelable::NotCancelable,
+ &window);
+ }
}
}
}