Index: ui/ozone/platform/dri/hardware_display_controller_unittest.cc |
diff --git a/ui/ozone/platform/dri/hardware_display_controller_unittest.cc b/ui/ozone/platform/dri/hardware_display_controller_unittest.cc |
index 25169453b2de674e72c286fcc2862b7c13c2d5d1..16b2dabd5190b998caf2b6df0cd92211c4304b62 100644 |
--- a/ui/ozone/platform/dri/hardware_display_controller_unittest.cc |
+++ b/ui/ozone/platform/dri/hardware_display_controller_unittest.cc |
@@ -10,6 +10,7 @@ |
#include "ui/ozone/platform/dri/hardware_display_controller.h" |
#include "ui/ozone/platform/dri/test/mock_dri_surface.h" |
#include "ui/ozone/platform/dri/test/mock_dri_wrapper.h" |
+#include "ui/ozone/public/native_pixmap.h" |
namespace { |
@@ -18,6 +19,7 @@ const drmModeModeInfo kDefaultMode = |
{0, 6, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, {'\0'}}; |
const gfx::Size kDefaultModeSize(kDefaultMode.hdisplay, kDefaultMode.vdisplay); |
+const gfx::SizeF kDefaultModeSizeF(1.0, 1.0); |
} // namespace |
@@ -63,7 +65,8 @@ TEST_F(HardwareDisplayControllerTest, CheckStateAfterPageFlip) { |
EXPECT_TRUE(surface->Initialize()); |
EXPECT_TRUE(controller_->BindSurfaceToController(surface.Pass(), |
kDefaultMode)); |
- EXPECT_TRUE(controller_->SchedulePageFlip()); |
+ EXPECT_TRUE(controller_->SchedulePageFlip( |
+ std::vector<ui::OzoneOverlayPlane>(), NULL)); |
EXPECT_TRUE(controller_->surface() != NULL); |
} |
@@ -88,7 +91,8 @@ TEST_F(HardwareDisplayControllerTest, CheckStateIfPageFlipFails) { |
EXPECT_TRUE(surface->Initialize()); |
EXPECT_TRUE(controller_->BindSurfaceToController(surface.Pass(), |
kDefaultMode)); |
- EXPECT_FALSE(controller_->SchedulePageFlip()); |
+ EXPECT_FALSE(controller_->SchedulePageFlip( |
+ std::vector<ui::OzoneOverlayPlane>(), NULL)); |
} |
TEST_F(HardwareDisplayControllerTest, VerifyNoDRMCallsWhenDisabled) { |
@@ -99,7 +103,8 @@ TEST_F(HardwareDisplayControllerTest, VerifyNoDRMCallsWhenDisabled) { |
EXPECT_TRUE(controller_->BindSurfaceToController(surface.Pass(), |
kDefaultMode)); |
controller_->Disable(); |
- EXPECT_TRUE(controller_->SchedulePageFlip()); |
+ EXPECT_TRUE(controller_->SchedulePageFlip( |
+ std::vector<ui::OzoneOverlayPlane>(), NULL)); |
EXPECT_EQ(0, drm_->get_page_flip_call_count()); |
surface.reset(new ui::MockDriSurface(drm_.get(), kDefaultModeSize)); |
@@ -107,6 +112,58 @@ TEST_F(HardwareDisplayControllerTest, VerifyNoDRMCallsWhenDisabled) { |
EXPECT_TRUE(surface->Initialize()); |
EXPECT_TRUE(controller_->BindSurfaceToController(surface.Pass(), |
kDefaultMode)); |
- EXPECT_TRUE(controller_->SchedulePageFlip()); |
+ EXPECT_TRUE(controller_->SchedulePageFlip( |
+ std::vector<ui::OzoneOverlayPlane>(), NULL)); |
EXPECT_EQ(1, drm_->get_page_flip_call_count()); |
} |
+ |
+TEST_F(HardwareDisplayControllerTest, CheckOverlayMainSurfaceReplacement) { |
+ scoped_ptr<ui::ScanoutSurface> surface( |
+ new ui::MockDriSurface(drm_.get(), kDefaultModeSize)); |
+ scoped_ptr<ui::ScanoutSurface> overlay( |
+ new ui::MockDriSurface(drm_.get(), kDefaultModeSize)); |
+ |
+ EXPECT_TRUE(surface->Initialize()); |
+ EXPECT_TRUE( |
+ controller_->BindSurfaceToController(surface.Pass(), kDefaultMode)); |
+ EXPECT_TRUE(overlay->Initialize()); |
+ |
+ std::vector<ui::OzoneOverlayPlane> overlays; |
+ std::vector<scoped_refptr<ui::NativePixmap> > overlay_refs; |
+ |
+ overlays.push_back(ui::OzoneOverlayPlane(overlay.get(), |
+ 0, |
+ gfx::OVERLAY_TRANSFORM_NONE, |
+ gfx::Rect(kDefaultModeSize), |
+ gfx::RectF(kDefaultModeSizeF))); |
+ |
+ EXPECT_TRUE(controller_->SchedulePageFlip(overlays, &overlay_refs)); |
+ EXPECT_EQ(1, drm_->get_page_flip_call_count()); |
+ EXPECT_EQ(0, drm_->get_overlay_flip_call_count()); |
+} |
+ |
+TEST_F(HardwareDisplayControllerTest, CheckOverlayPresent) { |
+ scoped_ptr<ui::ScanoutSurface> surface( |
+ new ui::MockDriSurface(drm_.get(), kDefaultModeSize)); |
+ scoped_ptr<ui::ScanoutSurface> overlay( |
+ new ui::MockDriSurface(drm_.get(), kDefaultModeSize)); |
+ |
+ EXPECT_TRUE(surface->Initialize()); |
+ EXPECT_TRUE( |
+ controller_->BindSurfaceToController(surface.Pass(), kDefaultMode)); |
+ EXPECT_TRUE(overlay->Initialize()); |
+ |
+ std::vector<ui::OzoneOverlayPlane> overlays; |
+ std::vector<scoped_refptr<ui::NativePixmap> > overlay_refs; |
+ |
+ overlays.push_back(ui::OzoneOverlayPlane(overlay.get(), |
+ 1, |
+ gfx::OVERLAY_TRANSFORM_NONE, |
+ gfx::Rect(kDefaultModeSize), |
+ gfx::RectF(kDefaultModeSizeF))); |
+ overlays.back().overlay_plane = 1; // Force association with a plane. |
+ |
+ EXPECT_TRUE(controller_->SchedulePageFlip(overlays, &overlay_refs)); |
+ EXPECT_EQ(1, drm_->get_page_flip_call_count()); |
+ EXPECT_EQ(1, drm_->get_overlay_flip_call_count()); |
+} |