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/public/cpp/lib/window_tree_client_impl.h" | 5 #include "components/mus/public/cpp/lib/window_tree_client_impl.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
11 #include "components/mus/common/util.h" | 11 #include "components/mus/common/util.h" |
12 #include "components/mus/public/cpp/input_event_handler.h" | 12 #include "components/mus/public/cpp/input_event_handler.h" |
13 #include "components/mus/public/cpp/lib/in_flight_change.h" | 13 #include "components/mus/public/cpp/lib/in_flight_change.h" |
14 #include "components/mus/public/cpp/lib/window_private.h" | 14 #include "components/mus/public/cpp/lib/window_private.h" |
15 #include "components/mus/public/cpp/window_manager_delegate.h" | 15 #include "components/mus/public/cpp/window_manager_delegate.h" |
16 #include "components/mus/public/cpp/window_observer.h" | 16 #include "components/mus/public/cpp/window_observer.h" |
17 #include "components/mus/public/cpp/window_tracker.h" | 17 #include "components/mus/public/cpp/window_tracker.h" |
18 #include "components/mus/public/cpp/window_tree_connection.h" | 18 #include "components/mus/public/cpp/window_tree_connection.h" |
19 #include "components/mus/public/cpp/window_tree_connection_observer.h" | 19 #include "components/mus/public/cpp/window_tree_connection_observer.h" |
20 #include "components/mus/public/cpp/window_tree_delegate.h" | 20 #include "components/mus/public/cpp/window_tree_delegate.h" |
21 #include "mojo/converters/geometry/geometry_type_converters.h" | 21 #include "mojo/converters/geometry/geometry_type_converters.h" |
22 #include "mojo/shell/public/cpp/shell.h" | 22 #include "mojo/shell/public/cpp/connector.h" |
23 #include "ui/gfx/geometry/insets.h" | 23 #include "ui/gfx/geometry/insets.h" |
24 #include "ui/gfx/geometry/size.h" | 24 #include "ui/gfx/geometry/size.h" |
25 | 25 |
26 namespace mus { | 26 namespace mus { |
27 | 27 |
28 Id MakeTransportId(ConnectionSpecificId connection_id, | 28 Id MakeTransportId(ConnectionSpecificId connection_id, |
29 ConnectionSpecificId local_id) { | 29 ConnectionSpecificId local_id) { |
30 return (connection_id << 16) | local_id; | 30 return (connection_id << 16) | local_id; |
31 } | 31 } |
32 | 32 |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 Window* window = AddWindowToConnection( | 73 Window* window = AddWindowToConnection( |
74 client, !parents.empty() ? parents.back() : NULL, windows[i]); | 74 client, !parents.empty() ? parents.back() : NULL, windows[i]); |
75 if (!last_window) | 75 if (!last_window) |
76 root = window; | 76 root = window; |
77 last_window = window; | 77 last_window = window; |
78 } | 78 } |
79 return root; | 79 return root; |
80 } | 80 } |
81 | 81 |
82 WindowTreeConnection* WindowTreeConnection::Create(WindowTreeDelegate* delegate, | 82 WindowTreeConnection* WindowTreeConnection::Create(WindowTreeDelegate* delegate, |
83 mojo::Shell* shell) { | 83 mojo::Connector* connector) { |
84 WindowTreeClientImpl* client = | 84 WindowTreeClientImpl* client = |
85 new WindowTreeClientImpl(delegate, nullptr, nullptr); | 85 new WindowTreeClientImpl(delegate, nullptr, nullptr); |
86 client->ConnectViaWindowTreeFactory(shell); | 86 client->ConnectViaWindowTreeFactory(connector); |
87 return client; | 87 return client; |
88 } | 88 } |
89 | 89 |
90 WindowTreeConnection* WindowTreeConnection::Create( | 90 WindowTreeConnection* WindowTreeConnection::Create( |
91 WindowTreeDelegate* delegate, | 91 WindowTreeDelegate* delegate, |
92 mojo::InterfaceRequest<mojom::WindowTreeClient> request, | 92 mojo::InterfaceRequest<mojom::WindowTreeClient> request, |
93 CreateType create_type) { | 93 CreateType create_type) { |
94 WindowTreeClientImpl* client = | 94 WindowTreeClientImpl* client = |
95 new WindowTreeClientImpl(delegate, nullptr, std::move(request)); | 95 new WindowTreeClientImpl(delegate, nullptr, std::move(request)); |
96 if (create_type == CreateType::WAIT_FOR_EMBED) | 96 if (create_type == CreateType::WAIT_FOR_EMBED) |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 // exception is the window manager and embed roots, which may know about | 152 // exception is the window manager and embed roots, which may know about |
153 // other random windows that it doesn't own. | 153 // other random windows that it doesn't own. |
154 // NOTE: we manually delete as we're a friend. | 154 // NOTE: we manually delete as we're a friend. |
155 while (!tracker.windows().empty()) | 155 while (!tracker.windows().empty()) |
156 delete tracker.windows().front(); | 156 delete tracker.windows().front(); |
157 | 157 |
158 delegate_->OnConnectionLost(this); | 158 delegate_->OnConnectionLost(this); |
159 } | 159 } |
160 | 160 |
161 void WindowTreeClientImpl::ConnectViaWindowTreeFactory( | 161 void WindowTreeClientImpl::ConnectViaWindowTreeFactory( |
162 mojo::Shell* shell) { | 162 mojo::Connector* connector) { |
163 // Clients created with no root shouldn't delete automatically. | 163 // Clients created with no root shouldn't delete automatically. |
164 delete_on_no_roots_ = false; | 164 delete_on_no_roots_ = false; |
165 | 165 |
166 // The connection id doesn't really matter, we use 101 purely for debugging. | 166 // The connection id doesn't really matter, we use 101 purely for debugging. |
167 connection_id_ = 101; | 167 connection_id_ = 101; |
168 | 168 |
169 mojom::WindowTreeFactoryPtr factory; | 169 mojom::WindowTreeFactoryPtr factory; |
170 shell->ConnectToInterface("mojo:mus", &factory); | 170 connector->ConnectToInterface("mojo:mus", &factory); |
171 factory->CreateWindowTree(GetProxy(&tree_ptr_), | 171 factory->CreateWindowTree(GetProxy(&tree_ptr_), |
172 binding_.CreateInterfacePtrAndBind()); | 172 binding_.CreateInterfacePtrAndBind()); |
173 tree_ = tree_ptr_.get(); | 173 tree_ = tree_ptr_.get(); |
174 } | 174 } |
175 | 175 |
176 void WindowTreeClientImpl::WaitForEmbed() { | 176 void WindowTreeClientImpl::WaitForEmbed() { |
177 DCHECK(roots_.empty()); | 177 DCHECK(roots_.empty()); |
178 // OnEmbed() is the first function called. | 178 // OnEmbed() is the first function called. |
179 binding_.WaitForIncomingMethodCall(); | 179 binding_.WaitForIncomingMethodCall(); |
180 // TODO(sky): deal with pipe being closed before we get OnEmbed(). | 180 // TODO(sky): deal with pipe being closed before we get OnEmbed(). |
(...skipping 798 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
979 | 979 |
980 void WindowTreeClientImpl::SetUnderlaySurfaceOffsetAndExtendedHitArea( | 980 void WindowTreeClientImpl::SetUnderlaySurfaceOffsetAndExtendedHitArea( |
981 Window* window, | 981 Window* window, |
982 const gfx::Vector2d& offset, | 982 const gfx::Vector2d& offset, |
983 const gfx::Insets& hit_area) { | 983 const gfx::Insets& hit_area) { |
984 window_manager_internal_client_->SetUnderlaySurfaceOffsetAndExtendedHitArea( | 984 window_manager_internal_client_->SetUnderlaySurfaceOffsetAndExtendedHitArea( |
985 window->id(), offset.x(), offset.y(), mojo::Insets::From(hit_area)); | 985 window->id(), offset.x(), offset.y(), mojo::Insets::From(hit_area)); |
986 } | 986 } |
987 | 987 |
988 } // namespace mus | 988 } // namespace mus |
OLD | NEW |