| 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 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 root_.reset(); | 112 root_.reset(); |
| 113 } | 113 } |
| 114 | 114 |
| 115 void WindowTreeImpl::NotifyChangeCompleted( | 115 void WindowTreeImpl::NotifyChangeCompleted( |
| 116 uint32_t change_id, | 116 uint32_t change_id, |
| 117 mojom::WindowManagerErrorCode error_code) { | 117 mojom::WindowManagerErrorCode error_code) { |
| 118 client_->OnChangeCompleted( | 118 client_->OnChangeCompleted( |
| 119 change_id, error_code == mojom::WINDOW_MANAGER_ERROR_CODE_SUCCESS); | 119 change_id, error_code == mojom::WINDOW_MANAGER_ERROR_CODE_SUCCESS); |
| 120 } | 120 } |
| 121 | 121 |
| 122 bool WindowTreeImpl::NewWindow(const WindowId& window_id) { | 122 bool WindowTreeImpl::NewWindow( |
| 123 const WindowId& window_id, |
| 124 const std::map<std::string, std::vector<uint8_t>>& properties) { |
| 123 if (window_id.connection_id != id_) | 125 if (window_id.connection_id != id_) |
| 124 return false; | 126 return false; |
| 125 if (window_map_.find(window_id.window_id) != window_map_.end()) | 127 if (window_map_.find(window_id.window_id) != window_map_.end()) |
| 126 return false; | 128 return false; |
| 127 window_map_[window_id.window_id] = | 129 window_map_[window_id.window_id] = |
| 128 connection_manager_->CreateServerWindow(window_id); | 130 connection_manager_->CreateServerWindow(window_id, properties); |
| 129 known_windows_.insert(WindowIdToTransportId(window_id)); | 131 known_windows_.insert(WindowIdToTransportId(window_id)); |
| 130 return true; | 132 return true; |
| 131 } | 133 } |
| 132 | 134 |
| 133 bool WindowTreeImpl::AddWindow(const WindowId& parent_id, | 135 bool WindowTreeImpl::AddWindow(const WindowId& parent_id, |
| 134 const WindowId& child_id) { | 136 const WindowId& child_id) { |
| 135 ServerWindow* parent = GetWindow(parent_id); | 137 ServerWindow* parent = GetWindow(parent_id); |
| 136 ServerWindow* child = GetWindow(child_id); | 138 ServerWindow* child = GetWindow(child_id); |
| 137 if (parent && child && child->parent() != parent && | 139 if (parent && child && child->parent() != parent && |
| 138 !child->Contains(parent) && access_policy_->CanAddWindow(parent, child)) { | 140 !child->Contains(parent) && access_policy_->CanAddWindow(parent, child)) { |
| (...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 598 | 600 |
| 599 void WindowTreeImpl::RemoveChildrenAsPartOfEmbed(const WindowId& window_id) { | 601 void WindowTreeImpl::RemoveChildrenAsPartOfEmbed(const WindowId& window_id) { |
| 600 ServerWindow* window = GetWindow(window_id); | 602 ServerWindow* window = GetWindow(window_id); |
| 601 CHECK(window); | 603 CHECK(window); |
| 602 CHECK(window->id().connection_id == window_id.connection_id); | 604 CHECK(window->id().connection_id == window_id.connection_id); |
| 603 std::vector<ServerWindow*> children = window->GetChildren(); | 605 std::vector<ServerWindow*> children = window->GetChildren(); |
| 604 for (size_t i = 0; i < children.size(); ++i) | 606 for (size_t i = 0; i < children.size(); ++i) |
| 605 window->Remove(children[i]); | 607 window->Remove(children[i]); |
| 606 } | 608 } |
| 607 | 609 |
| 608 void WindowTreeImpl::NewWindow(uint32_t change_id, Id transport_window_id) { | 610 void WindowTreeImpl::NewWindow( |
| 611 uint32_t change_id, |
| 612 Id transport_window_id, |
| 613 mojo::Map<mojo::String, mojo::Array<uint8_t>> transport_properties) { |
| 614 std::map<std::string, std::vector<uint8_t>> properties; |
| 615 if (!transport_properties.is_null()) { |
| 616 properties = |
| 617 transport_properties.To<std::map<std::string, std::vector<uint8_t>>>(); |
| 618 } |
| 609 client_->OnChangeCompleted( | 619 client_->OnChangeCompleted( |
| 610 change_id, NewWindow(WindowIdFromTransportId(transport_window_id))); | 620 change_id, |
| 621 NewWindow(WindowIdFromTransportId(transport_window_id), properties)); |
| 611 } | 622 } |
| 612 | 623 |
| 613 void WindowTreeImpl::DeleteWindow(Id transport_window_id, | 624 void WindowTreeImpl::DeleteWindow(Id transport_window_id, |
| 614 const Callback<void(bool)>& callback) { | 625 const Callback<void(bool)>& callback) { |
| 615 ServerWindow* window = | 626 ServerWindow* window = |
| 616 GetWindow(WindowIdFromTransportId(transport_window_id)); | 627 GetWindow(WindowIdFromTransportId(transport_window_id)); |
| 617 bool success = false; | 628 bool success = false; |
| 618 bool should_close = window && (access_policy_->CanDeleteWindow(window) || | 629 bool should_close = window && (access_policy_->CanDeleteWindow(window) || |
| 619 ShouldRouteToWindowManager(window)); | 630 ShouldRouteToWindowManager(window)); |
| 620 if (should_close) { | 631 if (should_close) { |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 846 return connection && connection != this; | 857 return connection && connection != this; |
| 847 } | 858 } |
| 848 | 859 |
| 849 bool WindowTreeImpl::IsDescendantOfEmbedRoot(const ServerWindow* window) { | 860 bool WindowTreeImpl::IsDescendantOfEmbedRoot(const ServerWindow* window) { |
| 850 return is_embed_root_ && root_ && GetWindow(*root_)->Contains(window); | 861 return is_embed_root_ && root_ && GetWindow(*root_)->Contains(window); |
| 851 } | 862 } |
| 852 | 863 |
| 853 } // namespace ws | 864 } // namespace ws |
| 854 | 865 |
| 855 } // namespace mus | 866 } // namespace mus |
| OLD | NEW |