Bug 1345606. setRangeText should mark the text control as dirty. r=ehsan

MozReview-Commit-ID: 9le2PoelGei
This commit is contained in:
Boris Zbarsky
2017-03-09 14:44:36 -05:00
parent 6fda0e869c
commit 8f6ad791d2
3 changed files with 22 additions and 2 deletions

View File

@@ -6320,7 +6320,9 @@ HTMLInputElement::GetValueFromSetRangeText(nsAString& aValue)
nsresult nsresult
HTMLInputElement::SetValueFromSetRangeText(const nsAString& aValue) HTMLInputElement::SetValueFromSetRangeText(const nsAString& aValue)
{ {
return SetValueInternal(aValue, nsTextEditorState::eSetValue_ByContent); return SetValueInternal(aValue,
nsTextEditorState::eSetValue_ByContent |
nsTextEditorState::eSetValue_Notify);
} }
Nullable<uint32_t> Nullable<uint32_t>

View File

@@ -784,7 +784,9 @@ HTMLTextAreaElement::GetValueFromSetRangeText(nsAString& aValue)
nsresult nsresult
HTMLTextAreaElement::SetValueFromSetRangeText(const nsAString& aValue) HTMLTextAreaElement::SetValueFromSetRangeText(const nsAString& aValue)
{ {
return SetValueInternal(aValue, nsTextEditorState::eSetValue_ByContent); return SetValueInternal(aValue,
nsTextEditorState::eSetValue_ByContent |
nsTextEditorState::eSetValue_Notify);
} }
nsresult nsresult

View File

@@ -200,4 +200,20 @@ for (var data of elemData) {
}, `selection location after defaultValue set to shorter than selectionStart of ${data.desc}`); }, `selection location after defaultValue set to shorter than selectionStart of ${data.desc}`);
} }
for (var data of elemData) {
test(function() {
var el = data.factory();
this.add_cleanup(() => el.remove());
el.defaultValue = sometext;
assert_true(sometext.length > 8,
"sometext too short, test won't work right");
el.selectionStart = 4;
el.selectionEnd = 6;
el.setRangeText("xyz");
el.defaultValue = "set range text";
assert_equals(el.value, sometext.slice(0, 4) + "xyz" + sometext.slice(6),
"Calling setRangeText should set the value dirty flag");
}, `value dirty flag behavior after setRangeText on ${data.desc}`);
}
</script> </script>