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 "mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.h" | 5 #include "mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
10 #include "mojo/public/cpp/application/application_connection.h" | 10 #include "mojo/public/cpp/application/application_connection.h" |
11 #include "mojo/public/cpp/application/connect.h" | 11 #include "mojo/public/cpp/application/connect.h" |
12 #include "mojo/public/cpp/application/service_provider_impl.h" | 12 #include "mojo/public/cpp/application/service_provider_impl.h" |
13 #include "mojo/public/interfaces/application/service_provider.mojom.h" | 13 #include "mojo/public/interfaces/application/service_provider.mojom.h" |
14 #include "mojo/services/public/cpp/view_manager/lib/node_private.h" | 14 #include "mojo/services/public/cpp/view_manager/lib/view_private.h" |
15 #include "mojo/services/public/cpp/view_manager/node_observer.h" | |
16 #include "mojo/services/public/cpp/view_manager/util.h" | 15 #include "mojo/services/public/cpp/view_manager/util.h" |
17 #include "mojo/services/public/cpp/view_manager/view_manager_delegate.h" | 16 #include "mojo/services/public/cpp/view_manager/view_manager_delegate.h" |
| 17 #include "mojo/services/public/cpp/view_manager/view_observer.h" |
18 #include "mojo/services/public/cpp/view_manager/window_manager_delegate.h" | 18 #include "mojo/services/public/cpp/view_manager/window_manager_delegate.h" |
19 #include "third_party/skia/include/core/SkBitmap.h" | 19 #include "third_party/skia/include/core/SkBitmap.h" |
20 #include "ui/gfx/codec/png_codec.h" | 20 #include "ui/gfx/codec/png_codec.h" |
21 | 21 |
22 namespace mojo { | 22 namespace mojo { |
23 | 23 |
24 Id MakeTransportId(ConnectionSpecificId connection_id, | 24 Id MakeTransportId(ConnectionSpecificId connection_id, |
25 ConnectionSpecificId local_id) { | 25 ConnectionSpecificId local_id) { |
26 return (connection_id << 16) | local_id; | 26 return (connection_id << 16) | local_id; |
27 } | 27 } |
28 | 28 |
29 // Helper called to construct a local node/view object from transport data. | 29 // Helper called to construct a local view object from transport data. |
30 Node* AddNodeToViewManager(ViewManagerClientImpl* client, | 30 View* AddViewToViewManager(ViewManagerClientImpl* client, |
31 Node* parent, | 31 View* parent, |
32 Id node_id, | 32 Id view_id, |
33 const gfx::Rect& bounds) { | 33 const gfx::Rect& bounds) { |
34 // We don't use the ctor that takes a ViewManager here, since it will call | 34 // We don't use the ctor that takes a ViewManager here, since it will call |
35 // back to the service and attempt to create a new node. | 35 // back to the service and attempt to create a new view. |
36 Node* node = NodePrivate::LocalCreate(); | 36 View* view = ViewPrivate::LocalCreate(); |
37 NodePrivate private_node(node); | 37 ViewPrivate private_view(view); |
38 private_node.set_view_manager(client); | 38 private_view.set_view_manager(client); |
39 private_node.set_id(node_id); | 39 private_view.set_id(view_id); |
40 client->AddNode(node); | 40 client->AddView(view); |
41 private_node.LocalSetBounds(gfx::Rect(), bounds); | 41 private_view.LocalSetBounds(gfx::Rect(), bounds); |
42 if (parent) | 42 if (parent) |
43 NodePrivate(parent).LocalAddChild(node); | 43 ViewPrivate(parent).LocalAddChild(view); |
44 return node; | 44 return view; |
45 } | 45 } |
46 | 46 |
47 Node* BuildNodeTree(ViewManagerClientImpl* client, | 47 View* BuildViewTree(ViewManagerClientImpl* client, |
48 const Array<NodeDataPtr>& nodes, | 48 const Array<ViewDataPtr>& views, |
49 Node* initial_parent) { | 49 View* initial_parent) { |
50 std::vector<Node*> parents; | 50 std::vector<View*> parents; |
51 Node* root = NULL; | 51 View* root = NULL; |
52 Node* last_node = NULL; | 52 View* last_view = NULL; |
53 if (initial_parent) | 53 if (initial_parent) |
54 parents.push_back(initial_parent); | 54 parents.push_back(initial_parent); |
55 for (size_t i = 0; i < nodes.size(); ++i) { | 55 for (size_t i = 0; i < views.size(); ++i) { |
56 if (last_node && nodes[i]->parent_id == last_node->id()) { | 56 if (last_view && views[i]->parent_id == last_view->id()) { |
57 parents.push_back(last_node); | 57 parents.push_back(last_view); |
58 } else if (!parents.empty()) { | 58 } else if (!parents.empty()) { |
59 while (parents.back()->id() != nodes[i]->parent_id) | 59 while (parents.back()->id() != views[i]->parent_id) |
60 parents.pop_back(); | 60 parents.pop_back(); |
61 } | 61 } |
62 Node* node = AddNodeToViewManager( | 62 View* view = AddViewToViewManager( |
63 client, | 63 client, |
64 !parents.empty() ? parents.back() : NULL, | 64 !parents.empty() ? parents.back() : NULL, |
65 nodes[i]->node_id, | 65 views[i]->view_id, |
66 nodes[i]->bounds.To<gfx::Rect>()); | 66 views[i]->bounds.To<gfx::Rect>()); |
67 if (!last_node) | 67 if (!last_view) |
68 root = node; | 68 root = view; |
69 last_node = node; | 69 last_view = view; |
70 } | 70 } |
71 return root; | 71 return root; |
72 } | 72 } |
73 | 73 |
74 // Responsible for removing a root from the ViewManager when that node is | 74 // Responsible for removing a root from the ViewManager when that view is |
75 // destroyed. | 75 // destroyed. |
76 class RootObserver : public NodeObserver { | 76 class RootObserver : public ViewObserver { |
77 public: | 77 public: |
78 explicit RootObserver(Node* root) : root_(root) {} | 78 explicit RootObserver(View* root) : root_(root) {} |
79 virtual ~RootObserver() {} | 79 virtual ~RootObserver() {} |
80 | 80 |
81 private: | 81 private: |
82 // Overridden from NodeObserver: | 82 // Overridden from ViewObserver: |
83 virtual void OnNodeDestroyed(Node* node) OVERRIDE { | 83 virtual void OnViewDestroyed(View* view) OVERRIDE { |
84 DCHECK_EQ(node, root_); | 84 DCHECK_EQ(view, root_); |
85 static_cast<ViewManagerClientImpl*>( | 85 static_cast<ViewManagerClientImpl*>( |
86 NodePrivate(root_).view_manager())->RemoveRoot(root_); | 86 ViewPrivate(root_).view_manager())->RemoveRoot(root_); |
87 node->RemoveObserver(this); | 87 view->RemoveObserver(this); |
88 delete this; | 88 delete this; |
89 } | 89 } |
90 | 90 |
91 Node* root_; | 91 View* root_; |
92 | 92 |
93 DISALLOW_COPY_AND_ASSIGN(RootObserver); | 93 DISALLOW_COPY_AND_ASSIGN(RootObserver); |
94 }; | 94 }; |
95 | 95 |
96 bool CreateMapAndDupSharedBuffer(size_t size, | 96 bool CreateMapAndDupSharedBuffer(size_t size, |
97 void** memory, | 97 void** memory, |
98 ScopedSharedBufferHandle* handle, | 98 ScopedSharedBufferHandle* handle, |
99 ScopedSharedBufferHandle* duped) { | 99 ScopedSharedBufferHandle* duped) { |
100 MojoResult result = CreateSharedBuffer(NULL, size, handle); | 100 MojoResult result = CreateSharedBuffer(NULL, size, handle); |
101 if (result != MOJO_RESULT_OK) | 101 if (result != MOJO_RESULT_OK) |
(...skipping 16 matching lines...) Expand all Loading... |
118 | 118 |
119 ViewManagerClientImpl::ViewManagerClientImpl(ViewManagerDelegate* delegate) | 119 ViewManagerClientImpl::ViewManagerClientImpl(ViewManagerDelegate* delegate) |
120 : connected_(false), | 120 : connected_(false), |
121 connection_id_(0), | 121 connection_id_(0), |
122 next_id_(1), | 122 next_id_(1), |
123 delegate_(delegate), | 123 delegate_(delegate), |
124 window_manager_delegate_(NULL) { | 124 window_manager_delegate_(NULL) { |
125 } | 125 } |
126 | 126 |
127 ViewManagerClientImpl::~ViewManagerClientImpl() { | 127 ViewManagerClientImpl::~ViewManagerClientImpl() { |
128 std::vector<Node*> non_owned; | 128 std::vector<View*> non_owned; |
129 while (!nodes_.empty()) { | 129 while (!views_.empty()) { |
130 IdToNodeMap::iterator it = nodes_.begin(); | 130 IdToViewMap::iterator it = views_.begin(); |
131 if (OwnsNode(it->second->id())) { | 131 if (OwnsView(it->second->id())) { |
132 it->second->Destroy(); | 132 it->second->Destroy(); |
133 } else { | 133 } else { |
134 non_owned.push_back(it->second); | 134 non_owned.push_back(it->second); |
135 nodes_.erase(it); | 135 views_.erase(it); |
136 } | 136 } |
137 } | 137 } |
138 // Delete the non-owned nodes last. In the typical case these are roots. The | 138 // Delete the non-owned views last. In the typical case these are roots. The |
139 // exception is the window manager, which may know aboutother random nodes | 139 // exception is the window manager, which may know aboutother random views |
140 // that it doesn't own. | 140 // that it doesn't own. |
141 // NOTE: we manually delete as we're a friend. | 141 // NOTE: we manually delete as we're a friend. |
142 for (size_t i = 0; i < non_owned.size(); ++i) | 142 for (size_t i = 0; i < non_owned.size(); ++i) |
143 delete non_owned[i]; | 143 delete non_owned[i]; |
144 delegate_->OnViewManagerDisconnected(this); | 144 delegate_->OnViewManagerDisconnected(this); |
145 } | 145 } |
146 | 146 |
147 Id ViewManagerClientImpl::CreateNode() { | 147 Id ViewManagerClientImpl::CreateView() { |
148 DCHECK(connected_); | 148 DCHECK(connected_); |
149 const Id node_id = MakeTransportId(connection_id_, ++next_id_); | 149 const Id view_id = MakeTransportId(connection_id_, ++next_id_); |
150 service_->CreateNode(node_id, ActionCompletedCallbackWithErrorCode()); | 150 service_->CreateView(view_id, ActionCompletedCallbackWithErrorCode()); |
151 return node_id; | 151 return view_id; |
152 } | 152 } |
153 | 153 |
154 void ViewManagerClientImpl::DestroyNode(Id node_id) { | 154 void ViewManagerClientImpl::DestroyView(Id view_id) { |
155 DCHECK(connected_); | 155 DCHECK(connected_); |
156 service_->DeleteNode(node_id, ActionCompletedCallback()); | 156 service_->DeleteView(view_id, ActionCompletedCallback()); |
157 } | 157 } |
158 | 158 |
159 void ViewManagerClientImpl::AddChild(Id child_id, Id parent_id) { | 159 void ViewManagerClientImpl::AddChild(Id child_id, Id parent_id) { |
160 DCHECK(connected_); | 160 DCHECK(connected_); |
161 service_->AddNode(parent_id, child_id, ActionCompletedCallback()); | 161 service_->AddView(parent_id, child_id, ActionCompletedCallback()); |
162 } | 162 } |
163 | 163 |
164 void ViewManagerClientImpl::RemoveChild(Id child_id, Id parent_id) { | 164 void ViewManagerClientImpl::RemoveChild(Id child_id, Id parent_id) { |
165 DCHECK(connected_); | 165 DCHECK(connected_); |
166 service_->RemoveNodeFromParent(child_id, ActionCompletedCallback()); | 166 service_->RemoveViewFromParent(child_id, ActionCompletedCallback()); |
167 } | 167 } |
168 | 168 |
169 void ViewManagerClientImpl::Reorder( | 169 void ViewManagerClientImpl::Reorder( |
170 Id node_id, | 170 Id view_id, |
171 Id relative_node_id, | 171 Id relative_view_id, |
172 OrderDirection direction) { | 172 OrderDirection direction) { |
173 DCHECK(connected_); | 173 DCHECK(connected_); |
174 service_->ReorderNode(node_id, relative_node_id, direction, | 174 service_->ReorderView(view_id, relative_view_id, direction, |
175 ActionCompletedCallback()); | 175 ActionCompletedCallback()); |
176 } | 176 } |
177 | 177 |
178 bool ViewManagerClientImpl::OwnsNode(Id id) const { | 178 bool ViewManagerClientImpl::OwnsView(Id id) const { |
179 return HiWord(id) == connection_id_; | 179 return HiWord(id) == connection_id_; |
180 } | 180 } |
181 | 181 |
182 void ViewManagerClientImpl::SetBounds(Id node_id, const gfx::Rect& bounds) { | 182 void ViewManagerClientImpl::SetBounds(Id view_id, const gfx::Rect& bounds) { |
183 DCHECK(connected_); | 183 DCHECK(connected_); |
184 service_->SetNodeBounds(node_id, Rect::From(bounds), | 184 service_->SetViewBounds(view_id, Rect::From(bounds), |
185 ActionCompletedCallback()); | 185 ActionCompletedCallback()); |
186 } | 186 } |
187 | 187 |
188 void ViewManagerClientImpl::SetNodeContents(Id node_id, | 188 void ViewManagerClientImpl::SetViewContents(Id view_id, |
189 const SkBitmap& contents) { | 189 const SkBitmap& contents) { |
190 DCHECK(connected_); | 190 DCHECK(connected_); |
191 std::vector<unsigned char> data; | 191 std::vector<unsigned char> data; |
192 gfx::PNGCodec::EncodeBGRASkBitmap(contents, false, &data); | 192 gfx::PNGCodec::EncodeBGRASkBitmap(contents, false, &data); |
193 | 193 |
194 void* memory = NULL; | 194 void* memory = NULL; |
195 ScopedSharedBufferHandle duped, shared_state_handle; | 195 ScopedSharedBufferHandle duped, shared_state_handle; |
196 bool result = CreateMapAndDupSharedBuffer(data.size(), | 196 bool result = CreateMapAndDupSharedBuffer(data.size(), |
197 &memory, | 197 &memory, |
198 &shared_state_handle, | 198 &shared_state_handle, |
199 &duped); | 199 &duped); |
200 if (!result) | 200 if (!result) |
201 return; | 201 return; |
202 | 202 |
203 memcpy(memory, &data[0], data.size()); | 203 memcpy(memory, &data[0], data.size()); |
204 | 204 |
205 service_->SetNodeContents(node_id, duped.Pass(), | 205 service_->SetViewContents(view_id, duped.Pass(), |
206 static_cast<uint32_t>(data.size()), | 206 static_cast<uint32_t>(data.size()), |
207 ActionCompletedCallback()); | 207 ActionCompletedCallback()); |
208 } | 208 } |
209 | 209 |
210 void ViewManagerClientImpl::SetFocus(Id node_id) { | 210 void ViewManagerClientImpl::SetFocus(Id view_id) { |
211 DCHECK(connected_); | 211 DCHECK(connected_); |
212 service_->SetFocus(node_id, ActionCompletedCallback()); | 212 service_->SetFocus(view_id, ActionCompletedCallback()); |
213 } | 213 } |
214 | 214 |
215 void ViewManagerClientImpl::SetVisible(Id node_id, bool visible) { | 215 void ViewManagerClientImpl::SetVisible(Id view_id, bool visible) { |
216 DCHECK(connected_); | 216 DCHECK(connected_); |
217 service_->SetNodeVisibility(node_id, visible, ActionCompletedCallback()); | 217 service_->SetViewVisibility(view_id, visible, ActionCompletedCallback()); |
218 } | 218 } |
219 | 219 |
220 void ViewManagerClientImpl::Embed(const String& url, Id node_id) { | 220 void ViewManagerClientImpl::Embed(const String& url, Id view_id) { |
221 ServiceProviderPtr sp; | 221 ServiceProviderPtr sp; |
222 BindToProxy(new ServiceProviderImpl, &sp); | 222 BindToProxy(new ServiceProviderImpl, &sp); |
223 Embed(url, node_id, sp.Pass()); | 223 Embed(url, view_id, sp.Pass()); |
224 } | 224 } |
225 | 225 |
226 void ViewManagerClientImpl::Embed( | 226 void ViewManagerClientImpl::Embed( |
227 const String& url, | 227 const String& url, |
228 Id node_id, | 228 Id view_id, |
229 ServiceProviderPtr service_provider) { | 229 ServiceProviderPtr service_provider) { |
230 DCHECK(connected_); | 230 DCHECK(connected_); |
231 service_->Embed(url, node_id, service_provider.Pass(), | 231 service_->Embed(url, view_id, service_provider.Pass(), |
232 ActionCompletedCallback()); | 232 ActionCompletedCallback()); |
233 } | 233 } |
234 | 234 |
235 void ViewManagerClientImpl::AddNode(Node* node) { | 235 void ViewManagerClientImpl::AddView(View* view) { |
236 DCHECK(nodes_.find(node->id()) == nodes_.end()); | 236 DCHECK(views_.find(view->id()) == views_.end()); |
237 nodes_[node->id()] = node; | 237 views_[view->id()] = view; |
238 } | 238 } |
239 | 239 |
240 void ViewManagerClientImpl::RemoveNode(Id node_id) { | 240 void ViewManagerClientImpl::RemoveView(Id view_id) { |
241 IdToNodeMap::iterator it = nodes_.find(node_id); | 241 IdToViewMap::iterator it = views_.find(view_id); |
242 if (it != nodes_.end()) | 242 if (it != views_.end()) |
243 nodes_.erase(it); | 243 views_.erase(it); |
244 } | 244 } |
245 | 245 |
246 //////////////////////////////////////////////////////////////////////////////// | 246 //////////////////////////////////////////////////////////////////////////////// |
247 // ViewManagerClientImpl, ViewManager implementation: | 247 // ViewManagerClientImpl, ViewManager implementation: |
248 | 248 |
249 void ViewManagerClientImpl::SetWindowManagerDelegate( | 249 void ViewManagerClientImpl::SetWindowManagerDelegate( |
250 WindowManagerDelegate* window_manager_delegate) { | 250 WindowManagerDelegate* window_manager_delegate) { |
251 CHECK(NULL != GetNodeById(1)); | 251 CHECK(NULL != GetViewById(1)); |
252 window_manager_delegate_ = window_manager_delegate; | 252 window_manager_delegate_ = window_manager_delegate; |
253 } | 253 } |
254 | 254 |
255 void ViewManagerClientImpl::DispatchEvent(Node* target, EventPtr event) { | 255 void ViewManagerClientImpl::DispatchEvent(View* target, EventPtr event) { |
256 CHECK(window_manager_delegate_); | 256 CHECK(window_manager_delegate_); |
257 service_->DispatchOnNodeInputEvent(target->id(), event.Pass()); | 257 service_->DispatchOnViewInputEvent(target->id(), event.Pass()); |
258 } | 258 } |
259 | 259 |
260 const std::string& ViewManagerClientImpl::GetEmbedderURL() const { | 260 const std::string& ViewManagerClientImpl::GetEmbedderURL() const { |
261 return creator_url_; | 261 return creator_url_; |
262 } | 262 } |
263 | 263 |
264 const std::vector<Node*>& ViewManagerClientImpl::GetRoots() const { | 264 const std::vector<View*>& ViewManagerClientImpl::GetRoots() const { |
265 return roots_; | 265 return roots_; |
266 } | 266 } |
267 | 267 |
268 Node* ViewManagerClientImpl::GetNodeById(Id id) { | 268 View* ViewManagerClientImpl::GetViewById(Id id) { |
269 IdToNodeMap::const_iterator it = nodes_.find(id); | 269 IdToViewMap::const_iterator it = views_.find(id); |
270 return it != nodes_.end() ? it->second : NULL; | 270 return it != views_.end() ? it->second : NULL; |
271 } | 271 } |
272 | 272 |
273 //////////////////////////////////////////////////////////////////////////////// | 273 //////////////////////////////////////////////////////////////////////////////// |
274 // ViewManagerClientImpl, InterfaceImpl overrides: | 274 // ViewManagerClientImpl, InterfaceImpl overrides: |
275 | 275 |
276 void ViewManagerClientImpl::OnConnectionEstablished() { | 276 void ViewManagerClientImpl::OnConnectionEstablished() { |
277 service_ = client(); | 277 service_ = client(); |
278 } | 278 } |
279 | 279 |
280 //////////////////////////////////////////////////////////////////////////////// | 280 //////////////////////////////////////////////////////////////////////////////// |
281 // ViewManagerClientImpl, ViewManagerClient implementation: | 281 // ViewManagerClientImpl, ViewManagerClient implementation: |
282 | 282 |
283 void ViewManagerClientImpl::OnEmbed( | 283 void ViewManagerClientImpl::OnEmbed( |
284 ConnectionSpecificId connection_id, | 284 ConnectionSpecificId connection_id, |
285 const String& creator_url, | 285 const String& creator_url, |
286 NodeDataPtr root_data, | 286 ViewDataPtr root_data, |
287 InterfaceRequest<ServiceProvider> service_provider) { | 287 InterfaceRequest<ServiceProvider> service_provider) { |
288 if (!connected_) { | 288 if (!connected_) { |
289 connected_ = true; | 289 connected_ = true; |
290 connection_id_ = connection_id; | 290 connection_id_ = connection_id; |
291 creator_url_ = TypeConverter<String, std::string>::ConvertFrom(creator_url); | 291 creator_url_ = TypeConverter<String, std::string>::ConvertFrom(creator_url); |
292 } else { | 292 } else { |
293 DCHECK_EQ(connection_id_, connection_id); | 293 DCHECK_EQ(connection_id_, connection_id); |
294 DCHECK_EQ(creator_url_, creator_url); | 294 DCHECK_EQ(creator_url_, creator_url); |
295 } | 295 } |
296 | 296 |
297 // A new root must not already exist as a root or be contained by an existing | 297 // A new root must not already exist as a root or be contained by an existing |
298 // hierarchy visible to this view manager. | 298 // hierarchy visible to this view manager. |
299 Node* root = AddNodeToViewManager(this, NULL, root_data->node_id, | 299 View* root = AddViewToViewManager(this, NULL, root_data->view_id, |
300 root_data->bounds.To<gfx::Rect>()); | 300 root_data->bounds.To<gfx::Rect>()); |
301 roots_.push_back(root); | 301 roots_.push_back(root); |
302 root->AddObserver(new RootObserver(root)); | 302 root->AddObserver(new RootObserver(root)); |
303 | 303 |
304 // BindToRequest() binds the lifetime of |exported_services| to the pipe. | 304 // BindToRequest() binds the lifetime of |exported_services| to the pipe. |
305 ServiceProviderImpl* exported_services = new ServiceProviderImpl; | 305 ServiceProviderImpl* exported_services = new ServiceProviderImpl; |
306 BindToRequest(exported_services, &service_provider); | 306 BindToRequest(exported_services, &service_provider); |
307 scoped_ptr<ServiceProvider> remote( | 307 scoped_ptr<ServiceProvider> remote( |
308 exported_services->CreateRemoteServiceProvider()); | 308 exported_services->CreateRemoteServiceProvider()); |
309 delegate_->OnEmbed(this, root, exported_services, remote.Pass()); | 309 delegate_->OnEmbed(this, root, exported_services, remote.Pass()); |
310 } | 310 } |
311 | 311 |
312 void ViewManagerClientImpl::OnNodeBoundsChanged(Id node_id, | 312 void ViewManagerClientImpl::OnViewBoundsChanged(Id view_id, |
313 RectPtr old_bounds, | 313 RectPtr old_bounds, |
314 RectPtr new_bounds) { | 314 RectPtr new_bounds) { |
315 Node* node = GetNodeById(node_id); | 315 View* view = GetViewById(view_id); |
316 NodePrivate(node).LocalSetBounds(old_bounds.To<gfx::Rect>(), | 316 ViewPrivate(view).LocalSetBounds(old_bounds.To<gfx::Rect>(), |
317 new_bounds.To<gfx::Rect>()); | 317 new_bounds.To<gfx::Rect>()); |
318 } | 318 } |
319 | 319 |
320 void ViewManagerClientImpl::OnNodeHierarchyChanged( | 320 void ViewManagerClientImpl::OnViewHierarchyChanged( |
321 Id node_id, | 321 Id view_id, |
322 Id new_parent_id, | 322 Id new_parent_id, |
323 Id old_parent_id, | 323 Id old_parent_id, |
324 mojo::Array<NodeDataPtr> nodes) { | 324 mojo::Array<ViewDataPtr> views) { |
325 Node* initial_parent = nodes.size() ? | 325 View* initial_parent = views.size() ? |
326 GetNodeById(nodes[0]->parent_id) : NULL; | 326 GetViewById(views[0]->parent_id) : NULL; |
327 | 327 |
328 BuildNodeTree(this, nodes, initial_parent); | 328 BuildViewTree(this, views, initial_parent); |
329 | 329 |
330 Node* new_parent = GetNodeById(new_parent_id); | 330 View* new_parent = GetViewById(new_parent_id); |
331 Node* old_parent = GetNodeById(old_parent_id); | 331 View* old_parent = GetViewById(old_parent_id); |
332 Node* node = GetNodeById(node_id); | 332 View* view = GetViewById(view_id); |
333 if (new_parent) | 333 if (new_parent) |
334 NodePrivate(new_parent).LocalAddChild(node); | 334 ViewPrivate(new_parent).LocalAddChild(view); |
335 else | 335 else |
336 NodePrivate(old_parent).LocalRemoveChild(node); | 336 ViewPrivate(old_parent).LocalRemoveChild(view); |
337 } | 337 } |
338 | 338 |
339 void ViewManagerClientImpl::OnNodeReordered(Id node_id, | 339 void ViewManagerClientImpl::OnViewReordered(Id view_id, |
340 Id relative_node_id, | 340 Id relative_view_id, |
341 OrderDirection direction) { | 341 OrderDirection direction) { |
342 Node* node = GetNodeById(node_id); | 342 View* view = GetViewById(view_id); |
343 Node* relative_node = GetNodeById(relative_node_id); | 343 View* relative_view = GetViewById(relative_view_id); |
344 if (node && relative_node) | 344 if (view && relative_view) |
345 NodePrivate(node).LocalReorder(relative_node, direction); | 345 ViewPrivate(view).LocalReorder(relative_view, direction); |
346 } | 346 } |
347 | 347 |
348 void ViewManagerClientImpl::OnNodeDeleted(Id node_id) { | 348 void ViewManagerClientImpl::OnViewDeleted(Id view_id) { |
349 Node* node = GetNodeById(node_id); | 349 View* view = GetViewById(view_id); |
350 if (node) | 350 if (view) |
351 NodePrivate(node).LocalDestroy(); | 351 ViewPrivate(view).LocalDestroy(); |
352 } | 352 } |
353 | 353 |
354 void ViewManagerClientImpl::OnNodeInputEvent( | 354 void ViewManagerClientImpl::OnViewInputEvent( |
355 Id node_id, | 355 Id view_id, |
356 EventPtr event, | 356 EventPtr event, |
357 const Callback<void()>& ack_callback) { | 357 const Callback<void()>& ack_callback) { |
358 Node* node = GetNodeById(node_id); | 358 View* view = GetViewById(view_id); |
359 if (node) { | 359 if (view) { |
360 FOR_EACH_OBSERVER(NodeObserver, | 360 FOR_EACH_OBSERVER(ViewObserver, |
361 *NodePrivate(node).observers(), | 361 *ViewPrivate(view).observers(), |
362 OnNodeInputEvent(node, event)); | 362 OnViewInputEvent(view, event)); |
363 } | 363 } |
364 ack_callback.Run(); | 364 ack_callback.Run(); |
365 } | 365 } |
366 | 366 |
367 void ViewManagerClientImpl::OnFocusChanged(Id gained_focus_id, | 367 void ViewManagerClientImpl::OnFocusChanged(Id gained_focus_id, |
368 Id lost_focus_id) { | 368 Id lost_focus_id) { |
369 Node* focused = GetNodeById(gained_focus_id); | 369 View* focused = GetViewById(gained_focus_id); |
370 Node* blurred = GetNodeById(lost_focus_id); | 370 View* blurred = GetViewById(lost_focus_id); |
371 if (blurred) { | 371 if (blurred) { |
372 FOR_EACH_OBSERVER(NodeObserver, | 372 FOR_EACH_OBSERVER(ViewObserver, |
373 *NodePrivate(blurred).observers(), | 373 *ViewPrivate(blurred).observers(), |
374 OnNodeFocusChanged(focused, blurred)); | 374 OnViewFocusChanged(focused, blurred)); |
375 } | 375 } |
376 if (focused) { | 376 if (focused) { |
377 FOR_EACH_OBSERVER(NodeObserver, | 377 FOR_EACH_OBSERVER(ViewObserver, |
378 *NodePrivate(focused).observers(), | 378 *ViewPrivate(focused).observers(), |
379 OnNodeFocusChanged(focused, blurred)); | 379 OnViewFocusChanged(focused, blurred)); |
380 } | 380 } |
381 } | 381 } |
382 | 382 |
383 void ViewManagerClientImpl::Embed( | 383 void ViewManagerClientImpl::Embed( |
384 const String& url, | 384 const String& url, |
385 InterfaceRequest<ServiceProvider> service_provider) { | 385 InterfaceRequest<ServiceProvider> service_provider) { |
386 window_manager_delegate_->Embed(url, service_provider.Pass()); | 386 window_manager_delegate_->Embed(url, service_provider.Pass()); |
387 } | 387 } |
388 | 388 |
389 void ViewManagerClientImpl::DispatchOnNodeInputEvent(Id node_id, | 389 void ViewManagerClientImpl::DispatchOnViewInputEvent(Id view_id, |
390 EventPtr event) { | 390 EventPtr event) { |
391 if (window_manager_delegate_) | 391 if (window_manager_delegate_) |
392 window_manager_delegate_->DispatchEvent(GetNodeById(node_id), event.Pass()); | 392 window_manager_delegate_->DispatchEvent(GetViewById(view_id), event.Pass()); |
393 } | 393 } |
394 | 394 |
395 //////////////////////////////////////////////////////////////////////////////// | 395 //////////////////////////////////////////////////////////////////////////////// |
396 // ViewManagerClientImpl, private: | 396 // ViewManagerClientImpl, private: |
397 | 397 |
398 void ViewManagerClientImpl::RemoveRoot(Node* root) { | 398 void ViewManagerClientImpl::RemoveRoot(View* root) { |
399 std::vector<Node*>::iterator it = | 399 std::vector<View*>::iterator it = |
400 std::find(roots_.begin(), roots_.end(), root); | 400 std::find(roots_.begin(), roots_.end(), root); |
401 if (it != roots_.end()) | 401 if (it != roots_.end()) |
402 roots_.erase(it); | 402 roots_.erase(it); |
403 } | 403 } |
404 | 404 |
405 void ViewManagerClientImpl::OnActionCompleted(bool success) { | 405 void ViewManagerClientImpl::OnActionCompleted(bool success) { |
406 if (!change_acked_callback_.is_null()) | 406 if (!change_acked_callback_.is_null()) |
407 change_acked_callback_.Run(); | 407 change_acked_callback_.Run(); |
408 } | 408 } |
409 | 409 |
410 void ViewManagerClientImpl::OnActionCompletedWithErrorCode(ErrorCode code) { | 410 void ViewManagerClientImpl::OnActionCompletedWithErrorCode(ErrorCode code) { |
411 OnActionCompleted(code == ERROR_CODE_NONE); | 411 OnActionCompleted(code == ERROR_CODE_NONE); |
412 } | 412 } |
413 | 413 |
414 base::Callback<void(bool)> ViewManagerClientImpl::ActionCompletedCallback() { | 414 base::Callback<void(bool)> ViewManagerClientImpl::ActionCompletedCallback() { |
415 return base::Bind(&ViewManagerClientImpl::OnActionCompleted, | 415 return base::Bind(&ViewManagerClientImpl::OnActionCompleted, |
416 base::Unretained(this)); | 416 base::Unretained(this)); |
417 } | 417 } |
418 | 418 |
419 base::Callback<void(ErrorCode)> | 419 base::Callback<void(ErrorCode)> |
420 ViewManagerClientImpl::ActionCompletedCallbackWithErrorCode() { | 420 ViewManagerClientImpl::ActionCompletedCallbackWithErrorCode() { |
421 return base::Bind(&ViewManagerClientImpl::OnActionCompletedWithErrorCode, | 421 return base::Bind(&ViewManagerClientImpl::OnActionCompletedWithErrorCode, |
422 base::Unretained(this)); | 422 base::Unretained(this)); |
423 } | 423 } |
424 | 424 |
425 } // namespace mojo | 425 } // namespace mojo |
OLD | NEW |