Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(109)

Side by Side Diff: mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc

Issue 460863002: Rename Node to View in the View Manager mojom & client lib. Service TBD. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698