aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmltextareaelement.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/htmltextareaelement.rs')
-rwxr-xr-xcomponents/script/dom/htmltextareaelement.rs32
1 files changed, 25 insertions, 7 deletions
diff --git a/components/script/dom/htmltextareaelement.rs b/components/script/dom/htmltextareaelement.rs
index b2e78e083c0..90574c9967a 100755
--- a/components/script/dom/htmltextareaelement.rs
+++ b/components/script/dom/htmltextareaelement.rs
@@ -5,6 +5,7 @@
use dom::attr::Attr;
use dom::bindings::cell::DomRefCell;
use dom::bindings::codegen::Bindings::EventBinding::EventMethods;
+use dom::bindings::codegen::Bindings::HTMLFormElementBinding::SelectionMode;
use dom::bindings::codegen::Bindings::HTMLTextAreaElementBinding;
use dom::bindings::codegen::Bindings::HTMLTextAreaElementBinding::HTMLTextAreaElementMethods;
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
@@ -44,7 +45,7 @@ pub struct HTMLTextAreaElement {
textinput: DomRefCell<TextInput<ScriptToConstellationChan>>,
placeholder: DomRefCell<DOMString>,
// https://html.spec.whatwg.org/multipage/#concept-textarea-dirty
- value_changed: Cell<bool>,
+ value_dirty: Cell<bool>,
form_owner: MutNullableDom<HTMLFormElement>,
}
@@ -122,7 +123,7 @@ impl HTMLTextAreaElement {
placeholder: DomRefCell::new(DOMString::new()),
textinput: DomRefCell::new(TextInput::new(
Lines::Multiple, DOMString::new(), chan, None, None, SelectionDirection::None)),
- value_changed: Cell::new(false),
+ value_dirty: Cell::new(false),
form_owner: Default::default(),
}
}
@@ -156,6 +157,10 @@ impl TextControl for HTMLTextAreaElement {
fn has_selectable_text(&self) -> bool {
true
}
+
+ fn set_dirty_value_flag(&self, value: bool) {
+ self.value_dirty.set(value)
+ }
}
impl HTMLTextAreaElementMethods for HTMLTextAreaElement {
@@ -231,7 +236,7 @@ impl HTMLTextAreaElementMethods for HTMLTextAreaElement {
// if the element's dirty value flag is false, then the element's
// raw value must be set to the value of the element's textContent IDL attribute
- if !self.value_changed.get() {
+ if !self.value_dirty.get() {
self.reset();
}
}
@@ -253,7 +258,7 @@ impl HTMLTextAreaElementMethods for HTMLTextAreaElement {
textinput.set_content(value);
// Step 3
- self.value_changed.set(true);
+ self.value_dirty.set(true);
if old_value != textinput.get_content() {
// Step 4
@@ -309,6 +314,19 @@ impl HTMLTextAreaElementMethods for HTMLTextAreaElement {
fn SetSelectionRange(&self, start: u32, end: u32, direction: Option<DOMString>) -> ErrorResult {
self.set_dom_selection_range(start, end, direction)
}
+
+ // https://html.spec.whatwg.org/multipage/#dom-textarea/input-setrangetext
+ fn SetRangeText(&self, replacement: DOMString) -> ErrorResult {
+ // defined in TextControl trait
+ self.set_dom_range_text(replacement, None, None, Default::default())
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-textarea/input-setrangetext
+ fn SetRangeText_(&self, replacement: DOMString, start: u32, end: u32,
+ selection_mode: SelectionMode) -> ErrorResult {
+ // defined in TextControl trait
+ self.set_dom_range_text(replacement, Some(start), Some(end), selection_mode)
+ }
}
@@ -316,7 +334,7 @@ impl HTMLTextAreaElement {
pub fn reset(&self) {
// https://html.spec.whatwg.org/multipage/#the-textarea-element:concept-form-reset-control
self.SetValue(self.DefaultValue());
- self.value_changed.set(false);
+ self.value_dirty.set(false);
}
}
@@ -409,7 +427,7 @@ impl VirtualMethods for HTMLTextAreaElement {
if let Some(ref s) = self.super_type() {
s.children_changed(mutation);
}
- if !self.value_changed.get() {
+ if !self.value_dirty.get() {
self.reset();
}
}
@@ -432,7 +450,7 @@ impl VirtualMethods for HTMLTextAreaElement {
match action {
KeyReaction::TriggerDefaultAction => (),
KeyReaction::DispatchInput => {
- self.value_changed.set(true);
+ self.value_dirty.set(true);
self.update_placeholder_shown_state();
self.upcast::<Node>().dirty(NodeDamage::OtherNodeDamage);
event.mark_as_handled();