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