1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "ui/views/test/focus_manager_test.h" 6 7#include <algorithm> 8 9#include "ui/views/focus/focus_manager.h" 10#include "ui/views/widget/widget.h" 11 12namespace views { 13 14//////////////////////////////////////////////////////////////////////////////// 15// FocusManagerTest, public: 16 17FocusManagerTest::FocusManagerTest() 18 : contents_view_(new View), 19 focus_change_listener_(NULL), 20 widget_focus_change_listener_(NULL) { 21} 22 23FocusManagerTest::~FocusManagerTest() { 24} 25 26FocusManager* FocusManagerTest::GetFocusManager() { 27 return GetWidget()->GetFocusManager(); 28} 29 30//////////////////////////////////////////////////////////////////////////////// 31// FocusManagerTest, ViewTestBase overrides: 32 33void FocusManagerTest::SetUp() { 34 ViewsTestBase::SetUp(); 35 36 Widget* widget = new Widget; 37 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW); 38 params.delegate = this; 39 params.bounds = gfx::Rect(0, 0, 1024, 768); 40 widget->Init(params); 41 42 InitContentView(); 43 widget->Show(); 44} 45 46void FocusManagerTest::TearDown() { 47 if (focus_change_listener_) 48 GetFocusManager()->RemoveFocusChangeListener(focus_change_listener_); 49 if (widget_focus_change_listener_) { 50 WidgetFocusManager::GetInstance()->RemoveFocusChangeListener( 51 widget_focus_change_listener_); 52 } 53 GetWidget()->Close(); 54 55 // Flush the message loop to make application verifiers happy. 56 RunPendingMessages(); 57 ViewsTestBase::TearDown(); 58} 59 60//////////////////////////////////////////////////////////////////////////////// 61// FocusManagerTest, WidgetDelegate implementation: 62 63View* FocusManagerTest::GetContentsView() { 64 return contents_view_; 65} 66 67Widget* FocusManagerTest::GetWidget() { 68 return contents_view_->GetWidget(); 69} 70 71const Widget* FocusManagerTest::GetWidget() const { 72 return contents_view_->GetWidget(); 73} 74 75void FocusManagerTest::GetAccessiblePanes(std::vector<View*>* panes) { 76 std::copy(accessible_panes_.begin(), accessible_panes_.end(), 77 std::back_inserter(*panes)); 78} 79 80//////////////////////////////////////////////////////////////////////////////// 81// FocusManagerTest, protected: 82 83void FocusManagerTest::InitContentView() { 84} 85 86void FocusManagerTest::AddFocusChangeListener(FocusChangeListener* listener) { 87 ASSERT_FALSE(focus_change_listener_); 88 focus_change_listener_ = listener; 89 GetFocusManager()->AddFocusChangeListener(listener); 90} 91 92void FocusManagerTest::AddWidgetFocusChangeListener( 93 WidgetFocusChangeListener* listener) { 94 ASSERT_FALSE(widget_focus_change_listener_); 95 widget_focus_change_listener_ = listener; 96 WidgetFocusManager::GetInstance()->AddFocusChangeListener(listener); 97} 98 99void FocusManagerTest::SetAccessiblePanes(const std::vector<View*>& panes) { 100 accessible_panes_ = panes; 101} 102 103//////////////////////////////////////////////////////////////////////////////// 104// TestFocusChangeListener 105 106TestFocusChangeListener::TestFocusChangeListener() { 107} 108 109TestFocusChangeListener::~TestFocusChangeListener() { 110} 111 112void TestFocusChangeListener::OnWillChangeFocus(View* focused_before, 113 View* focused_now) { 114 focus_changes_.push_back(ViewPair(focused_before, focused_now)); 115} 116void TestFocusChangeListener::OnDidChangeFocus(View* focused_before, 117 View* focused_now) { 118} 119 120void TestFocusChangeListener::ClearFocusChanges() { 121 focus_changes_.clear(); 122} 123 124//////////////////////////////////////////////////////////////////////////////// 125// TestWidgetFocusChangeListener 126 127TestWidgetFocusChangeListener::TestWidgetFocusChangeListener() { 128} 129 130TestWidgetFocusChangeListener::~TestWidgetFocusChangeListener() { 131} 132 133void TestWidgetFocusChangeListener::ClearFocusChanges() { 134 focus_changes_.clear(); 135} 136 137void TestWidgetFocusChangeListener::OnNativeFocusChange( 138 gfx::NativeView focused_before, 139 gfx::NativeView focused_now) { 140 focus_changes_.push_back(NativeViewPair(focused_before, focused_now)); 141} 142 143} // namespace views 144