diff --git a/ui/aura/client/cursor_client.h b/ui/aura/client/cursor_client.h index 1862496502f31..38c087b320313 100644 --- a/ui/aura/client/cursor_client.h +++ b/ui/aura/client/cursor_client.h @@ -99,9 +99,6 @@ class AURA_EXPORT CursorClient { // Returns the OS cursor size in DIP. virtual gfx::Size GetSystemCursorSize() const = 0; - // Updates the system cursor visibility for testing purposes. - virtual void UpdateSystemCursorVisibilityForTest(bool visible) {} - protected: virtual ~CursorClient() {} }; 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 3a4a780bbd6b6..b0b6d319f58c2 100644 --- a/ui/views/widget/desktop_aura/desktop_native_cursor_manager.cc +++ b/ui/views/widget/desktop_aura/desktop_native_cursor_manager.cc @@ -100,11 +100,4 @@ void DesktopNativeCursorManager::InitCursorSizeObserver( NOTREACHED(); } -#if BUILDFLAG(IS_WIN) -void DesktopNativeCursorManager::InitSystemCursorVisibilityObserver( - wm::NativeCursorManagerDelegate* delegate) { - NOTREACHED(); -} -#endif - } // namespace views 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 2be4ab0393487..d3e0928439214 100644 --- a/ui/views/widget/desktop_aura/desktop_native_cursor_manager.h +++ b/ui/views/widget/desktop_aura/desktop_native_cursor_manager.h @@ -45,11 +45,6 @@ class VIEWS_EXPORT DesktopNativeCursorManager : public wm::NativeCursorManager { // Initialize the observer that will report system cursor size. virtual void InitCursorSizeObserver( wm::NativeCursorManagerDelegate* delegate); -#if BUILDFLAG(IS_WIN) - // Initialize the observer that will report system cursor visibility state. - virtual void InitSystemCursorVisibilityObserver( - wm::NativeCursorManagerDelegate* delegate); -#endif private: // Overridden from wm::NativeCursorManager: diff --git a/ui/views/widget/desktop_aura/desktop_native_cursor_manager_win.cc b/ui/views/widget/desktop_aura/desktop_native_cursor_manager_win.cc index d7f94b1768852..fc5ebf80a7416 100644 --- a/ui/views/widget/desktop_aura/desktop_native_cursor_manager_win.cc +++ b/ui/views/widget/desktop_aura/desktop_native_cursor_manager_win.cc @@ -4,13 +4,8 @@ #include "ui/views/widget/desktop_aura/desktop_native_cursor_manager_win.h" -#include <windows.h> - -#include <winuser.h> - #include <utility> -#include "base/feature_list.h" #include "base/functional/bind.h" #include "base/functional/callback.h" #include "base/numerics/safe_conversions.h" @@ -23,51 +18,11 @@ namespace { constexpr int kDefaultCursorSize = 32; -BASE_FEATURE(kUseCursorEventHook, - "UseCursorEventHook", - base::FEATURE_ENABLED_BY_DEFAULT); - -HWINEVENTHOOK g_cursor_event_hook = nullptr; -raw_ptr<DesktopNativeCursorManagerWin> g_instance = nullptr; -raw_ptr<wm::NativeCursorManagerDelegate> g_delegate = nullptr; - -bool IsSystemCursorVisible() { - CURSORINFO cursor_info; - cursor_info.cbSize = sizeof(cursor_info); - - if (!GetCursorInfo(&cursor_info)) { - PLOG(ERROR) << "Unable to get cursor info. Error = " << GetLastError(); - return false; - } - - return cursor_info.flags == CURSOR_SHOWING; -} - -void CALLBACK CursorEventProc(HWINEVENTHOOK hook, - DWORD event, - HWND hwnd, - LONG id_object, - LONG id_child, - DWORD id_event_thread, - DWORD time) { - if (hwnd == nullptr && id_object == OBJID_CURSOR && - id_child == CHILDID_SELF) { - g_instance->OnSystemCursorVisibilityChanged(IsSystemCursorVisible()); - } -} - } // namespace DesktopNativeCursorManagerWin::DesktopNativeCursorManagerWin() = default; -DesktopNativeCursorManagerWin::~DesktopNativeCursorManagerWin() { - if (g_cursor_event_hook) { - UnhookWinEvent(g_cursor_event_hook); - g_cursor_event_hook = nullptr; - } - g_instance = nullptr; - g_delegate = nullptr; -} +DesktopNativeCursorManagerWin::~DesktopNativeCursorManagerWin() = default; void DesktopNativeCursorManagerWin::SetSystemCursorSize( wm::NativeCursorManagerDelegate* delegate) { @@ -112,38 +67,4 @@ void DesktopNativeCursorManagerWin::InitCursorSizeObserver( SetSystemCursorSize(delegate); } -void DesktopNativeCursorManagerWin::InitSystemCursorVisibilityObserver( - wm::NativeCursorManagerDelegate* delegate) { - if (!base::FeatureList::IsEnabled(kUseCursorEventHook)) { - return; - } - - DCHECK(!g_instance); - g_instance = this; - - DCHECK(!g_delegate); - g_delegate = delegate; - - // Register for cursor show/hide events. WINEVENT_SKIPOWNPROCESS is set to - // skip the events generated by Chromium itself. - DCHECK(!g_cursor_event_hook); - g_cursor_event_hook = SetWinEventHook( - EVENT_OBJECT_SHOW, EVENT_OBJECT_HIDE, nullptr, CursorEventProc, 0, 0, - WINEVENT_OUTOFCONTEXT | WINEVENT_SKIPOWNPROCESS); - - // Report the initial cursor visibility. - OnSystemCursorVisibilityChanged(IsSystemCursorVisible()); -} - -void DesktopNativeCursorManagerWin::OnSystemCursorVisibilityChanged( - bool visible) { - if (system_cursor_visible_ == visible) { - return; - } - - system_cursor_visible_ = visible; - DCHECK(g_delegate); - g_delegate->CommitSystemCursorVisibility(visible); -} - } // namespace views diff --git a/ui/views/widget/desktop_aura/desktop_native_cursor_manager_win.h b/ui/views/widget/desktop_aura/desktop_native_cursor_manager_win.h index 59614769785e0..f53cf691e9892 100644 --- a/ui/views/widget/desktop_aura/desktop_native_cursor_manager_win.h +++ b/ui/views/widget/desktop_aura/desktop_native_cursor_manager_win.h @@ -32,9 +32,6 @@ class VIEWS_EXPORT DesktopNativeCursorManagerWin void InitCursorSizeObserver( wm::NativeCursorManagerDelegate* delegate) override; - void InitSystemCursorVisibilityObserver( - wm::NativeCursorManagerDelegate* delegate) override; - void OnSystemCursorVisibilityChanged(bool visible); private: // Retrieve and report the cursor size to cursor manager. @@ -43,9 +40,6 @@ class VIEWS_EXPORT DesktopNativeCursorManagerWin base::win::RegKey hkcu_cursor_regkey_; gfx::Size system_cursor_size_; - - // Whether the cursor is visible from GetCursorInfo(). - bool system_cursor_visible_ = true; }; } // namespace views diff --git a/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc b/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc index e57ada66fedad..e55ce65374b62 100644 --- a/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc +++ b/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc @@ -608,10 +608,6 @@ void DesktopNativeWidgetAura::InitNativeWidget(Widget::InitParams params) { if (features::IsSystemCursorSizeSupported()) { native_cursor_manager_->InitCursorSizeObserver(cursor_manager_); } -#if BUILDFLAG(IS_WIN) - native_cursor_manager_->InitSystemCursorVisibilityObserver( - cursor_manager_); -#endif } aura::client::SetCursorClient(host_->window(), cursor_manager_); } diff --git a/ui/views/widget/desktop_aura/desktop_native_widget_aura_unittest.cc b/ui/views/widget/desktop_aura/desktop_native_widget_aura_unittest.cc index 9c6f9ebaa6c8a..258658f1310eb 100644 --- a/ui/views/widget/desktop_aura/desktop_native_widget_aura_unittest.cc +++ b/ui/views/widget/desktop_aura/desktop_native_widget_aura_unittest.cc @@ -163,12 +163,6 @@ TEST_F(DesktopNativeWidgetAuraTest, MAYBE_GlobalCursorState) { aura::client::CursorClient* cursor_client_b = aura::client::GetCursorClient( widget_b.GetNativeView()->GetHost()->window()); - // The cursor might be considered invisible after initialization on some - // machines (e.g. mouse-less) as |CursorClient|s read the cursor visibility - // from OS info. So force the cursor to be visible here. - cursor_client_a->UpdateSystemCursorVisibilityForTest(true); - cursor_client_b->UpdateSystemCursorVisibilityForTest(true); - // Verify the cursor can be locked using one client and unlocked using // another. EXPECT_FALSE(cursor_client_a->IsCursorLocked()); diff --git a/ui/wm/core/cursor_manager.cc b/ui/wm/core/cursor_manager.cc index cc023bb5d9a07..f629dc90da14c 100644 --- a/ui/wm/core/cursor_manager.cc +++ b/ui/wm/core/cursor_manager.cc @@ -270,28 +270,6 @@ gfx::Size CursorManager::GetSystemCursorSize() const { return current_state_->system_cursor_size(); } -void CursorManager::UpdateSystemCursorVisibilityForTest(bool visible) { - CommitSystemCursorVisibility(visible); -} - -void CursorManager::CommitSystemCursorVisibility(bool visible) { - if (visible == current_state_->visible()) { - return; - } - - // Use lock to prevent ShowCursor/HideCursor when system cursor is invisible. - if (!visible) { - LockCursor(); - } else { - UnlockCursor(); - } - - current_state_->SetVisible(visible); - observers_.Notify( - &aura::client::CursorClientObserver::OnCursorVisibilityChanged, - GetCursor().type() == ui::mojom::CursorType::kNone ? false : visible); -} - void CursorManager::CommitSystemCursorSize( const gfx::Size& system_cursor_size) { current_state_->set_system_cursor_size(system_cursor_size); diff --git a/ui/wm/core/cursor_manager.h b/ui/wm/core/cursor_manager.h index 17c45c7a4822e..c49e4f420d2e4 100644 --- a/ui/wm/core/cursor_manager.h +++ b/ui/wm/core/cursor_manager.h @@ -69,7 +69,6 @@ class COMPONENT_EXPORT(UI_WM) CursorManager bool ShouldHideCursorOnKeyEvent(const ui::KeyEvent& event) const override; bool ShouldHideCursorOnTouchEvent(const ui::TouchEvent& event) const override; gfx::Size GetSystemCursorSize() const override; - void UpdateSystemCursorVisibilityForTest(bool visible) override; private: // Overridden from NativeCursorManagerDelegate: @@ -78,7 +77,6 @@ class COMPONENT_EXPORT(UI_WM) CursorManager void CommitCursorSize(ui::CursorSize cursor_size) override; void CommitMouseEventsEnabled(bool enabled) override; void CommitSystemCursorSize(const gfx::Size& cursor_size) override; - void CommitSystemCursorVisibility(bool visible) override; void SetCursorImpl(gfx::NativeCursor cursor, bool forced); diff --git a/ui/wm/core/cursor_manager_unittest.cc b/ui/wm/core/cursor_manager_unittest.cc index f0274b1f8da1a..818c39715257f 100644 --- a/ui/wm/core/cursor_manager_unittest.cc +++ b/ui/wm/core/cursor_manager_unittest.cc @@ -356,15 +356,7 @@ TEST_F(CursorManagerTest, TestCursorClientObserver) { EXPECT_FALSE(observer_a.is_cursor_visible()); } -TEST_F(CursorManagerTest, SystemCursorVisibilityTest) { - // If the system cursor is invisible, ShowCursor() should not make the cursor - // visible. - cursor_manager_.UpdateSystemCursorVisibilityForTest(false); - cursor_manager_.ShowCursor(); - EXPECT_FALSE(cursor_manager_.IsCursorVisible()); -} - -// This test validates that the cursor visibility state is restored when a +// This test validates that the cursor visiblity state is restored when a // CursorManager instance is destroyed and recreated. TEST(CursorManagerCreateDestroyTest, VisibilityTest) { // This block ensures that the cursor is hidden when the CursorManager diff --git a/ui/wm/core/native_cursor_manager_delegate.h b/ui/wm/core/native_cursor_manager_delegate.h index 49511357f5218..f225c7d37036e 100644 --- a/ui/wm/core/native_cursor_manager_delegate.h +++ b/ui/wm/core/native_cursor_manager_delegate.h @@ -34,7 +34,6 @@ class COMPONENT_EXPORT(UI_WM) NativeCursorManagerDelegate { virtual void CommitCursorSize(ui::CursorSize cursor_size) = 0; virtual void CommitMouseEventsEnabled(bool enabled) = 0; virtual void CommitSystemCursorSize(const gfx::Size& cursor_size) = 0; - virtual void CommitSystemCursorVisibility(bool visible) = 0; }; } // namespace wm