diff --git a/chrome/browser/ui/browser_finder.cc b/chrome/browser/ui/browser_finder.cc
index 57bed02..6e9c4e2e 100644
--- a/chrome/browser/ui/browser_finder.cc
+++ b/chrome/browser/ui/browser_finder.cc
@@ -40,7 +40,7 @@
 const uint32_t kMatchCanSupportWindowFeature = 1 << 1;
 const uint32_t kMatchNormal = 1 << 2;
 const uint32_t kMatchDisplayId = 1 << 3;
-#if defined(OS_WIN) || BUILDFLAG(IS_CHROMEOS_ASH)
+#if defined(OS_WIN) || defined(OS_CHROMEOS)
 const uint32_t kMatchCurrentWorkspace = 1 << 4;
 #endif
 
@@ -101,7 +101,7 @@
   if ((match_types & kMatchNormal) && !browser->is_type_normal())
     return false;
 
-#if defined(OS_WIN) || BUILDFLAG(IS_CHROMEOS_ASH)
+#if defined(OS_WIN) || defined(OS_CHROMEOS)
   // Note that |browser->window()| might be nullptr in tests.
   if ((match_types & kMatchCurrentWorkspace) &&
       (!browser->window() || !browser->window()->IsOnCurrentWorkspace())) {
@@ -151,7 +151,7 @@
     match_types |= kMatchOriginalProfile;
   if (display_id != display::kInvalidDisplayId)
     match_types |= kMatchDisplayId;
-#if defined(OS_WIN) || BUILDFLAG(IS_CHROMEOS_ASH)
+#if defined(OS_WIN) || defined(OS_CHROMEOS)
   if (match_current_workspace)
     match_types |= kMatchCurrentWorkspace;
 #endif
diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc
index ee55401e..f600e398 100644
--- a/chrome/browser/ui/views/frame/browser_view.cc
+++ b/chrome/browser/ui/views/frame/browser_view.cc
@@ -224,6 +224,7 @@
 #include "chrome/browser/ui/views/frame/top_controls_slide_controller_chromeos.h"
 #include "chromeos/ui/base/window_pin_type.h"
 #include "chromeos/ui/base/window_properties.h"
+#include "chromeos/ui/wm/desks/desks_helper.h"
 #endif
 
 #if BUILDFLAG(IS_CHROMEOS_ASH)
@@ -231,7 +232,6 @@
 #include "ash/public/cpp/metrics_util.h"
 #include "chrome/browser/ui/ash/window_properties.h"
 #include "chrome/grit/chrome_unscaled_resources.h"
-#include "chromeos/ui/wm/desks/desks_helper.h"
 #include "ui/compositor/throughput_tracker.h"
 #else
 #include "chrome/browser/ui/signin_view_controller.h"
@@ -1070,7 +1070,7 @@
   if (!native_win)
     return true;
 
-#if BUILDFLAG(IS_CHROMEOS_ASH)
+#if defined(OS_CHROMEOS)
   return chromeos::DesksHelper::Get(native_win)
       ->BelongsToActiveDesk(native_win);
 #elif defined(OS_WIN)
@@ -1102,7 +1102,7 @@
          workspace_guid == GUID_NULL;
 #else
   return true;
-#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
+#endif  // defined(OS_CHROMEOS)
 }
 
 void BrowserView::SetTopControlsShownRatio(content::WebContents* web_contents,
diff --git a/chromeos/ui/wm/desks/lacros/desks_helper.cc b/chromeos/ui/wm/desks/lacros/desks_helper.cc
index bac8b25..6eec42c 100644
--- a/chromeos/ui/wm/desks/lacros/desks_helper.cc
+++ b/chromeos/ui/wm/desks/lacros/desks_helper.cc
@@ -10,6 +10,7 @@
 #include "ui/platform_window/extensions/desk_extension.h"
 #include "ui/platform_window/platform_window.h"
 #include "ui/views/widget/desktop_aura/desktop_window_tree_host_linux.h"
+#include "ui/views/widget/widget.h"
 
 namespace {
 
@@ -23,15 +24,27 @@
 
 class DesksHelperLacros : public chromeos::DesksHelper {
  public:
-  DesksHelperLacros(aura::Window* window) : window_(window) {}
+  explicit DesksHelperLacros(aura::Window* window) : window_(window) {}
   DesksHelperLacros(const DesksHelperLacros&) = delete;
   DesksHelperLacros& operator=(const DesksHelperLacros&) = delete;
   ~DesksHelperLacros() override = default;
 
   // chromeos::DesksHelper:
   bool BelongsToActiveDesk(aura::Window* window) override {
-    NOTIMPLEMENTED();
-    return false;
+    views::Widget* widget = views::Widget::GetWidgetForNativeWindow(window);
+    DCHECK(widget);
+    // If the window is on all workspaces or unassigned, we should consider that
+    // the window belongs to active desk.
+    if (widget->IsVisibleOnAllWorkspaces())
+      return true;
+    const std::string& workspace = widget->GetWorkspace();
+    if (workspace.empty())
+      return true;
+
+    int desk_index;
+    if (!base::StringToInt(workspace, &desk_index))
+      return false;
+    return GetActiveDeskIndex() == desk_index;
   }
   int GetActiveDeskIndex() const override {
     return GetDeskExtension(window_)->GetActiveDeskIndex();
