Chromium Code Reviews| Index: services/ui/view_manager/tests/view_manager_test.cc |
| diff --git a/services/ui/view_manager/tests/view_manager_test.cc b/services/ui/view_manager/tests/view_manager_test.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..d5ba92ca9e05cce549421cc4daa6512bdb0abc34 |
| --- /dev/null |
| +++ b/services/ui/view_manager/tests/view_manager_test.cc |
| @@ -0,0 +1,92 @@ |
| +// Copyright 2016 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "mojo/public/cpp/application/application_impl.h" |
| +#include "mojo/public/cpp/application/connect.h" |
| +#include "mojo/services/ui/views/interfaces/view_manager.mojom.h" |
| +#include "mojo/services/ui/views/interfaces/views.mojom.h" |
| +#include "services/ui/view_manager/tests/mock_view_associate.h" |
| +#include "services/ui/view_manager/tests/view_manager_test_base.h" |
| + |
| +namespace view_manager { |
| +namespace test { |
| + |
| +class MockViewListener : public mojo::ui::ViewListener { |
| + public: |
| + MockViewListener() {} |
| + ~MockViewListener() override {} |
| + |
| + void OnPropertiesChanged( |
| + uint32_t scene_version, |
| + mojo::ui::ViewPropertiesPtr properties, |
| + const OnPropertiesChangedCallback& callback) override {} |
| +}; |
| + |
| +class ViewManagerTest : public ViewManagerTestBase { |
| + public: |
| + ViewManagerTest() {} |
| + ~ViewManagerTest() override {} |
| + |
| + void SetUp() override { |
| + ViewManagerTestBase::SetUp(); |
| + |
| + // Connect to view manager |
| + mojo::ConnectToService(application_impl()->shell(), |
| + "mojo:view_manager_service", |
| + mojo::GetProxy(&view_manager_)); |
| + } |
| + |
| + protected: |
| + mojo::ui::ViewManagerPtr view_manager_; |
| + |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(ViewManagerTest); |
| +}; |
| + |
| +TEST_F(ViewManagerTest, CreateAViewManagerAndView) { |
| + // Create and bind a mock view listener |
| + mojo::ui::ViewListenerPtr view_listener; |
| + MockViewListener mock_view_listener; |
| + mojo::Binding<mojo::ui::ViewListener> view_listener_binding( |
| + &mock_view_listener, mojo::GetProxy(&view_listener)); |
| + |
| + // Create a view |
| + mojo::ui::ViewPtr view; |
| + mojo::ui::ViewOwnerPtr client_view_owner; |
| + view_manager_->CreateView(mojo::GetProxy(&view), |
| + mojo::GetProxy(&client_view_owner), |
| + view_listener.Pass(), "test_view"); |
| + |
| + // Call View::GetToken. Check that you get the callback. |
| + int view_token_callback_invokecount = 0; |
| + auto view_token_callback = [&view_token_callback_invokecount]( |
| + mojo::ui::ViewTokenPtr token) { view_token_callback_invokecount++; }; |
| + |
| + EXPECT_EQ(0, view_token_callback_invokecount); |
| + view->GetToken(view_token_callback); |
| + |
| + KICK_MESSAGE_LOOP_WHILE(view_token_callback_invokecount != 1); |
| + |
| + EXPECT_EQ(1, view_token_callback_invokecount); |
| +} |
| + |
| +TEST_F(ViewManagerTest, ConnectAMockViewAssociate) { |
| + // Create and bind a MockViewAssociate |
| + mojo::InterfaceHandle<mojo::ui::ViewAssociate> associate; |
| + MockViewAssociate mock_view_associate; |
| + mojo::Binding<mojo::ui::ViewAssociate> view_associate_binding( |
| + &mock_view_associate, mojo::GetProxy(&associate)); |
| + |
| + // Call ViewManager::RegisterViewAssociate. MockViewAssociate::Connect |
| + // should be called back |
| + EXPECT_EQ(0, mock_view_associate.connect_invokecount); |
| + view_manager_->RegisterViewAssociate(associate.Pass()); |
| + |
| + KICK_MESSAGE_LOOP_WHILE(mock_view_associate.connect_invokecount != 1); |
| + |
| + EXPECT_EQ(1, mock_view_associate.connect_invokecount); |
|
jeffbrown
2016/05/11 23:44:16
Would be good to test that we can actually retriev
|
| +} |
| + |
| +} // namespace test |
| +} // namespace view_manager |