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