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

Side by Side Diff: ui/wm/core/cursor_manager_unittest.cc

Issue 2071553002: Initial support of large mouse cursor on Exosphere (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 4 years, 5 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
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 "ui/wm/core/cursor_manager.h" 5 #include "ui/wm/core/cursor_manager.h"
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "ui/aura/client/cursor_client_observer.h" 9 #include "ui/aura/client/cursor_client_observer.h"
10 #include "ui/aura/test/aura_test_base.h" 10 #include "ui/aura/test/aura_test_base.h"
11 #include "ui/wm/core/native_cursor_manager.h" 11 #include "ui/wm/core/native_cursor_manager.h"
12 #include "ui/wm/test/testing_cursor_client_observer.h"
12 13
13 namespace { 14 namespace {
14 15
15 class TestingCursorManager : public wm::NativeCursorManager { 16 class TestingCursorManager : public wm::NativeCursorManager {
16 public: 17 public:
17 // Overridden from wm::NativeCursorManager: 18 // Overridden from wm::NativeCursorManager:
18 void SetDisplay(const display::Display& display, 19 void SetDisplay(const display::Display& display,
19 wm::NativeCursorManagerDelegate* delegate) override {} 20 wm::NativeCursorManagerDelegate* delegate) override {}
20 21
21 void SetCursor(gfx::NativeCursor cursor, 22 void SetCursor(gfx::NativeCursor cursor,
(...skipping 23 matching lines...) Expand all
45 class CursorManagerTest : public aura::test::AuraTestBase { 46 class CursorManagerTest : public aura::test::AuraTestBase {
46 protected: 47 protected:
47 CursorManagerTest() 48 CursorManagerTest()
48 : delegate_(new TestingCursorManager), 49 : delegate_(new TestingCursorManager),
49 cursor_manager_(base::WrapUnique(delegate_)) {} 50 cursor_manager_(base::WrapUnique(delegate_)) {}
50 51
51 TestingCursorManager* delegate_; 52 TestingCursorManager* delegate_;
52 wm::CursorManager cursor_manager_; 53 wm::CursorManager cursor_manager_;
53 }; 54 };
54 55
55 class TestingCursorClientObserver : public aura::client::CursorClientObserver {
56 public:
57 TestingCursorClientObserver()
58 : cursor_visibility_(false),
59 did_visibility_change_(false) {}
60 void reset() { cursor_visibility_ = did_visibility_change_ = false; }
61 bool is_cursor_visible() const { return cursor_visibility_; }
62 bool did_visibility_change() const { return did_visibility_change_; }
63
64 // Overridden from aura::client::CursorClientObserver:
65 void OnCursorVisibilityChanged(bool is_visible) override {
66 cursor_visibility_ = is_visible;
67 did_visibility_change_ = true;
68 }
69
70 private:
71 bool cursor_visibility_;
72 bool did_visibility_change_;
73
74 DISALLOW_COPY_AND_ASSIGN(TestingCursorClientObserver);
75 };
76
77 TEST_F(CursorManagerTest, ShowHideCursor) { 56 TEST_F(CursorManagerTest, ShowHideCursor) {
78 cursor_manager_.SetCursor(ui::kCursorCopy); 57 cursor_manager_.SetCursor(ui::kCursorCopy);
79 EXPECT_EQ(ui::kCursorCopy, cursor_manager_.GetCursor().native_type()); 58 EXPECT_EQ(ui::kCursorCopy, cursor_manager_.GetCursor().native_type());
80 59
81 cursor_manager_.ShowCursor(); 60 cursor_manager_.ShowCursor();
82 EXPECT_TRUE(cursor_manager_.IsCursorVisible()); 61 EXPECT_TRUE(cursor_manager_.IsCursorVisible());
83 cursor_manager_.HideCursor(); 62 cursor_manager_.HideCursor();
84 EXPECT_FALSE(cursor_manager_.IsCursorVisible()); 63 EXPECT_FALSE(cursor_manager_.IsCursorVisible());
85 // The current cursor does not change even when the cursor is not shown. 64 // The current cursor does not change even when the cursor is not shown.
86 EXPECT_EQ(ui::kCursorCopy, cursor_manager_.GetCursor().native_type()); 65 EXPECT_EQ(ui::kCursorCopy, cursor_manager_.GetCursor().native_type());
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 cursor_manager_.UnlockCursor(); 147 cursor_manager_.UnlockCursor();
169 EXPECT_TRUE(cursor_manager_.IsMouseEventsEnabled()); 148 EXPECT_TRUE(cursor_manager_.IsMouseEventsEnabled());
170 149
171 cursor_manager_.DisableMouseEvents(); 150 cursor_manager_.DisableMouseEvents();
172 cursor_manager_.LockCursor(); 151 cursor_manager_.LockCursor();
173 cursor_manager_.UnlockCursor(); 152 cursor_manager_.UnlockCursor();
174 EXPECT_FALSE(cursor_manager_.IsMouseEventsEnabled()); 153 EXPECT_FALSE(cursor_manager_.IsMouseEventsEnabled());
175 } 154 }
176 155
177 TEST_F(CursorManagerTest, SetCursorSet) { 156 TEST_F(CursorManagerTest, SetCursorSet) {
157 wm::TestingCursorClientObserver observer;
158 cursor_manager_.AddObserver(&observer);
159
178 EXPECT_EQ(ui::CURSOR_SET_NORMAL, cursor_manager_.GetCursorSet()); 160 EXPECT_EQ(ui::CURSOR_SET_NORMAL, cursor_manager_.GetCursorSet());
161 EXPECT_EQ(ui::CURSOR_SET_NORMAL, observer.cursor_set());
179 162
180 cursor_manager_.SetCursorSet(ui::CURSOR_SET_NORMAL); 163 cursor_manager_.SetCursorSet(ui::CURSOR_SET_NORMAL);
181 EXPECT_EQ(ui::CURSOR_SET_NORMAL, cursor_manager_.GetCursorSet()); 164 EXPECT_EQ(ui::CURSOR_SET_NORMAL, cursor_manager_.GetCursorSet());
165 EXPECT_EQ(ui::CURSOR_SET_NORMAL, observer.cursor_set());
182 166
183 cursor_manager_.SetCursorSet(ui::CURSOR_SET_LARGE); 167 cursor_manager_.SetCursorSet(ui::CURSOR_SET_LARGE);
184 EXPECT_EQ(ui::CURSOR_SET_LARGE, cursor_manager_.GetCursorSet()); 168 EXPECT_EQ(ui::CURSOR_SET_LARGE, cursor_manager_.GetCursorSet());
169 EXPECT_EQ(ui::CURSOR_SET_LARGE, observer.cursor_set());
185 170
186 cursor_manager_.SetCursorSet(ui::CURSOR_SET_NORMAL); 171 cursor_manager_.SetCursorSet(ui::CURSOR_SET_NORMAL);
187 EXPECT_EQ(ui::CURSOR_SET_NORMAL, cursor_manager_.GetCursorSet()); 172 EXPECT_EQ(ui::CURSOR_SET_NORMAL, cursor_manager_.GetCursorSet());
173 EXPECT_EQ(ui::CURSOR_SET_NORMAL, observer.cursor_set());
188 } 174 }
189 175
190 TEST_F(CursorManagerTest, IsMouseEventsEnabled) { 176 TEST_F(CursorManagerTest, IsMouseEventsEnabled) {
191 cursor_manager_.EnableMouseEvents(); 177 cursor_manager_.EnableMouseEvents();
192 EXPECT_TRUE(cursor_manager_.IsMouseEventsEnabled()); 178 EXPECT_TRUE(cursor_manager_.IsMouseEventsEnabled());
193 cursor_manager_.DisableMouseEvents(); 179 cursor_manager_.DisableMouseEvents();
194 EXPECT_FALSE(cursor_manager_.IsMouseEventsEnabled()); 180 EXPECT_FALSE(cursor_manager_.IsMouseEventsEnabled());
195 } 181 }
196 182
197 // Verifies that the mouse events enable state changes correctly when 183 // Verifies that the mouse events enable state changes correctly when
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 cursor_manager_.EnableMouseEvents(); 254 cursor_manager_.EnableMouseEvents();
269 cursor_manager_.EnableMouseEvents(); 255 cursor_manager_.EnableMouseEvents();
270 cursor_manager_.LockCursor(); 256 cursor_manager_.LockCursor();
271 cursor_manager_.UnlockCursor(); 257 cursor_manager_.UnlockCursor();
272 EXPECT_TRUE(cursor_manager_.IsCursorVisible()); 258 EXPECT_TRUE(cursor_manager_.IsCursorVisible());
273 } 259 }
274 260
275 TEST_F(CursorManagerTest, TestCursorClientObserver) { 261 TEST_F(CursorManagerTest, TestCursorClientObserver) {
276 // Add two observers. Both should have OnCursorVisibilityChanged() 262 // Add two observers. Both should have OnCursorVisibilityChanged()
277 // invoked when the visibility of the cursor changes. 263 // invoked when the visibility of the cursor changes.
278 TestingCursorClientObserver observer_a; 264 wm::TestingCursorClientObserver observer_a;
279 TestingCursorClientObserver observer_b; 265 wm::TestingCursorClientObserver observer_b;
280 cursor_manager_.AddObserver(&observer_a); 266 cursor_manager_.AddObserver(&observer_a);
281 cursor_manager_.AddObserver(&observer_b); 267 cursor_manager_.AddObserver(&observer_b);
282 268
283 // Initial state before any events have been sent. 269 // Initial state before any events have been sent.
284 observer_a.reset(); 270 observer_a.reset();
285 observer_b.reset(); 271 observer_b.reset();
286 EXPECT_FALSE(observer_a.did_visibility_change()); 272 EXPECT_FALSE(observer_a.did_visibility_change());
287 EXPECT_FALSE(observer_b.did_visibility_change()); 273 EXPECT_FALSE(observer_b.did_visibility_change());
288 EXPECT_FALSE(observer_a.is_cursor_visible()); 274 EXPECT_FALSE(observer_a.is_cursor_visible());
289 EXPECT_FALSE(observer_b.is_cursor_visible()); 275 EXPECT_FALSE(observer_b.is_cursor_visible());
276 EXPECT_FALSE(observer_a.did_cursor_set_change());
277 EXPECT_FALSE(observer_b.did_cursor_set_change());
290 278
291 // Hide the cursor using HideCursor(). 279 // Hide the cursor using HideCursor().
292 cursor_manager_.HideCursor(); 280 cursor_manager_.HideCursor();
293 EXPECT_TRUE(observer_a.did_visibility_change()); 281 EXPECT_TRUE(observer_a.did_visibility_change());
294 EXPECT_TRUE(observer_b.did_visibility_change()); 282 EXPECT_TRUE(observer_b.did_visibility_change());
295 EXPECT_FALSE(observer_a.is_cursor_visible()); 283 EXPECT_FALSE(observer_a.is_cursor_visible());
296 EXPECT_FALSE(observer_b.is_cursor_visible()); 284 EXPECT_FALSE(observer_b.is_cursor_visible());
297 285
286 // Set the cursor set.
287 cursor_manager_.SetCursorSet(ui::CURSOR_SET_LARGE);
288 EXPECT_TRUE(observer_a.did_cursor_set_change());
289 EXPECT_EQ(ui::CURSOR_SET_LARGE, observer_a.cursor_set());
290 EXPECT_TRUE(observer_b.did_cursor_set_change());
291 EXPECT_EQ(ui::CURSOR_SET_LARGE, observer_b.cursor_set());
292
298 // Show the cursor using ShowCursor(). 293 // Show the cursor using ShowCursor().
299 observer_a.reset(); 294 observer_a.reset();
300 observer_b.reset(); 295 observer_b.reset();
301 cursor_manager_.ShowCursor(); 296 cursor_manager_.ShowCursor();
302 EXPECT_TRUE(observer_a.did_visibility_change()); 297 EXPECT_TRUE(observer_a.did_visibility_change());
303 EXPECT_TRUE(observer_b.did_visibility_change()); 298 EXPECT_TRUE(observer_b.did_visibility_change());
304 EXPECT_TRUE(observer_a.is_cursor_visible()); 299 EXPECT_TRUE(observer_a.is_cursor_visible());
305 EXPECT_TRUE(observer_b.is_cursor_visible()); 300 EXPECT_TRUE(observer_b.is_cursor_visible());
306 301
307 // Remove observer_b. Its OnCursorVisibilityChanged() should 302 // Remove observer_b. Its OnCursorVisibilityChanged() should
308 // not be invoked past this point. 303 // not be invoked past this point.
309 cursor_manager_.RemoveObserver(&observer_b); 304 cursor_manager_.RemoveObserver(&observer_b);
310 305
311 // Hide the cursor using HideCursor(). 306 // Hide the cursor using HideCursor().
312 observer_a.reset(); 307 observer_a.reset();
313 observer_b.reset(); 308 observer_b.reset();
314 cursor_manager_.HideCursor(); 309 cursor_manager_.HideCursor();
315 EXPECT_TRUE(observer_a.did_visibility_change()); 310 EXPECT_TRUE(observer_a.did_visibility_change());
316 EXPECT_FALSE(observer_b.did_visibility_change()); 311 EXPECT_FALSE(observer_b.did_visibility_change());
317 EXPECT_FALSE(observer_a.is_cursor_visible()); 312 EXPECT_FALSE(observer_a.is_cursor_visible());
318 313
314 // Set back the cursor set to normal.
315 cursor_manager_.SetCursorSet(ui::CURSOR_SET_NORMAL);
316 EXPECT_TRUE(observer_a.did_cursor_set_change());
317 EXPECT_EQ(ui::CURSOR_SET_NORMAL, observer_a.cursor_set());
318 EXPECT_FALSE(observer_b.did_cursor_set_change());
319
319 // Show the cursor using ShowCursor(). 320 // Show the cursor using ShowCursor().
320 observer_a.reset(); 321 observer_a.reset();
321 observer_b.reset(); 322 observer_b.reset();
322 cursor_manager_.ShowCursor(); 323 cursor_manager_.ShowCursor();
323 EXPECT_TRUE(observer_a.did_visibility_change()); 324 EXPECT_TRUE(observer_a.did_visibility_change());
324 EXPECT_FALSE(observer_b.did_visibility_change()); 325 EXPECT_FALSE(observer_b.did_visibility_change());
325 EXPECT_TRUE(observer_a.is_cursor_visible()); 326 EXPECT_TRUE(observer_a.is_cursor_visible());
326 } 327 }
327 328
328 // This test validates that the cursor visiblity state is restored when a 329 // This test validates that the cursor visiblity state is restored when a
(...skipping 23 matching lines...) Expand all
352 // This block validates that the cursor is visible initially. It then 353 // This block validates that the cursor is visible initially. It then
353 // performs normal cursor visibility operations. 354 // performs normal cursor visibility operations.
354 { 355 {
355 wm::CursorManager cursor_manager3( 356 wm::CursorManager cursor_manager3(
356 base::WrapUnique(new TestingCursorManager)); 357 base::WrapUnique(new TestingCursorManager));
357 EXPECT_TRUE(cursor_manager3.IsCursorVisible()); 358 EXPECT_TRUE(cursor_manager3.IsCursorVisible());
358 cursor_manager3.HideCursor(); 359 cursor_manager3.HideCursor();
359 EXPECT_FALSE(cursor_manager3.IsCursorVisible()); 360 EXPECT_FALSE(cursor_manager3.IsCursorVisible());
360 } 361 }
361 } 362 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698