| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "services/ui/service.h" | 5 #include "services/ui/service.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 #include "services/ui/ws/display_binding.h" | 32 #include "services/ui/ws/display_binding.h" |
| 33 #include "services/ui/ws/display_manager.h" | 33 #include "services/ui/ws/display_manager.h" |
| 34 #include "services/ui/ws/gpu_host.h" | 34 #include "services/ui/ws/gpu_host.h" |
| 35 #include "services/ui/ws/user_activity_monitor.h" | 35 #include "services/ui/ws/user_activity_monitor.h" |
| 36 #include "services/ui/ws/user_display_manager.h" | 36 #include "services/ui/ws/user_display_manager.h" |
| 37 #include "services/ui/ws/window_server.h" | 37 #include "services/ui/ws/window_server.h" |
| 38 #include "services/ui/ws/window_server_test_impl.h" | 38 #include "services/ui/ws/window_server_test_impl.h" |
| 39 #include "services/ui/ws/window_tree.h" | 39 #include "services/ui/ws/window_tree.h" |
| 40 #include "services/ui/ws/window_tree_binding.h" | 40 #include "services/ui/ws/window_tree_binding.h" |
| 41 #include "services/ui/ws/window_tree_factory.h" | 41 #include "services/ui/ws/window_tree_factory.h" |
| 42 #include "services/ui/ws/window_tree_host_factory.h" | 42 #include "services/ui/ws/window_tree_host_factory_registrar.h" |
| 43 #include "ui/base/platform_window_defaults.h" | 43 #include "ui/base/platform_window_defaults.h" |
| 44 #include "ui/base/resource/resource_bundle.h" | 44 #include "ui/base/resource/resource_bundle.h" |
| 45 #include "ui/base/ui_base_paths.h" | 45 #include "ui/base/ui_base_paths.h" |
| 46 #include "ui/events/event_switches.h" | 46 #include "ui/events/event_switches.h" |
| 47 #include "ui/events/platform/platform_event_source.h" | 47 #include "ui/events/platform/platform_event_source.h" |
| 48 #include "ui/gfx/geometry/rect.h" | 48 #include "ui/gfx/geometry/rect.h" |
| 49 #include "ui/gl/gl_surface.h" | 49 #include "ui/gl/gl_surface.h" |
| 50 | 50 |
| 51 #if defined(USE_X11) | 51 #if defined(USE_X11) |
| 52 #include <X11/Xlib.h> | 52 #include <X11/Xlib.h> |
| 53 #include "ui/base/x/x11_util.h" // nogncheck | 53 #include "ui/base/x/x11_util.h" // nogncheck |
| 54 #include "ui/platform_window/x11/x11_window.h" | 54 #include "ui/platform_window/x11/x11_window.h" |
| 55 #elif defined(USE_OZONE) | 55 #elif defined(USE_OZONE) |
| 56 #include "ui/events/ozone/layout/keyboard_layout_engine.h" | 56 #include "ui/events/ozone/layout/keyboard_layout_engine.h" |
| 57 #include "ui/events/ozone/layout/keyboard_layout_engine_manager.h" | 57 #include "ui/events/ozone/layout/keyboard_layout_engine_manager.h" |
| 58 #include "ui/ozone/public/ozone_platform.h" | 58 #include "ui/ozone/public/ozone_platform.h" |
| 59 #endif | 59 #endif |
| 60 | 60 |
| 61 using service_manager::Connection; | 61 using service_manager::Connection; |
| 62 using mojo::InterfaceRequest; | 62 using mojo::InterfaceRequest; |
| 63 using ui::mojom::WindowServerTest; | 63 using ui::mojom::WindowServerTest; |
| 64 using ui::mojom::WindowTreeHostFactory; | |
| 65 | 64 |
| 66 namespace ui { | 65 namespace ui { |
| 67 | 66 |
| 68 namespace { | 67 namespace { |
| 69 | 68 |
| 70 const char kResourceFileStrings[] = "mus_app_resources_strings.pak"; | 69 const char kResourceFileStrings[] = "mus_app_resources_strings.pak"; |
| 71 const char kResourceFile100[] = "mus_app_resources_100.pak"; | 70 const char kResourceFile100[] = "mus_app_resources_100.pak"; |
| 72 const char kResourceFile200[] = "mus_app_resources_200.pak"; | 71 const char kResourceFile200[] = "mus_app_resources_200.pak"; |
| 73 | 72 |
| 74 } // namespace | 73 } // namespace |
| 75 | 74 |
| 76 // TODO(sky): this is a pretty typical pattern, make it easier to do. | 75 // TODO(sky): this is a pretty typical pattern, make it easier to do. |
| 77 struct Service::PendingRequest { | 76 struct Service::PendingRequest { |
| 78 service_manager::Identity remote_identity; | 77 service_manager::Identity remote_identity; |
| 79 std::unique_ptr<mojom::WindowTreeFactoryRequest> wtf_request; | 78 std::unique_ptr<mojom::WindowTreeFactoryRequest> wtf_request; |
| 80 std::unique_ptr<mojom::DisplayManagerRequest> dm_request; | 79 std::unique_ptr<mojom::DisplayManagerRequest> dm_request; |
| 81 }; | 80 }; |
| 82 | 81 |
| 83 struct Service::UserState { | 82 struct Service::UserState { |
| 84 std::unique_ptr<clipboard::ClipboardImpl> clipboard; | 83 std::unique_ptr<clipboard::ClipboardImpl> clipboard; |
| 85 std::unique_ptr<ws::AccessibilityManager> accessibility; | 84 std::unique_ptr<ws::AccessibilityManager> accessibility; |
| 86 std::unique_ptr<ws::WindowTreeHostFactory> window_tree_host_factory; | |
| 87 }; | 85 }; |
| 88 | 86 |
| 89 Service::Service() | 87 Service::Service() |
| 90 : test_config_(false), | 88 : test_config_(false), |
| 91 screen_manager_(display::ScreenManager::Create()), | 89 screen_manager_(display::ScreenManager::Create()), |
| 92 ime_registrar_(&ime_server_) {} | 90 ime_registrar_(&ime_server_) {} |
| 93 | 91 |
| 94 Service::~Service() { | 92 Service::~Service() { |
| 95 // Destroy |window_server_| first, since it depends on |event_source_|. | 93 // Destroy |window_server_| first, since it depends on |event_source_|. |
| 96 // WindowServer (or more correctly its Displays) may have state that needs to | 94 // WindowServer (or more correctly its Displays) may have state that needs to |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 200 bool Service::OnConnect(const service_manager::ServiceInfo& remote_info, | 198 bool Service::OnConnect(const service_manager::ServiceInfo& remote_info, |
| 201 service_manager::InterfaceRegistry* registry) { | 199 service_manager::InterfaceRegistry* registry) { |
| 202 registry->AddInterface<mojom::AccessibilityManager>(this); | 200 registry->AddInterface<mojom::AccessibilityManager>(this); |
| 203 registry->AddInterface<mojom::Clipboard>(this); | 201 registry->AddInterface<mojom::Clipboard>(this); |
| 204 registry->AddInterface<mojom::DisplayManager>(this); | 202 registry->AddInterface<mojom::DisplayManager>(this); |
| 205 registry->AddInterface<mojom::Gpu>(this); | 203 registry->AddInterface<mojom::Gpu>(this); |
| 206 registry->AddInterface<mojom::IMERegistrar>(this); | 204 registry->AddInterface<mojom::IMERegistrar>(this); |
| 207 registry->AddInterface<mojom::IMEServer>(this); | 205 registry->AddInterface<mojom::IMEServer>(this); |
| 208 registry->AddInterface<mojom::UserAccessManager>(this); | 206 registry->AddInterface<mojom::UserAccessManager>(this); |
| 209 registry->AddInterface<mojom::UserActivityMonitor>(this); | 207 registry->AddInterface<mojom::UserActivityMonitor>(this); |
| 210 registry->AddInterface<WindowTreeHostFactory>(this); | 208 registry->AddInterface<mojom::WindowTreeHostFactoryRegistrar>(this); |
| 211 registry->AddInterface<mojom::WindowManagerWindowTreeFactory>(this); | 209 registry->AddInterface<mojom::WindowManagerWindowTreeFactory>(this); |
| 212 registry->AddInterface<mojom::WindowTreeFactory>(this); | 210 registry->AddInterface<mojom::WindowTreeFactory>(this); |
| 213 registry | 211 registry |
| 214 ->AddInterface<discardable_memory::mojom::DiscardableSharedMemoryManager>( | 212 ->AddInterface<discardable_memory::mojom::DiscardableSharedMemoryManager>( |
| 215 this); | 213 this); |
| 216 if (test_config_) | 214 if (test_config_) |
| 217 registry->AddInterface<WindowServerTest>(this); | 215 registry->AddInterface<WindowServerTest>(this); |
| 218 | 216 |
| 219 // On non-Linux platforms there will be no DeviceDataManager instance and no | 217 // On non-Linux platforms there will be no DeviceDataManager instance and no |
| 220 // purpose in adding the Mojo interface to connect to. | 218 // purpose in adding the Mojo interface to connect to. |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 339 return; | 337 return; |
| 340 } | 338 } |
| 341 AddUserIfNecessary(remote_identity); | 339 AddUserIfNecessary(remote_identity); |
| 342 mojo::MakeStrongBinding(base::MakeUnique<ws::WindowTreeFactory>( | 340 mojo::MakeStrongBinding(base::MakeUnique<ws::WindowTreeFactory>( |
| 343 window_server_.get(), remote_identity.user_id(), | 341 window_server_.get(), remote_identity.user_id(), |
| 344 remote_identity.name()), | 342 remote_identity.name()), |
| 345 std::move(request)); | 343 std::move(request)); |
| 346 } | 344 } |
| 347 | 345 |
| 348 void Service::Create(const service_manager::Identity& remote_identity, | 346 void Service::Create(const service_manager::Identity& remote_identity, |
| 349 mojom::WindowTreeHostFactoryRequest request) { | 347 mojom::WindowTreeHostFactoryRegistrarRequest request) { |
| 350 UserState* user_state = GetUserState(remote_identity); | 348 AddUserIfNecessary(remote_identity); |
| 351 if (!user_state->window_tree_host_factory) { | 349 mojo::MakeStrongBinding(base::MakeUnique<ws::WindowTreeHostFactoryRegistrar>( |
| 352 user_state->window_tree_host_factory.reset(new ws::WindowTreeHostFactory( | 350 window_server_.get(), remote_identity.user_id()), |
| 353 window_server_.get(), remote_identity.user_id())); | 351 std::move(request)); |
| 354 } | |
| 355 user_state->window_tree_host_factory->AddBinding(std::move(request)); | |
| 356 } | 352 } |
| 357 | 353 |
| 358 void Service::Create( | 354 void Service::Create( |
| 359 const service_manager::Identity& remote_identity, | 355 const service_manager::Identity& remote_identity, |
| 360 discardable_memory::mojom::DiscardableSharedMemoryManagerRequest request) { | 356 discardable_memory::mojom::DiscardableSharedMemoryManagerRequest request) { |
| 361 discardable_shared_memory_manager_->Bind(std::move(request)); | 357 discardable_shared_memory_manager_->Bind(std::move(request)); |
| 362 } | 358 } |
| 363 | 359 |
| 364 void Service::Create(const service_manager::Identity& remote_identity, | 360 void Service::Create(const service_manager::Identity& remote_identity, |
| 365 mojom::WindowServerTestRequest request) { | 361 mojom::WindowServerTestRequest request) { |
| 366 if (!test_config_) | 362 if (!test_config_) |
| 367 return; | 363 return; |
| 368 mojo::MakeStrongBinding( | 364 mojo::MakeStrongBinding( |
| 369 base::MakeUnique<ws::WindowServerTestImpl>(window_server_.get()), | 365 base::MakeUnique<ws::WindowServerTestImpl>(window_server_.get()), |
| 370 std::move(request)); | 366 std::move(request)); |
| 371 } | 367 } |
| 372 | 368 |
| 373 | 369 |
| 374 } // namespace ui | 370 } // namespace ui |
| OLD | NEW |