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

Unified Diff: mojo/services/view_manager/view_manager_service_impl.cc

Issue 514063003: Update view_manager and window_manager to make use of content handling. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@viewman2
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 side-by-side diff with in-line comments
Download patch
Index: mojo/services/view_manager/view_manager_service_impl.cc
diff --git a/mojo/services/view_manager/view_manager_service_impl.cc b/mojo/services/view_manager/view_manager_service_impl.cc
index 69495c5f50fe5e7a522768f8852319b71e131469..282cab3a272335d1fa1fc9cf2029192f6365eb36 100644
--- a/mojo/services/view_manager/view_manager_service_impl.cc
+++ b/mojo/services/view_manager/view_manager_service_impl.cc
@@ -464,33 +464,25 @@ void ViewManagerServiceImpl::Embed(
return;
}
const ServerView* view = GetView(ViewIdFromTransportId(transport_view_id));
- bool success = view && access_policy_->CanEmbed(view);
- if (success) {
- // Only allow a view to be the root for one connection.
- const ViewId view_id(ViewIdFromTransportId(transport_view_id));
- ViewManagerServiceImpl* connection_by_url =
- connection_manager_->GetConnectionByCreator(id_, url.To<std::string>());
- ViewManagerServiceImpl* connection_with_view_as_root =
- connection_manager_->GetConnectionWithRoot(view_id);
- if ((connection_by_url != connection_with_view_as_root ||
- (!connection_by_url && !connection_with_view_as_root)) &&
- (!connection_by_url || !connection_by_url->HasRoot(view_id))) {
- ConnectionManager::ScopedChange change(this, connection_manager_, true);
- RemoveChildrenAsPartOfEmbed(view_id);
- // Never message the originating connection.
- connection_manager_->OnConnectionMessagedClient(id_);
- if (connection_with_view_as_root)
- connection_with_view_as_root->RemoveRoot(view_id);
sky 2014/09/02 15:47:16 You should be able to get rid of AddRoot now. Also
Aaron Boodman 2014/09/02 19:10:44 Done.
- if (connection_by_url) {
- connection_by_url->AddRoot(view_id, spir.Pass());
- } else {
- connection_manager_->Embed(id_, url, transport_view_id, spir.Pass());
- }
- } else {
- success = false;
- }
+ if (!view && access_policy_->CanEmbed(view)) {
sky 2014/09/02 15:47:15 Shouldn't this be: if (!view || !...CanEmbed(view
Aaron Boodman 2014/09/02 19:10:44 Done.
+ callback.Run(false);
+ return;
}
- callback.Run(success);
+
+ // Only allow a node to be the root for one connection.
Ben Goodger (Google) 2014/09/02 20:50:14 I think this is a good simplification. I will pond
+ const ViewId view_id(ViewIdFromTransportId(transport_view_id));
+ ViewManagerServiceImpl* existing_owner =
+ connection_manager_->GetConnectionWithRoot(view_id);
+
+ ConnectionManager::ScopedChange change(this, connection_manager_, true);
+ if (existing_owner) {
+ RemoveChildrenAsPartOfEmbed(view_id);
+ // Never message the originating connection.
+ connection_manager_->OnConnectionMessagedClient(id_);
+ existing_owner->RemoveRoot(view_id);
+ }
+ connection_manager_->Embed(id_, url, transport_view_id, spir.Pass());
+ callback.Run(true);
}
void ViewManagerServiceImpl::DispatchOnViewInputEvent(Id transport_view_id,

Powered by Google App Engine
This is Rietveld 408576698