1919#include " base/memory/raw_ptr.h"
2020#include " build/build_config.h"
2121#include " cobalt/shell/browser/shell.h"
22- #include " ui/aura/client/cursor_shape_client.h"
2322#include " ui/aura/client/default_capture_client.h"
2423#include " ui/aura/env.h"
2524#include " ui/aura/layout_manager.h"
26- #include " ui/aura/test/test_focus_client.h"
27- #include " ui/aura/test/test_window_parenting_client.h"
2825#include " ui/aura/window.h"
2926#include " ui/aura/window_event_dispatcher.h"
3027#include " ui/base/ime/init/input_method_factory.h"
3128#include " ui/base/ime/input_method.h"
3229#include " ui/ozone/public/ozone_platform.h"
3330#include " ui/platform_window/platform_window_init_properties.h"
34- #include " ui/wm/core/cursor_loader.h"
3531#include " ui/wm/core/default_activation_client.h"
3632
3733#if BUILDFLAG(IS_OZONE)
3834#include " ui/aura/screen_ozone.h"
3935#endif
4036
37+ #if defined(RUN_BROWSER_TESTS)
38+ #include " ui/aura/client/cursor_shape_client.h" // nogncheck
39+ #include " ui/aura/test/test_focus_client.h" // nogncheck
40+ #include " ui/aura/test/test_window_parenting_client.h" // nogncheck
41+ #include " ui/wm/core/cursor_loader.h" // nogncheck
42+ #else
43+ #include " ui/wm/core/base_focus_rules.h"
44+ #include " ui/wm/core/focus_controller.h"
45+ #endif // defined(RUN_BROWSER_TESTS)
46+
4147namespace content {
4248
4349namespace {
@@ -85,6 +91,22 @@ class FillLayout : public aura::LayoutManager {
8591 bool has_bounds_;
8692};
8793
94+ #if !defined(RUN_BROWSER_TESTS)
95+ class FocusRules : public wm ::BaseFocusRules {
96+ public:
97+ FocusRules () = default ;
98+ FocusRules (const FocusRules&) = delete ;
99+ FocusRules& operator =(const FocusRules&) = delete ;
100+ ~FocusRules () override = default ;
101+
102+ private:
103+ // wm::BaseFocusRules:
104+ bool SupportsChildActivation (const aura::Window* window) const override {
105+ return true ;
106+ }
107+ };
108+ #endif // !defined(RUN_BROWSER_TESTS)
109+
88110} // namespace
89111
90112ShellPlatformDataAura::ShellPlatformDataAura (const gfx::Size& initial_size) {
@@ -104,20 +126,30 @@ ShellPlatformDataAura::ShellPlatformDataAura(const gfx::Size& initial_size) {
104126 host_->window ()->SetLayoutManager (
105127 std::make_unique<FillLayout>(host_->window ()));
106128
129+ #if defined(RUN_BROWSER_TESTS)
107130 focus_client_ =
108131 std::make_unique<aura::test::TestFocusClient>(host_->window ());
109132
110133 new wm::DefaultActivationClient (host_->window ());
134+ #else
135+ // Reference void AuraContext::InitializeWindowTreeHost(aura::WindowTreeHost*
136+ // host) from ui/webui/examples/browser/ui/aura/aura_context.cc
137+ focus_client_ = std::make_unique<wm::FocusController>(new FocusRules ());
138+ aura::client::SetFocusClient (host_->window (), focus_client_.get ());
139+ #endif // defined(RUN_BROWSER_TESTS)
140+
111141 capture_client_ =
112142 std::make_unique<aura::client::DefaultCaptureClient>(host_->window ());
143+
144+ #if defined(RUN_BROWSER_TESTS)
113145 window_parenting_client_ =
114146 std::make_unique<aura::test::TestWindowParentingClient>(host_->window ());
115-
116147 // TODO(https://crbug.com/1336055): this is needed for
117148 // mouse_cursor_overlay_controller_browsertest.cc on cast_shell_linux as
118149 // currently, when is_castos = true, the views toolkit isn't used.
119150 cursor_shape_client_ = std::make_unique<wm::CursorLoader>();
120151 aura::client::SetCursorShapeClient (cursor_shape_client_.get ());
152+ #endif // defined(RUN_BROWSER_TESTS)
121153}
122154
123155ShellPlatformDataAura::~ShellPlatformDataAura () {
0 commit comments