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

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

Issue 2420253002: Rename shell namespace to service_manager (Closed)
Patch Set: . Created 4 years, 2 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
« no previous file with comments | « services/ui/service.h ('k') | services/ui/test_wm/test_wm.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 46
47 #if defined(USE_X11) 47 #if defined(USE_X11)
48 #include <X11/Xlib.h> 48 #include <X11/Xlib.h>
49 #include "ui/platform_window/x11/x11_window.h" 49 #include "ui/platform_window/x11/x11_window.h"
50 #elif defined(USE_OZONE) 50 #elif defined(USE_OZONE)
51 #include "ui/events/ozone/layout/keyboard_layout_engine.h" 51 #include "ui/events/ozone/layout/keyboard_layout_engine.h"
52 #include "ui/events/ozone/layout/keyboard_layout_engine_manager.h" 52 #include "ui/events/ozone/layout/keyboard_layout_engine_manager.h"
53 #include "ui/ozone/public/ozone_platform.h" 53 #include "ui/ozone/public/ozone_platform.h"
54 #endif 54 #endif
55 55
56 using shell::Connection; 56 using service_manager::Connection;
57 using mojo::InterfaceRequest; 57 using mojo::InterfaceRequest;
58 using ui::mojom::WindowServerTest; 58 using ui::mojom::WindowServerTest;
59 using ui::mojom::WindowTreeHostFactory; 59 using ui::mojom::WindowTreeHostFactory;
60 60
61 namespace ui { 61 namespace ui {
62 62
63 namespace { 63 namespace {
64 64
65 const char kResourceFileStrings[] = "mus_app_resources_strings.pak"; 65 const char kResourceFileStrings[] = "mus_app_resources_strings.pak";
66 const char kResourceFile100[] = "mus_app_resources_100.pak"; 66 const char kResourceFile100[] = "mus_app_resources_100.pak";
67 const char kResourceFile200[] = "mus_app_resources_200.pak"; 67 const char kResourceFile200[] = "mus_app_resources_200.pak";
68 68
69 } // namespace 69 } // namespace
70 70
71 // TODO(sky): this is a pretty typical pattern, make it easier to do. 71 // TODO(sky): this is a pretty typical pattern, make it easier to do.
72 struct Service::PendingRequest { 72 struct Service::PendingRequest {
73 shell::Identity remote_identity; 73 service_manager::Identity remote_identity;
74 std::unique_ptr<mojom::WindowTreeFactoryRequest> wtf_request; 74 std::unique_ptr<mojom::WindowTreeFactoryRequest> wtf_request;
75 std::unique_ptr<mojom::DisplayManagerRequest> dm_request; 75 std::unique_ptr<mojom::DisplayManagerRequest> dm_request;
76 }; 76 };
77 77
78 struct Service::UserState { 78 struct Service::UserState {
79 std::unique_ptr<clipboard::ClipboardImpl> clipboard; 79 std::unique_ptr<clipboard::ClipboardImpl> clipboard;
80 std::unique_ptr<ws::AccessibilityManager> accessibility; 80 std::unique_ptr<ws::AccessibilityManager> accessibility;
81 std::unique_ptr<ws::WindowTreeHostFactory> window_tree_host_factory; 81 std::unique_ptr<ws::WindowTreeHostFactory> window_tree_host_factory;
82 }; 82 };
83 83
84 Service::Service() 84 Service::Service()
85 : test_config_(false), 85 : test_config_(false),
86 platform_screen_(display::PlatformScreen::Create()), 86 platform_screen_(display::PlatformScreen::Create()),
87 ime_registrar_(&ime_server_) {} 87 ime_registrar_(&ime_server_) {}
88 88
89 Service::~Service() { 89 Service::~Service() {
90 // Destroy |window_server_| first, since it depends on |event_source_|. 90 // Destroy |window_server_| first, since it depends on |event_source_|.
91 // WindowServer (or more correctly its Displays) may have state that needs to 91 // WindowServer (or more correctly its Displays) may have state that needs to
92 // be destroyed before GpuState as well. 92 // be destroyed before GpuState as well.
93 window_server_.reset(); 93 window_server_.reset();
94 } 94 }
95 95
96 void Service::InitializeResources(shell::Connector* connector) { 96 void Service::InitializeResources(service_manager::Connector* connector) {
97 if (ui::ResourceBundle::HasSharedInstance()) 97 if (ui::ResourceBundle::HasSharedInstance())
98 return; 98 return;
99 99
100 std::set<std::string> resource_paths; 100 std::set<std::string> resource_paths;
101 resource_paths.insert(kResourceFileStrings); 101 resource_paths.insert(kResourceFileStrings);
102 resource_paths.insert(kResourceFile100); 102 resource_paths.insert(kResourceFile100);
103 resource_paths.insert(kResourceFile200); 103 resource_paths.insert(kResourceFile200);
104 104
105 catalog::ResourceLoader loader; 105 catalog::ResourceLoader loader;
106 filesystem::mojom::DirectoryPtr directory; 106 filesystem::mojom::DirectoryPtr directory;
107 connector->ConnectToInterface("service:catalog", &directory); 107 connector->ConnectToInterface("service:catalog", &directory);
108 CHECK(loader.OpenFiles(std::move(directory), resource_paths)); 108 CHECK(loader.OpenFiles(std::move(directory), resource_paths));
109 109
110 ui::RegisterPathProvider(); 110 ui::RegisterPathProvider();
111 111
112 // Initialize resource bundle with 1x and 2x cursor bitmaps. 112 // Initialize resource bundle with 1x and 2x cursor bitmaps.
113 ui::ResourceBundle::InitSharedInstanceWithPakFileRegion( 113 ui::ResourceBundle::InitSharedInstanceWithPakFileRegion(
114 loader.TakeFile(kResourceFileStrings), 114 loader.TakeFile(kResourceFileStrings),
115 base::MemoryMappedFile::Region::kWholeFile); 115 base::MemoryMappedFile::Region::kWholeFile);
116 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); 116 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
117 rb.AddDataPackFromFile(loader.TakeFile(kResourceFile100), 117 rb.AddDataPackFromFile(loader.TakeFile(kResourceFile100),
118 ui::SCALE_FACTOR_100P); 118 ui::SCALE_FACTOR_100P);
119 rb.AddDataPackFromFile(loader.TakeFile(kResourceFile200), 119 rb.AddDataPackFromFile(loader.TakeFile(kResourceFile200),
120 ui::SCALE_FACTOR_200P); 120 ui::SCALE_FACTOR_200P);
121 } 121 }
122 122
123 Service::UserState* Service::GetUserState( 123 Service::UserState* Service::GetUserState(
124 const shell::Identity& remote_identity) { 124 const service_manager::Identity& remote_identity) {
125 const ws::UserId& user_id = remote_identity.user_id(); 125 const ws::UserId& user_id = remote_identity.user_id();
126 auto it = user_id_to_user_state_.find(user_id); 126 auto it = user_id_to_user_state_.find(user_id);
127 if (it != user_id_to_user_state_.end()) 127 if (it != user_id_to_user_state_.end())
128 return it->second.get(); 128 return it->second.get();
129 user_id_to_user_state_[user_id] = base::WrapUnique(new UserState); 129 user_id_to_user_state_[user_id] = base::WrapUnique(new UserState);
130 return user_id_to_user_state_[user_id].get(); 130 return user_id_to_user_state_[user_id].get();
131 } 131 }
132 132
133 void Service::AddUserIfNecessary(const shell::Identity& remote_identity) { 133 void Service::AddUserIfNecessary(
134 const service_manager::Identity& remote_identity) {
134 window_server_->user_id_tracker()->AddUserId(remote_identity.user_id()); 135 window_server_->user_id_tracker()->AddUserId(remote_identity.user_id());
135 } 136 }
136 137
137 void Service::OnStart(const shell::Identity& identity) { 138 void Service::OnStart(const service_manager::Identity& identity) {
138 base::PlatformThread::SetName("mus"); 139 base::PlatformThread::SetName("mus");
139 tracing_.Initialize(connector(), identity.name()); 140 tracing_.Initialize(connector(), identity.name());
140 TRACE_EVENT0("mus", "Service::Initialize started"); 141 TRACE_EVENT0("mus", "Service::Initialize started");
141 142
142 test_config_ = base::CommandLine::ForCurrentProcess()->HasSwitch( 143 test_config_ = base::CommandLine::ForCurrentProcess()->HasSwitch(
143 switches::kUseTestConfig); 144 switches::kUseTestConfig);
144 #if defined(USE_X11) 145 #if defined(USE_X11)
145 XInitThreads(); 146 XInitThreads();
146 if (test_config_) 147 if (test_config_)
147 ui::test::SetUseOverrideRedirectWindowByDefault(true); 148 ui::test::SetUseOverrideRedirectWindowByDefault(true);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 187
187 // DeviceDataManager must be initialized before TouchController. On non-Linux 188 // DeviceDataManager must be initialized before TouchController. On non-Linux
188 // platforms there is no DeviceDataManager so don't create touch controller. 189 // platforms there is no DeviceDataManager so don't create touch controller.
189 if (ui::DeviceDataManager::HasInstance()) 190 if (ui::DeviceDataManager::HasInstance())
190 touch_controller_.reset( 191 touch_controller_.reset(
191 new ws::TouchController(window_server_->display_manager())); 192 new ws::TouchController(window_server_->display_manager()));
192 193
193 ime_server_.Init(connector()); 194 ime_server_.Init(connector());
194 } 195 }
195 196
196 bool Service::OnConnect(const shell::Identity& remote_identity, 197 bool Service::OnConnect(const service_manager::Identity& remote_identity,
197 shell::InterfaceRegistry* registry) { 198 service_manager::InterfaceRegistry* registry) {
198 registry->AddInterface<mojom::AccessibilityManager>(this); 199 registry->AddInterface<mojom::AccessibilityManager>(this);
199 registry->AddInterface<mojom::Clipboard>(this); 200 registry->AddInterface<mojom::Clipboard>(this);
200 registry->AddInterface<mojom::DisplayManager>(this); 201 registry->AddInterface<mojom::DisplayManager>(this);
201 registry->AddInterface<mojom::GpuService>(this); 202 registry->AddInterface<mojom::GpuService>(this);
202 registry->AddInterface<mojom::IMERegistrar>(this); 203 registry->AddInterface<mojom::IMERegistrar>(this);
203 registry->AddInterface<mojom::IMEServer>(this); 204 registry->AddInterface<mojom::IMEServer>(this);
204 registry->AddInterface<mojom::UserAccessManager>(this); 205 registry->AddInterface<mojom::UserAccessManager>(this);
205 registry->AddInterface<mojom::UserActivityMonitor>(this); 206 registry->AddInterface<mojom::UserActivityMonitor>(this);
206 registry->AddInterface<WindowTreeHostFactory>(this); 207 registry->AddInterface<WindowTreeHostFactory>(this);
207 registry->AddInterface<mojom::WindowManagerWindowTreeFactory>(this); 208 registry->AddInterface<mojom::WindowManagerWindowTreeFactory>(this);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 if (touch_controller_) 251 if (touch_controller_)
251 touch_controller_->UpdateTouchTransforms(); 252 touch_controller_->UpdateTouchTransforms();
252 } 253 }
253 254
254 void Service::CreateDefaultDisplays() { 255 void Service::CreateDefaultDisplays() {
255 // The display manager will create Displays once hardware or virtual displays 256 // The display manager will create Displays once hardware or virtual displays
256 // are ready. 257 // are ready.
257 platform_screen_->Init(window_server_->display_manager()); 258 platform_screen_->Init(window_server_->display_manager());
258 } 259 }
259 260
260 void Service::Create(const shell::Identity& remote_identity, 261 void Service::Create(const service_manager::Identity& remote_identity,
261 mojom::AccessibilityManagerRequest request) { 262 mojom::AccessibilityManagerRequest request) {
262 UserState* user_state = GetUserState(remote_identity); 263 UserState* user_state = GetUserState(remote_identity);
263 if (!user_state->accessibility) { 264 if (!user_state->accessibility) {
264 const ws::UserId& user_id = remote_identity.user_id(); 265 const ws::UserId& user_id = remote_identity.user_id();
265 user_state->accessibility.reset( 266 user_state->accessibility.reset(
266 new ws::AccessibilityManager(window_server_.get(), user_id)); 267 new ws::AccessibilityManager(window_server_.get(), user_id));
267 } 268 }
268 user_state->accessibility->Bind(std::move(request)); 269 user_state->accessibility->Bind(std::move(request));
269 } 270 }
270 271
271 void Service::Create(const shell::Identity& remote_identity, 272 void Service::Create(const service_manager::Identity& remote_identity,
272 mojom::ClipboardRequest request) { 273 mojom::ClipboardRequest request) {
273 UserState* user_state = GetUserState(remote_identity); 274 UserState* user_state = GetUserState(remote_identity);
274 if (!user_state->clipboard) 275 if (!user_state->clipboard)
275 user_state->clipboard.reset(new clipboard::ClipboardImpl); 276 user_state->clipboard.reset(new clipboard::ClipboardImpl);
276 user_state->clipboard->AddBinding(std::move(request)); 277 user_state->clipboard->AddBinding(std::move(request));
277 } 278 }
278 279
279 void Service::Create(const shell::Identity& remote_identity, 280 void Service::Create(const service_manager::Identity& remote_identity,
280 mojom::DisplayManagerRequest request) { 281 mojom::DisplayManagerRequest request) {
281 // DisplayManagerObservers generally expect there to be at least one display. 282 // DisplayManagerObservers generally expect there to be at least one display.
282 if (!window_server_->display_manager()->has_displays()) { 283 if (!window_server_->display_manager()->has_displays()) {
283 std::unique_ptr<PendingRequest> pending_request(new PendingRequest); 284 std::unique_ptr<PendingRequest> pending_request(new PendingRequest);
284 pending_request->remote_identity = remote_identity; 285 pending_request->remote_identity = remote_identity;
285 pending_request->dm_request.reset( 286 pending_request->dm_request.reset(
286 new mojom::DisplayManagerRequest(std::move(request))); 287 new mojom::DisplayManagerRequest(std::move(request)));
287 pending_requests_.push_back(std::move(pending_request)); 288 pending_requests_.push_back(std::move(pending_request));
288 return; 289 return;
289 } 290 }
290 window_server_->display_manager() 291 window_server_->display_manager()
291 ->GetUserDisplayManager(remote_identity.user_id()) 292 ->GetUserDisplayManager(remote_identity.user_id())
292 ->AddDisplayManagerBinding(std::move(request)); 293 ->AddDisplayManagerBinding(std::move(request));
293 } 294 }
294 295
295 void Service::Create(const shell::Identity& remote_identity, 296 void Service::Create(const service_manager::Identity& remote_identity,
296 mojom::GpuServiceRequest request) { 297 mojom::GpuServiceRequest request) {
297 window_server_->gpu_proxy()->Add(std::move(request)); 298 window_server_->gpu_proxy()->Add(std::move(request));
298 } 299 }
299 300
300 void Service::Create(const shell::Identity& remote_identity, 301 void Service::Create(const service_manager::Identity& remote_identity,
301 mojom::IMERegistrarRequest request) { 302 mojom::IMERegistrarRequest request) {
302 ime_registrar_.AddBinding(std::move(request)); 303 ime_registrar_.AddBinding(std::move(request));
303 } 304 }
304 305
305 void Service::Create(const shell::Identity& remote_identity, 306 void Service::Create(const service_manager::Identity& remote_identity,
306 mojom::IMEServerRequest request) { 307 mojom::IMEServerRequest request) {
307 ime_server_.AddBinding(std::move(request)); 308 ime_server_.AddBinding(std::move(request));
308 } 309 }
309 310
310 void Service::Create(const shell::Identity& remote_identity, 311 void Service::Create(const service_manager::Identity& remote_identity,
311 mojom::UserAccessManagerRequest request) { 312 mojom::UserAccessManagerRequest request) {
312 window_server_->user_id_tracker()->Bind(std::move(request)); 313 window_server_->user_id_tracker()->Bind(std::move(request));
313 } 314 }
314 315
315 void Service::Create(const shell::Identity& remote_identity, 316 void Service::Create(const service_manager::Identity& remote_identity,
316 mojom::UserActivityMonitorRequest request) { 317 mojom::UserActivityMonitorRequest request) {
317 AddUserIfNecessary(remote_identity); 318 AddUserIfNecessary(remote_identity);
318 const ws::UserId& user_id = remote_identity.user_id(); 319 const ws::UserId& user_id = remote_identity.user_id();
319 window_server_->GetUserActivityMonitorForUser(user_id)->Add( 320 window_server_->GetUserActivityMonitorForUser(user_id)->Add(
320 std::move(request)); 321 std::move(request));
321 } 322 }
322 323
323 void Service::Create(const shell::Identity& remote_identity, 324 void Service::Create(const service_manager::Identity& remote_identity,
324 mojom::WindowManagerWindowTreeFactoryRequest request) { 325 mojom::WindowManagerWindowTreeFactoryRequest request) {
325 AddUserIfNecessary(remote_identity); 326 AddUserIfNecessary(remote_identity);
326 window_server_->window_manager_window_tree_factory_set()->Add( 327 window_server_->window_manager_window_tree_factory_set()->Add(
327 remote_identity.user_id(), std::move(request)); 328 remote_identity.user_id(), std::move(request));
328 } 329 }
329 330
330 void Service::Create(const shell::Identity& remote_identity, 331 void Service::Create(const service_manager::Identity& remote_identity,
331 mojom::WindowTreeFactoryRequest request) { 332 mojom::WindowTreeFactoryRequest request) {
332 AddUserIfNecessary(remote_identity); 333 AddUserIfNecessary(remote_identity);
333 if (!window_server_->display_manager()->has_displays()) { 334 if (!window_server_->display_manager()->has_displays()) {
334 std::unique_ptr<PendingRequest> pending_request(new PendingRequest); 335 std::unique_ptr<PendingRequest> pending_request(new PendingRequest);
335 pending_request->remote_identity = remote_identity; 336 pending_request->remote_identity = remote_identity;
336 pending_request->wtf_request.reset( 337 pending_request->wtf_request.reset(
337 new mojom::WindowTreeFactoryRequest(std::move(request))); 338 new mojom::WindowTreeFactoryRequest(std::move(request)));
338 pending_requests_.push_back(std::move(pending_request)); 339 pending_requests_.push_back(std::move(pending_request));
339 return; 340 return;
340 } 341 }
341 AddUserIfNecessary(remote_identity); 342 AddUserIfNecessary(remote_identity);
342 mojo::MakeStrongBinding(base::MakeUnique<ws::WindowTreeFactory>( 343 mojo::MakeStrongBinding(base::MakeUnique<ws::WindowTreeFactory>(
343 window_server_.get(), remote_identity.user_id(), 344 window_server_.get(), remote_identity.user_id(),
344 remote_identity.name()), 345 remote_identity.name()),
345 std::move(request)); 346 std::move(request));
346 } 347 }
347 348
348 void Service::Create(const shell::Identity& remote_identity, 349 void Service::Create(const service_manager::Identity& remote_identity,
349 mojom::WindowTreeHostFactoryRequest request) { 350 mojom::WindowTreeHostFactoryRequest request) {
350 UserState* user_state = GetUserState(remote_identity); 351 UserState* user_state = GetUserState(remote_identity);
351 if (!user_state->window_tree_host_factory) { 352 if (!user_state->window_tree_host_factory) {
352 user_state->window_tree_host_factory.reset(new ws::WindowTreeHostFactory( 353 user_state->window_tree_host_factory.reset(new ws::WindowTreeHostFactory(
353 window_server_.get(), remote_identity.user_id())); 354 window_server_.get(), remote_identity.user_id()));
354 } 355 }
355 user_state->window_tree_host_factory->AddBinding(std::move(request)); 356 user_state->window_tree_host_factory->AddBinding(std::move(request));
356 } 357 }
357 358
358 void Service::Create(const shell::Identity& remote_identity, 359 void Service::Create(const service_manager::Identity& remote_identity,
359 mojom::WindowServerTestRequest request) { 360 mojom::WindowServerTestRequest request) {
360 if (!test_config_) 361 if (!test_config_)
361 return; 362 return;
362 mojo::MakeStrongBinding( 363 mojo::MakeStrongBinding(
363 base::MakeUnique<ws::WindowServerTestImpl>(window_server_.get()), 364 base::MakeUnique<ws::WindowServerTestImpl>(window_server_.get()),
364 std::move(request)); 365 std::move(request));
365 } 366 }
366 367
367 368
368 } // namespace ui 369 } // namespace ui
OLDNEW
« no previous file with comments | « services/ui/service.h ('k') | services/ui/test_wm/test_wm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698