| Index: mojo/services/view_manager/view_manager_unittest.cc
|
| diff --git a/mojo/services/view_manager/view_manager_unittest.cc b/mojo/services/view_manager/view_manager_unittest.cc
|
| index 259079648a04cd2fecdf9a1febf9995da4a6539d..9ba52d82a1b11e79f35599bdfcaa4538fc383522 100644
|
| --- a/mojo/services/view_manager/view_manager_unittest.cc
|
| +++ b/mojo/services/view_manager/view_manager_unittest.cc
|
| @@ -181,6 +181,15 @@ class ViewManagerProxy : public TestChangeTracker::Delegate {
|
| RunMainLoop();
|
| return result;
|
| }
|
| + bool EmbedRoot(const char* url) {
|
| + changes_.clear();
|
| + base::AutoReset<bool> auto_reset(&in_embed_, true);
|
| + bool result = false;
|
| + view_manager_->EmbedRoot(url, base::Bind(&ViewManagerProxy::GotResult,
|
| + base::Unretained(this), &result));
|
| + RunMainLoop();
|
| + return result;
|
| + }
|
| bool DeleteNode(Id node_id) {
|
| changes_.clear();
|
| bool result = false;
|
| @@ -433,11 +442,14 @@ void EmbedRootCallback(bool* result_cache,
|
| // Responsible for establishing the initial ViewManagerService connection.
|
| // Blocks until result is determined.
|
| bool EmbedRoot(ViewManagerInitService* view_manager_init,
|
| - const std::string& url) {
|
| + const std::string& url,
|
| + size_t number_of_calls) {
|
| bool result = false;
|
| base::RunLoop run_loop;
|
| - view_manager_init->EmbedRoot(url, base::Bind(&EmbedRootCallback,
|
| - &result, &run_loop));
|
| + for (size_t i = 0; i < number_of_calls; ++i) {
|
| + view_manager_init->EmbedRoot(url, base::Bind(&EmbedRootCallback,
|
| + &result, &run_loop));
|
| + }
|
| run_loop.Run();
|
| return result;
|
| }
|
| @@ -464,7 +476,7 @@ class ViewManagerTest : public testing::Test {
|
| test_helper_.service_manager()->ConnectToService(
|
| GURL("mojo:mojo_view_manager"),
|
| &view_manager_init_);
|
| - ASSERT_TRUE(EmbedRoot(view_manager_init_.get(), kTestServiceURL));
|
| + ASSERT_TRUE(EmbedRoot(view_manager_init_.get(), kTestServiceURL, 1));
|
|
|
| connection_ = ViewManagerProxy::WaitForInstance();
|
| ASSERT_TRUE(connection_ != NULL);
|
| @@ -520,12 +532,25 @@ class ViewManagerTest : public testing::Test {
|
| DISALLOW_COPY_AND_ASSIGN(ViewManagerTest);
|
| };
|
|
|
| -TEST_F(ViewManagerTest, SecondEmbedRoot) {
|
| - ASSERT_TRUE(EmbedRoot(view_manager_init_.get(), kTestServiceURL));
|
| +TEST_F(ViewManagerTest, SecondEmbedRoot_InitService) {
|
| + ASSERT_TRUE(EmbedRoot(view_manager_init_.get(), kTestServiceURL, 1));
|
| connection_->DoRunLoopUntilChangesCount(1);
|
| EXPECT_EQ(kTestServiceURL, connection_->changes()[0].embed_url);
|
| }
|
|
|
| +TEST_F(ViewManagerTest, SecondEmbedRoot_Service) {
|
| + ASSERT_TRUE(connection_->EmbedRoot(kTestServiceURL));
|
| + connection_->DoRunLoopUntilChangesCount(1);
|
| + EXPECT_EQ(kTestServiceURL, connection_->changes()[0].embed_url);
|
| +}
|
| +
|
| +TEST_F(ViewManagerTest, MultipleEmbedRootsBeforeWTHReady) {
|
| + ASSERT_TRUE(EmbedRoot(view_manager_init_.get(), kTestServiceURL, 2));
|
| + connection_->DoRunLoopUntilChangesCount(2);
|
| + EXPECT_EQ(kTestServiceURL, connection_->changes()[0].embed_url);
|
| + EXPECT_EQ(kTestServiceURL, connection_->changes()[1].embed_url);
|
| +}
|
| +
|
| // Verifies client gets a valid id.
|
| TEST_F(ViewManagerTest, ValidId) {
|
| // TODO(beng): this should really have the URL of the application that
|
|
|