 Chromium Code Reviews
 Chromium Code Reviews Issue 1894383002:
  MacViews: Implement Full Keyboard Access.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@SetFocusBehavior
    
  
    Issue 1894383002:
  MacViews: Implement Full Keyboard Access.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@SetFocusBehavior| Index: ui/views/widget/native_widget_mac_unittest.mm | 
| diff --git a/ui/views/widget/native_widget_mac_unittest.mm b/ui/views/widget/native_widget_mac_unittest.mm | 
| index 0b41b9ca50afba088099a2b92a0badf2db17f429..52c425c532687729754ddd45b75ec6181a2b7658 100644 | 
| --- a/ui/views/widget/native_widget_mac_unittest.mm | 
| +++ b/ui/views/widget/native_widget_mac_unittest.mm | 
| @@ -19,10 +19,12 @@ | 
| #include "third_party/skia/include/core/SkCanvas.h" | 
| #import "ui/base/cocoa/constrained_window/constrained_window_animation.h" | 
| #import "ui/base/cocoa/window_size_constants.h" | 
| +#import "ui/base/test/scoped_fake_full_keyboard_access.h" | 
| #import "ui/events/test/cocoa_test_event_utils.h" | 
| #include "ui/events/test/event_generator.h" | 
| #import "ui/gfx/mac/coordinate_conversion.h" | 
| #include "ui/views/bubble/bubble_dialog_delegate.h" | 
| +#import "ui/views/cocoa/bridged_content_view.h" | 
| #import "ui/views/cocoa/bridged_native_widget.h" | 
| #import "ui/views/cocoa/native_widget_mac_nswindow.h" | 
| #include "ui/views/controls/button/label_button.h" | 
| @@ -1373,6 +1375,79 @@ TEST_F(NativeWidgetMacTest, ChangeFocusOnChangeFirstResponder) { | 
| widget->CloseNow(); | 
| } | 
| +// Test class for Full Keyboard Access related tests. | 
| +class NativeWidgetMacFullKeyboardAccessTest : public NativeWidgetMacTest { | 
| + public: | 
| + NativeWidgetMacFullKeyboardAccessTest() {} | 
| + | 
| + protected: | 
| + // testing::Test: | 
| + void SetUp() override { | 
| + NativeWidgetMacTest::SetUp(); | 
| + | 
| + widget_ = CreateTopLevelPlatformWidget(); | 
| + bridge_ = | 
| + NativeWidgetMac::GetBridgeForNativeWindow(widget_->GetNativeWindow()); | 
| + fake_full_keyboard_access_ = | 
| + ui::test::ScopedFakeFullKeyboardAccess::GetInstance(); | 
| + DCHECK(fake_full_keyboard_access_); | 
| + widget_->Show(); | 
| + } | 
| + | 
| + void TearDown() override { | 
| + widget_->CloseNow(); | 
| + NativeWidgetMacTest::TearDown(); | 
| + } | 
| + | 
| + Widget* widget_ = nullptr; | 
| + BridgedNativeWidget* bridge_ = nullptr; | 
| + ui::test::ScopedFakeFullKeyboardAccess* fake_full_keyboard_access_ = nullptr; | 
| +}; | 
| + | 
| +// Test that updateFullKeyboardAccess method on BridgedContentView correctly | 
| +// sets the keyboard accessibility mode on the associated focus manager. | 
| +TEST_F(NativeWidgetMacFullKeyboardAccessTest, FullKeyboardToggle) { | 
| + EXPECT_TRUE(widget_->GetFocusManager()->keyboard_accessible()); | 
| + fake_full_keyboard_access_->SetFullKeyboardAccessState(false); | 
| + [bridge_->ns_view() updateFullKeyboardAccess]; | 
| + EXPECT_FALSE(widget_->GetFocusManager()->keyboard_accessible()); | 
| + fake_full_keyboard_access_->SetFullKeyboardAccessState(true); | 
| + [bridge_->ns_view() updateFullKeyboardAccess]; | 
| + EXPECT_TRUE(widget_->GetFocusManager()->keyboard_accessible()); | 
| +} | 
| + | 
| +// Test that a widget's associated focus manager is initialized with the correct | 
| 
tapted
2016/05/03 08:08:26
nit: widget -> Widget, focus manager -> FocusManag
 
karandeepb
2016/05/04 01:56:38
Done.
 | 
| +// keyboard accessibility value. | 
| +TEST_F(NativeWidgetMacFullKeyboardAccessTest, Initialization) { | 
| + EXPECT_TRUE(widget_->GetFocusManager()->keyboard_accessible()); | 
| + | 
| + fake_full_keyboard_access_->SetFullKeyboardAccessState(false); | 
| + Widget* widget2 = CreateTopLevelPlatformWidget(); | 
| + EXPECT_FALSE(widget2->GetFocusManager()->keyboard_accessible()); | 
| + widget2->CloseNow(); | 
| +} | 
| + | 
| +// Test that the correct keyboard accessibility mode is set when the window | 
| +// becomes active. | 
| +TEST_F(NativeWidgetMacFullKeyboardAccessTest, Activation) { | 
| + EXPECT_TRUE(widget_->GetFocusManager()->keyboard_accessible()); | 
| + | 
| + widget_->Hide(); | 
| + fake_full_keyboard_access_->SetFullKeyboardAccessState(false); | 
| + // [bridge_->ns_view() updateFullKeyboardAccess] is not explicitly called | 
| + // since we may not receive full keyboard access toggle notifications when our | 
| + // application is inactive. | 
| + | 
| + widget_->Show(); | 
| + EXPECT_FALSE(widget_->GetFocusManager()->keyboard_accessible()); | 
| + | 
| + widget_->Hide(); | 
| + fake_full_keyboard_access_->SetFullKeyboardAccessState(true); | 
| + | 
| + widget_->Show(); | 
| + EXPECT_TRUE(widget_->GetFocusManager()->keyboard_accessible()); | 
| +} | 
| + | 
| class NativeWidgetMacViewsOrderTest : public WidgetTest { | 
| public: | 
| NativeWidgetMacViewsOrderTest() {} |