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

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

Issue 2916823002: Move Mus into chrome's process when running with --mus.
Patch Set: Addressing most feedback, making this work on device. Created 3 years, 6 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 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 std::unique_ptr<mojom::WindowTreeFactoryRequest> wtf_request; 84 std::unique_ptr<mojom::WindowTreeFactoryRequest> wtf_request;
85 std::unique_ptr<mojom::DisplayManagerRequest> dm_request; 85 std::unique_ptr<mojom::DisplayManagerRequest> dm_request;
86 }; 86 };
87 87
88 struct Service::UserState { 88 struct Service::UserState {
89 std::unique_ptr<clipboard::ClipboardImpl> clipboard; 89 std::unique_ptr<clipboard::ClipboardImpl> clipboard;
90 std::unique_ptr<ws::AccessibilityManager> accessibility; 90 std::unique_ptr<ws::AccessibilityManager> accessibility;
91 std::unique_ptr<ws::WindowTreeHostFactory> window_tree_host_factory; 91 std::unique_ptr<ws::WindowTreeHostFactory> window_tree_host_factory;
92 }; 92 };
93 93
94 Service::Service() 94 Service::Service(scoped_refptr<base::SingleThreadTaskRunner> resource_runner)
95 : test_config_(false), 95 : resource_runner_(resource_runner),
96 /*in_process_(resource_runner != nullptr),*/
97 test_config_(false),
96 ime_registrar_(&ime_server_) {} 98 ime_registrar_(&ime_server_) {}
97 99
98 Service::~Service() { 100 Service::~Service() {
99 // Destroy |window_server_| first, since it depends on |event_source_|. 101 // Destroy |window_server_| first, since it depends on |event_source_|.
100 // WindowServer (or more correctly its Displays) may have state that needs to 102 // WindowServer (or more correctly its Displays) may have state that needs to
101 // be destroyed before GpuState as well. 103 // be destroyed before GpuState as well.
102 window_server_.reset(); 104 window_server_.reset();
103 105
104 #if defined(USE_OZONE) 106 #if defined(USE_OZONE)
105 #if defined(OS_CHROMEOS) 107 #if defined(OS_CHROMEOS)
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 user_id_to_user_state_[user_id] = base::WrapUnique(new UserState); 153 user_id_to_user_state_[user_id] = base::WrapUnique(new UserState);
152 return user_id_to_user_state_[user_id].get(); 154 return user_id_to_user_state_[user_id].get();
153 } 155 }
154 156
155 void Service::AddUserIfNecessary( 157 void Service::AddUserIfNecessary(
156 const service_manager::Identity& remote_identity) { 158 const service_manager::Identity& remote_identity) {
157 window_server_->user_id_tracker()->AddUserId(remote_identity.user_id()); 159 window_server_->user_id_tracker()->AddUserId(remote_identity.user_id());
158 } 160 }
159 161
160 void Service::OnStart() { 162 void Service::OnStart() {
161 base::PlatformThread::SetName("mus"); 163 if (!in_process())
164 base::PlatformThread::SetName("mus");
165
162 TRACE_EVENT0("mus", "Service::Initialize started"); 166 TRACE_EVENT0("mus", "Service::Initialize started");
163 167
164 test_config_ = base::CommandLine::ForCurrentProcess()->HasSwitch( 168 test_config_ = base::CommandLine::ForCurrentProcess()->HasSwitch(
165 switches::kUseTestConfig); 169 switches::kUseTestConfig);
170
166 #if defined(USE_X11) 171 #if defined(USE_X11)
167 XInitThreads(); 172 XInitThreads();
168 ui::SetDefaultX11ErrorHandlers(); 173 ui::SetDefaultX11ErrorHandlers();
169 #endif 174 #endif
170 175
171 if (test_config_) 176 if (test_config_)
172 ui::test::EnableTestConfigForPlatformWindows(); 177 ui::test::EnableTestConfigForPlatformWindows();
173 178
174 // If resources are unavailable do not complete start-up. 179 // If resources are unavailable do not complete start-up.
175 if (!InitializeResources(context()->connector())) { 180 if (!InitializeResources(context()->connector())) {
176 context()->QuitNow(); 181 context()->QuitNow();
177 return; 182 return;
178 } 183 }
179 184
180 #if defined(USE_OZONE) 185 #if defined(USE_OZONE)
181 // The ozone platform can provide its own event source. So initialize the 186 // The ozone platform can provide its own event source. So initialize the
182 // platform before creating the default event source. 187 // platform before creating the default event source.
183 // Because GL libraries need to be initialized before entering the sandbox, 188 // Because GL libraries need to be initialized before entering the sandbox,
184 // in MUS, |InitializeForUI| will load the GL libraries. 189 // in MUS, |InitializeForUI| will load the GL libraries.
185 ui::OzonePlatform::InitParams params; 190 ui::OzonePlatform::InitParams params;
186 params.connector = context()->connector(); 191 params.connector = context()->connector();
187 params.single_process = false; 192 params.single_process = false;
188 ui::OzonePlatform::InitializeForUI(params); 193 ui::OzonePlatform::InitializeForUI(params);
189 194
190 // Assume a client will change the layout to an appropriate configuration. 195 // Assume a client will change the layout to an appropriate configuration.
191 ui::KeyboardLayoutEngineManager::GetKeyboardLayoutEngine() 196 ui::KeyboardLayoutEngineManager::GetKeyboardLayoutEngine()
192 ->SetCurrentLayoutByName("us"); 197 ->SetCurrentLayoutByName("us");
193 client_native_pixmap_factory_ = ui::CreateClientNativePixmapFactoryOzone(); 198
194 gfx::ClientNativePixmapFactory::SetInstance( 199 // TODO: Ok?
195 client_native_pixmap_factory_.get()); 200 if (!in_process()) {
201 client_native_pixmap_factory_ = ui::CreateClientNativePixmapFactoryOzone();
202 gfx::ClientNativePixmapFactory::SetInstance(
203 client_native_pixmap_factory_.get());
204 }
196 205
197 DCHECK(gfx::ClientNativePixmapFactory::GetInstance()); 206 DCHECK(gfx::ClientNativePixmapFactory::GetInstance());
198 207
199 #if defined(OS_CHROMEOS) 208 #if defined(OS_CHROMEOS)
200 input_device_controller_ = base::MakeUnique<InputDeviceController>(); 209 input_device_controller_ = base::MakeUnique<InputDeviceController>();
201 input_device_controller_->AddInterface(&registry_); 210 input_device_controller_->AddInterface(&registry_);
202 #endif 211 #endif
203 #endif 212 #endif
204 213
205 // TODO(rjkroege): Enter sandbox here before we start threads in GpuState 214 // TODO(rjkroege): Enter sandbox here before we start threads in GpuState
206 // http://crbug.com/584532 215 // http://crbug.com/584532
207 216
208 #if !defined(OS_ANDROID) 217 #if !defined(OS_ANDROID)
209 event_source_ = ui::PlatformEventSource::CreateDefault(); 218 event_source_ = ui::PlatformEventSource::CreateDefault();
210 #endif 219 #endif
211 220
212 // This needs to happen after DeviceDataManager has been constructed. That 221 // This needs to happen after DeviceDataManager has been constructed. That
213 // happens either during OzonePlatform or PlatformEventSource initialization, 222 // happens either during OzonePlatform or PlatformEventSource initialization,
214 // so keep this line below both of those. 223 // so keep this line below both of those.
215 input_device_server_.RegisterAsObserver(); 224 input_device_server_.RegisterAsObserver();
216 225
217 window_server_.reset(new ws::WindowServer(this)); 226 window_server_.reset(new ws::WindowServer(this, resource_runner_));
218 std::unique_ptr<ws::GpuHost> gpu_host = 227 std::unique_ptr<ws::GpuHost> gpu_host =
219 base::MakeUnique<ws::DefaultGpuHost>(window_server_.get()); 228 base::MakeUnique<ws::DefaultGpuHost>(window_server_.get());
220 std::unique_ptr<ws::FrameSinkManagerClientBinding> frame_sink_manager = 229 std::unique_ptr<ws::FrameSinkManagerClientBinding> frame_sink_manager =
221 base::MakeUnique<ws::FrameSinkManagerClientBinding>(window_server_.get(), 230 base::MakeUnique<ws::FrameSinkManagerClientBinding>(window_server_.get(),
222 gpu_host.get()); 231 gpu_host.get());
223 window_server_->SetGpuHost(std::move(gpu_host)); 232 window_server_->SetGpuHost(std::move(gpu_host));
224 window_server_->SetFrameSinkManager(std::move(frame_sink_manager)); 233 window_server_->SetFrameSinkManager(std::move(frame_sink_manager));
225 234
226 ime_server_.Init(context()->connector(), test_config_); 235 ime_server_.Init(context()->connector(), test_config_);
227 236
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 327
319 DVLOG(3) << "OnWillCreateTreeForWindowManager " 328 DVLOG(3) << "OnWillCreateTreeForWindowManager "
320 << automatically_create_display_roots; 329 << automatically_create_display_roots;
321 ws::DisplayCreationConfig config = automatically_create_display_roots 330 ws::DisplayCreationConfig config = automatically_create_display_roots
322 ? ws::DisplayCreationConfig::AUTOMATIC 331 ? ws::DisplayCreationConfig::AUTOMATIC
323 : ws::DisplayCreationConfig::MANUAL; 332 : ws::DisplayCreationConfig::MANUAL;
324 window_server_->SetDisplayCreationConfig(config); 333 window_server_->SetDisplayCreationConfig(config);
325 if (window_server_->display_creation_config() == 334 if (window_server_->display_creation_config() ==
326 ws::DisplayCreationConfig::MANUAL) { 335 ws::DisplayCreationConfig::MANUAL) {
327 #if defined(USE_OZONE) && defined(OS_CHROMEOS) 336 #if defined(USE_OZONE) && defined(OS_CHROMEOS)
328 screen_manager_ = base::MakeUnique<display::ScreenManagerForwarding>(); 337 screen_manager_ =
338 base::MakeUnique<display::ScreenManagerForwarding>(in_process());
329 #else 339 #else
330 CHECK(false); 340 CHECK(false);
331 #endif 341 #endif
332 } else { 342 } else {
333 screen_manager_ = display::ScreenManager::Create(); 343 screen_manager_ = display::ScreenManager::Create();
334 } 344 }
335 screen_manager_->AddInterfaces(&registry_); 345 screen_manager_->AddInterfaces(&registry_);
336 if (is_gpu_ready_) 346 if (is_gpu_ready_)
337 screen_manager_->Init(window_server_->display_manager()); 347 screen_manager_->Init(window_server_->display_manager());
338 } 348 }
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
458 mojom::WindowServerTestRequest request) { 468 mojom::WindowServerTestRequest request) {
459 if (!test_config_) 469 if (!test_config_)
460 return; 470 return;
461 mojo::MakeStrongBinding( 471 mojo::MakeStrongBinding(
462 base::MakeUnique<ws::WindowServerTestImpl>(window_server_.get()), 472 base::MakeUnique<ws::WindowServerTestImpl>(window_server_.get()),
463 std::move(request)); 473 std::move(request));
464 } 474 }
465 475
466 476
467 } // namespace ui 477 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698