Index: ui/views/focus/focus_search.cc |
diff --git a/ui/views/focus/focus_search.cc b/ui/views/focus/focus_search.cc |
index a7ede3b0bf3d044666fbcdb9df23a3d45017f57b..e91a701fd10393ed1fb2af3437f47c050cf20061 100644 |
--- a/ui/views/focus/focus_search.cc |
+++ b/ui/views/focus/focus_search.cc |
@@ -6,6 +6,7 @@ |
#include "ui/views/focus/focus_manager.h" |
#include "ui/views/focus/focus_search.h" |
#include "ui/views/view.h" |
+#include "ui/views/widget/widget.h" |
namespace views { |
@@ -13,6 +14,12 @@ FocusSearch::FocusSearch(View* root, bool cycle, bool accessibility_mode) |
: root_(root), |
cycle_(cycle), |
accessibility_mode_(accessibility_mode) { |
+#if defined(OS_MACOSX) |
+ // On Mac, only the keyboard accessibility mode defined in FocusManager is |
+ // used. No special accessibility mode should be applicable for a |
+ // FocusTraversable. |
+ accessibility_mode_ = false; |
+#endif |
} |
View* FocusSearch::FindNextFocusableView(View* starting_view, |
@@ -99,7 +106,13 @@ bool FocusSearch::IsViewFocusableCandidate(View* v, int skip_group_id) { |
} |
bool FocusSearch::IsFocusable(View* v) { |
- if (accessibility_mode_) |
+ DCHECK(root_); |
+ // Sanity Check. Currently the FocusManager keyboard accessibility mode is |
+ // only used on Mac, for which |accessibility_mode_| is false. |
+ DCHECK(!(accessibility_mode_ && |
+ root_->GetWidget()->GetFocusManager()->keyboard_accessible())); |
+ if (accessibility_mode_ || |
+ root_->GetWidget()->GetFocusManager()->keyboard_accessible()) |
return v && v->IsAccessibilityFocusable(); |
return v && v->IsFocusable(); |
} |