OLD | NEW |
---|---|
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" |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
45 class CursorManagerTest : public aura::test::AuraTestBase { | 45 class CursorManagerTest : public aura::test::AuraTestBase { |
46 protected: | 46 protected: |
47 CursorManagerTest() | 47 CursorManagerTest() |
48 : delegate_(new TestingCursorManager), | 48 : delegate_(new TestingCursorManager), |
49 cursor_manager_(base::WrapUnique(delegate_)) {} | 49 cursor_manager_(base::WrapUnique(delegate_)) {} |
50 | 50 |
51 TestingCursorManager* delegate_; | 51 TestingCursorManager* delegate_; |
52 wm::CursorManager cursor_manager_; | 52 wm::CursorManager cursor_manager_; |
53 }; | 53 }; |
54 | 54 |
55 class TestingCursorClientObserver : public aura::client::CursorClientObserver { | 55 class TestingCursorClientObserver : public aura::client::CursorClientObserver { |
sky
2016/06/20 15:27:51
How about moving this into testing_cursor_client_o
yoshiki
2016/06/28 02:12:42
Done.
| |
56 public: | 56 public: |
57 TestingCursorClientObserver() | 57 TestingCursorClientObserver() |
58 : cursor_visibility_(false), | 58 : cursor_visibility_(false), |
59 did_visibility_change_(false) {} | 59 did_visibility_change_(false), |
60 void reset() { cursor_visibility_ = did_visibility_change_ = false; } | 60 cursor_set_(ui::CURSOR_SET_NORMAL), |
61 did_cursor_set_change_(false) {} | |
62 void reset() { | |
63 cursor_visibility_ = did_visibility_change_ = false; | |
64 did_cursor_set_change_ = false; | |
sky
2016/06/20 15:27:51
Shouldn't you reset cursor_set_ here too?
yoshiki
2016/06/28 02:12:42
Done.
| |
65 } | |
61 bool is_cursor_visible() const { return cursor_visibility_; } | 66 bool is_cursor_visible() const { return cursor_visibility_; } |
62 bool did_visibility_change() const { return did_visibility_change_; } | 67 bool did_visibility_change() const { return did_visibility_change_; } |
68 ui::CursorSetType cursor_set() const { return cursor_set_; } | |
69 bool did_cursor_set_change() const { return did_cursor_set_change_; } | |
63 | 70 |
64 // Overridden from aura::client::CursorClientObserver: | 71 // Overridden from aura::client::CursorClientObserver: |
65 void OnCursorVisibilityChanged(bool is_visible) override { | 72 void OnCursorVisibilityChanged(bool is_visible) override { |
66 cursor_visibility_ = is_visible; | 73 cursor_visibility_ = is_visible; |
67 did_visibility_change_ = true; | 74 did_visibility_change_ = true; |
68 } | 75 } |
76 void OnCursorSetChanged(ui::CursorSetType cursor_set) override { | |
77 cursor_set_ = cursor_set; | |
78 did_cursor_set_change_ = true; | |
79 } | |
69 | 80 |
70 private: | 81 private: |
71 bool cursor_visibility_; | 82 bool cursor_visibility_; |
72 bool did_visibility_change_; | 83 bool did_visibility_change_; |
84 ui::CursorSetType cursor_set_; | |
85 bool did_cursor_set_change_; | |
73 | 86 |
74 DISALLOW_COPY_AND_ASSIGN(TestingCursorClientObserver); | 87 DISALLOW_COPY_AND_ASSIGN(TestingCursorClientObserver); |
75 }; | 88 }; |
76 | 89 |
77 TEST_F(CursorManagerTest, ShowHideCursor) { | 90 TEST_F(CursorManagerTest, ShowHideCursor) { |
78 cursor_manager_.SetCursor(ui::kCursorCopy); | 91 cursor_manager_.SetCursor(ui::kCursorCopy); |
79 EXPECT_EQ(ui::kCursorCopy, cursor_manager_.GetCursor().native_type()); | 92 EXPECT_EQ(ui::kCursorCopy, cursor_manager_.GetCursor().native_type()); |
80 | 93 |
81 cursor_manager_.ShowCursor(); | 94 cursor_manager_.ShowCursor(); |
82 EXPECT_TRUE(cursor_manager_.IsCursorVisible()); | 95 EXPECT_TRUE(cursor_manager_.IsCursorVisible()); |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
168 cursor_manager_.UnlockCursor(); | 181 cursor_manager_.UnlockCursor(); |
169 EXPECT_TRUE(cursor_manager_.IsMouseEventsEnabled()); | 182 EXPECT_TRUE(cursor_manager_.IsMouseEventsEnabled()); |
170 | 183 |
171 cursor_manager_.DisableMouseEvents(); | 184 cursor_manager_.DisableMouseEvents(); |
172 cursor_manager_.LockCursor(); | 185 cursor_manager_.LockCursor(); |
173 cursor_manager_.UnlockCursor(); | 186 cursor_manager_.UnlockCursor(); |
174 EXPECT_FALSE(cursor_manager_.IsMouseEventsEnabled()); | 187 EXPECT_FALSE(cursor_manager_.IsMouseEventsEnabled()); |
175 } | 188 } |
176 | 189 |
177 TEST_F(CursorManagerTest, SetCursorSet) { | 190 TEST_F(CursorManagerTest, SetCursorSet) { |
191 TestingCursorClientObserver observer; | |
192 cursor_manager_.AddObserver(&observer); | |
193 | |
178 EXPECT_EQ(ui::CURSOR_SET_NORMAL, cursor_manager_.GetCursorSet()); | 194 EXPECT_EQ(ui::CURSOR_SET_NORMAL, cursor_manager_.GetCursorSet()); |
195 EXPECT_EQ(ui::CURSOR_SET_NORMAL, observer.cursor_set()); | |
179 | 196 |
180 cursor_manager_.SetCursorSet(ui::CURSOR_SET_NORMAL); | 197 cursor_manager_.SetCursorSet(ui::CURSOR_SET_NORMAL); |
181 EXPECT_EQ(ui::CURSOR_SET_NORMAL, cursor_manager_.GetCursorSet()); | 198 EXPECT_EQ(ui::CURSOR_SET_NORMAL, cursor_manager_.GetCursorSet()); |
199 EXPECT_EQ(ui::CURSOR_SET_NORMAL, observer.cursor_set()); | |
182 | 200 |
183 cursor_manager_.SetCursorSet(ui::CURSOR_SET_LARGE); | 201 cursor_manager_.SetCursorSet(ui::CURSOR_SET_LARGE); |
184 EXPECT_EQ(ui::CURSOR_SET_LARGE, cursor_manager_.GetCursorSet()); | 202 EXPECT_EQ(ui::CURSOR_SET_LARGE, cursor_manager_.GetCursorSet()); |
203 EXPECT_EQ(ui::CURSOR_SET_LARGE, observer.cursor_set()); | |
185 | 204 |
186 cursor_manager_.SetCursorSet(ui::CURSOR_SET_NORMAL); | 205 cursor_manager_.SetCursorSet(ui::CURSOR_SET_NORMAL); |
187 EXPECT_EQ(ui::CURSOR_SET_NORMAL, cursor_manager_.GetCursorSet()); | 206 EXPECT_EQ(ui::CURSOR_SET_NORMAL, cursor_manager_.GetCursorSet()); |
207 EXPECT_EQ(ui::CURSOR_SET_NORMAL, observer.cursor_set()); | |
188 } | 208 } |
189 | 209 |
190 TEST_F(CursorManagerTest, IsMouseEventsEnabled) { | 210 TEST_F(CursorManagerTest, IsMouseEventsEnabled) { |
191 cursor_manager_.EnableMouseEvents(); | 211 cursor_manager_.EnableMouseEvents(); |
192 EXPECT_TRUE(cursor_manager_.IsMouseEventsEnabled()); | 212 EXPECT_TRUE(cursor_manager_.IsMouseEventsEnabled()); |
193 cursor_manager_.DisableMouseEvents(); | 213 cursor_manager_.DisableMouseEvents(); |
194 EXPECT_FALSE(cursor_manager_.IsMouseEventsEnabled()); | 214 EXPECT_FALSE(cursor_manager_.IsMouseEventsEnabled()); |
195 } | 215 } |
196 | 216 |
197 // Verifies that the mouse events enable state changes correctly when | 217 // Verifies that the mouse events enable state changes correctly when |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
280 cursor_manager_.AddObserver(&observer_a); | 300 cursor_manager_.AddObserver(&observer_a); |
281 cursor_manager_.AddObserver(&observer_b); | 301 cursor_manager_.AddObserver(&observer_b); |
282 | 302 |
283 // Initial state before any events have been sent. | 303 // Initial state before any events have been sent. |
284 observer_a.reset(); | 304 observer_a.reset(); |
285 observer_b.reset(); | 305 observer_b.reset(); |
286 EXPECT_FALSE(observer_a.did_visibility_change()); | 306 EXPECT_FALSE(observer_a.did_visibility_change()); |
287 EXPECT_FALSE(observer_b.did_visibility_change()); | 307 EXPECT_FALSE(observer_b.did_visibility_change()); |
288 EXPECT_FALSE(observer_a.is_cursor_visible()); | 308 EXPECT_FALSE(observer_a.is_cursor_visible()); |
289 EXPECT_FALSE(observer_b.is_cursor_visible()); | 309 EXPECT_FALSE(observer_b.is_cursor_visible()); |
310 EXPECT_FALSE(observer_a.did_cursor_set_change()); | |
311 EXPECT_FALSE(observer_b.did_cursor_set_change()); | |
312 EXPECT_EQ(ui::CURSOR_SET_NORMAL, observer_a.cursor_set()); | |
313 EXPECT_EQ(ui::CURSOR_SET_NORMAL, observer_b.cursor_set()); | |
290 | 314 |
291 // Hide the cursor using HideCursor(). | 315 // Hide the cursor using HideCursor(). |
292 cursor_manager_.HideCursor(); | 316 cursor_manager_.HideCursor(); |
293 EXPECT_TRUE(observer_a.did_visibility_change()); | 317 EXPECT_TRUE(observer_a.did_visibility_change()); |
294 EXPECT_TRUE(observer_b.did_visibility_change()); | 318 EXPECT_TRUE(observer_b.did_visibility_change()); |
295 EXPECT_FALSE(observer_a.is_cursor_visible()); | 319 EXPECT_FALSE(observer_a.is_cursor_visible()); |
296 EXPECT_FALSE(observer_b.is_cursor_visible()); | 320 EXPECT_FALSE(observer_b.is_cursor_visible()); |
297 | 321 |
322 // Set the cursor set. | |
323 cursor_manager_.SetCursorSet(ui::CURSOR_SET_LARGE); | |
324 EXPECT_TRUE(observer_a.did_cursor_set_change()); | |
325 EXPECT_TRUE(observer_b.did_cursor_set_change()); | |
326 EXPECT_EQ(ui::CURSOR_SET_LARGE, observer_a.cursor_set()); | |
327 EXPECT_EQ(ui::CURSOR_SET_LARGE, observer_b.cursor_set()); | |
328 | |
298 // Show the cursor using ShowCursor(). | 329 // Show the cursor using ShowCursor(). |
299 observer_a.reset(); | 330 observer_a.reset(); |
300 observer_b.reset(); | 331 observer_b.reset(); |
301 cursor_manager_.ShowCursor(); | 332 cursor_manager_.ShowCursor(); |
302 EXPECT_TRUE(observer_a.did_visibility_change()); | 333 EXPECT_TRUE(observer_a.did_visibility_change()); |
303 EXPECT_TRUE(observer_b.did_visibility_change()); | 334 EXPECT_TRUE(observer_b.did_visibility_change()); |
304 EXPECT_TRUE(observer_a.is_cursor_visible()); | 335 EXPECT_TRUE(observer_a.is_cursor_visible()); |
305 EXPECT_TRUE(observer_b.is_cursor_visible()); | 336 EXPECT_TRUE(observer_b.is_cursor_visible()); |
306 | 337 |
307 // Remove observer_b. Its OnCursorVisibilityChanged() should | 338 // Remove observer_b. Its OnCursorVisibilityChanged() should |
308 // not be invoked past this point. | 339 // not be invoked past this point. |
309 cursor_manager_.RemoveObserver(&observer_b); | 340 cursor_manager_.RemoveObserver(&observer_b); |
310 | 341 |
311 // Hide the cursor using HideCursor(). | 342 // Hide the cursor using HideCursor(). |
312 observer_a.reset(); | 343 observer_a.reset(); |
313 observer_b.reset(); | 344 observer_b.reset(); |
314 cursor_manager_.HideCursor(); | 345 cursor_manager_.HideCursor(); |
315 EXPECT_TRUE(observer_a.did_visibility_change()); | 346 EXPECT_TRUE(observer_a.did_visibility_change()); |
316 EXPECT_FALSE(observer_b.did_visibility_change()); | 347 EXPECT_FALSE(observer_b.did_visibility_change()); |
317 EXPECT_FALSE(observer_a.is_cursor_visible()); | 348 EXPECT_FALSE(observer_a.is_cursor_visible()); |
318 | 349 |
350 // Set back the cursor set to normal. | |
351 cursor_manager_.SetCursorSet(ui::CURSOR_SET_NORMAL); | |
352 EXPECT_TRUE(observer_a.did_cursor_set_change()); | |
353 EXPECT_FALSE(observer_b.did_cursor_set_change()); | |
354 EXPECT_EQ(ui::CURSOR_SET_NORMAL, observer_a.cursor_set()); | |
355 EXPECT_EQ(ui::CURSOR_SET_LARGE, observer_b.cursor_set()); | |
356 | |
319 // Show the cursor using ShowCursor(). | 357 // Show the cursor using ShowCursor(). |
320 observer_a.reset(); | 358 observer_a.reset(); |
321 observer_b.reset(); | 359 observer_b.reset(); |
322 cursor_manager_.ShowCursor(); | 360 cursor_manager_.ShowCursor(); |
323 EXPECT_TRUE(observer_a.did_visibility_change()); | 361 EXPECT_TRUE(observer_a.did_visibility_change()); |
324 EXPECT_FALSE(observer_b.did_visibility_change()); | 362 EXPECT_FALSE(observer_b.did_visibility_change()); |
325 EXPECT_TRUE(observer_a.is_cursor_visible()); | 363 EXPECT_TRUE(observer_a.is_cursor_visible()); |
326 } | 364 } |
327 | 365 |
328 // This test validates that the cursor visiblity state is restored when a | 366 // This test validates that the cursor visiblity state is restored when a |
(...skipping 23 matching lines...) Expand all Loading... | |
352 // This block validates that the cursor is visible initially. It then | 390 // This block validates that the cursor is visible initially. It then |
353 // performs normal cursor visibility operations. | 391 // performs normal cursor visibility operations. |
354 { | 392 { |
355 wm::CursorManager cursor_manager3( | 393 wm::CursorManager cursor_manager3( |
356 base::WrapUnique(new TestingCursorManager)); | 394 base::WrapUnique(new TestingCursorManager)); |
357 EXPECT_TRUE(cursor_manager3.IsCursorVisible()); | 395 EXPECT_TRUE(cursor_manager3.IsCursorVisible()); |
358 cursor_manager3.HideCursor(); | 396 cursor_manager3.HideCursor(); |
359 EXPECT_FALSE(cursor_manager3.IsCursorVisible()); | 397 EXPECT_FALSE(cursor_manager3.IsCursorVisible()); |
360 } | 398 } |
361 } | 399 } |
OLD | NEW |