mirror of
https://github.com/servo/servo.git
synced 2025-08-05 05:30:08 +01:00
webdriver: Fix "element in view" by correctly computing resolved PointerEvents
style (#38383)
Testing: `element_click/interactability.py`. For some other tests in headed window, even tho the target is in view it falsely claim not in view previously. --------- Signed-off-by: Euclid Ye <euclid.ye@huawei.com>
This commit is contained in:
parent
929fd0aa3c
commit
372e5eae59
3 changed files with 29 additions and 10 deletions
|
@ -1898,7 +1898,17 @@ pub(crate) fn handle_element_click(
|
|||
|
||||
/// <https://w3c.github.io/webdriver/#dfn-in-view>
|
||||
fn is_element_in_view(element: &Element, document: &Document, can_gc: CanGc) -> bool {
|
||||
element.enabled_state() &&
|
||||
use style::computed_values::pointer_events::T as PointerEvents;
|
||||
// https://w3c.github.io/webdriver/#dfn-pointer-events-are-not-disabled
|
||||
// An element is said to have pointer events disabled
|
||||
// if the resolved value of its "pointer-events" style property is "none".
|
||||
let pointer_events_enabled = element
|
||||
.style(can_gc)
|
||||
.is_none_or(|style| style.get_inherited_ui().pointer_events != PointerEvents::None);
|
||||
|
||||
// An element is in view if it is a member of its own pointer-interactable paint tree,
|
||||
// given the pretense that its pointer events are not disabled.
|
||||
pointer_events_enabled &&
|
||||
get_element_pointer_interactable_paint_tree(element, document, can_gc)
|
||||
.contains(&DomRoot::from_ref(element))
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue