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

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

Issue 2180593002: mus: The window server needs to be able to write to the clipboard. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: gn check Created 4 years, 5 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 | services/ui/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 "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 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 } // namespace 68 } // namespace
69 69
70 // TODO(sky): this is a pretty typical pattern, make it easier to do. 70 // TODO(sky): this is a pretty typical pattern, make it easier to do.
71 struct Service::PendingRequest { 71 struct Service::PendingRequest {
72 shell::Connection* connection; 72 shell::Connection* connection;
73 std::unique_ptr<mojom::WindowTreeFactoryRequest> wtf_request; 73 std::unique_ptr<mojom::WindowTreeFactoryRequest> wtf_request;
74 std::unique_ptr<mojom::DisplayManagerRequest> dm_request; 74 std::unique_ptr<mojom::DisplayManagerRequest> dm_request;
75 }; 75 };
76 76
77 struct Service::UserState { 77 struct Service::UserState {
78 std::unique_ptr<clipboard::ClipboardImpl> clipboard;
79 std::unique_ptr<ws::AccessibilityManager> accessibility; 78 std::unique_ptr<ws::AccessibilityManager> accessibility;
80 std::unique_ptr<ws::WindowTreeHostFactory> window_tree_host_factory; 79 std::unique_ptr<ws::WindowTreeHostFactory> window_tree_host_factory;
81 }; 80 };
82 81
83 Service::Service() 82 Service::Service()
84 : test_config_(false), 83 : test_config_(false),
85 // TODO(penghuang): Kludge: Use mojo command buffer when running on 84 // TODO(penghuang): Kludge: Use mojo command buffer when running on
86 // Windows since chrome command buffer breaks unit tests 85 // Windows since chrome command buffer breaks unit tests
87 #if defined(OS_WIN) 86 #if defined(OS_WIN)
88 use_chrome_gpu_command_buffer_(false), 87 use_chrome_gpu_command_buffer_(false),
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 if (!user_state->accessibility) { 288 if (!user_state->accessibility) {
290 const ws::UserId& user_id = connection->GetRemoteIdentity().user_id(); 289 const ws::UserId& user_id = connection->GetRemoteIdentity().user_id();
291 user_state->accessibility.reset( 290 user_state->accessibility.reset(
292 new ws::AccessibilityManager(window_server_.get(), user_id)); 291 new ws::AccessibilityManager(window_server_.get(), user_id));
293 } 292 }
294 user_state->accessibility->Bind(std::move(request)); 293 user_state->accessibility->Bind(std::move(request));
295 } 294 }
296 295
297 void Service::Create(shell::Connection* connection, 296 void Service::Create(shell::Connection* connection,
298 mojom::ClipboardRequest request) { 297 mojom::ClipboardRequest request) {
299 UserState* user_state = GetUserState(connection); 298 const ws::UserId& user_id = connection->GetRemoteIdentity().user_id();
300 if (!user_state->clipboard) 299 window_server_->GetClipboardForUser(user_id)->AddBinding(std::move(request));
301 user_state->clipboard.reset(new clipboard::ClipboardImpl);
302 user_state->clipboard->AddBinding(std::move(request));
303 } 300 }
304 301
305 void Service::Create(shell::Connection* connection, 302 void Service::Create(shell::Connection* connection,
306 mojom::DisplayManagerRequest request) { 303 mojom::DisplayManagerRequest request) {
307 // DisplayManagerObservers generally expect there to be at least one display. 304 // DisplayManagerObservers generally expect there to be at least one display.
308 if (!window_server_->display_manager()->has_displays()) { 305 if (!window_server_->display_manager()->has_displays()) {
309 std::unique_ptr<PendingRequest> pending_request(new PendingRequest); 306 std::unique_ptr<PendingRequest> pending_request(new PendingRequest);
310 pending_request->connection = connection; 307 pending_request->connection = connection;
311 pending_request->dm_request.reset( 308 pending_request->dm_request.reset(
312 new mojom::DisplayManagerRequest(std::move(request))); 309 new mojom::DisplayManagerRequest(std::move(request)));
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 // Display manages its own lifetime. 391 // Display manages its own lifetime.
395 ws::Display* host_impl = 392 ws::Display* host_impl =
396 new ws::Display(window_server_.get(), platform_display_init_params_); 393 new ws::Display(window_server_.get(), platform_display_init_params_);
397 host_impl->Init(nullptr); 394 host_impl->Init(nullptr);
398 395
399 if (touch_controller_) 396 if (touch_controller_)
400 touch_controller_->UpdateTouchTransforms(); 397 touch_controller_->UpdateTouchTransforms();
401 } 398 }
402 399
403 } // namespace ui 400 } // namespace ui
OLDNEW
« no previous file with comments | « no previous file | services/ui/ws/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698