1868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// found in the LICENSE file.
4868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
5868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "ui/aura/test/test_cursor_client.h"
6868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "ui/aura/client/cursor_client_observer.h"
8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
9868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)namespace aura {
10868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)namespace test {
11868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochTestCursorClient::TestCursorClient(aura::Window* root_window)
13868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    : visible_(true),
145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      should_hide_cursor_on_key_event_(true),
15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      mouse_events_enabled_(true),
163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      cursor_lock_count_(0),
175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      calls_to_set_cursor_(0),
18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      root_window_(root_window) {
19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  client::SetCursorClient(root_window, this);
20868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
21868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
22868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)TestCursorClient::~TestCursorClient() {
23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  client::SetCursorClient(root_window_, NULL);
24868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
25868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
26868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)void TestCursorClient::SetCursor(gfx::NativeCursor cursor) {
275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  calls_to_set_cursor_++;
285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)gfx::NativeCursor TestCursorClient::GetCursor() const {
315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return ui::kCursorNull;
32868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
33868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
34868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)void TestCursorClient::ShowCursor() {
35868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  visible_ = true;
36868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  FOR_EACH_OBSERVER(aura::client::CursorClientObserver, observers_,
37868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)                    OnCursorVisibilityChanged(true));
38868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
39868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
40868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)void TestCursorClient::HideCursor() {
41868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  visible_ = false;
42868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  FOR_EACH_OBSERVER(aura::client::CursorClientObserver, observers_,
43868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)                    OnCursorVisibilityChanged(false));
44868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
45868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
46424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)void TestCursorClient::SetCursorSet(ui::CursorSetType cursor_set) {
47424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)}
48424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ui::CursorSetType TestCursorClient::GetCursorSet() const {
505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return ui::CURSOR_SET_NORMAL;
515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
53868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)bool TestCursorClient::IsCursorVisible() const {
54868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  return visible_;
55868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
56868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
57868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)void TestCursorClient::EnableMouseEvents() {
58868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  mouse_events_enabled_ = true;
59868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
60868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
61868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)void TestCursorClient::DisableMouseEvents() {
62868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  mouse_events_enabled_ = false;
63868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
64868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
65868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)bool TestCursorClient::IsMouseEventsEnabled() const {
66868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  return mouse_events_enabled_;
67868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
68868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
69868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)void TestCursorClient::SetDisplay(const gfx::Display& display) {
70868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
71868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
72868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)void TestCursorClient::LockCursor() {
733551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  cursor_lock_count_++;
74868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
75868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
76868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)void TestCursorClient::UnlockCursor() {
773551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  cursor_lock_count_--;
783551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  if (cursor_lock_count_ < 0)
793551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    cursor_lock_count_ = 0;
803551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)}
813551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
823551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)bool TestCursorClient::IsCursorLocked() const {
833551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  return cursor_lock_count_ > 0;
84868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
85868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
86868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)void TestCursorClient::AddObserver(
87868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    aura::client::CursorClientObserver* observer) {
88868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  observers_.AddObserver(observer);
89868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
90868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
91868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)void TestCursorClient::RemoveObserver(
92868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    aura::client::CursorClientObserver* observer) {
93868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  observers_.RemoveObserver(observer);
94868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
95868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
96c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochbool TestCursorClient::ShouldHideCursorOnKeyEvent(
97c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    const ui::KeyEvent& event) const {
985c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  return should_hide_cursor_on_key_event_;
99c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch}
100c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
101868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}  // namespace test
102868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}  // namespace aura
103