| 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 346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 357 // Window is being hidden, won't be drawn. | 357 // Window is being hidden, won't be drawn. |
| 358 window_target_drawn_state = false; | 358 window_target_drawn_state = false; |
| 359 } else { | 359 } else { |
| 360 // Window is being shown. Window will be drawn if its parent is drawn. | 360 // Window is being shown. Window will be drawn if its parent is drawn. |
| 361 window_target_drawn_state = window->parent() && window->parent()->IsDrawn(); | 361 window_target_drawn_state = window->parent() && window->parent()->IsDrawn(); |
| 362 } | 362 } |
| 363 | 363 |
| 364 NotifyDrawnStateChanged(window, window_target_drawn_state); | 364 NotifyDrawnStateChanged(window, window_target_drawn_state); |
| 365 } | 365 } |
| 366 | 366 |
| 367 void WindowTreeImpl::ProcessCursorChanged(const ServerWindow* window, |
| 368 int32_t cursor_id, |
| 369 bool originated_change) { |
| 370 if (originated_change) |
| 371 return; |
| 372 client()->OnWindowSetPredefinedCursor(WindowIdToTransportId(window->id()), |
| 373 mojom::Cursor(cursor_id)); |
| 374 } |
| 375 |
| 367 void WindowTreeImpl::ProcessFocusChanged( | 376 void WindowTreeImpl::ProcessFocusChanged( |
| 368 const ServerWindow* old_focused_window, | 377 const ServerWindow* old_focused_window, |
| 369 const ServerWindow* new_focused_window) { | 378 const ServerWindow* new_focused_window) { |
| 370 const ServerWindow* window = | 379 const ServerWindow* window = |
| 371 new_focused_window | 380 new_focused_window |
| 372 ? access_policy_->GetWindowForFocusChange(new_focused_window) | 381 ? access_policy_->GetWindowForFocusChange(new_focused_window) |
| 373 : nullptr; | 382 : nullptr; |
| 374 client()->OnWindowFocused(window ? WindowIdToTransportId(window->id()) | 383 client()->OnWindowFocused(window ? WindowIdToTransportId(window->id()) |
| 375 : WindowIdToTransportId(WindowId())); | 384 : WindowIdToTransportId(WindowId())); |
| 376 } | 385 } |
| (...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 850 host->SetFocusedWindow(window); | 859 host->SetFocusedWindow(window); |
| 851 } | 860 } |
| 852 } | 861 } |
| 853 | 862 |
| 854 void WindowTreeImpl::SetCanFocus(uint32_t window_id, bool can_focus) { | 863 void WindowTreeImpl::SetCanFocus(uint32_t window_id, bool can_focus) { |
| 855 ServerWindow* window = GetWindow(WindowIdFromTransportId(window_id)); | 864 ServerWindow* window = GetWindow(WindowIdFromTransportId(window_id)); |
| 856 if (window && ShouldRouteToWindowManager(window)) | 865 if (window && ShouldRouteToWindowManager(window)) |
| 857 window->set_can_focus(can_focus); | 866 window->set_can_focus(can_focus); |
| 858 } | 867 } |
| 859 | 868 |
| 869 void WindowTreeImpl::SetPredefinedCursor(uint32_t change_id, |
| 870 uint32_t window_id, |
| 871 mus::mojom::Cursor cursor_id) { |
| 872 ServerWindow* window = GetWindow(WindowIdFromTransportId(window_id)); |
| 873 |
| 874 // Only the owner of the window can change the bounds. |
| 875 bool success = window && access_policy_->CanSetCursorProperties(window); |
| 876 if (success) { |
| 877 Operation op(this, connection_manager_, |
| 878 OperationType::SET_WINDOW_PREDEFINED_CURSOR); |
| 879 window->SetPredefinedCursor(cursor_id); |
| 880 } |
| 881 client_->OnChangeCompleted(change_id, success); |
| 882 } |
| 883 |
| 860 void WindowTreeImpl::WmResponse(uint32 change_id, bool response) { | 884 void WindowTreeImpl::WmResponse(uint32 change_id, bool response) { |
| 861 if (GetHost() && GetHost()->GetWindowTree() == this) | 885 if (GetHost() && GetHost()->GetWindowTree() == this) |
| 862 connection_manager_->WindowManagerChangeCompleted(change_id, response); | 886 connection_manager_->WindowManagerChangeCompleted(change_id, response); |
| 863 } | 887 } |
| 864 | 888 |
| 865 bool WindowTreeImpl::IsRootForAccessPolicy(const WindowId& id) const { | 889 bool WindowTreeImpl::IsRootForAccessPolicy(const WindowId& id) const { |
| 866 return IsRoot(id); | 890 return IsRoot(id); |
| 867 } | 891 } |
| 868 | 892 |
| 869 bool WindowTreeImpl::IsWindowKnownForAccessPolicy( | 893 bool WindowTreeImpl::IsWindowKnownForAccessPolicy( |
| 870 const ServerWindow* window) const { | 894 const ServerWindow* window) const { |
| 871 return IsWindowKnown(window); | 895 return IsWindowKnown(window); |
| 872 } | 896 } |
| 873 | 897 |
| 874 bool WindowTreeImpl::IsWindowRootOfAnotherConnectionForAccessPolicy( | 898 bool WindowTreeImpl::IsWindowRootOfAnotherConnectionForAccessPolicy( |
| 875 const ServerWindow* window) const { | 899 const ServerWindow* window) const { |
| 876 WindowTreeImpl* connection = | 900 WindowTreeImpl* connection = |
| 877 connection_manager_->GetConnectionWithRoot(window->id()); | 901 connection_manager_->GetConnectionWithRoot(window->id()); |
| 878 return connection && connection != this; | 902 return connection && connection != this; |
| 879 } | 903 } |
| 880 | 904 |
| 881 bool WindowTreeImpl::IsDescendantOfEmbedRoot(const ServerWindow* window) { | 905 bool WindowTreeImpl::IsDescendantOfEmbedRoot(const ServerWindow* window) { |
| 882 return is_embed_root_ && root_ && GetWindow(*root_)->Contains(window); | 906 return is_embed_root_ && root_ && GetWindow(*root_)->Contains(window); |
| 883 } | 907 } |
| 884 | 908 |
| 885 } // namespace ws | 909 } // namespace ws |
| 886 | 910 |
| 887 } // namespace mus | 911 } // namespace mus |
| OLD | NEW |