diff options
author | Oriol Brufau <obrufau@igalia.com> | 2024-09-12 15:34:20 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-12 13:34:20 +0000 |
commit | 4839cdf1764eac2b520692d2b9c3da002b509d01 (patch) | |
tree | 2bd7c2a1402a35d62106741aaa829de75bd3a34e /components/script/dom/htmltableelement.rs | |
parent | 37ab4b98259d45c9efd3645ebc961ca518adb5c6 (diff) | |
download | servo-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.rs | 10 |
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() |