Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1385)

Side by Side Diff: services/ui/service.cc

Issue 2712203002: c++ / mojo changes for 'external window mode'
Patch Set: . Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698