Index: services/view_manager/view_manager_service_apptest.cc |
diff --git a/services/view_manager/view_manager_service_apptest.cc b/services/view_manager/view_manager_service_apptest.cc |
index 2389291a1c7bde2ec972235b7f3e27921deb5878..ccd97c74c576f8c68fb0a9ae0aee9da3c877bcbc 100644 |
--- a/services/view_manager/view_manager_service_apptest.cc |
+++ b/services/view_manager/view_manager_service_apptest.cc |
@@ -80,11 +80,24 @@ bool CreateView(ViewManagerService* vm, Id view_id) { |
return result == ERROR_CODE_NONE; |
} |
-bool Embed(ViewManagerService* vm, Id root_id) { |
+bool EmbedUrl(ViewManagerService* vm, Id root_id) { |
bool result = false; |
base::RunLoop run_loop; |
{ |
- vm->Embed("mojo:view_manager_service_apptests", root_id, nullptr, nullptr, |
+ vm->EmbedUrl("mojo:view_manager_service_apptests", root_id, nullptr, |
+ nullptr, base::Bind(&BoolResultCallback, &run_loop, &result)); |
+ } |
+ run_loop.Run(); |
+ return result; |
+} |
+ |
+bool Embed(ViewManagerService* vm, |
+ Id root_id, |
+ mojo::ViewManagerClientPtr client) { |
+ bool result = false; |
+ base::RunLoop run_loop; |
+ { |
+ vm->Embed(root_id, client.Pass(), |
base::Bind(&BoolResultCallback, &run_loop, &result)); |
} |
run_loop.Run(); |
@@ -417,7 +430,7 @@ class ViewManagerServiceAppTest |
scoped_ptr<ViewManagerClientImpl> EstablishConnectionViaEmbed( |
ViewManagerService* owner, |
Id root_id) { |
- if (!Embed(owner, root_id)) { |
+ if (!EmbedUrl(owner, root_id)) { |
ADD_FAILURE() << "Embed() failed"; |
return nullptr; |
} |
@@ -1321,7 +1334,6 @@ TEST_F(ViewManagerServiceAppTest, SetViewVisibilityNotifications) { |
} |
TEST_F(ViewManagerServiceAppTest, SetViewProperty) { |
- // Create 1 and 2 in the first connection and parent both to the root. |
ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 1))); |
ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(false)); |
@@ -1450,6 +1462,19 @@ TEST_F(ViewManagerServiceAppTest, CloneAndAnimate) { |
EXPECT_FALSE(HasClonedView(views)); |
} |
+// Verifies Embed() works when supplying a ViewManagerClient. |
+TEST_F(ViewManagerServiceAppTest, EmbedSupplyingViewManagerClient) { |
+ ASSERT_TRUE(CreateView(vm1(), BuildViewId(1, 1))); |
+ |
+ ViewManagerClientImpl client2; |
+ mojo::ViewManagerClientPtr client2_ptr; |
+ mojo::Binding<ViewManagerClient> client2_binding(&client2, &client2_ptr); |
+ ASSERT_TRUE(Embed(vm1(), BuildViewId(1, 1), client2_ptr.Pass())); |
+ client2.WaitForOnEmbed(); |
+ EXPECT_EQ("OnEmbed creator=mojo:window_manager", |
+ SingleChangeToDescription(*client2.tracker()->changes())); |
+} |
+ |
// TODO(sky): need to better track changes to initial connection. For example, |
// that SetBounsdViews/AddView and the like don't result in messages to the |
// originating connection. |