Index: gpu/gpu_plugin/gpu_plugin_object_unittest.cc |
=================================================================== |
--- gpu/gpu_plugin/gpu_plugin_object_unittest.cc (revision 34314) |
+++ gpu/gpu_plugin/gpu_plugin_object_unittest.cc (working copy) |
@@ -1,319 +0,0 @@ |
-// Copyright (c) 2006-2008 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 "gpu/command_buffer/common/command_buffer_mock.h" |
-#include "gpu/gpu_plugin/gpu_plugin_object.h" |
-#include "gpu/command_buffer/service/gpu_processor_mock.h" |
-#include "gpu/np_utils/np_browser_mock.h" |
-#include "gpu/np_utils/dynamic_np_object.h" |
-#include "gpu/np_utils/np_object_mock.h" |
-#include "gpu/np_utils/np_object_pointer.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
-#include "testing/gmock/include/gmock/gmock.h" |
-#include "webkit/glue/plugins/nphostapi.h" |
- |
-using ::base::SharedMemory; |
-using command_buffer::GPUProcessor; |
-using command_buffer::MockCommandBuffer; |
-using command_buffer::MockGPUProcessor; |
-using np_utils::MockNPBrowser; |
-using np_utils::NPBrowser; |
-using np_utils::NPObjectPointer; |
-using testing::_; |
-using testing::DoAll; |
-using testing::Invoke; |
-using testing::NotNull; |
-using testing::Return; |
-using testing::SetArgumentPointee; |
-using testing::StrictMock; |
- |
-namespace gpu_plugin { |
- |
-class GPUPluginObjectTest : public testing::Test { |
- protected: |
- virtual void SetUp() { |
- plugin_object_ = np_utils::NPCreateObject<GPUPluginObject>(NULL); |
- |
- command_buffer_ = new MockCommandBuffer; |
- |
- // Takes ownership. |
- plugin_object_->set_command_buffer(command_buffer_); |
- |
- processor_ = new MockGPUProcessor(command_buffer_); |
- plugin_object_->set_gpu_processor(processor_.get()); |
- } |
- |
- MockNPBrowser mock_browser_; |
- NPObjectPointer<GPUPluginObject> plugin_object_; |
- MockCommandBuffer* command_buffer_; |
- scoped_refptr<MockGPUProcessor> processor_; |
-}; |
- |
-namespace { |
-template <typename T> |
-void DeleteObject(T* object) { |
- delete object; |
-} |
-} // namespace anonymous |
- |
- |
-TEST_F(GPUPluginObjectTest, CanInstantiateAndDestroyPluginObject) { |
- EXPECT_EQ(GPUPluginObject::kWaitingForNew, plugin_object_->GetStatus()); |
- |
- EXPECT_EQ(NPERR_NO_ERROR, plugin_object_->New("application/foo", |
- 0, |
- NULL, |
- NULL, |
- NULL)); |
- |
- EXPECT_EQ(GPUPluginObject::kWaitingForSetWindow, plugin_object_->GetStatus()); |
- |
- EXPECT_EQ(NPERR_NO_ERROR, plugin_object_->Destroy(NULL)); |
- |
- EXPECT_EQ(GPUPluginObject::kDestroyed, plugin_object_->GetStatus()); |
-} |
- |
-TEST_F(GPUPluginObjectTest, DestroyFailsIfNotInitialized) { |
- EXPECT_EQ(NPERR_GENERIC_ERROR, plugin_object_->Destroy(NULL)); |
-} |
- |
-TEST_F(GPUPluginObjectTest, NewFailsIfAlreadyInitialized) { |
- EXPECT_EQ(NPERR_NO_ERROR, plugin_object_->New("application/foo", |
- 0, |
- NULL, |
- NULL, |
- NULL)); |
- |
- EXPECT_EQ(NPERR_GENERIC_ERROR, plugin_object_->New("application/foo", |
- 0, |
- NULL, |
- NULL, |
- NULL)); |
- |
- EXPECT_EQ(GPUPluginObject::kWaitingForSetWindow, plugin_object_->GetStatus()); |
- |
- EXPECT_EQ(NPERR_NO_ERROR, plugin_object_->Destroy(NULL)); |
- |
- EXPECT_EQ(GPUPluginObject::kDestroyed, plugin_object_->GetStatus()); |
-} |
- |
-TEST_F(GPUPluginObjectTest, NewFailsIfObjectHasPreviouslyBeenDestroyed) { |
- EXPECT_EQ(NPERR_NO_ERROR, plugin_object_->New("application/foo", |
- 0, |
- NULL, |
- NULL, |
- NULL)); |
- |
- EXPECT_EQ(NPERR_NO_ERROR, plugin_object_->Destroy(NULL)); |
- |
- EXPECT_EQ(NPERR_GENERIC_ERROR, plugin_object_->New("application/foo", |
- 0, |
- NULL, |
- NULL, |
- NULL)); |
- |
- EXPECT_EQ(GPUPluginObject::kDestroyed, plugin_object_->GetStatus()); |
-} |
- |
-TEST_F(GPUPluginObjectTest, WindowIsNullBeforeSetWindowCalled) { |
- NPWindow window = plugin_object_->GetWindow(); |
- EXPECT_EQ(NULL, window.window); |
-} |
- |
-TEST_F(GPUPluginObjectTest, CanSetWindow) { |
- EXPECT_EQ(NPERR_NO_ERROR, plugin_object_->New("application/foo", |
- 0, |
- NULL, |
- NULL, |
- NULL)); |
- |
- NPWindow window = {0}; |
- window.window = &window; |
- window.x = 7; |
- |
- EXPECT_EQ(NPERR_NO_ERROR, plugin_object_->SetWindow(&window)); |
- EXPECT_EQ(0, memcmp(&window, &plugin_object_->GetWindow(), sizeof(window))); |
- EXPECT_EQ(GPUPluginObject::kWaitingForOpenCommandBuffer, |
- plugin_object_->GetStatus()); |
- |
- EXPECT_EQ(NPERR_NO_ERROR, plugin_object_->Destroy(NULL)); |
-} |
- |
-TEST_F(GPUPluginObjectTest, CanGetWindowSize) { |
- EXPECT_EQ(NPERR_NO_ERROR, plugin_object_->New("application/foo", |
- 0, |
- NULL, |
- NULL, |
- NULL)); |
- |
- NPWindow window = {0}; |
- window.window = &window; |
- window.x = 10; |
- window.y = 10; |
- window.width = 100; |
- window.height = 200; |
- |
- EXPECT_EQ(0, plugin_object_->GetWidth()); |
- EXPECT_EQ(0, plugin_object_->GetHeight()); |
- EXPECT_EQ(NPERR_NO_ERROR, plugin_object_->SetWindow(&window)); |
- EXPECT_EQ(100, plugin_object_->GetWidth()); |
- EXPECT_EQ(200, plugin_object_->GetHeight()); |
- |
- EXPECT_EQ(NPERR_NO_ERROR, plugin_object_->Destroy(NULL)); |
-} |
- |
-TEST_F(GPUPluginObjectTest, SetWindowFailsIfNotInitialized) { |
- NPWindow window = {0}; |
- EXPECT_EQ(NPERR_GENERIC_ERROR, plugin_object_->SetWindow(&window)); |
- EXPECT_EQ(GPUPluginObject::kWaitingForNew, plugin_object_->GetStatus()); |
-} |
- |
-TEST_F(GPUPluginObjectTest, CanGetScriptableNPObject) { |
- NPObject* scriptable_object = plugin_object_->GetScriptableNPObject(); |
- EXPECT_EQ(plugin_object_.Get(), scriptable_object); |
- NPBrowser::get()->ReleaseObject(scriptable_object); |
-} |
- |
-TEST_F(GPUPluginObjectTest, OpenCommandBufferReturnsInitializedCommandBuffer) { |
- EXPECT_CALL(*command_buffer_, Initialize(NotNull())) |
- .WillOnce(DoAll(Invoke(DeleteObject<SharedMemory>), |
- Return(true))); |
- |
- EXPECT_CALL(*processor_.get(), Initialize(NULL)) |
- .WillOnce(Return(true)); |
- |
- EXPECT_CALL(*command_buffer_, SetPutOffsetChangeCallback(NotNull())) |
- .WillOnce(Invoke(DeleteObject<Callback0::Type>)); |
- |
- EXPECT_EQ(NPERR_NO_ERROR, plugin_object_->New("application/foo", |
- 0, |
- NULL, |
- NULL, |
- NULL)); |
- |
- // Set status as though SetWindow has been called. Avoids having to create a |
- // valid window handle to pass to SetWindow in tests. |
- plugin_object_->set_status(GPUPluginObject::kWaitingForOpenCommandBuffer); |
- |
- EXPECT_EQ(command_buffer_, plugin_object_->OpenCommandBuffer()); |
- |
- // Calling OpenCommandBuffer again just returns the existing command buffer. |
- EXPECT_EQ(command_buffer_, plugin_object_->OpenCommandBuffer()); |
- |
- EXPECT_EQ(GPUPluginObject::kInitializationSuccessful, |
- plugin_object_->GetStatus()); |
- |
- EXPECT_CALL(*command_buffer_, SetPutOffsetChangeCallback(NULL)); |
- |
- EXPECT_EQ(NPERR_NO_ERROR, plugin_object_->Destroy(NULL)); |
-} |
- |
-TEST_F(GPUPluginObjectTest, OpenCommandBufferReturnsNullIfWindowNotReady) { |
- EXPECT_EQ(NPERR_NO_ERROR, plugin_object_->New("application/foo", |
- 0, |
- NULL, |
- NULL, |
- NULL)); |
- |
- // Set status as though SetWindow has not been called. |
- plugin_object_->set_status(GPUPluginObject::kWaitingForSetWindow); |
- |
- EXPECT_TRUE(NULL == plugin_object_->OpenCommandBuffer()); |
- |
- EXPECT_EQ(GPUPluginObject::kWaitingForSetWindow, plugin_object_->GetStatus()); |
-} |
- |
- |
-TEST_F(GPUPluginObjectTest, |
- OpenCommandBufferReturnsNullIfCommandBufferCannotInitialize) { |
- EXPECT_CALL(*command_buffer_, Initialize(NotNull())) |
- .WillOnce(DoAll(Invoke(DeleteObject<SharedMemory>), |
- Return(false))); |
- |
- EXPECT_EQ(NPERR_NO_ERROR, plugin_object_->New("application/foo", |
- 0, |
- NULL, |
- NULL, |
- NULL)); |
- |
- // Set status as though SetWindow has been called. Avoids having to create a |
- // valid window handle to pass to SetWindow in tests. |
- plugin_object_->set_status(GPUPluginObject::kWaitingForOpenCommandBuffer); |
- |
- EXPECT_TRUE(NULL == plugin_object_->OpenCommandBuffer()); |
- |
- EXPECT_EQ(GPUPluginObject::kWaitingForOpenCommandBuffer, |
- plugin_object_->GetStatus()); |
- |
- EXPECT_EQ(NPERR_NO_ERROR, plugin_object_->Destroy(NULL)); |
-} |
- |
-TEST_F(GPUPluginObjectTest, |
- OpenCommandBufferReturnsNullIGPUProcessorCannotInitialize) { |
- EXPECT_CALL(*command_buffer_, Initialize(NotNull())) |
- .WillOnce(DoAll(Invoke(DeleteObject<SharedMemory>), |
- Return(true))); |
- |
- EXPECT_CALL(*processor_.get(), Initialize(NULL)) |
- .WillOnce(Return(false)); |
- |
- EXPECT_EQ(NPERR_NO_ERROR, plugin_object_->New("application/foo", |
- 0, |
- NULL, |
- NULL, |
- NULL)); |
- |
- // Set status as though SetWindow has been called. Avoids having to create a |
- // valid window handle to pass to SetWindow in tests. |
- plugin_object_->set_status(GPUPluginObject::kWaitingForOpenCommandBuffer); |
- |
- EXPECT_TRUE(NULL == plugin_object_->OpenCommandBuffer()); |
- |
- EXPECT_EQ(GPUPluginObject::kWaitingForOpenCommandBuffer, |
- plugin_object_->GetStatus()); |
- |
- EXPECT_EQ(NPERR_NO_ERROR, plugin_object_->Destroy(NULL)); |
-} |
- |
-class MockEventSync : public np_utils::DefaultNPObject<NPObject> { |
- public: |
- explicit MockEventSync(NPP npp) { |
- } |
- |
- MOCK_METHOD2(Resize, void(int32 width, int32 height)); |
- |
- NP_UTILS_BEGIN_DISPATCHER_CHAIN(MockEventSync, DefaultNPObject<NPObject>) |
- NP_UTILS_DISPATCHER(Resize, void(int32 width, int32 height)) |
- NP_UTILS_END_DISPATCHER_CHAIN |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(MockEventSync); |
-}; |
- |
-TEST_F(GPUPluginObjectTest, SendsResizeEventOnSetWindow) { |
- EXPECT_EQ(NPERR_NO_ERROR, plugin_object_->New("application/foo", |
- 0, |
- NULL, |
- NULL, |
- NULL)); |
- |
- NPObjectPointer<MockEventSync> event_sync = |
- np_utils::NPCreateObject<MockEventSync>(NULL); |
- plugin_object_->SetEventSync(event_sync); |
- |
- EXPECT_CALL(*event_sync.Get(), Resize(100, 200)); |
- |
- NPWindow window = {0}; |
- window.window = &window; |
- window.x = 10; |
- window.y = 10; |
- window.width = 100; |
- window.height = 200; |
- |
- plugin_object_->SetWindow(&window); |
- |
- EXPECT_EQ(NPERR_NO_ERROR, plugin_object_->Destroy(NULL)); |
-} |
- |
-} // namespace gpu_plugin |