#include "mojo/services/view_manager/view_manager_init_service_impl.h"
-#include "mojo/public/interfaces/service_provider/service_provider.mojom.h"
+#include "base/bind.h"
#include "mojo/services/view_manager/ids.h"
+#include "mojo/services/view_manager/view_manager_init_service_context.h"
#include "mojo/services/view_manager/view_manager_service_impl.h"
namespace mojo {
-namespace view_manager {
namespace service {
-ViewManagerInitServiceImpl::ConnectParams::ConnectParams() {}
-
-ViewManagerInitServiceImpl::ConnectParams::~ConnectParams() {}
-
ViewManagerInitServiceImpl::ViewManagerInitServiceImpl(
- ServiceProvider* service_provider)
- : service_provider_(service_provider),
- root_node_manager_(service_provider, this),
- is_tree_host_ready_(false) {
+ ApplicationConnection* connection,
+ ViewManagerInitServiceContext* context)
+ : context_(context) {
+ context_->AddConnection(this);
}
ViewManagerInitServiceImpl::~ViewManagerInitServiceImpl() {
+ context_->RemoveConnection(this);
}
-void ViewManagerInitServiceImpl::MaybeEmbedRoot(
- const std::string& url,
- const Callback<void(bool)>& callback) {
- if (!is_tree_host_ready_)
- return;
-
- root_node_manager_.EmbedRoot(url);
- callback.Run(true);
-}
-
-void ViewManagerInitServiceImpl::EmbedRoot(
+void ViewManagerInitServiceImpl::Embed(
const String& url,
+ ServiceProviderPtr service_provider,
const Callback<void(bool)>& callback) {
- if (connect_params_.get()) {
- DVLOG(1) << "Ignoring second connect";
- callback.Run(false);
- return;
- }
- connect_params_.reset(new ConnectParams);
- connect_params_->url = url.To<std::string>();
- connect_params_->callback = callback;
- MaybeEmbedRoot(url.To<std::string>(), callback);
-}
-
-void ViewManagerInitServiceImpl::OnRootViewManagerWindowTreeHostCreated() {
- DCHECK(!is_tree_host_ready_);
- is_tree_host_ready_ = true;
- if (connect_params_.get())
- MaybeEmbedRoot(connect_params_->url, connect_params_->callback);
+ context_->Embed(url, service_provider.Pass(), callback);
}
} // namespace service
-} // namespace view_manager
} // namespace mojo