Index: ui/views/focus/focus_manager.h |
diff --git a/ui/views/focus/focus_manager.h b/ui/views/focus/focus_manager.h |
index debdbe98fff1154e3c3933b9d370ab1dc9462a04..99ca6e6772662baf0446feffbe3bf6e705ba6e19 100644 |
--- a/ui/views/focus/focus_manager.h |
+++ b/ui/views/focus/focus_manager.h |
@@ -201,7 +201,8 @@ class VIEWS_EXPORT FocusManager { |
// Restore the view saved with a previous call to StoreFocusedView(). Used |
// when the widget becomes active. Returns true when the previous view was |
- // successfully refocused - otherwise false. |
+ // successfully refocused. In case the stored view is no longer focusable, |
+ // it advances focus and returns false. |
bool RestoreFocusedView(); |
// Sets the |view| to be restored when calling RestoreFocusView. This is used |
@@ -319,6 +320,12 @@ class VIEWS_EXPORT FocusManager { |
bool reverse, |
bool dont_loop); |
+ bool keyboard_accessible() const { return keyboard_accessible_; } |
+ |
+ // Updates |keyboard_accessible_| to the given value and advances focus if |
+ // necessary. |
+ void SetKeyboardAccessible(bool keyboard_accessible); |
+ |
private: |
// Returns the focusable view found in the FocusTraversable specified starting |
// at the specified view. This traverses down along the FocusTraversable |
@@ -332,6 +339,10 @@ class VIEWS_EXPORT FocusManager { |
// and should not be processed further. |
bool ProcessArrowKeyTraversal(const ui::KeyEvent& event); |
+ // Whether |view| is currently focusable as per the platform's interpretation |
+ // of |keyboard_accesible_|. |
+ bool IsFocusable(View* view) const; |
+ |
// Whether arrow key traversal is enabled. |
static bool arrow_key_traversal_enabled_; |
@@ -364,6 +375,15 @@ class VIEWS_EXPORT FocusManager { |
// See description above getter. |
bool is_changing_focus_; |
+ // This is true if full keyboard accessibility is needed. This causes |
+ // IsAccessibilityFocusable() to be checked rather than IsFocusable(). This |
+ // can be set depending on platform constraints. FocusSearch uses this in |
+ // addition to its own accessibility mode, which handles accessibility at the |
+ // FocusTraversable level. Currently only used on Mac, when Full Keyboard |
+ // access is enabled. |
+ // Default value is false. |
+ bool keyboard_accessible_; |
+ |
DISALLOW_COPY_AND_ASSIGN(FocusManager); |
}; |