layout: Take into account display: table etc in offset* queries (#32448)

* layout: Take into account `display: table` etc in offset* queries

The specification says that for deciding whether an element should be
used for offset* queries, a browser should take into account whether the
element is a table cell or table. This change makes that happen.

Co-authored-by: Oriol Brufau <obrufau@igalia.com>

* Only tag HTML elements if they are in the HTML namespace

---------

Co-authored-by: Oriol Brufau <obrufau@igalia.com>
This commit is contained in:
Martin Robinson 2024-06-10 17:05:57 +02:00 committed by GitHub
parent 35bbcc0d95
commit f4c9b310d5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 60 additions and 127 deletions

View file

@ -88,15 +88,19 @@ bitflags! {
const IS_BODY_ELEMENT_OF_HTML_ELEMENT_ROOT = 0b00000001;
/// Whether or not the node that created this Fragment is a `<br>` element.
const IS_BR_ELEMENT = 0b00000010;
/// Whether or not the node that created was a `<table>`, `<th>` or
/// `<td>` element. Note that this does *not* include elements with
/// `display: table` or `display: table-cell`.
const IS_TABLE_TH_OR_TD_ELEMENT = 0b00000100;
/// Whether or not this Fragment was created to contain a replaced element or is
/// a replaced element.
const IS_REPLACED = 0b00000100;
const IS_REPLACED = 0b00001000;
/// Whether or not this Fragment was created to contain a list item marker
/// with a used value of `list-style-position: outside`.
const IS_OUTSIDE_LIST_ITEM_MARKER = 0b00001000;
const IS_OUTSIDE_LIST_ITEM_MARKER = 0b00010000;
/// Avoid painting the fragment, this is used for empty table cells when 'empty-cells' is 'hide'.
/// This flag doesn't avoid hit-testing.
const DO_NOT_PAINT = 0b00010000;
const DO_NOT_PAINT = 0b00100000;
}
}