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

Side by Side Diff: components/mus/mus_app.cc

Issue 2089023002: Promotes remaining global window manager state into WindowManagerState (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: override Created 4 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
« no previous file with comments | « no previous file | components/mus/ws/BUILD.gn » ('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 "components/mus/mus_app.h" 5 #include "components/mus/mus_app.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 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 61
62 const char kResourceFileStrings[] = "mus_app_resources_strings.pak"; 62 const char kResourceFileStrings[] = "mus_app_resources_strings.pak";
63 const char kResourceFile100[] = "mus_app_resources_100.pak"; 63 const char kResourceFile100[] = "mus_app_resources_100.pak";
64 const char kResourceFile200[] = "mus_app_resources_200.pak"; 64 const char kResourceFile200[] = "mus_app_resources_200.pak";
65 65
66 } // namespace 66 } // namespace
67 67
68 // TODO(sky): this is a pretty typical pattern, make it easier to do. 68 // TODO(sky): this is a pretty typical pattern, make it easier to do.
69 struct MusApp::PendingRequest { 69 struct MusApp::PendingRequest {
70 shell::Connection* connection; 70 shell::Connection* connection;
71 std::unique_ptr<mojo::InterfaceRequest<mojom::WindowTreeFactory>> wtf_request; 71 std::unique_ptr<mojom::WindowTreeFactoryRequest> wtf_request;
72 std::unique_ptr<mojom::DisplayManagerRequest> dm_request;
72 }; 73 };
73 74
74 struct MusApp::UserState { 75 struct MusApp::UserState {
75 std::unique_ptr<clipboard::ClipboardImpl> clipboard; 76 std::unique_ptr<clipboard::ClipboardImpl> clipboard;
76 std::unique_ptr<ws::WindowTreeHostFactory> window_tree_host_factory; 77 std::unique_ptr<ws::WindowTreeHostFactory> window_tree_host_factory;
77 }; 78 };
78 79
79 MusApp::MusApp() 80 MusApp::MusApp()
80 : test_config_(false), 81 : test_config_(false),
81 use_chrome_gpu_command_buffer_(false), 82 use_chrome_gpu_command_buffer_(false),
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 #if defined(USE_OZONE) 233 #if defined(USE_OZONE)
233 ui::OzonePlatform::GetInstance()->AddInterfaces(connection); 234 ui::OzonePlatform::GetInstance()->AddInterfaces(connection);
234 #endif 235 #endif
235 236
236 return true; 237 return true;
237 } 238 }
238 239
239 void MusApp::OnFirstDisplayReady() { 240 void MusApp::OnFirstDisplayReady() {
240 PendingRequests requests; 241 PendingRequests requests;
241 requests.swap(pending_requests_); 242 requests.swap(pending_requests_);
242 for (auto& request : requests) 243 for (auto& request : requests) {
243 Create(request->connection, std::move(*request->wtf_request)); 244 if (request->wtf_request)
245 Create(request->connection, std::move(*request->wtf_request));
246 else
247 Create(request->connection, std::move(*request->dm_request));
248 }
244 } 249 }
245 250
246 void MusApp::OnNoMoreDisplays() { 251 void MusApp::OnNoMoreDisplays() {
247 // We may get here from the destructor, in which case there is no messageloop. 252 // We may get here from the destructor, in which case there is no messageloop.
248 if (base::MessageLoop::current()) 253 if (base::MessageLoop::current())
249 base::MessageLoop::current()->QuitWhenIdle(); 254 base::MessageLoop::current()->QuitWhenIdle();
250 } 255 }
251 256
252 bool MusApp::IsTestConfig() const { 257 bool MusApp::IsTestConfig() const {
253 return test_config_; 258 return test_config_;
254 } 259 }
255 260
256 void MusApp::CreateDefaultDisplays() { 261 void MusApp::CreateDefaultDisplays() {
257 // An asynchronous callback will create the Displays once the physical 262 // An asynchronous callback will create the Displays once the physical
258 // displays are ready. 263 // displays are ready.
259 platform_screen_->ConfigurePhysicalDisplay(base::Bind( 264 platform_screen_->ConfigurePhysicalDisplay(base::Bind(
260 &MusApp::OnCreatedPhysicalDisplay, weak_ptr_factory_.GetWeakPtr())); 265 &MusApp::OnCreatedPhysicalDisplay, weak_ptr_factory_.GetWeakPtr()));
261 } 266 }
262 267
263 void MusApp::Create(shell::Connection* connection, 268 void MusApp::Create(shell::Connection* connection,
264 mojom::ClipboardRequest request) { 269 mojom::ClipboardRequest request) {
265 UserState* user_state = GetUserState(connection); 270 UserState* user_state = GetUserState(connection);
266 if (!user_state->clipboard) 271 if (!user_state->clipboard)
267 user_state->clipboard.reset(new clipboard::ClipboardImpl); 272 user_state->clipboard.reset(new clipboard::ClipboardImpl);
268 user_state->clipboard->AddBinding(std::move(request)); 273 user_state->clipboard->AddBinding(std::move(request));
269 } 274 }
270 275
271 void MusApp::Create(shell::Connection* connection, 276 void MusApp::Create(shell::Connection* connection,
272 mojom::DisplayManagerRequest request) { 277 mojom::DisplayManagerRequest request) {
278 // DisplayManagerObservers generally expect there to be at least one display.
279 if (!window_server_->display_manager()->has_displays()) {
280 std::unique_ptr<PendingRequest> pending_request(new PendingRequest);
281 pending_request->connection = connection;
282 pending_request->dm_request.reset(
283 new mojom::DisplayManagerRequest(std::move(request)));
284 pending_requests_.push_back(std::move(pending_request));
285 return;
286 }
273 window_server_->display_manager() 287 window_server_->display_manager()
274 ->GetUserDisplayManager(connection->GetRemoteIdentity().user_id()) 288 ->GetUserDisplayManager(connection->GetRemoteIdentity().user_id())
275 ->AddDisplayManagerBinding(std::move(request)); 289 ->AddDisplayManagerBinding(std::move(request));
276 } 290 }
277 291
278 void MusApp::Create(shell::Connection* connection, mojom::GpuRequest request) { 292 void MusApp::Create(shell::Connection* connection, mojom::GpuRequest request) {
279 if (use_chrome_gpu_command_buffer_) 293 if (use_chrome_gpu_command_buffer_)
280 return; 294 return;
281 DCHECK(platform_display_init_params_.gpu_state); 295 DCHECK(platform_display_init_params_.gpu_state);
282 new GpuImpl(std::move(request), platform_display_init_params_.gpu_state); 296 new GpuImpl(std::move(request), platform_display_init_params_.gpu_state);
(...skipping 18 matching lines...) Expand all
301 connection->GetRemoteIdentity().user_id(), std::move(request)); 315 connection->GetRemoteIdentity().user_id(), std::move(request));
302 } 316 }
303 317
304 void MusApp::Create(Connection* connection, 318 void MusApp::Create(Connection* connection,
305 mojom::WindowTreeFactoryRequest request) { 319 mojom::WindowTreeFactoryRequest request) {
306 AddUserIfNecessary(connection); 320 AddUserIfNecessary(connection);
307 if (!window_server_->display_manager()->has_displays()) { 321 if (!window_server_->display_manager()->has_displays()) {
308 std::unique_ptr<PendingRequest> pending_request(new PendingRequest); 322 std::unique_ptr<PendingRequest> pending_request(new PendingRequest);
309 pending_request->connection = connection; 323 pending_request->connection = connection;
310 pending_request->wtf_request.reset( 324 pending_request->wtf_request.reset(
311 new mojo::InterfaceRequest<mojom::WindowTreeFactory>( 325 new mojom::WindowTreeFactoryRequest(std::move(request)));
312 std::move(request)));
313 pending_requests_.push_back(std::move(pending_request)); 326 pending_requests_.push_back(std::move(pending_request));
314 return; 327 return;
315 } 328 }
316 AddUserIfNecessary(connection); 329 AddUserIfNecessary(connection);
317 new ws::WindowTreeFactory( 330 new ws::WindowTreeFactory(
318 window_server_.get(), connection->GetRemoteIdentity().user_id(), 331 window_server_.get(), connection->GetRemoteIdentity().user_id(),
319 connection->GetRemoteIdentity().name(), std::move(request)); 332 connection->GetRemoteIdentity().name(), std::move(request));
320 } 333 }
321 334
322 void MusApp::Create(Connection* connection, 335 void MusApp::Create(Connection* connection,
(...skipping 21 matching lines...) Expand all
344 // Display manages its own lifetime. 357 // Display manages its own lifetime.
345 ws::Display* host_impl = 358 ws::Display* host_impl =
346 new ws::Display(window_server_.get(), platform_display_init_params_); 359 new ws::Display(window_server_.get(), platform_display_init_params_);
347 host_impl->Init(nullptr); 360 host_impl->Init(nullptr);
348 361
349 if (touch_controller_) 362 if (touch_controller_)
350 touch_controller_->UpdateTouchTransforms(); 363 touch_controller_->UpdateTouchTransforms();
351 } 364 }
352 365
353 } // namespace mus 366 } // namespace mus
OLDNEW
« no previous file with comments | « no previous file | components/mus/ws/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698