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 "components/mus/ws/window_tree_impl.h" | 5 #include "components/mus/ws/window_tree_impl.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/stl_util.h" | 8 #include "base/stl_util.h" |
9 #include "components/mus/ws/connection_manager.h" | 9 #include "components/mus/ws/connection_manager.h" |
10 #include "components/mus/ws/default_access_policy.h" | 10 #include "components/mus/ws/default_access_policy.h" |
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
396 WindowTreeHostImpl* host = GetHost(); | 396 WindowTreeHostImpl* host = GetHost(); |
397 if (!host || !host->window_manager()) | 397 if (!host || !host->window_manager()) |
398 return false; | 398 return false; |
399 // Requests coming from the WM should not be routed through the WM again. | 399 // Requests coming from the WM should not be routed through the WM again. |
400 bool is_wm = host->GetWindowTree() == this; | 400 bool is_wm = host->GetWindowTree() == this; |
401 if (is_wm) | 401 if (is_wm) |
402 return false; | 402 return false; |
403 return true; | 403 return true; |
404 } | 404 } |
405 | 405 |
| 406 void WindowTreeImpl::ProcessLostCapture( |
| 407 const ServerWindow* old_capture_window) { |
| 408 client()->OnLostCapture(WindowIdToTransportId(old_capture_window->id())); |
| 409 } |
| 410 |
406 bool WindowTreeImpl::IsWindowKnown(const ServerWindow* window) const { | 411 bool WindowTreeImpl::IsWindowKnown(const ServerWindow* window) const { |
407 return known_windows_.count(WindowIdToTransportId(window->id())) > 0; | 412 return known_windows_.count(WindowIdToTransportId(window->id())) > 0; |
408 } | 413 } |
409 | 414 |
410 bool WindowTreeImpl::CanReorderWindow(const ServerWindow* window, | 415 bool WindowTreeImpl::CanReorderWindow(const ServerWindow* window, |
411 const ServerWindow* relative_window, | 416 const ServerWindow* relative_window, |
412 mojom::OrderDirection direction) const { | 417 mojom::OrderDirection direction) const { |
413 if (!window || !relative_window) | 418 if (!window || !relative_window) |
414 return false; | 419 return false; |
415 | 420 |
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
690 } | 695 } |
691 | 696 |
692 void WindowTreeImpl::GetWindowTree( | 697 void WindowTreeImpl::GetWindowTree( |
693 Id window_id, | 698 Id window_id, |
694 const Callback<void(Array<mojom::WindowDataPtr>)>& callback) { | 699 const Callback<void(Array<mojom::WindowDataPtr>)>& callback) { |
695 std::vector<const ServerWindow*> windows( | 700 std::vector<const ServerWindow*> windows( |
696 GetWindowTree(WindowIdFromTransportId(window_id))); | 701 GetWindowTree(WindowIdFromTransportId(window_id))); |
697 callback.Run(WindowsToWindowDatas(windows)); | 702 callback.Run(WindowsToWindowDatas(windows)); |
698 } | 703 } |
699 | 704 |
| 705 void WindowTreeImpl::SetCapture(uint32_t change_id, Id window_id) { |
| 706 ServerWindow* window = GetWindow(WindowIdFromTransportId(window_id)); |
| 707 WindowTreeHostImpl* host = GetHost(); |
| 708 bool success = window && access_policy_->CanSetCapture(window) && host && |
| 709 access_policy_->CanSetCapture(host->GetCaptureWindow()); |
| 710 if (success) { |
| 711 Operation op(this, connection_manager_, OperationType::SET_CAPTURE); |
| 712 host->SetCapture(window); |
| 713 } |
| 714 client_->OnChangeCompleted(change_id, success); |
| 715 } |
| 716 |
| 717 void WindowTreeImpl::ReleaseCapture(uint32_t change_id, Id window_id) { |
| 718 ServerWindow* window = GetWindow(WindowIdFromTransportId(window_id)); |
| 719 WindowTreeHostImpl* host = GetHost(); |
| 720 bool success = |
| 721 window && host && access_policy_->CanSetCapture(host->GetCaptureWindow()); |
| 722 if (success) { |
| 723 Operation op(this, connection_manager_, OperationType::RELEASE_CAPTURE); |
| 724 host->SetCapture(nullptr); |
| 725 } |
| 726 client_->OnChangeCompleted(change_id, success); |
| 727 } |
| 728 |
700 void WindowTreeImpl::SetWindowBounds(uint32_t change_id, | 729 void WindowTreeImpl::SetWindowBounds(uint32_t change_id, |
701 Id window_id, | 730 Id window_id, |
702 mojo::RectPtr bounds) { | 731 mojo::RectPtr bounds) { |
703 ServerWindow* window = GetWindow(WindowIdFromTransportId(window_id)); | 732 ServerWindow* window = GetWindow(WindowIdFromTransportId(window_id)); |
704 if (window && ShouldRouteToWindowManager(window)) { | 733 if (window && ShouldRouteToWindowManager(window)) { |
705 const uint32_t wm_change_id = | 734 const uint32_t wm_change_id = |
706 connection_manager_->GenerateWindowManagerChangeId(this, change_id); | 735 connection_manager_->GenerateWindowManagerChangeId(this, change_id); |
707 GetHost()->GetWindowTree()->client_->WmSetBounds(wm_change_id, window_id, | 736 GetHost()->GetWindowTree()->client_->WmSetBounds(wm_change_id, window_id, |
708 bounds.Pass()); | 737 bounds.Pass()); |
709 return; | 738 return; |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
867 return connection && connection != this; | 896 return connection && connection != this; |
868 } | 897 } |
869 | 898 |
870 bool WindowTreeImpl::IsDescendantOfEmbedRoot(const ServerWindow* window) { | 899 bool WindowTreeImpl::IsDescendantOfEmbedRoot(const ServerWindow* window) { |
871 return is_embed_root_ && root_ && GetWindow(*root_)->Contains(window); | 900 return is_embed_root_ && root_ && GetWindow(*root_)->Contains(window); |
872 } | 901 } |
873 | 902 |
874 } // namespace ws | 903 } // namespace ws |
875 | 904 |
876 } // namespace mus | 905 } // namespace mus |
OLD | NEW |