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

Side by Side Diff: mojo/services/view_manager/view_manager_service_impl.cc

Issue 507563002: Removes usage of aura::Window from Node (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review Created 6 years, 3 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
« no previous file with comments | « mojo/services/view_manager/root_view_manager.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/view_manager/view_manager_service_impl.h" 5 #include "mojo/services/view_manager/view_manager_service_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "mojo/services/public/cpp/geometry/geometry_type_converters.h" 8 #include "mojo/services/public/cpp/geometry/geometry_type_converters.h"
9 #include "mojo/services/public/cpp/input_events/input_events_type_converters.h" 9 #include "mojo/services/public/cpp/input_events/input_events_type_converters.h"
10 #include "mojo/services/view_manager/default_access_policy.h" 10 #include "mojo/services/view_manager/default_access_policy.h"
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 bool ViewManagerServiceImpl::IsNodeKnown(const Node* node) const { 150 bool ViewManagerServiceImpl::IsNodeKnown(const Node* node) const {
151 return known_nodes_.count(NodeIdToTransportId(node->id())) > 0; 151 return known_nodes_.count(NodeIdToTransportId(node->id())) > 0;
152 } 152 }
153 153
154 bool ViewManagerServiceImpl::CanReorderNode(const Node* node, 154 bool ViewManagerServiceImpl::CanReorderNode(const Node* node,
155 const Node* relative_node, 155 const Node* relative_node,
156 OrderDirection direction) const { 156 OrderDirection direction) const {
157 if (!node || !relative_node) 157 if (!node || !relative_node)
158 return false; 158 return false;
159 159
160 const Node* parent = node->GetParent(); 160 if (!node->parent() || node->parent() != relative_node->parent())
161 if (!parent || parent != relative_node->GetParent())
162 return false; 161 return false;
163 162
164 if (!access_policy_->CanReorderNode(node, relative_node, direction)) 163 if (!access_policy_->CanReorderNode(node, relative_node, direction))
165 return false; 164 return false;
166 165
167 std::vector<const Node*> children = parent->GetChildren(); 166 std::vector<const Node*> children = node->parent()->GetChildren();
168 const size_t child_i = 167 const size_t child_i =
169 std::find(children.begin(), children.end(), node) - children.begin(); 168 std::find(children.begin(), children.end(), node) - children.begin();
170 const size_t target_i = 169 const size_t target_i =
171 std::find(children.begin(), children.end(), relative_node) - 170 std::find(children.begin(), children.end(), relative_node) -
172 children.begin(); 171 children.begin();
173 if ((direction == ORDER_DIRECTION_ABOVE && child_i == target_i + 1) || 172 if ((direction == ORDER_DIRECTION_ABOVE && child_i == target_i + 1) ||
174 (direction == ORDER_DIRECTION_BELOW && child_i + 1 == target_i)) { 173 (direction == ORDER_DIRECTION_BELOW && child_i + 1 == target_i)) {
175 return false; 174 return false;
176 } 175 }
177 176
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 return; 248 return;
250 249
251 client()->OnViewDeleted(transport_node_id); 250 client()->OnViewDeleted(transport_node_id);
252 root_node_manager_->OnConnectionMessagedClient(id_); 251 root_node_manager_->OnConnectionMessagedClient(id_);
253 252
254 // This connection no longer knows about the node. Unparent any nodes that 253 // This connection no longer knows about the node. Unparent any nodes that
255 // were parented to nodes in the root. 254 // were parented to nodes in the root.
256 std::vector<Node*> local_nodes; 255 std::vector<Node*> local_nodes;
257 RemoveFromKnown(GetNode(node_id), &local_nodes); 256 RemoveFromKnown(GetNode(node_id), &local_nodes);
258 for (size_t i = 0; i < local_nodes.size(); ++i) 257 for (size_t i = 0; i < local_nodes.size(); ++i)
259 local_nodes[i]->GetParent()->Remove(local_nodes[i]); 258 local_nodes[i]->parent()->Remove(local_nodes[i]);
260 } 259 }
261 260
262 void ViewManagerServiceImpl::RemoveChildrenAsPartOfEmbed( 261 void ViewManagerServiceImpl::RemoveChildrenAsPartOfEmbed(
263 const NodeId& node_id) { 262 const NodeId& node_id) {
264 Node* node = GetNode(node_id); 263 Node* node = GetNode(node_id);
265 CHECK(node); 264 CHECK(node);
266 CHECK(node->id().connection_id == node_id.connection_id); 265 CHECK(node->id().connection_id == node_id.connection_id);
267 std::vector<Node*> children = node->GetChildren(); 266 std::vector<Node*> children = node->GetChildren();
268 for (size_t i = 0; i < children.size(); ++i) 267 for (size_t i = 0; i < children.size(); ++i)
269 node->Remove(children[i]); 268 node->Remove(children[i]);
270 } 269 }
271 270
272 Array<ViewDataPtr> ViewManagerServiceImpl::NodesToViewDatas( 271 Array<ViewDataPtr> ViewManagerServiceImpl::NodesToViewDatas(
273 const std::vector<const Node*>& nodes) { 272 const std::vector<const Node*>& nodes) {
274 Array<ViewDataPtr> array(nodes.size()); 273 Array<ViewDataPtr> array(nodes.size());
275 for (size_t i = 0; i < nodes.size(); ++i) 274 for (size_t i = 0; i < nodes.size(); ++i)
276 array[i] = NodeToViewData(nodes[i]).Pass(); 275 array[i] = NodeToViewData(nodes[i]).Pass();
277 return array.Pass(); 276 return array.Pass();
278 } 277 }
279 278
280 ViewDataPtr ViewManagerServiceImpl::NodeToViewData(const Node* node) { 279 ViewDataPtr ViewManagerServiceImpl::NodeToViewData(const Node* node) {
281 DCHECK(IsNodeKnown(node)); 280 DCHECK(IsNodeKnown(node));
282 const Node* parent = node->GetParent(); 281 const Node* parent = node->parent();
283 // If the parent isn't known, it means the parent is not visible to us (not 282 // If the parent isn't known, it means the parent is not visible to us (not
284 // in roots), and should not be sent over. 283 // in roots), and should not be sent over.
285 if (parent && !IsNodeKnown(parent)) 284 if (parent && !IsNodeKnown(parent))
286 parent = NULL; 285 parent = NULL;
287 ViewDataPtr view_data(ViewData::New()); 286 ViewDataPtr view_data(ViewData::New());
288 view_data->parent_id = NodeIdToTransportId(parent ? parent->id() : NodeId()); 287 view_data->parent_id = NodeIdToTransportId(parent ? parent->id() : NodeId());
289 view_data->view_id = NodeIdToTransportId(node->id()); 288 view_data->view_id = NodeIdToTransportId(node->id());
290 view_data->bounds = Rect::From(node->bounds()); 289 view_data->bounds = Rect::From(node->bounds());
291 return view_data.Pass(); 290 return view_data.Pass();
292 } 291 }
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 callback.Run(success); 337 callback.Run(success);
339 } 338 }
340 339
341 void ViewManagerServiceImpl::AddView( 340 void ViewManagerServiceImpl::AddView(
342 Id parent_id, 341 Id parent_id,
343 Id child_id, 342 Id child_id,
344 const Callback<void(bool)>& callback) { 343 const Callback<void(bool)>& callback) {
345 bool success = false; 344 bool success = false;
346 Node* parent = GetNode(NodeIdFromTransportId(parent_id)); 345 Node* parent = GetNode(NodeIdFromTransportId(parent_id));
347 Node* child = GetNode(NodeIdFromTransportId(child_id)); 346 Node* child = GetNode(NodeIdFromTransportId(child_id));
348 if (parent && child && child->GetParent() != parent && 347 if (parent && child && child->parent() != parent &&
349 !child->Contains(parent) && access_policy_->CanAddNode(parent, child)) { 348 !child->Contains(parent) && access_policy_->CanAddNode(parent, child)) {
350 success = true; 349 success = true;
351 RootNodeManager::ScopedChange change(this, root_node_manager_, false); 350 RootNodeManager::ScopedChange change(this, root_node_manager_, false);
352 parent->Add(child); 351 parent->Add(child);
353 } 352 }
354 callback.Run(success); 353 callback.Run(success);
355 } 354 }
356 355
357 void ViewManagerServiceImpl::RemoveViewFromParent( 356 void ViewManagerServiceImpl::RemoveViewFromParent(
358 Id view_id, 357 Id view_id,
359 const Callback<void(bool)>& callback) { 358 const Callback<void(bool)>& callback) {
360 bool success = false; 359 bool success = false;
361 Node* node = GetNode(NodeIdFromTransportId(view_id)); 360 Node* node = GetNode(NodeIdFromTransportId(view_id));
362 if (node && node->GetParent() && 361 if (node && node->parent() &&
363 access_policy_->CanRemoveNodeFromParent(node)) { 362 access_policy_->CanRemoveNodeFromParent(node)) {
364 success = true; 363 success = true;
365 RootNodeManager::ScopedChange change(this, root_node_manager_, false); 364 RootNodeManager::ScopedChange change(this, root_node_manager_, false);
366 node->GetParent()->Remove(node); 365 node->parent()->Remove(node);
367 } 366 }
368 callback.Run(success); 367 callback.Run(success);
369 } 368 }
370 369
371 void ViewManagerServiceImpl::ReorderView(Id view_id, 370 void ViewManagerServiceImpl::ReorderView(Id view_id,
372 Id relative_view_id, 371 Id relative_view_id,
373 OrderDirection direction, 372 OrderDirection direction,
374 const Callback<void(bool)>& callback) { 373 const Callback<void(bool)>& callback) {
375 bool success = false; 374 bool success = false;
376 Node* node = GetNode(NodeIdFromTransportId(view_id)); 375 Node* node = GetNode(NodeIdFromTransportId(view_id));
377 Node* relative_node = GetNode(NodeIdFromTransportId(relative_view_id)); 376 Node* relative_node = GetNode(NodeIdFromTransportId(relative_view_id));
378 if (CanReorderNode(node, relative_node, direction)) { 377 if (CanReorderNode(node, relative_node, direction)) {
379 success = true; 378 success = true;
380 RootNodeManager::ScopedChange change(this, root_node_manager_, false); 379 RootNodeManager::ScopedChange change(this, root_node_manager_, false);
381 node->GetParent()->Reorder(node, relative_node, direction); 380 node->parent()->Reorder(node, relative_node, direction);
382 root_node_manager_->ProcessNodeReorder(node, relative_node, direction); 381 root_node_manager_->ProcessNodeReorder(node, relative_node, direction);
383 } 382 }
384 callback.Run(success); 383 callback.Run(success);
385 } 384 }
386 385
387 void ViewManagerServiceImpl::GetViewTree( 386 void ViewManagerServiceImpl::GetViewTree(
388 Id view_id, 387 Id view_id,
389 const Callback<void(Array<ViewDataPtr>)>& callback) { 388 const Callback<void(Array<ViewDataPtr>)>& callback) {
390 Node* node = GetNode(NodeIdFromTransportId(view_id)); 389 Node* node = GetNode(NodeIdFromTransportId(view_id));
391 std::vector<const Node*> nodes; 390 std::vector<const Node*> nodes;
(...skipping 30 matching lines...) Expand all
422 } 421 }
423 422
424 void ViewManagerServiceImpl::SetViewBounds( 423 void ViewManagerServiceImpl::SetViewBounds(
425 Id view_id, 424 Id view_id,
426 RectPtr bounds, 425 RectPtr bounds,
427 const Callback<void(bool)>& callback) { 426 const Callback<void(bool)>& callback) {
428 Node* node = GetNode(NodeIdFromTransportId(view_id)); 427 Node* node = GetNode(NodeIdFromTransportId(view_id));
429 const bool success = node && access_policy_->CanSetNodeBounds(node); 428 const bool success = node && access_policy_->CanSetNodeBounds(node);
430 if (success) { 429 if (success) {
431 RootNodeManager::ScopedChange change(this, root_node_manager_, false); 430 RootNodeManager::ScopedChange change(this, root_node_manager_, false);
432 gfx::Rect old_bounds = node->window()->bounds(); 431 node->SetBounds(bounds.To<gfx::Rect>());
433 node->window()->SetBounds(bounds.To<gfx::Rect>());
434 } 432 }
435 callback.Run(success); 433 callback.Run(success);
436 } 434 }
437 435
438 void ViewManagerServiceImpl::SetViewVisibility( 436 void ViewManagerServiceImpl::SetViewVisibility(
439 Id transport_view_id, 437 Id transport_view_id,
440 bool visible, 438 bool visible,
441 const Callback<void(bool)>& callback) { 439 const Callback<void(bool)>& callback) {
442 Node* node = GetNode(NodeIdFromTransportId(transport_view_id)); 440 Node* node = GetNode(NodeIdFromTransportId(transport_view_id));
443 const bool success = node && node->IsVisible() != visible && 441 const bool success = node && node->visible() != visible &&
444 access_policy_->CanChangeNodeVisibility(node); 442 access_policy_->CanChangeNodeVisibility(node);
445 if (success) { 443 if (success) {
446 DCHECK(node); 444 DCHECK(node);
447 node->SetVisible(visible); 445 node->SetVisible(visible);
448 } 446 }
449 // TODO(sky): need to notify of visibility changes. 447 // TODO(sky): need to notify of visibility changes.
450 callback.Run(success); 448 callback.Run(success);
451 } 449 }
452 450
453 void ViewManagerServiceImpl::Embed( 451 void ViewManagerServiceImpl::Embed(
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 537
540 bool ViewManagerServiceImpl::IsNodeRootOfAnotherConnectionForAccessPolicy( 538 bool ViewManagerServiceImpl::IsNodeRootOfAnotherConnectionForAccessPolicy(
541 const Node* node) const { 539 const Node* node) const {
542 ViewManagerServiceImpl* connection = 540 ViewManagerServiceImpl* connection =
543 root_node_manager_->GetConnectionWithRoot(node->id()); 541 root_node_manager_->GetConnectionWithRoot(node->id());
544 return connection && connection != this; 542 return connection && connection != this;
545 } 543 }
546 544
547 } // namespace service 545 } // namespace service
548 } // namespace mojo 546 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/services/view_manager/root_view_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698