Chromium Code Reviews| Index: mojo/services/public/cpp/view_manager/tests/view_manager_unittest.cc |
| diff --git a/mojo/services/public/cpp/view_manager/tests/view_manager_unittest.cc b/mojo/services/public/cpp/view_manager/tests/view_manager_unittest.cc |
| index 90bbb6c0ef2528e57b223368703a3f157c8fbfa5..b97b4a0520d3fde795de269fa02b3935bbee6d9a 100644 |
| --- a/mojo/services/public/cpp/view_manager/tests/view_manager_unittest.cc |
| +++ b/mojo/services/public/cpp/view_manager/tests/view_manager_unittest.cc |
| @@ -6,6 +6,8 @@ |
| #include "base/bind.h" |
| #include "base/logging.h" |
| +#include "mojo/public/cpp/application/application.h" |
| +#include "mojo/service_manager/service_manager.h" |
| #include "mojo/services/public/cpp/view_manager/lib/view_manager_private.h" |
| #include "mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.h" |
| #include "mojo/services/public/cpp/view_manager/lib/view_tree_node_private.h" |
| @@ -20,6 +22,8 @@ namespace mojo { |
| namespace view_manager { |
| namespace { |
| +const char kTestServiceURL[] = "mojo:test_url"; |
| + |
| base::RunLoop* current_run_loop = NULL; |
| void DoRunLoop() { |
| @@ -44,6 +48,33 @@ void WaitForAllChangesToBeAcked(ViewManager* manager) { |
| ViewManagerPrivate(manager).synchronizer()->ClearChangesAckedCallback(); |
| } |
| +// Used with IViewManager::Connect(). Creates a TestViewManagerClientConnection, |
| +// which creates and owns the ViewManagerProxy. |
| +class ConnectServiceLoader : public ServiceLoader { |
| + public: |
| + explicit ConnectServiceLoader(base::Callback<void(ViewManager*)> callback) |
| + : callback_(callback) {} |
| + virtual ~ConnectServiceLoader() {} |
| + |
| + // ServiceLoader: |
| + virtual void LoadService(ServiceManager* manager, |
| + const GURL& url, |
| + ScopedMessagePipeHandle shell_handle) OVERRIDE { |
| + scoped_ptr<Application> app(new Application(shell_handle.Pass())); |
| + ViewManager::Create(app.get(), callback_); |
| + apps_.push_back(app.release()); |
| + } |
| + virtual void OnServiceError(ServiceManager* manager, |
| + const GURL& url) OVERRIDE { |
| + } |
| + |
| + private: |
| + ScopedVector<Application> apps_; |
| + base::Callback<void(ViewManager*)> callback_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(ConnectServiceLoader); |
| +}; |
| + |
| class ActiveViewChangedObserver : public ViewTreeNodeObserver { |
| public: |
| explicit ActiveViewChangedObserver(ViewTreeNode* node) |
| @@ -276,10 +307,45 @@ class ViewManagerTest : public testing::Test { |
| // Overridden from testing::Test: |
| virtual void SetUp() OVERRIDE { |
| test_helper_.Init(); |
| + ConnectServiceLoader* loader = |
| + new ConnectServiceLoader( |
| + base::Bind(&ViewManagerTest::OnViewManagerLoaded, |
| + base::Unretained(this))); |
| + test_helper_.SetLoaderForURL( |
| + scoped_ptr<ServiceLoader>(loader), |
| + GURL(kTestServiceURL)); |
| + |
| + ConnectToService(test_helper_.service_provider(), |
| + "mojo:mojo_view_manager", |
| + &view_manager_init_); |
| + ASSERT_TRUE(ViewManagerInitConnect(view_manager_init_.get(), |
| + kTestServiceURL)); |
| + } |
| + |
| + void ViewManagerInitConnectCallback(bool* result_cache, |
| + bool result) { |
| + *result_cache = result; |
| + } |
| + |
| + bool ViewManagerInitConnect(IViewManagerInit* view_manager_init, |
| + const std::string& url) { |
| + bool result = false; |
| + view_manager_init->Connect( |
| + url, |
| + base::Bind(&ViewManagerTest::ViewManagerInitConnectCallback, |
| + base::Unretained(this), &result)); |
| + init_loop_.Run(); |
| + return result; |
| + } |
| + |
| + void OnViewManagerLoaded(ViewManager* view_manager) { |
| + init_loop_.Quit(); |
| } |
| base::MessageLoop loop_; |
| + base::RunLoop init_loop_; |
| shell::ShellTestHelper test_helper_; |
| + IViewManagerInitPtr view_manager_init_; |
| ViewManager* view_manager_1_; |
| ViewManager* view_manager_2_; |
| int commit_count_; |
| @@ -336,6 +402,10 @@ class HierarchyChanged_NodeCreatedObserver : public TreeObserverBase { |
| // TODO(beng): reenable these once converted to new way of connecting. |
| +TEST_F(ViewManagerTest, SetUp) { |
| + EXPECT_TRUE(true); |
|
sky
2014/06/03 20:15:26
I don't think you need the EXPECT_TRUE here.
|
| +} |
| + |
| TEST_F(ViewManagerTest, DISABLED_HierarchyChanged_NodeCreated) { |
| HierarchyChanged_NodeCreatedObserver observer(view_manager_2()); |
| ViewTreeNode* node1 = ViewTreeNode::Create(view_manager_1()); |