Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2008 Nuanti Ltd. | 3 * Copyright (C) 2008 Nuanti Ltd. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 63 using namespace HTMLNames; | 63 using namespace HTMLNames; |
| 64 | 64 |
| 65 static inline bool isShadowInsertionPointFocusScopeOwner(Node& node) | 65 static inline bool isShadowInsertionPointFocusScopeOwner(Node& node) |
| 66 { | 66 { |
| 67 return isActiveShadowInsertionPoint(node) && toHTMLShadowElement(node).older ShadowRoot(); | 67 return isActiveShadowInsertionPoint(node) && toHTMLShadowElement(node).older ShadowRoot(); |
| 68 } | 68 } |
| 69 | 69 |
| 70 class FocusNavigationScope { | 70 class FocusNavigationScope { |
| 71 STACK_ALLOCATED(); | 71 STACK_ALLOCATED(); |
| 72 public: | 72 public: |
| 73 explicit FocusNavigationScope(TreeScope*); | |
| 73 Node* rootNode() const; | 74 Node* rootNode() const; |
| 74 Element* owner() const; | 75 Element* owner() const; |
| 75 static FocusNavigationScope focusNavigationScopeOf(const Node&); | 76 static FocusNavigationScope focusNavigationScopeOf(const Node&); |
| 76 static FocusNavigationScope ownedByNonFocusableFocusScopeOwner(Node&); | 77 static FocusNavigationScope ownedByNonFocusableFocusScopeOwner(Node&); |
| 77 static FocusNavigationScope ownedByShadowHost(const Node&); | 78 static FocusNavigationScope ownedByShadowHost(const Node&); |
| 78 static FocusNavigationScope ownedByShadowInsertionPoint(HTMLShadowElement&); | 79 static FocusNavigationScope ownedByShadowInsertionPoint(HTMLShadowElement&); |
| 79 static FocusNavigationScope ownedByIFrame(const HTMLFrameOwnerElement&); | 80 static FocusNavigationScope ownedByIFrame(const HTMLFrameOwnerElement&); |
| 80 | 81 |
| 81 private: | 82 private: |
| 82 explicit FocusNavigationScope(TreeScope*); | |
| 83 RawPtrWillBeMember<TreeScope> m_rootTreeScope; | 83 RawPtrWillBeMember<TreeScope> m_rootTreeScope; |
| 84 }; | 84 }; |
| 85 | 85 |
| 86 // FIXME: Some of Node* return values and Node* arguments should be Element*. | 86 // FIXME: Some of Node* return values and Node* arguments should be Element*. |
| 87 | 87 |
| 88 FocusNavigationScope::FocusNavigationScope(TreeScope* treeScope) | 88 FocusNavigationScope::FocusNavigationScope(TreeScope* treeScope) |
| 89 : m_rootTreeScope(treeScope) | 89 : m_rootTreeScope(treeScope) |
| 90 { | 90 { |
| 91 ASSERT(treeScope); | 91 ASSERT(treeScope); |
| 92 } | 92 } |
| (...skipping 619 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 712 return previousNodeWithLowerTabIndex(last, startingTabIndex); | 712 return previousNodeWithLowerTabIndex(last, startingTabIndex); |
| 713 } | 713 } |
| 714 | 714 |
| 715 Node* FocusController::findFocusableNode(WebFocusType type, Node& node) | 715 Node* FocusController::findFocusableNode(WebFocusType type, Node& node) |
| 716 { | 716 { |
| 717 // FIXME: No spacial navigation code yet. | 717 // FIXME: No spacial navigation code yet. |
| 718 ASSERT(type == WebFocusTypeForward || type == WebFocusTypeBackward); | 718 ASSERT(type == WebFocusTypeForward || type == WebFocusTypeBackward); |
| 719 return findFocusableNodeAcrossFocusScopes(type, FocusNavigationScope::focusN avigationScopeOf(node), &node); | 719 return findFocusableNodeAcrossFocusScopes(type, FocusNavigationScope::focusN avigationScopeOf(node), &node); |
| 720 } | 720 } |
| 721 | 721 |
| 722 Node* FocusController::findFocusableNode(WebFocusType type, Node* stayWithin, No de& node) | |
|
kochi
2015/04/09 05:44:38
Do you want to scope the search of prev/next focus
AKV
2015/04/09 06:16:21
haveNextInput()wanted check the returned value (a
kochi
2015/04/10 02:33:50
Are you confused with "frame" and "form" or am I?
AKV
2015/04/10 06:19:12
SMART GO should go within form1. Main goal of this
kochi
2015/04/10 06:26:20
Yes, this is what I meant in the original reply.
S
| |
| 723 { | |
| 724 ASSERT(type == WebFocusTypeForward || type == WebFocusTypeBackward); | |
| 725 return findFocusableNodeAcrossFocusScopes(type, FocusNavigationScope(&stayWi thin->treeScope()), &node); | |
| 726 } | |
| 727 | |
| 722 Node* FocusController::findFocusableNode(WebFocusType type, const FocusNavigatio nScope& scope, Node* node) | 728 Node* FocusController::findFocusableNode(WebFocusType type, const FocusNavigatio nScope& scope, Node* node) |
| 723 { | 729 { |
| 724 return type == WebFocusTypeForward ? nextFocusableNode(scope, node) : previo usFocusableNode(scope, node); | 730 return type == WebFocusTypeForward ? nextFocusableNode(scope, node) : previo usFocusableNode(scope, node); |
| 725 } | 731 } |
| 726 | 732 |
| 727 static bool relinquishesEditingFocus(const Element& element) | 733 static bool relinquishesEditingFocus(const Element& element) |
| 728 { | 734 { |
| 729 ASSERT(element.hasEditableStyle()); | 735 ASSERT(element.hasEditableStyle()); |
| 730 return element.document().frame() && element.rootEditableElement(); | 736 return element.document().frame() && element.rootEditableElement(); |
| 731 } | 737 } |
| (...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1011 return consumed; | 1017 return consumed; |
| 1012 } | 1018 } |
| 1013 | 1019 |
| 1014 DEFINE_TRACE(FocusController) | 1020 DEFINE_TRACE(FocusController) |
| 1015 { | 1021 { |
| 1016 visitor->trace(m_page); | 1022 visitor->trace(m_page); |
| 1017 visitor->trace(m_focusedFrame); | 1023 visitor->trace(m_focusedFrame); |
| 1018 } | 1024 } |
| 1019 | 1025 |
| 1020 } // namespace blink | 1026 } // namespace blink |
| OLD | NEW |