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

Side by Side Diff: ui/aura/mus/window_tree_client.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 "ui/aura/mus/window_tree_client.h" 5 #include "ui/aura/mus/window_tree_client.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 client_id_ = 101; 219 client_id_ = 101;
220 220
221 ui::mojom::WindowTreeFactoryPtr factory; 221 ui::mojom::WindowTreeFactoryPtr factory;
222 connector_->BindInterface(ui::mojom::kServiceName, &factory); 222 connector_->BindInterface(ui::mojom::kServiceName, &factory);
223 ui::mojom::WindowTreePtr window_tree; 223 ui::mojom::WindowTreePtr window_tree;
224 factory->CreateWindowTree(MakeRequest(&window_tree), 224 factory->CreateWindowTree(MakeRequest(&window_tree),
225 binding_.CreateInterfacePtrAndBind()); 225 binding_.CreateInterfacePtrAndBind());
226 SetWindowTree(std::move(window_tree)); 226 SetWindowTree(std::move(window_tree));
227 } 227 }
228 228
229 void WindowTreeClient::ConnectViaWindowTreeHostFactory() {
230 // The client id doesn't really matter, we use 101 purely for debugging.
231 client_id_ = 101;
232
233 ui::mojom::WindowTreeHostFactoryRegistrarPtr host_factory_registrar;
234 connector_->BindInterface(ui::mojom::kServiceName, &host_factory_registrar);
235
236 ui::mojom::WindowTreePtr window_tree;
237 host_factory_registrar->Register(MakeRequest(&window_tree_host_factory_ptr_),
238 MakeRequest(&window_tree),
239 binding_.CreateInterfacePtrAndBind());
240 SetWindowTree(std::move(window_tree));
241 }
242
229 void WindowTreeClient::ConnectAsWindowManager() { 243 void WindowTreeClient::ConnectAsWindowManager() {
230 DCHECK(window_manager_delegate_); 244 DCHECK(window_manager_delegate_);
231 245
232 ui::mojom::WindowManagerWindowTreeFactoryPtr factory; 246 ui::mojom::WindowManagerWindowTreeFactoryPtr factory;
233 connector_->BindInterface(ui::mojom::kServiceName, &factory); 247 connector_->BindInterface(ui::mojom::kServiceName, &factory);
234 ui::mojom::WindowTreePtr window_tree; 248 ui::mojom::WindowTreePtr window_tree;
235 factory->CreateWindowTree(MakeRequest(&window_tree), 249 factory->CreateWindowTree(MakeRequest(&window_tree),
236 binding_.CreateInterfacePtrAndBind()); 250 binding_.CreateInterfacePtrAndBind());
237 SetWindowTree(std::move(window_tree)); 251 SetWindowTree(std::move(window_tree));
238 } 252 }
239 253
254 void WindowTreeClient::CreateHost(ui::mojom::WindowTreeHostRequest host) {
255 window_tree_host_factory_ptr_->CreateWindowTreeHost(std::move(host));
sky 2017/02/28 05:02:22 I suspect that this function shouldn't be called d
fwang 2017/02/28 08:23:53 Mmmh, see the changes in MusDemo for how it is use
sky 2017/02/28 17:34:09 Sure, but doing that is awkward and inconvenient,
tonikitoo 2017/03/01 05:05:44 Hum, I believe I understand sky's point. It might
sky 2017/03/01 17:08:38 I would prefer we go in the right direction, which
256 }
257
240 void WindowTreeClient::SetCanFocus(Window* window, bool can_focus) { 258 void WindowTreeClient::SetCanFocus(Window* window, bool can_focus) {
241 DCHECK(tree_); 259 DCHECK(tree_);
242 DCHECK(window); 260 DCHECK(window);
243 tree_->SetCanFocus(WindowMus::Get(window)->server_id(), can_focus); 261 tree_->SetCanFocus(WindowMus::Get(window)->server_id(), can_focus);
244 } 262 }
245 263
246 void WindowTreeClient::SetPredefinedCursor(WindowMus* window, 264 void WindowTreeClient::SetPredefinedCursor(WindowMus* window,
247 ui::mojom::Cursor old_cursor, 265 ui::mojom::Cursor old_cursor,
248 ui::mojom::Cursor new_cursor) { 266 ui::mojom::Cursor new_cursor) {
249 DCHECK(tree_); 267 DCHECK(tree_);
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 ClientSpecificId client_id, 516 ClientSpecificId client_id,
499 ui::mojom::WindowDataPtr root_data, 517 ui::mojom::WindowDataPtr root_data,
500 int64_t display_id, 518 int64_t display_id,
501 Id focused_window_id, 519 Id focused_window_id,
502 bool drawn) { 520 bool drawn) {
503 // WARNING: this is only called if WindowTreeClient was created as the 521 // WARNING: this is only called if WindowTreeClient was created as the
504 // result of an embedding. 522 // result of an embedding.
505 client_id_ = client_id; 523 client_id_ = client_id;
506 WindowTreeConnectionEstablished(window_tree); 524 WindowTreeConnectionEstablished(window_tree);
507 525
508 DCHECK(roots_.empty());
fwang 2017/02/28 08:23:53 Should this be kept when we do OnEmbed without con
tonikitoo 2017/03/01 05:05:44 From OnEmbedImpl it is a bit hard. I have moved th
509 std::unique_ptr<WindowTreeHostMus> window_tree_host = 526 std::unique_ptr<WindowTreeHostMus> window_tree_host =
510 CreateWindowTreeHost(WindowMusType::EMBED, *root_data, display_id); 527 CreateWindowTreeHost(WindowMusType::EMBED, *root_data, display_id);
511 528
512 focus_synchronizer_->SetFocusFromServer( 529 focus_synchronizer_->SetFocusFromServer(
513 GetWindowByServerId(focused_window_id)); 530 GetWindowByServerId(focused_window_id));
514 531
515 delegate_->OnEmbed(std::move(window_tree_host)); 532 delegate_->OnEmbed(std::move(window_tree_host));
516 } 533 }
517 534
518 WindowTreeHostMus* WindowTreeClient::WmNewDisplayAddedImpl( 535 WindowTreeHostMus* WindowTreeClient::WmNewDisplayAddedImpl(
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
832 DCHECK(tree_); 849 DCHECK(tree_);
833 tree_->SetEventTargetingPolicy(window->server_id(), policy); 850 tree_->SetEventTargetingPolicy(window->server_id(), policy);
834 } 851 }
835 852
836 void WindowTreeClient::OnEmbed(ClientSpecificId client_id, 853 void WindowTreeClient::OnEmbed(ClientSpecificId client_id,
837 ui::mojom::WindowDataPtr root_data, 854 ui::mojom::WindowDataPtr root_data,
838 ui::mojom::WindowTreePtr tree, 855 ui::mojom::WindowTreePtr tree,
839 int64_t display_id, 856 int64_t display_id,
840 Id focused_window_id, 857 Id focused_window_id,
841 bool drawn) { 858 bool drawn) {
842 DCHECK(!tree_ptr_); 859 DCHECK(tree_ptr_);
843 tree_ptr_ = std::move(tree); 860 DCHECK(!tree);
861 // No need to set 'tree_ptr_' here because it was already set during
862 // ConnectViaWindowManagerHostFactory.
fwang 2017/02/28 08:23:53 What happens when we do OnEmbed without configurin
tonikitoo 2017/03/01 05:05:44 Done.
844 863
845 is_from_embed_ = true; 864 is_from_embed_ = true;
846 865
847 if (window_manager_delegate_) { 866 if (window_manager_delegate_) {
848 tree_ptr_->GetWindowManagerClient( 867 tree_ptr_->GetWindowManagerClient(
849 MakeRequest(&window_manager_internal_client_)); 868 MakeRequest(&window_manager_internal_client_));
850 } 869 }
851 870
852 OnEmbedImpl(tree_ptr_.get(), client_id, std::move(root_data), display_id, 871 OnEmbedImpl(tree_ptr_.get(), client_id, std::move(root_data), display_id,
853 focused_window_id, drawn); 872 focused_window_id, drawn);
(...skipping 974 matching lines...) Expand 10 before | Expand all | Expand 10 after
1828 return ScheduleInFlightChange(base::MakeUnique<InFlightCaptureChange>( 1847 return ScheduleInFlightChange(base::MakeUnique<InFlightCaptureChange>(
1829 this, capture_synchronizer_.get(), window)); 1848 this, capture_synchronizer_.get(), window));
1830 } 1849 }
1831 1850
1832 uint32_t WindowTreeClient::CreateChangeIdForFocus(WindowMus* window) { 1851 uint32_t WindowTreeClient::CreateChangeIdForFocus(WindowMus* window) {
1833 return ScheduleInFlightChange(base::MakeUnique<InFlightFocusChange>( 1852 return ScheduleInFlightChange(base::MakeUnique<InFlightFocusChange>(
1834 this, focus_synchronizer_.get(), window)); 1853 this, focus_synchronizer_.get(), window));
1835 } 1854 }
1836 1855
1837 } // namespace aura 1856 } // namespace aura
OLDNEW
« ui/aura/mus/window_tree_client.h ('K') | « ui/aura/mus/window_tree_client.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698