diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs index e14a91ae9d7..e2434d60759 100644 --- a/components/script/dom/htmlinputelement.rs +++ b/components/script/dom/htmlinputelement.rs @@ -200,6 +200,7 @@ impl HTMLInputElement { text_input.selection_begin = Some(text_input.get_text_point_for_absolute_point(start)); text_input.edit_point = text_input.get_text_point_for_absolute_point(end); self.selection_direction.set(*direction); + self.upcast::().dirty(NodeDamage::OtherNodeDamage); } } @@ -401,7 +402,7 @@ impl HTMLInputElementMethods for HTMLInputElement { } self.value_changed.set(true); - self.force_relayout(); + self.upcast::().dirty(NodeDamage::OtherNodeDamage); Ok(()) } @@ -586,11 +587,6 @@ fn in_same_group(other: &HTMLInputElement, owner: Option<&HTMLFormElement>, } impl HTMLInputElement { - fn force_relayout(&self) { - let doc = document_from_node(self); - doc.content_changed(self.upcast(), NodeDamage::OtherNodeDamage) - } - fn radio_group_updated(&self, group: Option<&Atom>) { if self.Checked() { broadcast_radio_checked(self, group); @@ -654,7 +650,7 @@ impl HTMLInputElement { self.get_radio_group_name().as_ref()); } - self.force_relayout(); + self.upcast::().dirty(NodeDamage::OtherNodeDamage); //TODO: dispatch change event } @@ -684,7 +680,7 @@ impl HTMLInputElement { .expect("Failed to reset input value to default."); self.value_dirty.set(false); self.value_changed.set(false); - self.force_relayout(); + self.upcast::().dirty(NodeDamage::OtherNodeDamage); } } @@ -889,11 +885,11 @@ impl VirtualMethods for HTMLInputElement { ChangeEventRunnable::send(self.upcast::()); } - self.force_relayout(); + self.upcast::().dirty(NodeDamage::OtherNodeDamage); event.PreventDefault(); } RedrawSelection => { - self.force_relayout(); + self.upcast::().dirty(NodeDamage::OtherNodeDamage); event.PreventDefault(); } Nothing => (), diff --git a/components/script/dom/htmltextareaelement.rs b/components/script/dom/htmltextareaelement.rs index 8b57d638adb..50f34c9ff85 100644 --- a/components/script/dom/htmltextareaelement.rs +++ b/components/script/dom/htmltextareaelement.rs @@ -209,7 +209,7 @@ impl HTMLTextAreaElementMethods for HTMLTextAreaElement { self.textinput.borrow_mut().set_content(value); self.value_changed.set(true); - self.force_relayout(); + self.upcast::().dirty(NodeDamage::OtherNodeDamage); } // https://html.spec.whatwg.org/multipage/#dom-lfe-labels @@ -233,13 +233,6 @@ impl HTMLTextAreaElement { } -impl HTMLTextAreaElement { - fn force_relayout(&self) { - let doc = document_from_node(self); - doc.content_changed(self.upcast(), NodeDamage::OtherNodeDamage) - } -} - impl VirtualMethods for HTMLTextAreaElement { fn super_type(&self) -> Option<&VirtualMethods> { Some(self.upcast::() as &VirtualMethods) @@ -324,11 +317,11 @@ impl VirtualMethods for HTMLTextAreaElement { ChangeEventRunnable::send(self.upcast::()); } - self.force_relayout(); + self.upcast::().dirty(NodeDamage::OtherNodeDamage); event.PreventDefault(); } KeyReaction::RedrawSelection => { - self.force_relayout(); + self.upcast::().dirty(NodeDamage::OtherNodeDamage); event.PreventDefault(); } KeyReaction::Nothing => (), diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json index 40b18461303..4490bc10ae3 100644 --- a/tests/wpt/mozilla/meta/MANIFEST.json +++ b/tests/wpt/mozilla/meta/MANIFEST.json @@ -2615,6 +2615,18 @@ "url": "/_mozilla/css/input_selection_a.html" } ], + "css/input_selection_incremental_a.html": [ + { + "path": "css/input_selection_incremental_a.html", + "references": [ + [ + "/_mozilla/css/input_selection_incremental_ref.html", + "==" + ] + ], + "url": "/_mozilla/css/input_selection_incremental_a.html" + } + ], "css/input_selection_ref.html": [ { "path": "css/input_selection_ref.html", @@ -9049,6 +9061,18 @@ "url": "/_mozilla/css/input_selection_a.html" } ], + "css/input_selection_incremental_a.html": [ + { + "path": "css/input_selection_incremental_a.html", + "references": [ + [ + "/_mozilla/css/input_selection_incremental_ref.html", + "==" + ] + ], + "url": "/_mozilla/css/input_selection_incremental_a.html" + } + ], "css/input_selection_ref.html": [ { "path": "css/input_selection_ref.html", diff --git a/tests/wpt/mozilla/tests/css/input_selection_incremental_a.html b/tests/wpt/mozilla/tests/css/input_selection_incremental_a.html new file mode 100644 index 00000000000..11bc66128a7 --- /dev/null +++ b/tests/wpt/mozilla/tests/css/input_selection_incremental_a.html @@ -0,0 +1,31 @@ + + + + + input selection incremental test + + + + + + + + diff --git a/tests/wpt/mozilla/tests/css/input_selection_incremental_ref.html b/tests/wpt/mozilla/tests/css/input_selection_incremental_ref.html new file mode 100644 index 00000000000..7b9986ce98e --- /dev/null +++ b/tests/wpt/mozilla/tests/css/input_selection_incremental_ref.html @@ -0,0 +1,19 @@ + + + + + input selection incremental reference + + + + Hello + +