Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1101)

Unified Diff: Source/core/page/FocusController.cpp

Issue 1152623012: WIP: delegatesFocus (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/page/EventHandler.cpp ('k') | Source/platform/RuntimeEnabledFeatures.in » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/page/FocusController.cpp
diff --git a/Source/core/page/FocusController.cpp b/Source/core/page/FocusController.cpp
index 5263e8f4b73cab27619921a4bcb980d2d6cdee98..8ccd5e2e749b888e115749d8b3bd3343a4ab0edd 100644
--- a/Source/core/page/FocusController.cpp
+++ b/Source/core/page/FocusController.cpp
@@ -526,7 +526,7 @@ Node* FocusController::findFocusableNodeAcrossFocusScopesBackward(const FocusNav
if (!owner)
break;
currentScope = FocusNavigationScope::focusNavigationScopeOf(*owner);
- if (isKeyboardFocusableShadowHost(*owner) && toElement(owner)->tabStop()) {
+ if (isKeyboardFocusableShadowHost(*owner) && !toElement(owner)->shadowRoot()->delegatesFocus()) {
found = owner;
break;
}
@@ -548,7 +548,8 @@ Node* FocusController::findFocusableNodeRecursivelyForward(const FocusNavigation
Node* found = findFocusableNode(WebFocusTypeForward, scope, start);
if (!found)
return nullptr;
- if (found->isElementNode() && !toElement(found)->tabStop()) {
+ // TODO(kochi): simplify this logic further.
+ if (found->isElementNode() && toElement(found)->shadowRoot() && toElement(found)->shadowRoot()->delegatesFocus()) {
if (isShadowHostWithoutCustomFocusLogic(*found)) {
FocusNavigationScope innerScope = FocusNavigationScope::ownedByShadowHost(*found);
Node* foundInInnerFocusScope = findFocusableNodeRecursivelyForward(innerScope, nullptr);
@@ -584,7 +585,8 @@ Node* FocusController::findFocusableNodeRecursivelyBackward(const FocusNavigatio
Node* foundInInnerFocusScope = findFocusableNodeRecursivelyBackward(innerScope, nullptr);
if (foundInInnerFocusScope)
return foundInInnerFocusScope;
- if (found->isElementNode() && !toElement(found)->tabStop())
+ // TODO(kochi): Simplify this logic further.
+ if (found->isElementNode() && toElement(found)->shadowRoot() && toElement(found)->shadowRoot()->delegatesFocus())
found = findFocusableNodeRecursivelyBackward(scope, found);
return found;
}
@@ -598,7 +600,7 @@ Node* FocusController::findFocusableNodeRecursivelyBackward(const FocusNavigatio
return foundInInnerFocusScope ? foundInInnerFocusScope : findFocusableNodeRecursivelyBackward(scope, found);
}
- return found->isElementNode() && toElement(found)->tabStop() ? found : findFocusableNodeRecursivelyBackward(scope, found);
+ return found->isElementNode() && !(toElement(found)->shadowRoot() && toElement(found)->shadowRoot()->delegatesFocus()) ? found : findFocusableNodeRecursivelyBackward(scope, found);
}
static Node* findNodeWithExactTabIndex(Node* start, int tabIndex, WebFocusType type)
« no previous file with comments | « Source/core/page/EventHandler.cpp ('k') | Source/platform/RuntimeEnabledFeatures.in » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698