aboutsummaryrefslogtreecommitdiffstats
path: root/components
diff options
context:
space:
mode:
Diffstat (limited to 'components')
-rw-r--r--components/script/dom/element.rs6
-rw-r--r--components/script/dom/htmltextareaelement.rs46
2 files changed, 20 insertions, 32 deletions
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs
index 99a6522e9ab..8057f923d72 100644
--- a/components/script/dom/element.rs
+++ b/components/script/dom/element.rs
@@ -51,7 +51,7 @@ use dom::htmltableelement::{HTMLTableElement, HTMLTableElementLayoutHelpers};
use dom::htmltablerowelement::{HTMLTableRowElement, HTMLTableRowElementLayoutHelpers};
use dom::htmltablesectionelement::{HTMLTableSectionElement, HTMLTableSectionElementLayoutHelpers};
use dom::htmltemplateelement::HTMLTemplateElement;
-use dom::htmltextareaelement::{HTMLTextAreaElement, RawLayoutHTMLTextAreaElementHelpers};
+use dom::htmltextareaelement::{HTMLTextAreaElement, LayoutHTMLTextAreaElementHelpers};
use dom::namednodemap::NamedNodeMap;
use dom::node::{CLICK_IN_PROGRESS, LayoutNodeHelpers, Node};
use dom::node::{NodeDamage, SEQUENTIALLY_FOCUSABLE, UnbindContext};
@@ -440,7 +440,7 @@ impl LayoutElementHelpers for LayoutJS<Element> {
let cols = if let Some(this) = self.downcast::<HTMLTextAreaElement>() {
- match (*this.unsafe_get()).get_cols_for_layout() {
+ match this.get_cols() {
0 => None,
c => Some(c as i32),
}
@@ -462,7 +462,7 @@ impl LayoutElementHelpers for LayoutJS<Element> {
let rows = if let Some(this) = self.downcast::<HTMLTextAreaElement>() {
- match (*this.unsafe_get()).get_rows_for_layout() {
+ match this.get_rows() {
0 => None,
r => Some(r as i32),
}
diff --git a/components/script/dom/htmltextareaelement.rs b/components/script/dom/htmltextareaelement.rs
index 8d856ff6b80..e850508d657 100644
--- a/components/script/dom/htmltextareaelement.rs
+++ b/components/script/dom/htmltextareaelement.rs
@@ -13,6 +13,7 @@ use dom::bindings::inheritance::Castable;
use dom::bindings::js::{LayoutJS, Root};
use dom::bindings::refcounted::Trusted;
use dom::document::Document;
+use dom::element::RawLayoutElementHelpers;
use dom::element::{AttributeMutation, Element};
use dom::event::{Event, EventBubbles, EventCancelable};
use dom::eventtarget::EventTarget;
@@ -39,8 +40,6 @@ pub struct HTMLTextAreaElement {
htmlelement: HTMLElement,
#[ignore_heap_size_of = "#7193"]
textinput: DOMRefCell<TextInput<ConstellationChan<ConstellationMsg>>>,
- cols: Cell<u32>,
- rows: Cell<u32>,
// https://html.spec.whatwg.org/multipage/#concept-textarea-dirty
value_changed: Cell<bool>,
}
@@ -50,13 +49,10 @@ pub trait LayoutHTMLTextAreaElementHelpers {
unsafe fn get_value_for_layout(self) -> String;
#[allow(unsafe_code)]
unsafe fn get_absolute_insertion_point_for_layout(self) -> usize;
-}
-
-pub trait RawLayoutHTMLTextAreaElementHelpers {
#[allow(unsafe_code)]
- unsafe fn get_cols_for_layout(self) -> u32;
+ fn get_cols(self) -> u32;
#[allow(unsafe_code)]
- unsafe fn get_rows_for_layout(self) -> u32;
+ fn get_rows(self) -> u32;
}
impl LayoutHTMLTextAreaElementHelpers for LayoutJS<HTMLTextAreaElement> {
@@ -71,19 +67,25 @@ impl LayoutHTMLTextAreaElementHelpers for LayoutJS<HTMLTextAreaElement> {
unsafe fn get_absolute_insertion_point_for_layout(self) -> usize {
(*self.unsafe_get()).textinput.borrow_for_layout().get_absolute_insertion_point()
}
-}
-impl<'a> RawLayoutHTMLTextAreaElementHelpers for &'a HTMLTextAreaElement {
- #[allow(unrooted_must_root)]
#[allow(unsafe_code)]
- unsafe fn get_cols_for_layout(self) -> u32 {
- self.cols.get()
+ fn get_cols(self) -> u32 {
+ unsafe {
+ (*self.upcast::<Element>().unsafe_get())
+ .get_attr_for_layout(&ns!(), &atom!("cols"))
+ .map(AttrValue::as_uint)
+ .unwrap_or(DEFAULT_COLS)
+ }
}
- #[allow(unrooted_must_root)]
#[allow(unsafe_code)]
- unsafe fn get_rows_for_layout(self) -> u32 {
- self.rows.get()
+ fn get_rows(self) -> u32 {
+ unsafe {
+ (*self.upcast::<Element>().unsafe_get())
+ .get_attr_for_layout(&ns!(), &atom!("rows"))
+ .map(AttrValue::as_uint)
+ .unwrap_or(DEFAULT_ROWS)
+ }
}
}
@@ -100,8 +102,6 @@ impl HTMLTextAreaElement {
HTMLElement::new_inherited_with_state(IN_ENABLED_STATE,
localName, prefix, document),
textinput: DOMRefCell::new(TextInput::new(Lines::Multiple, DOMString::new(), chan, None)),
- cols: Cell::new(DEFAULT_COLS),
- rows: Cell::new(DEFAULT_ROWS),
value_changed: Cell::new(false),
}
}
@@ -268,18 +268,6 @@ impl VirtualMethods for HTMLTextAreaElement {
}
}
},
- atom!("cols") => {
- let cols = mutation.new_value(attr).map(|value| {
- value.as_uint()
- });
- self.cols.set(cols.unwrap_or(DEFAULT_COLS));
- },
- atom!("rows") => {
- let rows = mutation.new_value(attr).map(|value| {
- value.as_uint()
- });
- self.rows.set(rows.unwrap_or(DEFAULT_ROWS));
- },
_ => {},
}
}