Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(155)

Side by Side Diff: components/mus/ws/focus_controller_unittest.cc

Issue 1465143004: Converts focusmanager from delegate to observer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cleanup Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/mus/ws/focus_controller.h" 5 #include "components/mus/ws/focus_controller.h"
6 6
7 #include "components/mus/ws/focus_controller_delegate.h" 7 #include "components/mus/ws/focus_controller_observer.h"
8 #include "components/mus/ws/server_window.h" 8 #include "components/mus/ws/server_window.h"
9 #include "components/mus/ws/test_server_window_delegate.h" 9 #include "components/mus/ws/test_server_window_delegate.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
11 11
12 namespace mus { 12 namespace mus {
13 13
14 namespace ws { 14 namespace ws {
15 namespace { 15 namespace {
16 16
17 class TestFocusControllerDelegate : public FocusControllerDelegate { 17 class TestFocusControllerObserver : public FocusControllerObserver {
18 public: 18 public:
19 TestFocusControllerDelegate() 19 TestFocusControllerObserver()
20 : change_count_(0u), 20 : change_count_(0u),
21 old_focused_window_(nullptr), 21 old_focused_window_(nullptr),
22 new_focused_window_(nullptr) {} 22 new_focused_window_(nullptr) {}
23 23
24 void ClearAll() { 24 void ClearAll() {
25 change_count_ = 0u; 25 change_count_ = 0u;
26 old_focused_window_ = nullptr; 26 old_focused_window_ = nullptr;
27 new_focused_window_ = nullptr; 27 new_focused_window_ = nullptr;
28 } 28 }
29 size_t change_count() const { return change_count_; } 29 size_t change_count() const { return change_count_; }
30 ServerWindow* old_focused_window() { return old_focused_window_; } 30 ServerWindow* old_focused_window() { return old_focused_window_; }
31 ServerWindow* new_focused_window() { return new_focused_window_; } 31 ServerWindow* new_focused_window() { return new_focused_window_; }
32 32
33 private: 33 private:
34 // FocusControllerDelegate: 34 // FocusControllerObserver:
35 void OnFocusChanged(ServerWindow* old_focused_window, 35 void OnFocusChanged(FocusControllerChangeSource source,
36 ServerWindow* old_focused_window,
36 ServerWindow* new_focused_window) override { 37 ServerWindow* new_focused_window) override {
38 if (source == FocusControllerChangeSource::EXPLICIT)
39 return;
40
37 change_count_++; 41 change_count_++;
38 old_focused_window_ = old_focused_window; 42 old_focused_window_ = old_focused_window;
39 new_focused_window_ = new_focused_window; 43 new_focused_window_ = new_focused_window;
40 } 44 }
41 45
42 size_t change_count_; 46 size_t change_count_;
43 ServerWindow* old_focused_window_; 47 ServerWindow* old_focused_window_;
44 ServerWindow* new_focused_window_; 48 ServerWindow* new_focused_window_;
45 49
46 DISALLOW_COPY_AND_ASSIGN(TestFocusControllerDelegate); 50 DISALLOW_COPY_AND_ASSIGN(TestFocusControllerObserver);
47 }; 51 };
48 52
49 } // namespace 53 } // namespace
50 54
51 TEST(FocusControllerTest, Basic) { 55 TEST(FocusControllerTest, Basic) {
52 TestServerWindowDelegate server_window_delegate; 56 TestServerWindowDelegate server_window_delegate;
53 ServerWindow root(&server_window_delegate, WindowId()); 57 ServerWindow root(&server_window_delegate, WindowId());
54 server_window_delegate.set_root_window(&root); 58 server_window_delegate.set_root_window(&root);
55 root.SetVisible(true); 59 root.SetVisible(true);
56 ServerWindow child(&server_window_delegate, WindowId()); 60 ServerWindow child(&server_window_delegate, WindowId());
57 child.SetVisible(true); 61 child.SetVisible(true);
58 root.Add(&child); 62 root.Add(&child);
59 ServerWindow child_child(&server_window_delegate, WindowId()); 63 ServerWindow child_child(&server_window_delegate, WindowId());
60 child_child.SetVisible(true); 64 child_child.SetVisible(true);
61 child.Add(&child_child); 65 child.Add(&child_child);
62 66
63 TestFocusControllerDelegate focus_delegate; 67 TestFocusControllerObserver focus_observer;
64 FocusController focus_controller(&focus_delegate); 68 FocusController focus_controller;
69 focus_controller.AddObserver(&focus_observer);
65 70
66 focus_controller.SetFocusedWindow(&child_child); 71 focus_controller.SetFocusedWindow(&child_child);
67 EXPECT_EQ(0u, focus_delegate.change_count()); 72 EXPECT_EQ(0u, focus_observer.change_count());
68 73
69 // Remove the ancestor of the focused window, focus should go to the |root|. 74 // Remove the ancestor of the focused window, focus should go to the |root|.
70 root.Remove(&child); 75 root.Remove(&child);
71 EXPECT_EQ(1u, focus_delegate.change_count()); 76 EXPECT_EQ(1u, focus_observer.change_count());
72 EXPECT_EQ(&root, focus_delegate.new_focused_window()); 77 EXPECT_EQ(&root, focus_observer.new_focused_window());
73 EXPECT_EQ(&child_child, focus_delegate.old_focused_window()); 78 EXPECT_EQ(&child_child, focus_observer.old_focused_window());
74 focus_delegate.ClearAll(); 79 focus_observer.ClearAll();
75 80
76 // Make the focused window invisible. Focus is lost in this case (as no one 81 // Make the focused window invisible. Focus is lost in this case (as no one
77 // to give focus to). 82 // to give focus to).
78 root.SetVisible(false); 83 root.SetVisible(false);
79 EXPECT_EQ(1u, focus_delegate.change_count()); 84 EXPECT_EQ(1u, focus_observer.change_count());
80 EXPECT_EQ(nullptr, focus_delegate.new_focused_window()); 85 EXPECT_EQ(nullptr, focus_observer.new_focused_window());
81 EXPECT_EQ(&root, focus_delegate.old_focused_window()); 86 EXPECT_EQ(&root, focus_observer.old_focused_window());
82 focus_delegate.ClearAll(); 87 focus_observer.ClearAll();
83 88
84 // Go back to initial state and focus |child_child|. 89 // Go back to initial state and focus |child_child|.
85 root.SetVisible(true); 90 root.SetVisible(true);
86 root.Add(&child); 91 root.Add(&child);
87 focus_controller.SetFocusedWindow(&child_child); 92 focus_controller.SetFocusedWindow(&child_child);
88 EXPECT_EQ(0u, focus_delegate.change_count()); 93 EXPECT_EQ(0u, focus_observer.change_count());
89 94
90 // Hide the focused window, focus should go to parent. 95 // Hide the focused window, focus should go to parent.
91 child_child.SetVisible(false); 96 child_child.SetVisible(false);
92 EXPECT_EQ(1u, focus_delegate.change_count()); 97 EXPECT_EQ(1u, focus_observer.change_count());
93 EXPECT_EQ(&child, focus_delegate.new_focused_window()); 98 EXPECT_EQ(&child, focus_observer.new_focused_window());
94 EXPECT_EQ(&child_child, focus_delegate.old_focused_window()); 99 EXPECT_EQ(&child_child, focus_observer.old_focused_window());
95 focus_delegate.ClearAll(); 100 focus_observer.ClearAll();
96 101
97 child_child.SetVisible(true); 102 child_child.SetVisible(true);
98 focus_controller.SetFocusedWindow(&child_child); 103 focus_controller.SetFocusedWindow(&child_child);
99 EXPECT_EQ(0u, focus_delegate.change_count()); 104 EXPECT_EQ(0u, focus_observer.change_count());
100 105
101 // Hide the parent of the focused window. 106 // Hide the parent of the focused window.
102 child.SetVisible(false); 107 child.SetVisible(false);
103 EXPECT_EQ(1u, focus_delegate.change_count()); 108 EXPECT_EQ(1u, focus_observer.change_count());
104 EXPECT_EQ(&root, focus_delegate.new_focused_window()); 109 EXPECT_EQ(&root, focus_observer.new_focused_window());
105 EXPECT_EQ(&child_child, focus_delegate.old_focused_window()); 110 EXPECT_EQ(&child_child, focus_observer.old_focused_window());
106 focus_delegate.ClearAll(); 111 focus_observer.ClearAll();
112 focus_controller.RemoveObserver(&focus_observer);
107 } 113 }
108 114
109 } // namespace ws 115 } // namespace ws
110 116
111 } // namespace mus 117 } // namespace mus
OLDNEW
« no previous file with comments | « components/mus/ws/focus_controller_observer.h ('k') | components/mus/ws/window_tree_host_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698