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

Side by Side Diff: services/ui/ws/cursor_unittest.cc

Issue 2326203002: services/ui: Add WindowServerTestHelper. (Closed)
Patch Set: self nit Created 4 years, 3 months 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
« no previous file with comments | « no previous file | services/ui/ws/display_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 <stdint.h> 5 #include <stdint.h>
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 19 matching lines...) Expand all
30 #include "ui/gfx/geometry/rect.h" 30 #include "ui/gfx/geometry/rect.h"
31 31
32 namespace ui { 32 namespace ui {
33 namespace ws { 33 namespace ws {
34 namespace test { 34 namespace test {
35 35
36 const UserId kTestId1 = "20"; 36 const UserId kTestId1 = "20";
37 37
38 class CursorTest : public testing::Test { 38 class CursorTest : public testing::Test {
39 public: 39 public:
40 CursorTest() : cursor_id_(-1), platform_display_factory_(&cursor_id_) {} 40 CursorTest() {}
41 ~CursorTest() override {} 41 ~CursorTest() override {}
42 42
43 WindowServer* window_server() { return ws_test_helper_.window_server(); }
44 TestWindowServerDelegate* window_server_delegate() {
45 return ws_test_helper_.window_server_delegate();
46 }
47 int32_t cursor_id() const { return ws_test_helper_.cursor_id(); }
48
43 protected: 49 protected:
44 // testing::Test: 50 // testing::Test:
45 void SetUp() override { 51 void SetUp() override {
46 PlatformDisplay::set_factory_for_testing(&platform_display_factory_); 52 window_server_delegate()->set_num_displays_to_create(1);
47 window_server_.reset(new WindowServer(&window_server_delegate_));
48 window_server_delegate_.set_window_server(window_server_.get());
49
50 window_server_delegate_.set_num_displays_to_create(1);
51 53
52 // As a side effect, this allocates Displays. 54 // As a side effect, this allocates Displays.
53 WindowManagerWindowTreeFactorySetTestApi( 55 WindowManagerWindowTreeFactorySetTestApi(
54 window_server_->window_manager_window_tree_factory_set()) 56 window_server()->window_manager_window_tree_factory_set())
55 .Add(kTestId1); 57 .Add(kTestId1);
56 window_server_->user_id_tracker()->AddUserId(kTestId1); 58 window_server()->user_id_tracker()->AddUserId(kTestId1);
57 window_server_->user_id_tracker()->SetActiveUserId(kTestId1); 59 window_server()->user_id_tracker()->SetActiveUserId(kTestId1);
58 } 60 }
59 61
60 ServerWindow* GetRoot() { 62 ServerWindow* GetRoot() {
61 DisplayManager* display_manager = window_server_->display_manager(); 63 DisplayManager* display_manager = window_server()->display_manager();
62 // ASSERT_EQ(1u, display_manager->displays().size()); 64 // ASSERT_EQ(1u, display_manager->displays().size());
63 Display* display = *display_manager->displays().begin(); 65 Display* display = *display_manager->displays().begin();
64 return display->GetWindowManagerDisplayRootForUser(kTestId1)->root(); 66 return display->GetWindowManagerDisplayRootForUser(kTestId1)->root();
65 } 67 }
66 68
67 // Create a 30x30 window where the outer 10 pixels is non-client. 69 // Create a 30x30 window where the outer 10 pixels is non-client.
68 ServerWindow* BuildServerWindow() { 70 ServerWindow* BuildServerWindow() {
69 DisplayManager* display_manager = window_server_->display_manager(); 71 DisplayManager* display_manager = window_server()->display_manager();
70 Display* display = *display_manager->displays().begin(); 72 Display* display = *display_manager->displays().begin();
71 WindowManagerDisplayRoot* active_display_root = 73 WindowManagerDisplayRoot* active_display_root =
72 display->GetActiveWindowManagerDisplayRoot(); 74 display->GetActiveWindowManagerDisplayRoot();
73 WindowTree* tree = 75 WindowTree* tree =
74 active_display_root->window_manager_state()->window_tree(); 76 active_display_root->window_manager_state()->window_tree();
75 ClientWindowId child_window_id; 77 ClientWindowId child_window_id;
76 if (!NewWindowInTree(tree, &child_window_id)) 78 if (!NewWindowInTree(tree, &child_window_id))
77 return nullptr; 79 return nullptr;
78 80
79 ServerWindow* w = tree->GetWindowByClientId(child_window_id); 81 ServerWindow* w = tree->GetWindowByClientId(child_window_id);
80 w->SetBounds(gfx::Rect(10, 10, 30, 30)); 82 w->SetBounds(gfx::Rect(10, 10, 30, 30));
81 w->SetClientArea(gfx::Insets(10, 10), std::vector<gfx::Rect>()); 83 w->SetClientArea(gfx::Insets(10, 10), std::vector<gfx::Rect>());
82 w->SetVisible(true); 84 w->SetVisible(true);
83 85
84 ServerWindowSurfaceManagerTestApi test_api(w->GetOrCreateSurfaceManager()); 86 ServerWindowSurfaceManagerTestApi test_api(w->GetOrCreateSurfaceManager());
85 test_api.CreateEmptyDefaultSurface(); 87 test_api.CreateEmptyDefaultSurface();
86 88
87 return w; 89 return w;
88 } 90 }
89 91
90 void MoveCursorTo(const gfx::Point& p) { 92 void MoveCursorTo(const gfx::Point& p) {
91 DisplayManager* display_manager = window_server_->display_manager(); 93 DisplayManager* display_manager = window_server()->display_manager();
92 ASSERT_EQ(1u, display_manager->displays().size()); 94 ASSERT_EQ(1u, display_manager->displays().size());
93 Display* display = *display_manager->displays().begin(); 95 Display* display = *display_manager->displays().begin();
94 WindowManagerDisplayRoot* active_display_root = 96 WindowManagerDisplayRoot* active_display_root =
95 display->GetActiveWindowManagerDisplayRoot(); 97 display->GetActiveWindowManagerDisplayRoot();
96 ASSERT_TRUE(active_display_root); 98 ASSERT_TRUE(active_display_root);
97 static_cast<PlatformDisplayDelegate*>(display)->OnEvent(ui::PointerEvent( 99 static_cast<PlatformDisplayDelegate*>(display)->OnEvent(ui::PointerEvent(
98 ui::MouseEvent(ui::ET_MOUSE_MOVED, p, p, base::TimeTicks(), 0, 0))); 100 ui::MouseEvent(ui::ET_MOUSE_MOVED, p, p, base::TimeTicks(), 0, 0)));
99 WindowManagerState* wms = active_display_root->window_manager_state(); 101 WindowManagerState* wms = active_display_root->window_manager_state();
100 wms->OnEventAck(wms->window_tree(), mojom::EventResult::HANDLED); 102 wms->OnEventAck(wms->window_tree(), mojom::EventResult::HANDLED);
101 } 103 }
102 104
103 protected:
104 int32_t cursor_id_;
105 TestPlatformDisplayFactory platform_display_factory_;
106 TestWindowServerDelegate window_server_delegate_;
107 std::unique_ptr<WindowServer> window_server_;
108 base::MessageLoop message_loop_;
109
110 private: 105 private:
106 WindowServerTestHelper ws_test_helper_;
111 DISALLOW_COPY_AND_ASSIGN(CursorTest); 107 DISALLOW_COPY_AND_ASSIGN(CursorTest);
112 }; 108 };
113 109
114 TEST_F(CursorTest, ChangeByMouseMove) { 110 TEST_F(CursorTest, ChangeByMouseMove) {
115 ServerWindow* win = BuildServerWindow(); 111 ServerWindow* win = BuildServerWindow();
116 win->SetPredefinedCursor(mojom::Cursor::IBEAM); 112 win->SetPredefinedCursor(mojom::Cursor::IBEAM);
117 EXPECT_EQ(mojom::Cursor::IBEAM, mojom::Cursor(win->cursor())); 113 EXPECT_EQ(mojom::Cursor::IBEAM, mojom::Cursor(win->cursor()));
118 win->SetNonClientCursor(mojom::Cursor::EAST_RESIZE); 114 win->SetNonClientCursor(mojom::Cursor::EAST_RESIZE);
119 EXPECT_EQ(mojom::Cursor::EAST_RESIZE, 115 EXPECT_EQ(mojom::Cursor::EAST_RESIZE,
120 mojom::Cursor(win->non_client_cursor())); 116 mojom::Cursor(win->non_client_cursor()));
121 117
122 // Non client area 118 // Non client area
123 MoveCursorTo(gfx::Point(15, 15)); 119 MoveCursorTo(gfx::Point(15, 15));
124 EXPECT_EQ(mojom::Cursor::EAST_RESIZE, mojom::Cursor(cursor_id_)); 120 EXPECT_EQ(mojom::Cursor::EAST_RESIZE, mojom::Cursor(cursor_id()));
125 121
126 // Client area 122 // Client area
127 MoveCursorTo(gfx::Point(25, 25)); 123 MoveCursorTo(gfx::Point(25, 25));
128 EXPECT_EQ(mojom::Cursor::IBEAM, mojom::Cursor(cursor_id_)); 124 EXPECT_EQ(mojom::Cursor::IBEAM, mojom::Cursor(cursor_id()));
129 } 125 }
130 126
131 TEST_F(CursorTest, ChangeByClientAreaChange) { 127 TEST_F(CursorTest, ChangeByClientAreaChange) {
132 ServerWindow* win = BuildServerWindow(); 128 ServerWindow* win = BuildServerWindow();
133 win->SetPredefinedCursor(mojom::Cursor::IBEAM); 129 win->SetPredefinedCursor(mojom::Cursor::IBEAM);
134 EXPECT_EQ(mojom::Cursor::IBEAM, mojom::Cursor(win->cursor())); 130 EXPECT_EQ(mojom::Cursor::IBEAM, mojom::Cursor(win->cursor()));
135 win->SetNonClientCursor(mojom::Cursor::EAST_RESIZE); 131 win->SetNonClientCursor(mojom::Cursor::EAST_RESIZE);
136 EXPECT_EQ(mojom::Cursor::EAST_RESIZE, 132 EXPECT_EQ(mojom::Cursor::EAST_RESIZE,
137 mojom::Cursor(win->non_client_cursor())); 133 mojom::Cursor(win->non_client_cursor()));
138 134
139 // Non client area before we move. 135 // Non client area before we move.
140 MoveCursorTo(gfx::Point(15, 15)); 136 MoveCursorTo(gfx::Point(15, 15));
141 EXPECT_EQ(mojom::Cursor::EAST_RESIZE, mojom::Cursor(cursor_id_)); 137 EXPECT_EQ(mojom::Cursor::EAST_RESIZE, mojom::Cursor(cursor_id()));
142 138
143 // Changing the client area should cause a change. 139 // Changing the client area should cause a change.
144 win->SetClientArea(gfx::Insets(1, 1), std::vector<gfx::Rect>()); 140 win->SetClientArea(gfx::Insets(1, 1), std::vector<gfx::Rect>());
145 EXPECT_EQ(mojom::Cursor::IBEAM, mojom::Cursor(cursor_id_)); 141 EXPECT_EQ(mojom::Cursor::IBEAM, mojom::Cursor(cursor_id()));
146 } 142 }
147 143
148 TEST_F(CursorTest, NonClientCursorChange) { 144 TEST_F(CursorTest, NonClientCursorChange) {
149 ServerWindow* win = BuildServerWindow(); 145 ServerWindow* win = BuildServerWindow();
150 win->SetPredefinedCursor(mojom::Cursor::IBEAM); 146 win->SetPredefinedCursor(mojom::Cursor::IBEAM);
151 EXPECT_EQ(mojom::Cursor::IBEAM, mojom::Cursor(win->cursor())); 147 EXPECT_EQ(mojom::Cursor::IBEAM, mojom::Cursor(win->cursor()));
152 win->SetNonClientCursor(mojom::Cursor::EAST_RESIZE); 148 win->SetNonClientCursor(mojom::Cursor::EAST_RESIZE);
153 EXPECT_EQ(mojom::Cursor::EAST_RESIZE, 149 EXPECT_EQ(mojom::Cursor::EAST_RESIZE,
154 mojom::Cursor(win->non_client_cursor())); 150 mojom::Cursor(win->non_client_cursor()));
155 151
156 MoveCursorTo(gfx::Point(15, 15)); 152 MoveCursorTo(gfx::Point(15, 15));
157 EXPECT_EQ(mojom::Cursor::EAST_RESIZE, mojom::Cursor(cursor_id_)); 153 EXPECT_EQ(mojom::Cursor::EAST_RESIZE, mojom::Cursor(cursor_id()));
158 154
159 win->SetNonClientCursor(mojom::Cursor::WEST_RESIZE); 155 win->SetNonClientCursor(mojom::Cursor::WEST_RESIZE);
160 EXPECT_EQ(mojom::Cursor::WEST_RESIZE, mojom::Cursor(cursor_id_)); 156 EXPECT_EQ(mojom::Cursor::WEST_RESIZE, mojom::Cursor(cursor_id()));
161 } 157 }
162 158
163 TEST_F(CursorTest, IgnoreClientCursorChangeInNonClientArea) { 159 TEST_F(CursorTest, IgnoreClientCursorChangeInNonClientArea) {
164 ServerWindow* win = BuildServerWindow(); 160 ServerWindow* win = BuildServerWindow();
165 win->SetPredefinedCursor(mojom::Cursor::IBEAM); 161 win->SetPredefinedCursor(mojom::Cursor::IBEAM);
166 EXPECT_EQ(mojom::Cursor::IBEAM, mojom::Cursor(win->cursor())); 162 EXPECT_EQ(mojom::Cursor::IBEAM, mojom::Cursor(win->cursor()));
167 win->SetNonClientCursor(mojom::Cursor::EAST_RESIZE); 163 win->SetNonClientCursor(mojom::Cursor::EAST_RESIZE);
168 EXPECT_EQ(mojom::Cursor::EAST_RESIZE, 164 EXPECT_EQ(mojom::Cursor::EAST_RESIZE,
169 mojom::Cursor(win->non_client_cursor())); 165 mojom::Cursor(win->non_client_cursor()));
170 166
171 MoveCursorTo(gfx::Point(15, 15)); 167 MoveCursorTo(gfx::Point(15, 15));
172 EXPECT_EQ(mojom::Cursor::EAST_RESIZE, mojom::Cursor(cursor_id_)); 168 EXPECT_EQ(mojom::Cursor::EAST_RESIZE, mojom::Cursor(cursor_id()));
173 169
174 win->SetPredefinedCursor(mojom::Cursor::HELP); 170 win->SetPredefinedCursor(mojom::Cursor::HELP);
175 EXPECT_EQ(mojom::Cursor::EAST_RESIZE, mojom::Cursor(cursor_id_)); 171 EXPECT_EQ(mojom::Cursor::EAST_RESIZE, mojom::Cursor(cursor_id()));
176 } 172 }
177 173
178 TEST_F(CursorTest, NonClientToClientByBoundsChange) { 174 TEST_F(CursorTest, NonClientToClientByBoundsChange) {
179 ServerWindow* win = BuildServerWindow(); 175 ServerWindow* win = BuildServerWindow();
180 win->SetPredefinedCursor(mojom::Cursor::IBEAM); 176 win->SetPredefinedCursor(mojom::Cursor::IBEAM);
181 EXPECT_EQ(mojom::Cursor::IBEAM, mojom::Cursor(win->cursor())); 177 EXPECT_EQ(mojom::Cursor::IBEAM, mojom::Cursor(win->cursor()));
182 win->SetNonClientCursor(mojom::Cursor::EAST_RESIZE); 178 win->SetNonClientCursor(mojom::Cursor::EAST_RESIZE);
183 EXPECT_EQ(mojom::Cursor::EAST_RESIZE, 179 EXPECT_EQ(mojom::Cursor::EAST_RESIZE,
184 mojom::Cursor(win->non_client_cursor())); 180 mojom::Cursor(win->non_client_cursor()));
185 181
186 // Non client area before we move. 182 // Non client area before we move.
187 MoveCursorTo(gfx::Point(15, 15)); 183 MoveCursorTo(gfx::Point(15, 15));
188 EXPECT_EQ(mojom::Cursor::EAST_RESIZE, mojom::Cursor(cursor_id_)); 184 EXPECT_EQ(mojom::Cursor::EAST_RESIZE, mojom::Cursor(cursor_id()));
189 185
190 win->SetBounds(gfx::Rect(0, 0, 30, 30)); 186 win->SetBounds(gfx::Rect(0, 0, 30, 30));
191 EXPECT_EQ(mojom::Cursor::IBEAM, mojom::Cursor(cursor_id_)); 187 EXPECT_EQ(mojom::Cursor::IBEAM, mojom::Cursor(cursor_id()));
192 } 188 }
193 189
194 } // namespace test 190 } // namespace test
195 } // namespace ws 191 } // namespace ws
196 } // namespace ui 192 } // namespace ui
OLDNEW
« no previous file with comments | « no previous file | services/ui/ws/display_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698