Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: c413d63ffc923ece86a0e4df8967f8cb9065ced5
      
https://github.com/WebKit/WebKit/commit/c413d63ffc923ece86a0e4df8967f8cb9065ced5
  Author: Charlie Wolfe <[email protected]>
  Date:   2026-10-08 (Thu, 08 Oct 2026)

  Changed paths:
    M 
LayoutTests/imported/w3c/web-platform-tests/html/semantics/popovers/popover-focus-2_test1-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/html/semantics/popovers/popover-focus-2_test2-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/html/semantics/popovers/popover-focus-2_test3-expected.txt
    M 
LayoutTests/platform/glib/imported/w3c/web-platform-tests/html/semantics/popovers/popover-focus-inside-slot-expected.txt
    M Source/WebCore/dom/Element.cpp
    M Source/WebCore/page/FocusController.cpp

  Log Message:
  -----------
  Tabbing to an invoker should focus its popover itself if the popover is 
focusable
rdar://188267440
https://bugs.webkit.org/show_bug.cgi?id=325129

Reviewed by Ryosuke Niwa.

Before this change, an open popover with an invoker always passed focus on to 
its contents. The
popover was never keyboard-focusable itself, even with tabindex set. With this 
change, the popover
acts as the root of its own focus navigation scope. It can take focus itself, 
and its contents come
next in sequential navigation.

Popovers that are direct children of the document element, a shadow root or a 
shadow host no longer
get invoker-based focus scoping.

https://html.spec.whatwg.org/multipage/interaction.html#associated-focus-navigation-owner

* 
LayoutTests/imported/w3c/web-platform-tests/html/semantics/popovers/popover-focus-2_test1-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/html/semantics/popovers/popover-focus-2_test2-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/html/semantics/popovers/popover-focus-2_test3-expected.txt:
* 
LayoutTests/platform/glib/imported/w3c/web-platform-tests/html/semantics/popovers/popover-focus-inside-slot-expected.txt:
* Source/WebCore/dom/Element.cpp:
(WebCore::Element::isKeyboardFocusable const):
* Source/WebCore/page/FocusController.cpp:
(WebCore::invokerForOpenPopoverIgnoringCycles):
(WebCore::invokerChainReachesPopover):
(WebCore::invokerForOpenPopover):
(WebCore::openPopoverForInvoker):
(WebCore::FocusNavigationScope::firstNodeInScope const):
(WebCore::FocusNavigationScope::lastNodeInScope const):
(WebCore::FocusNavigationScope::scopeOwnedByScopeOwner):
(WebCore::isFocusableElementOrScopeOwner):
(WebCore::isNonFocusableScopeOwner):
(WebCore::FocusController::findFocusableElementAcrossFocusScope):
(WebCore::FocusController::nextFocusableElementWithinScope):
(WebCore::FocusController::previousFocusableElementWithinScope):

Canonical link: https://commits.webkit.org/323172@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to