| Index: components/mus/public/cpp/lib/view_tree_client_impl.cc
|
| diff --git a/components/mus/public/cpp/lib/view_tree_client_impl.cc b/components/mus/public/cpp/lib/view_tree_client_impl.cc
|
| index 2a8516c29d6e0571ed860c0a1d2ba26459400717..bd2a8ebbd3572814370db9641ffe151a29db29c6 100644
|
| --- a/components/mus/public/cpp/lib/view_tree_client_impl.cc
|
| +++ b/components/mus/public/cpp/lib/view_tree_client_impl.cc
|
| @@ -70,8 +70,12 @@ View* BuildViewTree(ViewTreeClientImpl* client,
|
|
|
| ViewTreeConnection* ViewTreeConnection::Create(
|
| ViewTreeDelegate* delegate,
|
| - mojo::InterfaceRequest<mojo::ViewTreeClient> request) {
|
| - return new ViewTreeClientImpl(delegate, request.Pass());
|
| + mojo::InterfaceRequest<mojo::ViewTreeClient> request,
|
| + CreateType create_type) {
|
| + ViewTreeClientImpl* client = new ViewTreeClientImpl(delegate, request.Pass());
|
| + if (create_type == CreateType::WAIT_FOR_EMBED)
|
| + client->WaitForEmbed();
|
| + return client;
|
| }
|
|
|
| ViewTreeClientImpl::ViewTreeClientImpl(
|
| @@ -112,6 +116,13 @@ ViewTreeClientImpl::~ViewTreeClientImpl() {
|
| delegate_->OnConnectionLost(this);
|
| }
|
|
|
| +void ViewTreeClientImpl::WaitForEmbed() {
|
| + DCHECK(!root_);
|
| + // OnEmbed() is the first function called.
|
| + binding_.WaitForIncomingMethodCall();
|
| + // TODO(sky): deal with pipe being closed before we get OnEmbed().
|
| +}
|
| +
|
| void ViewTreeClientImpl::DestroyView(Id view_id) {
|
| DCHECK(tree_);
|
| tree_->DeleteView(view_id, ActionCompletedCallback());
|
|
|