| Index: cc/surfaces/surface_display_output_surface_unittest.cc
|
| diff --git a/cc/surfaces/surface_display_output_surface_unittest.cc b/cc/surfaces/surface_display_output_surface_unittest.cc
|
| index f263363bd14bb735db2bf549232146541e4483af..44859b06bf6690ef0d37df45d0137ac9c6305ed3 100644
|
| --- a/cc/surfaces/surface_display_output_surface_unittest.cc
|
| +++ b/cc/surfaces/surface_display_output_surface_unittest.cc
|
| @@ -6,7 +6,9 @@
|
|
|
| #include <memory>
|
|
|
| -#include "cc/surfaces/onscreen_display_client.h"
|
| +#include "cc/output/renderer_settings.h"
|
| +#include "cc/scheduler/begin_frame_source.h"
|
| +#include "cc/surfaces/display.h"
|
| #include "cc/surfaces/surface_id_allocator.h"
|
| #include "cc/surfaces/surface_manager.h"
|
| #include "cc/test/fake_output_surface.h"
|
| @@ -20,80 +22,46 @@
|
| namespace cc {
|
| namespace {
|
|
|
| -class FakeOnscreenDisplayClient : public OnscreenDisplayClient {
|
| - public:
|
| - FakeOnscreenDisplayClient(
|
| - SurfaceManager* manager,
|
| - SharedBitmapManager* bitmap_manager,
|
| - gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
|
| - const RendererSettings& settings,
|
| - scoped_refptr<base::SingleThreadTaskRunner> task_runner,
|
| - uint32_t compositor_surface_namespace)
|
| - : OnscreenDisplayClient(FakeOutputSurface::Create3d(),
|
| - manager,
|
| - bitmap_manager,
|
| - gpu_memory_buffer_manager,
|
| - settings,
|
| - task_runner,
|
| - compositor_surface_namespace) {
|
| - // Ownership is passed to another object later, store a pointer
|
| - // to it now for future reference.
|
| - fake_output_surface_ =
|
| - static_cast<FakeOutputSurface*>(output_surface_.get());
|
| - fake_output_surface_->set_max_frames_pending(2);
|
| - }
|
| -
|
| - FakeOutputSurface* output_surface() { return fake_output_surface_; }
|
| -
|
| - protected:
|
| - FakeOutputSurface* fake_output_surface_;
|
| -};
|
| -
|
| class SurfaceDisplayOutputSurfaceTest : public testing::Test {
|
| public:
|
| SurfaceDisplayOutputSurfaceTest()
|
| : now_src_(new base::SimpleTestTickClock()),
|
| task_runner_(new OrderedSimpleTaskRunner(now_src_.get(), true)),
|
| + begin_frame_source_(new BackToBackBeginFrameSource(task_runner_.get())),
|
| allocator_(0),
|
| display_size_(1920, 1080),
|
| display_rect_(display_size_),
|
| - display_client_(&surface_manager_,
|
| - &bitmap_manager_,
|
| - &gpu_memory_buffer_manager_,
|
| - renderer_settings_,
|
| - task_runner_,
|
| - allocator_.id_namespace()),
|
| - context_provider_(TestContextProvider::Create()),
|
| - surface_display_output_surface_(&surface_manager_,
|
| - &allocator_,
|
| - context_provider_,
|
| - nullptr) {
|
| + context_provider_(TestContextProvider::Create()) {
|
| surface_manager_.RegisterSurfaceIdNamespace(allocator_.id_namespace());
|
| - output_surface_ = display_client_.output_surface();
|
| - display_client_.set_surface_output_surface(
|
| - &surface_display_output_surface_);
|
| - surface_display_output_surface_.set_display_client(&display_client_);
|
|
|
| - // Set the Display's begin frame source like a real browser compositor
|
| - // output surface would.
|
| - begin_frame_source_.reset(
|
| - new BackToBackBeginFrameSource(task_runner_.get()));
|
| - display_client_.display()->SetBeginFrameSource(begin_frame_source_.get());
|
| + std::unique_ptr<FakeOutputSurface> display_output_surface =
|
| + FakeOutputSurface::Create3d();
|
| + display_output_surface_ = display_output_surface.get();
|
| + display_output_surface_->set_max_frames_pending(2);
|
|
|
| - surface_display_output_surface_.BindToClient(
|
| - &surface_display_output_surface_client_);
|
| + display_.reset(new Display(&surface_manager_, &bitmap_manager_,
|
| + &gpu_memory_buffer_manager_, renderer_settings_,
|
| + allocator_.id_namespace(), task_runner_.get(),
|
| + std::move(display_output_surface)));
|
| + delegated_output_surface_.reset(new SurfaceDisplayOutputSurface(
|
| + &surface_manager_, &allocator_, display_.get(), context_provider_,
|
| + nullptr));
|
|
|
| - display_client_.display()->Resize(display_size_);
|
| + // Set the Display's begin frame source like a real browser compositor
|
| + // output surface would.
|
| + display_->SetBeginFrameSource(begin_frame_source_.get());
|
| + delegated_output_surface_->BindToClient(&delegated_output_surface_client_);
|
| + display_->Resize(display_size_);
|
|
|
| - EXPECT_FALSE(surface_display_output_surface_client_
|
| - .did_lose_output_surface_called());
|
| + EXPECT_FALSE(
|
| + delegated_output_surface_client_.did_lose_output_surface_called());
|
| }
|
|
|
| ~SurfaceDisplayOutputSurfaceTest() override {}
|
|
|
| - void SwapBuffersWithDamage(const gfx::Rect& damage_rect_) {
|
| + void SwapBuffersWithDamage(const gfx::Rect& damage_rect) {
|
| std::unique_ptr<RenderPass> render_pass(RenderPass::Create());
|
| - render_pass->SetNew(RenderPassId(1, 1), display_rect_, damage_rect_,
|
| + render_pass->SetNew(RenderPassId(1, 1), display_rect_, damage_rect,
|
| gfx::Transform());
|
|
|
| std::unique_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData);
|
| @@ -102,16 +70,16 @@ class SurfaceDisplayOutputSurfaceTest : public testing::Test {
|
| CompositorFrame frame;
|
| frame.delegated_frame_data = std::move(frame_data);
|
|
|
| - surface_display_output_surface_.SwapBuffers(&frame);
|
| + delegated_output_surface_->SwapBuffers(&frame);
|
| }
|
|
|
| void SetUp() override {
|
| // Draw the first frame to start in an "unlocked" state.
|
| SwapBuffersWithDamage(display_rect_);
|
|
|
| - EXPECT_EQ(0u, output_surface_->num_sent_frames());
|
| + EXPECT_EQ(0u, display_output_surface_->num_sent_frames());
|
| task_runner_->RunUntilIdle();
|
| - EXPECT_EQ(1u, output_surface_->num_sent_frames());
|
| + EXPECT_EQ(1u, display_output_surface_->num_sent_frames());
|
| }
|
|
|
| protected:
|
| @@ -122,59 +90,58 @@ class SurfaceDisplayOutputSurfaceTest : public testing::Test {
|
|
|
| const gfx::Size display_size_;
|
| const gfx::Rect display_rect_;
|
| - FakeOutputSurface* output_surface_;
|
| SurfaceManager surface_manager_;
|
| TestSharedBitmapManager bitmap_manager_;
|
| TestGpuMemoryBufferManager gpu_memory_buffer_manager_;
|
| RendererSettings renderer_settings_;
|
| - FakeOnscreenDisplayClient display_client_;
|
|
|
| scoped_refptr<TestContextProvider> context_provider_;
|
| -
|
| - FakeOutputSurfaceClient surface_display_output_surface_client_;
|
| - SurfaceDisplayOutputSurface surface_display_output_surface_;
|
| + FakeOutputSurface* display_output_surface_ = nullptr;
|
| + std::unique_ptr<Display> display_;
|
| + FakeOutputSurfaceClient delegated_output_surface_client_;
|
| + std::unique_ptr<SurfaceDisplayOutputSurface> delegated_output_surface_;
|
| };
|
|
|
| TEST_F(SurfaceDisplayOutputSurfaceTest, DamageTriggersSwapBuffers) {
|
| SwapBuffersWithDamage(display_rect_);
|
| - EXPECT_EQ(1u, output_surface_->num_sent_frames());
|
| + EXPECT_EQ(1u, display_output_surface_->num_sent_frames());
|
| task_runner_->RunUntilIdle();
|
| - EXPECT_EQ(2u, output_surface_->num_sent_frames());
|
| + EXPECT_EQ(2u, display_output_surface_->num_sent_frames());
|
| }
|
|
|
| TEST_F(SurfaceDisplayOutputSurfaceTest, NoDamageDoesNotTriggerSwapBuffers) {
|
| SwapBuffersWithDamage(gfx::Rect());
|
| - EXPECT_EQ(1u, output_surface_->num_sent_frames());
|
| + EXPECT_EQ(1u, display_output_surface_->num_sent_frames());
|
| task_runner_->RunUntilIdle();
|
| - EXPECT_EQ(1u, output_surface_->num_sent_frames());
|
| + EXPECT_EQ(1u, display_output_surface_->num_sent_frames());
|
| }
|
|
|
| TEST_F(SurfaceDisplayOutputSurfaceTest, SuspendedDoesNotTriggerSwapBuffers) {
|
| SwapBuffersWithDamage(display_rect_);
|
| - EXPECT_EQ(1u, output_surface_->num_sent_frames());
|
| - output_surface_->set_suspended_for_recycle(true);
|
| + EXPECT_EQ(1u, display_output_surface_->num_sent_frames());
|
| + display_output_surface_->set_suspended_for_recycle(true);
|
| task_runner_->RunUntilIdle();
|
| - EXPECT_EQ(1u, output_surface_->num_sent_frames());
|
| + EXPECT_EQ(1u, display_output_surface_->num_sent_frames());
|
| SwapBuffersWithDamage(display_rect_);
|
| task_runner_->RunUntilIdle();
|
| - EXPECT_EQ(1u, output_surface_->num_sent_frames());
|
| - output_surface_->set_suspended_for_recycle(false);
|
| + EXPECT_EQ(1u, display_output_surface_->num_sent_frames());
|
| + display_output_surface_->set_suspended_for_recycle(false);
|
| SwapBuffersWithDamage(display_rect_);
|
| task_runner_->RunUntilIdle();
|
| - EXPECT_EQ(2u, output_surface_->num_sent_frames());
|
| + EXPECT_EQ(2u, display_output_surface_->num_sent_frames());
|
| }
|
|
|
| TEST_F(SurfaceDisplayOutputSurfaceTest,
|
| LockingResourcesDoesNotIndirectlyCauseDamage) {
|
| - surface_display_output_surface_.ForceReclaimResources();
|
| - EXPECT_EQ(1u, output_surface_->num_sent_frames());
|
| + delegated_output_surface_->ForceReclaimResources();
|
| + EXPECT_EQ(1u, display_output_surface_->num_sent_frames());
|
| task_runner_->RunPendingTasks();
|
| - EXPECT_EQ(1u, output_surface_->num_sent_frames());
|
| + EXPECT_EQ(1u, display_output_surface_->num_sent_frames());
|
|
|
| SwapBuffersWithDamage(gfx::Rect());
|
| - EXPECT_EQ(1u, output_surface_->num_sent_frames());
|
| + EXPECT_EQ(1u, display_output_surface_->num_sent_frames());
|
| task_runner_->RunUntilIdle();
|
| - EXPECT_EQ(1u, output_surface_->num_sent_frames());
|
| + EXPECT_EQ(1u, display_output_surface_->num_sent_frames());
|
| }
|
|
|
| } // namespace
|
|
|