summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgene@chromium.org <gene@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-10 19:32:22 +0000
committergene@chromium.org <gene@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-10 19:32:22 +0000
commit20db74f3cdfd2e52880ab4dad0f2104a4a2e7cc4 (patch)
tree237f2dcd32cd6e9c74cd326a147139702470f6c1
parentf5bf5ba29880002b7240bed7bba73f966295bf72 (diff)
downloadchromium_src-20db74f3cdfd2e52880ab4dad0f2104a4a2e7cc4.zip
chromium_src-20db74f3cdfd2e52880ab4dad0f2104a4a2e7cc4.tar.gz
chromium_src-20db74f3cdfd2e52880ab4dad0f2104a4a2e7cc4.tar.bz2
Revert 263043 "Remove obsolete scale related APIs for cursor"
> Remove obsolete scale related APIs for cursor > This has been replaced with SetDisplay a while ago. > > BUG=None > > Review URL: https://codereview.chromium.org/233053003 TBR=oshima@chromium.org Review URL: https://codereview.chromium.org/233693002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@263048 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--ash/test/cursor_manager_test_api.cc4
-rw-r--r--ash/test/cursor_manager_test_api.h1
-rw-r--r--ash/wm/ash_native_cursor_manager.cc10
-rw-r--r--ash/wm/ash_native_cursor_manager.h3
-rw-r--r--ash/wm/ash_native_cursor_manager_unittest.cc23
-rw-r--r--ui/aura/client/cursor_client.h6
-rw-r--r--ui/aura/test/test_cursor_client.cc7
-rw-r--r--ui/aura/test/test_cursor_client.h2
-rw-r--r--ui/views/widget/desktop_aura/desktop_native_cursor_manager.cc6
-rw-r--r--ui/views/widget/desktop_aura/desktop_native_cursor_manager.h3
-rw-r--r--ui/wm/core/cursor_manager.cc21
-rw-r--r--ui/wm/core/cursor_manager.h3
-rw-r--r--ui/wm/core/native_cursor_manager.h7
-rw-r--r--ui/wm/core/native_cursor_manager_delegate.h1
14 files changed, 96 insertions, 1 deletions
diff --git a/ash/test/cursor_manager_test_api.cc b/ash/test/cursor_manager_test_api.cc
index 22aa261..0b7711b9 100644
--- a/ash/test/cursor_manager_test_api.cc
+++ b/ash/test/cursor_manager_test_api.cc
@@ -23,6 +23,10 @@ CursorManagerTestApi::~CursorManagerTestApi() {
}
// TODO(tdanderson): CursorManagerTestApi may no longer be needed.
+float CursorManagerTestApi::GetCurrentScale() const {
+ return cursor_manager_->GetScale();
+}
+
ui::CursorSetType CursorManagerTestApi::GetCurrentCursorSet() const {
return cursor_manager_->GetCursorSet();
}
diff --git a/ash/test/cursor_manager_test_api.h b/ash/test/cursor_manager_test_api.h
index 1b9c6b8..d368216 100644
--- a/ash/test/cursor_manager_test_api.h
+++ b/ash/test/cursor_manager_test_api.h
@@ -26,6 +26,7 @@ class CursorManagerTestApi {
explicit CursorManagerTestApi(::wm::CursorManager* cursor_manager);
~CursorManagerTestApi();
+ float GetCurrentScale() const;
ui::CursorSetType GetCurrentCursorSet() const;
gfx::NativeCursor GetCurrentCursor() const;
gfx::Display GetDisplay() const;
diff --git a/ash/wm/ash_native_cursor_manager.cc b/ash/wm/ash_native_cursor_manager.cc
index 98078ac..d9f4b6a 100644
--- a/ash/wm/ash_native_cursor_manager.cc
+++ b/ash/wm/ash_native_cursor_manager.cc
@@ -120,6 +120,16 @@ void AshNativeCursorManager::SetCursorSet(
#endif
}
+void AshNativeCursorManager::SetScale(
+ float scale,
+ ::wm::NativeCursorManagerDelegate* delegate) {
+ image_cursors_->SetScale(scale);
+ delegate->CommitScale(scale);
+
+ // Sets the cursor to reflect the scale change immediately.
+ SetCursor(delegate->GetCursor(), delegate);
+}
+
void AshNativeCursorManager::SetVisibility(
bool visible,
::wm::NativeCursorManagerDelegate* delegate) {
diff --git a/ash/wm/ash_native_cursor_manager.h b/ash/wm/ash_native_cursor_manager.h
index 80ecc8e..7124bdc 100644
--- a/ash/wm/ash_native_cursor_manager.h
+++ b/ash/wm/ash_native_cursor_manager.h
@@ -52,6 +52,9 @@ class ASH_EXPORT AshNativeCursorManager
virtual void SetVisibility(
bool visible,
::wm::NativeCursorManagerDelegate* delegate) OVERRIDE;
+ virtual void SetScale(
+ float scale,
+ ::wm::NativeCursorManagerDelegate* delegate) OVERRIDE;
virtual void SetCursorSet(
ui::CursorSetType cursor_set,
::wm::NativeCursorManagerDelegate* delegate) OVERRIDE;
diff --git a/ash/wm/ash_native_cursor_manager_unittest.cc b/ash/wm/ash_native_cursor_manager_unittest.cc
index 812601f..141e8a8 100644
--- a/ash/wm/ash_native_cursor_manager_unittest.cc
+++ b/ash/wm/ash_native_cursor_manager_unittest.cc
@@ -62,7 +62,9 @@ TEST_F(AshNativeCursorManagerTest, LockCursor) {
EXPECT_EQ(ui::kCursorCopy, test_api.GetCurrentCursor().native_type());
display.set_device_scale_factor(2.0f);
display.set_rotation(gfx::Display::ROTATE_90);
+ cursor_manager->SetScale(2.5f);
cursor_manager->SetDisplay(display);
+ EXPECT_EQ(2.5f, test_api.GetCurrentScale());
EXPECT_EQ(2.0f, test_api.GetDisplay().device_scale_factor());
EXPECT_EQ(ui::CURSOR_SET_NORMAL, test_api.GetCurrentCursorSet());
EXPECT_EQ(gfx::Display::ROTATE_90, test_api.GetDisplay().rotation());
@@ -80,6 +82,13 @@ TEST_F(AshNativeCursorManagerTest, LockCursor) {
cursor_manager->SetCursorSet(ui::CURSOR_SET_NORMAL);
EXPECT_EQ(ui::CURSOR_SET_NORMAL, test_api.GetCurrentCursorSet());
+ // Cusror scale does change even while cursor is locked.
+ EXPECT_EQ(2.5f, test_api.GetCurrentScale());
+ cursor_manager->SetScale(1.f);
+ EXPECT_EQ(1.f, test_api.GetCurrentScale());
+ cursor_manager->SetScale(1.5f);
+ EXPECT_EQ(1.5f, test_api.GetCurrentScale());
+
// Cursor type does not change while cursor is locked.
cursor_manager->SetCursor(ui::kCursorPointer);
EXPECT_EQ(ui::kCursorCopy, test_api.GetCurrentCursor().native_type());
@@ -95,6 +104,7 @@ TEST_F(AshNativeCursorManagerTest, LockCursor) {
EXPECT_FALSE(cursor_manager->IsCursorLocked());
// Cursor type changes to the one specified while cursor is locked.
+ EXPECT_EQ(1.5f, test_api.GetCurrentScale());
EXPECT_EQ(ui::kCursorPointer, test_api.GetCurrentCursor().native_type());
EXPECT_EQ(1.0f, test_api.GetDisplay().device_scale_factor());
EXPECT_TRUE(test_api.GetCurrentCursor().platform());
@@ -130,6 +140,19 @@ TEST_F(AshNativeCursorManagerTest, SetCursorSet) {
EXPECT_EQ(ui::CURSOR_SET_NORMAL, test_api.GetCurrentCursorSet());
}
+TEST_F(AshNativeCursorManagerTest, SetScale) {
+ ::wm::CursorManager* cursor_manager = Shell::GetInstance()->cursor_manager();
+ CursorManagerTestApi test_api(cursor_manager);
+
+ EXPECT_EQ(1.f, test_api.GetCurrentScale());
+
+ cursor_manager->SetScale(2.5f);
+ EXPECT_EQ(2.5f, test_api.GetCurrentScale());
+
+ cursor_manager->SetScale(1.f);
+ EXPECT_EQ(1.f, test_api.GetCurrentScale());
+}
+
TEST_F(AshNativeCursorManagerTest, SetDeviceScaleFactorAndRotation) {
::wm::CursorManager* cursor_manager = Shell::GetInstance()->cursor_manager();
CursorManagerTestApi test_api(cursor_manager);
diff --git a/ui/aura/client/cursor_client.h b/ui/aura/client/cursor_client.h
index fc48e03..8f2872e 100644
--- a/ui/aura/client/cursor_client.h
+++ b/ui/aura/client/cursor_client.h
@@ -39,6 +39,12 @@ class AURA_EXPORT CursorClient {
// invisible.
virtual void HideCursor() = 0;
+ // Sets the scale of the mouse cursor icon.
+ virtual void SetScale(float scale) = 0;
+
+ // Gets the current scale of the mouse cursor icon.
+ virtual float GetScale() const = 0;
+
// Sets the type of the mouse cursor icon.
virtual void SetCursorSet(ui::CursorSetType cursor_set) = 0;
diff --git a/ui/aura/test/test_cursor_client.cc b/ui/aura/test/test_cursor_client.cc
index 21f77cc..5662555 100644
--- a/ui/aura/test/test_cursor_client.cc
+++ b/ui/aura/test/test_cursor_client.cc
@@ -49,6 +49,13 @@ ui::CursorSetType TestCursorClient::GetCursorSet() const {
return ui::CURSOR_SET_NORMAL;
}
+void TestCursorClient::SetScale(float scale) {
+}
+
+float TestCursorClient::GetScale() const {
+ return 1.f;
+}
+
bool TestCursorClient::IsCursorVisible() const {
return visible_;
}
diff --git a/ui/aura/test/test_cursor_client.h b/ui/aura/test/test_cursor_client.h
index 089827d..10452f1 100644
--- a/ui/aura/test/test_cursor_client.h
+++ b/ui/aura/test/test_cursor_client.h
@@ -33,6 +33,8 @@ class TestCursorClient : public aura::client::CursorClient {
virtual void HideCursor() OVERRIDE;
virtual void SetCursorSet(ui::CursorSetType cursor_set) OVERRIDE;
virtual ui::CursorSetType GetCursorSet() const OVERRIDE;
+ virtual void SetScale(float scale) OVERRIDE;
+ virtual float GetScale() const OVERRIDE;
virtual bool IsCursorVisible() const OVERRIDE;
virtual void EnableMouseEvents() OVERRIDE;
virtual void DisableMouseEvents() OVERRIDE;
diff --git a/ui/views/widget/desktop_aura/desktop_native_cursor_manager.cc b/ui/views/widget/desktop_aura/desktop_native_cursor_manager.cc
index ec898fb..8225e00 100644
--- a/ui/views/widget/desktop_aura/desktop_native_cursor_manager.cc
+++ b/ui/views/widget/desktop_aura/desktop_native_cursor_manager.cc
@@ -85,6 +85,12 @@ void DesktopNativeCursorManager::SetCursorSet(
NOTIMPLEMENTED();
}
+void DesktopNativeCursorManager::SetScale(
+ float scale,
+ wm::NativeCursorManagerDelegate* delegate) {
+ NOTIMPLEMENTED();
+}
+
void DesktopNativeCursorManager::SetMouseEventsEnabled(
bool enabled,
wm::NativeCursorManagerDelegate* delegate) {
diff --git a/ui/views/widget/desktop_aura/desktop_native_cursor_manager.h b/ui/views/widget/desktop_aura/desktop_native_cursor_manager.h
index ee15634..d917af4 100644
--- a/ui/views/widget/desktop_aura/desktop_native_cursor_manager.h
+++ b/ui/views/widget/desktop_aura/desktop_native_cursor_manager.h
@@ -60,6 +60,9 @@ class VIEWS_EXPORT DesktopNativeCursorManager
virtual void SetCursorSet(
ui::CursorSetType cursor_set,
wm::NativeCursorManagerDelegate* delegate) OVERRIDE;
+ virtual void SetScale(
+ float scale,
+ wm::NativeCursorManagerDelegate* delegate) OVERRIDE;
virtual void SetMouseEventsEnabled(
bool enabled,
wm::NativeCursorManagerDelegate* delegate) OVERRIDE;
diff --git a/ui/wm/core/cursor_manager.cc b/ui/wm/core/cursor_manager.cc
index e9f9885..736ef6f 100644
--- a/ui/wm/core/cursor_manager.cc
+++ b/ui/wm/core/cursor_manager.cc
@@ -21,6 +21,7 @@ class CursorState {
CursorState()
: cursor_(ui::kCursorNone),
visible_(true),
+ scale_(1.f),
cursor_set_(ui::CURSOR_SET_NORMAL),
mouse_events_enabled_(true),
visible_on_mouse_events_enabled_(true) {
@@ -36,6 +37,11 @@ class CursorState {
// Ignores the call when mouse events disabled.
}
+ float scale() const { return scale_; }
+ void set_scale(float scale) {
+ scale_ = scale;
+ }
+
ui::CursorSetType cursor_set() const { return cursor_set_; }
void set_cursor_set(ui::CursorSetType cursor_set) {
cursor_set_ = cursor_set;
@@ -59,6 +65,7 @@ class CursorState {
private:
gfx::NativeCursor cursor_;
bool visible_;
+ float scale_;
ui::CursorSetType cursor_set_;
bool mouse_events_enabled_;
@@ -116,6 +123,16 @@ bool CursorManager::IsCursorVisible() const {
return current_state_->visible();
}
+void CursorManager::SetScale(float scale) {
+ state_on_unlock_->set_scale(scale);
+ if (GetScale() != state_on_unlock_->scale())
+ delegate_->SetScale(state_on_unlock_->scale(), this);
+}
+
+float CursorManager::GetScale() const {
+ return current_state_->scale();
+}
+
void CursorManager::SetCursorSet(ui::CursorSetType cursor_set) {
state_on_unlock_->set_cursor_set(cursor_set);
if (GetCursorSet() != state_on_unlock_->cursor_set())
@@ -206,6 +223,10 @@ void CursorManager::CommitVisibility(bool visible) {
current_state_->SetVisible(visible);
}
+void CursorManager::CommitScale(float scale) {
+ current_state_->set_scale(scale);
+}
+
void CursorManager::CommitCursorSet(ui::CursorSetType cursor_set) {
current_state_->set_cursor_set(cursor_set);
}
diff --git a/ui/wm/core/cursor_manager.h b/ui/wm/core/cursor_manager.h
index 0fe25f7..a6b226e 100644
--- a/ui/wm/core/cursor_manager.h
+++ b/ui/wm/core/cursor_manager.h
@@ -48,6 +48,8 @@ class WM_CORE_EXPORT CursorManager : public aura::client::CursorClient,
virtual void ShowCursor() OVERRIDE;
virtual void HideCursor() OVERRIDE;
virtual bool IsCursorVisible() const OVERRIDE;
+ virtual void SetScale(float scale) OVERRIDE;
+ virtual float GetScale() const OVERRIDE;
virtual void SetCursorSet(ui::CursorSetType cursor_set) OVERRIDE;
virtual ui::CursorSetType GetCursorSet() const OVERRIDE;
virtual void EnableMouseEvents() OVERRIDE;
@@ -68,6 +70,7 @@ class WM_CORE_EXPORT CursorManager : public aura::client::CursorClient,
// Overridden from NativeCursorManagerDelegate:
virtual void CommitCursor(gfx::NativeCursor cursor) OVERRIDE;
virtual void CommitVisibility(bool visible) OVERRIDE;
+ virtual void CommitScale(float scale) OVERRIDE;
virtual void CommitCursorSet(ui::CursorSetType cursor_set) OVERRIDE;
virtual void CommitMouseEventsEnabled(bool enabled) OVERRIDE;
diff --git a/ui/wm/core/native_cursor_manager.h b/ui/wm/core/native_cursor_manager.h
index 6697728..68c9d46 100644
--- a/ui/wm/core/native_cursor_manager.h
+++ b/ui/wm/core/native_cursor_manager.h
@@ -42,7 +42,12 @@ class WM_CORE_EXPORT NativeCursorManager {
bool visible,
wm::NativeCursorManagerDelegate* delegate) = 0;
- // A request to set the cursor set.
+ // A request to set the scale of the cursor icon.
+ virtual void SetScale(
+ float scale,
+ wm::NativeCursorManagerDelegate* delegate) = 0;
+
+ // A request to set the scale of the cursor icon.
virtual void SetCursorSet(
ui::CursorSetType cursor_set,
wm::NativeCursorManagerDelegate* delegate) = 0;
diff --git a/ui/wm/core/native_cursor_manager_delegate.h b/ui/wm/core/native_cursor_manager_delegate.h
index aad9825..0571d57 100644
--- a/ui/wm/core/native_cursor_manager_delegate.h
+++ b/ui/wm/core/native_cursor_manager_delegate.h
@@ -24,6 +24,7 @@ class WM_CORE_EXPORT NativeCursorManagerDelegate {
virtual void CommitCursor(gfx::NativeCursor cursor) = 0;
virtual void CommitVisibility(bool visible) = 0;
+ virtual void CommitScale(float scale) = 0;
virtual void CommitCursorSet(ui::CursorSetType cursor_set) = 0;
virtual void CommitMouseEventsEnabled(bool enabled) = 0;
};