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

Side by Side Diff: ash/wm/cursor_manager_unittest.cc

Issue 12263050: Rework ash::CursorManager into a corewm object, to share code with desktop. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Lables Created 7 years, 10 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "ash/wm/cursor_manager.h" 5 #include "ash/wm/cursor_manager.h"
6 6
7 #include "ash/shell.h" 7 #include "ash/shell.h"
8 #include "ash/test/ash_test_base.h" 8 #include "ash/test/ash_test_base.h"
9 #include "ash/test/cursor_manager_test_api.h" 9 #include "ash/test/cursor_manager_test_api.h"
10 #include "ash/wm/image_cursors.h" 10 #include "ash/wm/image_cursors.h"
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 CursorManagerTestApi test_api(cursor_manager); 78 CursorManagerTestApi test_api(cursor_manager);
79 79
80 cursor_manager->SetCursor(ui::kCursorCopy); 80 cursor_manager->SetCursor(ui::kCursorCopy);
81 EXPECT_EQ(ui::kCursorCopy, test_api.GetCurrentCursor().native_type()); 81 EXPECT_EQ(ui::kCursorCopy, test_api.GetCurrentCursor().native_type());
82 EXPECT_TRUE(test_api.GetCurrentCursor().platform()); 82 EXPECT_TRUE(test_api.GetCurrentCursor().platform());
83 cursor_manager->SetCursor(ui::kCursorPointer); 83 cursor_manager->SetCursor(ui::kCursorPointer);
84 EXPECT_EQ(ui::kCursorPointer, test_api.GetCurrentCursor().native_type()); 84 EXPECT_EQ(ui::kCursorPointer, test_api.GetCurrentCursor().native_type());
85 EXPECT_TRUE(test_api.GetCurrentCursor().platform()); 85 EXPECT_TRUE(test_api.GetCurrentCursor().platform());
86 } 86 }
87 87
88 TEST_F(CursorManagerTest, ShowHideCursor) {
89 CursorManager* cursor_manager = Shell::GetInstance()->cursor_manager();
90 CursorManagerTestApi test_api(cursor_manager);
91
92 cursor_manager->SetCursor(ui::kCursorCopy);
93 EXPECT_EQ(ui::kCursorCopy, test_api.GetCurrentCursor().native_type());
94
95 cursor_manager->ShowCursor();
96 EXPECT_TRUE(cursor_manager->IsCursorVisible());
97 cursor_manager->HideCursor();
98 EXPECT_FALSE(cursor_manager->IsCursorVisible());
99 // The current cursor does not change even when the cursor is not shown.
100 EXPECT_EQ(ui::kCursorCopy, test_api.GetCurrentCursor().native_type());
101
102 // Check if cursor visibility is locked.
103 cursor_manager->LockCursor();
104 EXPECT_FALSE(cursor_manager->IsCursorVisible());
105 cursor_manager->ShowCursor();
106 EXPECT_FALSE(cursor_manager->IsCursorVisible());
107 cursor_manager->UnlockCursor();
108 EXPECT_TRUE(cursor_manager->IsCursorVisible());
109
110 cursor_manager->LockCursor();
111 EXPECT_TRUE(cursor_manager->IsCursorVisible());
112 cursor_manager->HideCursor();
113 EXPECT_TRUE(cursor_manager->IsCursorVisible());
114 cursor_manager->UnlockCursor();
115 EXPECT_FALSE(cursor_manager->IsCursorVisible());
116
117 // Checks setting visiblity while cursor is locked does not affect the
118 // subsequent uses of UnlockCursor.
119 cursor_manager->LockCursor();
120 cursor_manager->HideCursor();
121 cursor_manager->UnlockCursor();
122 EXPECT_FALSE(cursor_manager->IsCursorVisible());
123
124 cursor_manager->ShowCursor();
125 cursor_manager->LockCursor();
126 cursor_manager->UnlockCursor();
127 EXPECT_TRUE(cursor_manager->IsCursorVisible());
128
129 cursor_manager->LockCursor();
130 cursor_manager->ShowCursor();
131 cursor_manager->UnlockCursor();
132 EXPECT_TRUE(cursor_manager->IsCursorVisible());
133
134 cursor_manager->HideCursor();
135 cursor_manager->LockCursor();
136 cursor_manager->UnlockCursor();
137 EXPECT_FALSE(cursor_manager->IsCursorVisible());
138 }
139
140 TEST_F(CursorManagerTest, SetDeviceScaleFactor) { 88 TEST_F(CursorManagerTest, SetDeviceScaleFactor) {
141 CursorManager* cursor_manager = Shell::GetInstance()->cursor_manager(); 89 CursorManager* cursor_manager = Shell::GetInstance()->cursor_manager();
142 CursorManagerTestApi test_api(cursor_manager); 90 CursorManagerTestApi test_api(cursor_manager);
143 91
144 cursor_manager->SetDeviceScaleFactor(2.0f); 92 cursor_manager->SetDeviceScaleFactor(2.0f);
145 EXPECT_EQ(2.0f, test_api.GetDeviceScaleFactor()); 93 EXPECT_EQ(2.0f, test_api.GetDeviceScaleFactor());
146 cursor_manager->SetDeviceScaleFactor(1.0f); 94 cursor_manager->SetDeviceScaleFactor(1.0f);
147 EXPECT_EQ(1.0f, test_api.GetDeviceScaleFactor()); 95 EXPECT_EQ(1.0f, test_api.GetDeviceScaleFactor());
148 } 96 }
149 97
150 // Verifies that LockCursor/UnlockCursor work correctly with
151 // EnableMouseEvents and DisableMouseEvents
152 TEST_F(CursorManagerTest, EnableDisableMouseEvents) {
153 CursorManager* cursor_manager = Shell::GetInstance()->cursor_manager();
154 CursorManagerTestApi test_api(cursor_manager);
155
156 cursor_manager->SetCursor(ui::kCursorCopy);
157 EXPECT_EQ(ui::kCursorCopy, test_api.GetCurrentCursor().native_type());
158
159 cursor_manager->EnableMouseEvents();
160 EXPECT_TRUE(cursor_manager->IsMouseEventsEnabled());
161 cursor_manager->DisableMouseEvents();
162 EXPECT_FALSE(cursor_manager->IsMouseEventsEnabled());
163 // The current cursor does not change even when the cursor is not shown.
164 EXPECT_EQ(ui::kCursorCopy, test_api.GetCurrentCursor().native_type());
165
166 // Check if cursor enable state is locked.
167 cursor_manager->LockCursor();
168 EXPECT_FALSE(cursor_manager->IsMouseEventsEnabled());
169 cursor_manager->EnableMouseEvents();
170 EXPECT_FALSE(cursor_manager->IsMouseEventsEnabled());
171 cursor_manager->UnlockCursor();
172 EXPECT_TRUE(cursor_manager->IsMouseEventsEnabled());
173
174 cursor_manager->LockCursor();
175 EXPECT_TRUE(cursor_manager->IsMouseEventsEnabled());
176 cursor_manager->DisableMouseEvents();
177 EXPECT_TRUE(cursor_manager->IsMouseEventsEnabled());
178 cursor_manager->UnlockCursor();
179 EXPECT_FALSE(cursor_manager->IsMouseEventsEnabled());
180
181 // Checks enabling cursor while cursor is locked does not affect the
182 // subsequent uses of UnlockCursor.
183 cursor_manager->LockCursor();
184 cursor_manager->DisableMouseEvents();
185 cursor_manager->UnlockCursor();
186 EXPECT_FALSE(cursor_manager->IsMouseEventsEnabled());
187
188 cursor_manager->EnableMouseEvents();
189 cursor_manager->LockCursor();
190 cursor_manager->UnlockCursor();
191 EXPECT_TRUE(cursor_manager->IsMouseEventsEnabled());
192
193 cursor_manager->LockCursor();
194 cursor_manager->EnableMouseEvents();
195 cursor_manager->UnlockCursor();
196 EXPECT_TRUE(cursor_manager->IsMouseEventsEnabled());
197
198 cursor_manager->DisableMouseEvents();
199 cursor_manager->LockCursor();
200 cursor_manager->UnlockCursor();
201 EXPECT_FALSE(cursor_manager->IsMouseEventsEnabled());
202 }
203
204 TEST_F(CursorManagerTest, IsMouseEventsEnabled) {
205 CursorManager* cursor_manager = Shell::GetInstance()->cursor_manager();
206 cursor_manager->EnableMouseEvents();
207 EXPECT_TRUE(cursor_manager->IsMouseEventsEnabled());
208 cursor_manager->DisableMouseEvents();
209 EXPECT_FALSE(cursor_manager->IsMouseEventsEnabled());
210 }
211
212 // Verifies that the mouse events enable state changes correctly when
213 // ShowCursor/HideCursor and EnableMouseEvents/DisableMouseEvents are used
214 // together.
215 TEST_F(CursorManagerTest, ShowAndEnable) {
216 CursorManager* cursor_manager = Shell::GetInstance()->cursor_manager();
217
218 // Changing the visibility of the cursor does not affect the enable state.
219 cursor_manager->EnableMouseEvents();
220 cursor_manager->ShowCursor();
221 EXPECT_TRUE(cursor_manager->IsCursorVisible());
222 EXPECT_TRUE(cursor_manager->IsMouseEventsEnabled());
223 cursor_manager->HideCursor();
224 EXPECT_FALSE(cursor_manager->IsCursorVisible());
225 EXPECT_TRUE(cursor_manager->IsMouseEventsEnabled());
226 cursor_manager->ShowCursor();
227 EXPECT_TRUE(cursor_manager->IsCursorVisible());
228 EXPECT_TRUE(cursor_manager->IsMouseEventsEnabled());
229
230 // When mouse events are disabled, it also gets invisible.
231 EXPECT_TRUE(cursor_manager->IsCursorVisible());
232 cursor_manager->DisableMouseEvents();
233 EXPECT_FALSE(cursor_manager->IsCursorVisible());
234 EXPECT_FALSE(cursor_manager->IsMouseEventsEnabled());
235
236 // When mouse events are enabled, it restores the visibility state.
237 cursor_manager->EnableMouseEvents();
238 EXPECT_TRUE(cursor_manager->IsCursorVisible());
239 EXPECT_TRUE(cursor_manager->IsMouseEventsEnabled());
240
241 cursor_manager->ShowCursor();
242 cursor_manager->DisableMouseEvents();
243 EXPECT_FALSE(cursor_manager->IsCursorVisible());
244 EXPECT_FALSE(cursor_manager->IsMouseEventsEnabled());
245 cursor_manager->EnableMouseEvents();
246 EXPECT_TRUE(cursor_manager->IsCursorVisible());
247 EXPECT_TRUE(cursor_manager->IsMouseEventsEnabled());
248
249 cursor_manager->HideCursor();
250 cursor_manager->DisableMouseEvents();
251 EXPECT_FALSE(cursor_manager->IsCursorVisible());
252 EXPECT_FALSE(cursor_manager->IsMouseEventsEnabled());
253 cursor_manager->EnableMouseEvents();
254 EXPECT_FALSE(cursor_manager->IsCursorVisible());
255 EXPECT_TRUE(cursor_manager->IsMouseEventsEnabled());
256
257 // When mouse events are disabled, ShowCursor is ignored.
258 cursor_manager->DisableMouseEvents();
259 EXPECT_FALSE(cursor_manager->IsCursorVisible());
260 EXPECT_FALSE(cursor_manager->IsMouseEventsEnabled());
261 cursor_manager->ShowCursor();
262 EXPECT_FALSE(cursor_manager->IsCursorVisible());
263 EXPECT_FALSE(cursor_manager->IsMouseEventsEnabled());
264 cursor_manager->DisableMouseEvents();
265 EXPECT_FALSE(cursor_manager->IsCursorVisible());
266 EXPECT_FALSE(cursor_manager->IsMouseEventsEnabled());
267 }
268
269 // Verifies that calling DisableMouseEvents multiple times in a row makes no
270 // difference compared with calling it once.
271 // This is a regression test for http://crbug.com/169404.
272 TEST_F(CursorManagerTest, MultipleDisableMouseEvents) {
273 CursorManager* cursor_manager = Shell::GetInstance()->cursor_manager();
274 cursor_manager->DisableMouseEvents();
275 cursor_manager->DisableMouseEvents();
276 cursor_manager->EnableMouseEvents();
277 cursor_manager->LockCursor();
278 cursor_manager->UnlockCursor();
279 EXPECT_TRUE(cursor_manager->IsCursorVisible());
280 }
281
282 // Verifies that calling EnableMouseEvents multiple times in a row makes no
283 // difference compared with calling it once.
284 TEST_F(CursorManagerTest, MultipleEnableMouseEvents) {
285 CursorManager* cursor_manager = Shell::GetInstance()->cursor_manager();
286 cursor_manager->DisableMouseEvents();
287 cursor_manager->EnableMouseEvents();
288 cursor_manager->EnableMouseEvents();
289 cursor_manager->LockCursor();
290 cursor_manager->UnlockCursor();
291 EXPECT_TRUE(cursor_manager->IsCursorVisible());
292 }
293
294 #if defined(OS_WIN) 98 #if defined(OS_WIN)
295 // Temporarily disabled for windows. See crbug.com/112222. 99 // Temporarily disabled for windows. See crbug.com/112222.
296 #define MAYBE_DisabledMouseEventsLocation DISABLED_DisabledMouseEventsLocation 100 #define MAYBE_DisabledMouseEventsLocation DISABLED_DisabledMouseEventsLocation
297 #else 101 #else
298 #define MAYBE_DisabledMouseEventsLocation DisabledMouseEventsLocation 102 #define MAYBE_DisabledMouseEventsLocation DisabledMouseEventsLocation
299 #endif // defined(OS_WIN) 103 #endif // defined(OS_WIN)
300 104
301 // Verifies that RootWindow generates a mouse event located outside of a window 105 // Verifies that RootWindow generates a mouse event located outside of a window
302 // when mouse events are disabled. 106 // when mouse events are disabled.
303 TEST_F(CursorManagerTest, MAYBE_DisabledMouseEventsLocation) { 107 TEST_F(CursorManagerTest, MAYBE_DisabledMouseEventsLocation) {
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 gfx::Point mouse_location; 155 gfx::Point mouse_location;
352 EXPECT_TRUE(root_window->QueryMouseLocationForTest(&mouse_location)); 156 EXPECT_TRUE(root_window->QueryMouseLocationForTest(&mouse_location));
353 EXPECT_EQ("10,10", mouse_location.ToString()); 157 EXPECT_EQ("10,10", mouse_location.ToString());
354 Shell::GetInstance()->cursor_manager()->DisableMouseEvents(); 158 Shell::GetInstance()->cursor_manager()->DisableMouseEvents();
355 EXPECT_FALSE(root_window->QueryMouseLocationForTest(&mouse_location)); 159 EXPECT_FALSE(root_window->QueryMouseLocationForTest(&mouse_location));
356 EXPECT_EQ("0,0", mouse_location.ToString()); 160 EXPECT_EQ("0,0", mouse_location.ToString());
357 } 161 }
358 162
359 } // namespace test 163 } // namespace test
360 } // namespace ash 164 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698