aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmltableelement.rs
diff options
context:
space:
mode:
authorOriol Brufau <obrufau@igalia.com>2024-09-12 15:34:20 +0200
committerGitHub <noreply@github.com>2024-09-12 13:34:20 +0000
commit4839cdf1764eac2b520692d2b9c3da002b509d01 (patch)
tree2bd7c2a1402a35d62106741aaa829de75bd3a34e /components/script/dom/htmltableelement.rs
parent37ab4b98259d45c9efd3645ebc961ca518adb5c6 (diff)
downloadservo-4839cdf1764eac2b520692d2b9c3da002b509d01.tar.gz
servo-4839cdf1764eac2b520692d2b9c3da002b509d01.zip
Add `width` and `height` presentational hints for table-related elements (#33405)
We were only parsing the `width` attribute as a presentation hint for `<table>`, `<td>` and `<th>`. This patch also handles `<colgroup>` and `<col>`. Also, we weren't parsing `height` at all, now we do it for `<table>`, `<td>`, `<th>`, `<tr>`, `<tbody>`, `<thead>` and `<tfoot>`. One test is now crashing, but this was an existing issue: #33423 Signed-off-by: Oriol Brufau <obrufau@igalia.com> Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Diffstat (limited to 'components/script/dom/htmltableelement.rs')
-rw-r--r--components/script/dom/htmltableelement.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/components/script/dom/htmltableelement.rs b/components/script/dom/htmltableelement.rs
index ac34c8ea80e..b13113042fa 100644
--- a/components/script/dom/htmltableelement.rs
+++ b/components/script/dom/htmltableelement.rs
@@ -443,6 +443,7 @@ pub trait HTMLTableElementLayoutHelpers {
fn get_cellpadding(self) -> Option<u32>;
fn get_cellspacing(self) -> Option<u32>;
fn get_width(self) -> LengthOrPercentageOrAuto;
+ fn get_height(self) -> LengthOrPercentageOrAuto;
}
impl HTMLTableElementLayoutHelpers for LayoutDom<'_, HTMLTableElement> {
@@ -472,6 +473,14 @@ impl HTMLTableElementLayoutHelpers for LayoutDom<'_, HTMLTableElement> {
.cloned()
.unwrap_or(LengthOrPercentageOrAuto::Auto)
}
+
+ fn get_height(self) -> LengthOrPercentageOrAuto {
+ self.upcast::<Element>()
+ .get_attr_for_layout(&ns!(), &local_name!("height"))
+ .map(AttrValue::as_dimension)
+ .cloned()
+ .unwrap_or(LengthOrPercentageOrAuto::Auto)
+ }
}
impl VirtualMethods for HTMLTableElement {
@@ -512,6 +521,7 @@ impl VirtualMethods for HTMLTableElement {
match *local_name {
local_name!("border") => AttrValue::from_u32(value.into(), 1),
local_name!("width") => AttrValue::from_nonzero_dimension(value.into()),
+ local_name!("height") => AttrValue::from_nonzero_dimension(value.into()),
local_name!("bgcolor") => AttrValue::from_legacy_color(value.into()),
_ => self
.super_type()