| Index: gpu/command_buffer/service/valuebuffer_manager_unittest.cc
|
| diff --git a/gpu/command_buffer/service/valuebuffer_manager_unittest.cc b/gpu/command_buffer/service/valuebuffer_manager_unittest.cc
|
| index 44cc2f76caa8e56f47f002facd1d608e52eb86d3..3aac3564322a1f2b6864a0b834d15a63907d5ae5 100644
|
| --- a/gpu/command_buffer/service/valuebuffer_manager_unittest.cc
|
| +++ b/gpu/command_buffer/service/valuebuffer_manager_unittest.cc
|
| @@ -15,6 +15,7 @@
|
| #include "gpu/command_buffer/service/gpu_service_test.h"
|
| #include "gpu/command_buffer/service/mocks.h"
|
| #include "gpu/command_buffer/service/test_helper.h"
|
| +#include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "ui/gl/gl_bindings.h"
|
| #include "ui/gl/gl_mock.h"
|
| @@ -22,6 +23,12 @@
|
| namespace gpu {
|
| namespace gles2 {
|
|
|
| +class MockSubscriptionRefSetObserver : public SubscriptionRefSet::Observer {
|
| + public:
|
| + MOCK_METHOD1(OnAddSubscription, void(unsigned int target));
|
| + MOCK_METHOD1(OnRemoveSubscription, void(unsigned int target));
|
| +};
|
| +
|
| class ValuebufferManagerTest : public GpuServiceTest {
|
| public:
|
| ValuebufferManagerTest() {}
|
| @@ -29,16 +36,23 @@ class ValuebufferManagerTest : public GpuServiceTest {
|
|
|
| void SetUp() override {
|
| GpuServiceTest::SetUp();
|
| + subscription_ref_set_ = new SubscriptionRefSet();
|
| pending_state_map_ = new ValueStateMap();
|
| - manager_.reset(new ValuebufferManager(pending_state_map_.get()));
|
| + subscription_ref_set_->AddObserver(&mock_observer_);
|
| + manager_.reset(new ValuebufferManager(subscription_ref_set_.get(),
|
| + pending_state_map_.get()));
|
| }
|
|
|
| void TearDown() override {
|
| manager_->Destroy();
|
| + subscription_ref_set_->RemoveObserver(&mock_observer_);
|
| GpuServiceTest::TearDown();
|
| }
|
|
|
| protected:
|
| + MockSubscriptionRefSetObserver mock_observer_;
|
| +
|
| + scoped_refptr<SubscriptionRefSet> subscription_ref_set_;
|
| scoped_refptr<ValueStateMap> pending_state_map_;
|
| scoped_ptr<ValuebufferManager> manager_;
|
| };
|
| @@ -109,5 +123,30 @@ TEST_F(ValuebufferManagerTest, UpdateState) {
|
| ASSERT_TRUE(new_state2->int_value[0] == 222);
|
| }
|
|
|
| +TEST_F(ValuebufferManagerTest, NotifySubscriptionRefs) {
|
| + const GLuint kClientId1 = 1;
|
| + const GLuint kClientId2 = 2;
|
| + manager_->CreateValuebuffer(kClientId1);
|
| + Valuebuffer* valuebuffer1 = manager_->GetValuebuffer(kClientId1);
|
| + ASSERT_TRUE(valuebuffer1 != NULL);
|
| + manager_->CreateValuebuffer(kClientId2);
|
| + Valuebuffer* valuebuffer2 = manager_->GetValuebuffer(kClientId2);
|
| + ASSERT_TRUE(valuebuffer2 != NULL);
|
| + EXPECT_CALL(mock_observer_, OnAddSubscription(GL_MOUSE_POSITION_CHROMIUM))
|
| + .Times(1);
|
| + valuebuffer1->AddSubscription(GL_MOUSE_POSITION_CHROMIUM);
|
| + EXPECT_CALL(mock_observer_, OnAddSubscription(GL_MOUSE_POSITION_CHROMIUM))
|
| + .Times(0);
|
| + valuebuffer2->AddSubscription(GL_MOUSE_POSITION_CHROMIUM);
|
| + EXPECT_CALL(mock_observer_, OnRemoveSubscription(GL_MOUSE_POSITION_CHROMIUM))
|
| + .Times(0);
|
| + valuebuffer1->RemoveSubscription(GL_MOUSE_POSITION_CHROMIUM);
|
| + // Ensure the manager still thinks a buffer has a reference to the
|
| + // subscription target.
|
| + EXPECT_CALL(mock_observer_, OnRemoveSubscription(GL_MOUSE_POSITION_CHROMIUM))
|
| + .Times(1);
|
| + valuebuffer2->RemoveSubscription(GL_MOUSE_POSITION_CHROMIUM);
|
| +}
|
| +
|
| } // namespace gles2
|
| } // namespace gpu
|
|
|