OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |