diff options
Diffstat (limited to 'chromium/ui/gfx/ozone/dri/dri_surface_factory_unittest.cc')
-rw-r--r-- | chromium/ui/gfx/ozone/dri/dri_surface_factory_unittest.cc | 292 |
1 files changed, 0 insertions, 292 deletions
diff --git a/chromium/ui/gfx/ozone/dri/dri_surface_factory_unittest.cc b/chromium/ui/gfx/ozone/dri/dri_surface_factory_unittest.cc deleted file mode 100644 index 2e70f642f2a..00000000000 --- a/chromium/ui/gfx/ozone/dri/dri_surface_factory_unittest.cc +++ /dev/null @@ -1,292 +0,0 @@ -// Copyright 2013 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 "base/memory/scoped_ptr.h" -#include "base/message_loop/message_loop.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "ui/gfx/ozone/dri/dri_skbitmap.h" -#include "ui/gfx/ozone/dri/dri_surface.h" -#include "ui/gfx/ozone/dri/dri_surface_factory.h" -#include "ui/gfx/ozone/dri/dri_wrapper.h" -#include "ui/gfx/ozone/dri/hardware_display_controller.h" -#include "ui/gfx/ozone/surface_factory_ozone.h" - -namespace { - -const drmModeModeInfo kDefaultMode = - {0, 6, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, {'\0'}}; - -// Mock file descriptor ID. -const int kFd = 3; - -// Mock connector ID. -const uint32_t kConnectorId = 1; - -// Mock CRTC ID. -const uint32_t kCrtcId = 1; - -const uint32_t kDPMSPropertyId = 1; - -const gfx::AcceleratedWidget kDefaultWidgetHandle = 1; - -// The real DriWrapper makes actual DRM calls which we can't use in unit tests. -class MockDriWrapper : public gfx::DriWrapper { - public: - MockDriWrapper(int fd) : DriWrapper(""), - add_framebuffer_expectation_(true), - page_flip_expectation_(true) { - fd_ = fd; - } - - virtual ~MockDriWrapper() { fd_ = -1; } - - virtual drmModeCrtc* GetCrtc(uint32_t crtc_id) OVERRIDE { - return new drmModeCrtc; - } - - virtual void FreeCrtc(drmModeCrtc* crtc) OVERRIDE { - delete crtc; - } - - virtual bool SetCrtc(uint32_t crtc_id, - uint32_t framebuffer, - uint32_t* connectors, - drmModeModeInfo* mode) OVERRIDE { - return true; - } - - virtual bool SetCrtc(drmModeCrtc* crtc, uint32_t* connectors) OVERRIDE { - return true; - } - - virtual bool AddFramebuffer(const drmModeModeInfo& mode, - uint8_t depth, - uint8_t bpp, - uint32_t stride, - uint32_t handle, - uint32_t* framebuffer) OVERRIDE { - return add_framebuffer_expectation_; - } - - virtual bool RemoveFramebuffer(uint32_t framebuffer) OVERRIDE { return true; } - - virtual bool PageFlip(uint32_t crtc_id, - uint32_t framebuffer, - void* data) OVERRIDE { - static_cast<gfx::HardwareDisplayController*>(data)->get_surface() - ->SwapBuffers(); - return page_flip_expectation_; - } - - virtual bool ConnectorSetProperty(uint32_t connector_id, - uint32_t property_id, - uint64_t value) OVERRIDE { return true; } - - void set_add_framebuffer_expectation(bool state) { - add_framebuffer_expectation_ = state; - } - - void set_page_flip_expectation(bool state) { - page_flip_expectation_ = state; - } - - private: - bool add_framebuffer_expectation_; - bool page_flip_expectation_; - - DISALLOW_COPY_AND_ASSIGN(MockDriWrapper); -}; - -class MockDriSkBitmap : public gfx::DriSkBitmap { - public: - MockDriSkBitmap() : DriSkBitmap(kFd) {} - virtual ~MockDriSkBitmap() {} - - virtual bool Initialize() OVERRIDE { - allocPixels(); - eraseColor(SK_ColorBLACK); - return true; - } - - private: - DISALLOW_COPY_AND_ASSIGN(MockDriSkBitmap); -}; - -class MockDriSurface : public gfx::DriSurface { - public: - MockDriSurface(gfx::HardwareDisplayController* controller) - : DriSurface(controller) {} - virtual ~MockDriSurface() {} - - private: - virtual gfx::DriSkBitmap* CreateBuffer() OVERRIDE { - return new MockDriSkBitmap(); - } - - DISALLOW_COPY_AND_ASSIGN(MockDriSurface); -}; - -// SSFO would normally allocate DRM resources. We can't rely on having a DRM -// backend to allocate and display our buffers. Thus, we replace these -// resources with stubs. For DRM calls, we simply use stubs that do nothing and -// for buffers we use the default SkBitmap allocator. -class MockDriSurfaceFactory - : public gfx::DriSurfaceFactory { - public: - MockDriSurfaceFactory() - : DriSurfaceFactory(), - mock_drm_(NULL), - drm_wrapper_expectation_(true), - initialize_controller_expectation_(true) {} - virtual ~MockDriSurfaceFactory() {}; - - void set_drm_wrapper_expectation(bool state) { - drm_wrapper_expectation_ = state; - } - - void set_initialize_controller_expectation(bool state) { - initialize_controller_expectation_ = state; - } - - MockDriWrapper* get_drm() const { - return mock_drm_; - } - - private: - virtual gfx::DriSurface* CreateSurface( - gfx::HardwareDisplayController* controller) OVERRIDE { - return new MockDriSurface(controller); - } - - virtual gfx::DriWrapper* CreateWrapper() OVERRIDE { - if (drm_wrapper_expectation_) - mock_drm_ = new MockDriWrapper(kFd); - else - mock_drm_ = new MockDriWrapper(-1); - - return mock_drm_; - } - - // Normally we'd use DRM to figure out the controller configuration. But we - // can't use DRM in unit tests, so we just create a fake configuration. - virtual bool InitializeControllerForPrimaryDisplay( - gfx::DriWrapper* drm, - gfx::HardwareDisplayController* controller) OVERRIDE { - if (initialize_controller_expectation_) { - controller->SetControllerInfo(drm, - kConnectorId, - kCrtcId, - kDPMSPropertyId, - kDefaultMode); - return true; - } else { - return false; - } - } - - virtual void WaitForPageFlipEvent(int fd) OVERRIDE {} - - MockDriWrapper* mock_drm_; - bool drm_wrapper_expectation_; - bool initialize_controller_expectation_; - - DISALLOW_COPY_AND_ASSIGN(MockDriSurfaceFactory); -}; - -} // namespace - -class DriSurfaceFactoryTest : public testing::Test { - public: - DriSurfaceFactoryTest() {} - - virtual void SetUp() OVERRIDE; - virtual void TearDown() OVERRIDE; - protected: - scoped_ptr<base::MessageLoop> message_loop_; - scoped_ptr<MockDriSurfaceFactory> factory_; - - private: - DISALLOW_COPY_AND_ASSIGN(DriSurfaceFactoryTest); -}; - -void DriSurfaceFactoryTest::SetUp() { - message_loop_.reset(new base::MessageLoop(base::MessageLoop::TYPE_UI)); - factory_.reset(new MockDriSurfaceFactory()); -} - -void DriSurfaceFactoryTest::TearDown() { - factory_.reset(); - message_loop_.reset(); -} - -TEST_F(DriSurfaceFactoryTest, FailInitialization) { - factory_->set_drm_wrapper_expectation(false); - - EXPECT_EQ(gfx::SurfaceFactoryOzone::FAILED, factory_->InitializeHardware()); -} - -TEST_F(DriSurfaceFactoryTest, SuccessfulInitialization) { - EXPECT_EQ(gfx::SurfaceFactoryOzone::INITIALIZED, - factory_->InitializeHardware()); -} - -TEST_F(DriSurfaceFactoryTest, FailSurfaceInitialization) { - factory_->set_initialize_controller_expectation(false); - - EXPECT_EQ(gfx::SurfaceFactoryOzone::INITIALIZED, - factory_->InitializeHardware()); - - gfx::AcceleratedWidget w = factory_->GetAcceleratedWidget(); - EXPECT_EQ(kDefaultWidgetHandle, w); - - EXPECT_EQ(gfx::kNullAcceleratedWidget, factory_->RealizeAcceleratedWidget(w)); -} - -TEST_F(DriSurfaceFactoryTest, FailBindingSurfaceToController) { - EXPECT_EQ(gfx::SurfaceFactoryOzone::INITIALIZED, - factory_->InitializeHardware()); - - factory_->get_drm()->set_add_framebuffer_expectation(false); - - gfx::AcceleratedWidget w = factory_->GetAcceleratedWidget(); - EXPECT_EQ(kDefaultWidgetHandle, w); - - EXPECT_EQ(gfx::kNullAcceleratedWidget, factory_->RealizeAcceleratedWidget(w)); -} - -TEST_F(DriSurfaceFactoryTest, SuccessfulWidgetRealization) { - EXPECT_EQ(gfx::SurfaceFactoryOzone::INITIALIZED, - factory_->InitializeHardware()); - - gfx::AcceleratedWidget w = factory_->GetAcceleratedWidget(); - EXPECT_EQ(kDefaultWidgetHandle, w); - - EXPECT_NE(gfx::kNullAcceleratedWidget, factory_->RealizeAcceleratedWidget(w)); -} - -TEST_F(DriSurfaceFactoryTest, FailSchedulePageFlip) { - EXPECT_EQ(gfx::SurfaceFactoryOzone::INITIALIZED, - factory_->InitializeHardware()); - - factory_->get_drm()->set_page_flip_expectation(false); - - gfx::AcceleratedWidget w = factory_->GetAcceleratedWidget(); - EXPECT_EQ(kDefaultWidgetHandle, w); - - EXPECT_NE(gfx::kNullAcceleratedWidget, factory_->RealizeAcceleratedWidget(w)); - - EXPECT_FALSE(factory_->SchedulePageFlip(w)); -} - -TEST_F(DriSurfaceFactoryTest, SuccessfulSchedulePageFlip) { - EXPECT_EQ(gfx::SurfaceFactoryOzone::INITIALIZED, - factory_->InitializeHardware()); - - gfx::AcceleratedWidget w = factory_->GetAcceleratedWidget(); - EXPECT_EQ(kDefaultWidgetHandle, w); - - EXPECT_NE(gfx::kNullAcceleratedWidget, factory_->RealizeAcceleratedWidget(w)); - - EXPECT_TRUE(factory_->SchedulePageFlip(w)); -} |