1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef UI_AURA_TEST_TEST_CURSOR_CLIENT_H_
6#define UI_AURA_TEST_TEST_CURSOR_CLIENT_H_
7
8#include "base/basictypes.h"
9#include "base/compiler_specific.h"
10#include "base/observer_list.h"
11#include "ui/aura/client/cursor_client.h"
12
13namespace ui {
14class KeyEvent;
15}
16
17namespace aura {
18namespace test {
19
20class TestCursorClient : public aura::client::CursorClient {
21 public:
22  explicit TestCursorClient(aura::Window* root_window);
23  virtual ~TestCursorClient();
24
25  // Used to track the number of times SetCursor() was called.
26  int calls_to_set_cursor() const { return calls_to_set_cursor_; }
27  void reset_calls_to_set_cursor() { calls_to_set_cursor_ = 0; }
28
29  // Set whether or not to hide cursor on key events.
30  void set_should_hide_cursor_on_key_event(bool hide) {
31    should_hide_cursor_on_key_event_ = hide;
32  }
33
34  // Overridden from aura::client::CursorClient:
35  virtual void SetCursor(gfx::NativeCursor cursor) OVERRIDE;
36  virtual gfx::NativeCursor GetCursor() const OVERRIDE;
37  virtual void ShowCursor() OVERRIDE;
38  virtual void HideCursor() OVERRIDE;
39  virtual void SetCursorSet(ui::CursorSetType cursor_set) OVERRIDE;
40  virtual ui::CursorSetType GetCursorSet() const OVERRIDE;
41  virtual bool IsCursorVisible() const OVERRIDE;
42  virtual void EnableMouseEvents() OVERRIDE;
43  virtual void DisableMouseEvents() OVERRIDE;
44  virtual bool IsMouseEventsEnabled() const OVERRIDE;
45  virtual void SetDisplay(const gfx::Display& display) OVERRIDE;
46  virtual void LockCursor() OVERRIDE;
47  virtual void UnlockCursor() OVERRIDE;
48  virtual bool IsCursorLocked() const OVERRIDE;
49  virtual void AddObserver(
50      aura::client::CursorClientObserver* observer) OVERRIDE;
51  virtual void RemoveObserver(
52      aura::client::CursorClientObserver* observer) OVERRIDE;
53  virtual bool ShouldHideCursorOnKeyEvent(
54      const ui::KeyEvent& event) const OVERRIDE;
55
56 private:
57  bool visible_;
58  bool should_hide_cursor_on_key_event_;
59  bool mouse_events_enabled_;
60  int cursor_lock_count_;
61  int calls_to_set_cursor_;
62  ObserverList<aura::client::CursorClientObserver> observers_;
63  aura::Window* root_window_;
64
65  DISALLOW_COPY_AND_ASSIGN(TestCursorClient);
66};
67
68}  // namespace test
69}  // namespace aura
70
71#endif // UI_AURA_TEST_TEST_CURSOR_CLIENT_H_
72