| 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 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 const gfx::Rect& old_bounds, | 175 const gfx::Rect& old_bounds, |
| 176 const gfx::Rect& new_bounds, | 176 const gfx::Rect& new_bounds, |
| 177 bool originated_change) { | 177 bool originated_change) { |
| 178 if (originated_change || !IsWindowKnown(window)) | 178 if (originated_change || !IsWindowKnown(window)) |
| 179 return; | 179 return; |
| 180 client()->OnWindowBoundsChanged(WindowIdToTransportId(window->id()), | 180 client()->OnWindowBoundsChanged(WindowIdToTransportId(window->id()), |
| 181 Rect::From(old_bounds), | 181 Rect::From(old_bounds), |
| 182 Rect::From(new_bounds)); | 182 Rect::From(new_bounds)); |
| 183 } | 183 } |
| 184 | 184 |
| 185 void WindowTreeImpl::ProcessClientAreaChanged(const ServerWindow* window, | 185 void WindowTreeImpl::ProcessClientAreaChanged( |
| 186 const gfx::Rect& old_client_area, | 186 const ServerWindow* window, |
| 187 const gfx::Rect& new_client_area, | 187 const gfx::Insets& old_client_area, |
| 188 bool originated_change) { | 188 const gfx::Insets& new_client_area, |
| 189 bool originated_change) { |
| 189 if (originated_change || !IsWindowKnown(window)) | 190 if (originated_change || !IsWindowKnown(window)) |
| 190 return; | 191 return; |
| 191 client()->OnClientAreaChanged(WindowIdToTransportId(window->id()), | 192 client()->OnClientAreaChanged(WindowIdToTransportId(window->id()), |
| 192 Rect::From(old_client_area), | 193 mojo::Insets::From(old_client_area), |
| 193 Rect::From(new_client_area)); | 194 mojo::Insets::From(new_client_area)); |
| 194 } | 195 } |
| 195 | 196 |
| 196 void WindowTreeImpl::ProcessViewportMetricsChanged( | 197 void WindowTreeImpl::ProcessViewportMetricsChanged( |
| 197 const mojom::ViewportMetrics& old_metrics, | 198 const mojom::ViewportMetrics& old_metrics, |
| 198 const mojom::ViewportMetrics& new_metrics, | 199 const mojom::ViewportMetrics& new_metrics, |
| 199 bool originated_change) { | 200 bool originated_change) { |
| 200 client()->OnWindowViewportMetricsChanged(old_metrics.Clone(), | 201 client()->OnWindowViewportMetricsChanged(old_metrics.Clone(), |
| 201 new_metrics.Clone()); | 202 new_metrics.Clone()); |
| 202 } | 203 } |
| 203 | 204 |
| (...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 662 if (success) { | 663 if (success) { |
| 663 if (!state.is_null()) | 664 if (!state.is_null()) |
| 664 window->SetTextInputState(state.To<ui::TextInputState>()); | 665 window->SetTextInputState(state.To<ui::TextInputState>()); |
| 665 | 666 |
| 666 WindowTreeHostImpl* host = GetHost(); | 667 WindowTreeHostImpl* host = GetHost(); |
| 667 if (host) | 668 if (host) |
| 668 host->SetImeVisibility(window, visible); | 669 host->SetImeVisibility(window, visible); |
| 669 } | 670 } |
| 670 } | 671 } |
| 671 | 672 |
| 672 void WindowTreeImpl::SetClientArea(Id transport_window_id, mojo::RectPtr rect) { | 673 void WindowTreeImpl::SetClientArea(Id transport_window_id, |
| 674 mojo::InsetsPtr insets) { |
| 673 ServerWindow* window = | 675 ServerWindow* window = |
| 674 GetWindow(WindowIdFromTransportId(transport_window_id)); | 676 GetWindow(WindowIdFromTransportId(transport_window_id)); |
| 675 if (!window || !access_policy_->CanSetClientArea(window)) | 677 if (!window || !access_policy_->CanSetClientArea(window)) |
| 676 return; | 678 return; |
| 677 | 679 |
| 678 if (rect.is_null()) | 680 window->SetClientArea(insets.To<gfx::Insets>()); |
| 679 window->SetClientArea(gfx::Rect(window->bounds().size())); | |
| 680 else | |
| 681 window->SetClientArea(rect.To<gfx::Rect>()); | |
| 682 } | 681 } |
| 683 | 682 |
| 684 void WindowTreeImpl::Embed(Id transport_window_id, | 683 void WindowTreeImpl::Embed(Id transport_window_id, |
| 685 mojom::WindowTreeClientPtr client, | 684 mojom::WindowTreeClientPtr client, |
| 686 uint32_t policy_bitmask, | 685 uint32_t policy_bitmask, |
| 687 const EmbedCallback& callback) { | 686 const EmbedCallback& callback) { |
| 688 ConnectionSpecificId connection_id = kInvalidConnectionId; | 687 ConnectionSpecificId connection_id = kInvalidConnectionId; |
| 689 const bool result = Embed(WindowIdFromTransportId(transport_window_id), | 688 const bool result = Embed(WindowIdFromTransportId(transport_window_id), |
| 690 client.Pass(), policy_bitmask, &connection_id); | 689 client.Pass(), policy_bitmask, &connection_id); |
| 691 callback.Run(result, connection_id); | 690 callback.Run(result, connection_id); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 728 void WindowTreeImpl::SetShowState(uint32_t window_id, | 727 void WindowTreeImpl::SetShowState(uint32_t window_id, |
| 729 mojom::ShowState show_state, | 728 mojom::ShowState show_state, |
| 730 const SetShowStateCallback& callback) { | 729 const SetShowStateCallback& callback) { |
| 731 if (!GetHost() || !GetHost()->window_manager()) | 730 if (!GetHost() || !GetHost()->window_manager()) |
| 732 return; | 731 return; |
| 733 | 732 |
| 734 // TODO(sky): verify window_id is valid for the client. | 733 // TODO(sky): verify window_id is valid for the client. |
| 735 GetHost()->window_manager()->SetShowState(window_id, show_state, callback); | 734 GetHost()->window_manager()->SetShowState(window_id, show_state, callback); |
| 736 } | 735 } |
| 737 | 736 |
| 738 void WindowTreeImpl::GetDisplays(const GetDisplaysCallback& callback) { | |
| 739 if (!GetHost() || !GetHost()->window_manager()) | |
| 740 return; | |
| 741 | |
| 742 GetHost()->window_manager()->GetDisplays(callback); | |
| 743 } | |
| 744 | |
| 745 bool WindowTreeImpl::IsRootForAccessPolicy(const WindowId& id) const { | 737 bool WindowTreeImpl::IsRootForAccessPolicy(const WindowId& id) const { |
| 746 return IsRoot(id); | 738 return IsRoot(id); |
| 747 } | 739 } |
| 748 | 740 |
| 749 bool WindowTreeImpl::IsWindowKnownForAccessPolicy( | 741 bool WindowTreeImpl::IsWindowKnownForAccessPolicy( |
| 750 const ServerWindow* window) const { | 742 const ServerWindow* window) const { |
| 751 return IsWindowKnown(window); | 743 return IsWindowKnown(window); |
| 752 } | 744 } |
| 753 | 745 |
| 754 bool WindowTreeImpl::IsWindowRootOfAnotherConnectionForAccessPolicy( | 746 bool WindowTreeImpl::IsWindowRootOfAnotherConnectionForAccessPolicy( |
| 755 const ServerWindow* window) const { | 747 const ServerWindow* window) const { |
| 756 WindowTreeImpl* connection = | 748 WindowTreeImpl* connection = |
| 757 connection_manager_->GetConnectionWithRoot(window->id()); | 749 connection_manager_->GetConnectionWithRoot(window->id()); |
| 758 return connection && connection != this; | 750 return connection && connection != this; |
| 759 } | 751 } |
| 760 | 752 |
| 761 bool WindowTreeImpl::IsDescendantOfEmbedRoot(const ServerWindow* window) { | 753 bool WindowTreeImpl::IsDescendantOfEmbedRoot(const ServerWindow* window) { |
| 762 return is_embed_root_ && root_ && GetWindow(*root_)->Contains(window); | 754 return is_embed_root_ && root_ && GetWindow(*root_)->Contains(window); |
| 763 } | 755 } |
| 764 | 756 |
| 765 } // namespace ws | 757 } // namespace ws |
| 766 | 758 |
| 767 } // namespace mus | 759 } // namespace mus |
| OLD | NEW |