| Index: cc/surfaces/surface_factory_unittest.cc
|
| diff --git a/cc/surfaces/surface_factory_unittest.cc b/cc/surfaces/surface_factory_unittest.cc
|
| index a61db53f16e504c00ecfb1d52cf8ffe871322017..93a7cc58c5e615463dd43ec18610567ca97fcb55 100644
|
| --- a/cc/surfaces/surface_factory_unittest.cc
|
| +++ b/cc/surfaces/surface_factory_unittest.cc
|
| @@ -69,11 +69,11 @@ class SurfaceFactoryTest : public testing::Test, public SurfaceDamageObserver {
|
| SurfaceFactoryTest()
|
| : factory_(
|
| new SurfaceFactory(kArbitraryFrameSinkId, &manager_, &client_)),
|
| - surface_id_(kArbitraryFrameSinkId, 3, 0),
|
| + local_frame_id_(3, 0),
|
| frame_sync_token_(GenTestSyncToken(4)),
|
| consumer_sync_token_(GenTestSyncToken(5)) {
|
| manager_.AddObserver(this);
|
| - factory_->Create(surface_id_);
|
| + factory_->Create(local_frame_id_);
|
| }
|
|
|
| // SurfaceDamageObserver implementation.
|
| @@ -82,8 +82,8 @@ class SurfaceFactoryTest : public testing::Test, public SurfaceDamageObserver {
|
| }
|
|
|
| ~SurfaceFactoryTest() override {
|
| - if (!surface_id_.is_null())
|
| - factory_->Destroy(surface_id_);
|
| + if (!local_frame_id_.is_null())
|
| + factory_->Destroy(local_frame_id_);
|
| manager_.RemoveObserver(this);
|
| }
|
|
|
| @@ -99,7 +99,7 @@ class SurfaceFactoryTest : public testing::Test, public SurfaceDamageObserver {
|
| }
|
| CompositorFrame frame;
|
| frame.delegated_frame_data = std::move(frame_data);
|
| - factory_->SubmitCompositorFrame(surface_id_, std::move(frame),
|
| + factory_->SubmitCompositorFrame(local_frame_id_, std::move(frame),
|
| SurfaceFactory::DrawCallback());
|
| }
|
|
|
| @@ -134,7 +134,8 @@ class SurfaceFactoryTest : public testing::Test, public SurfaceDamageObserver {
|
| }
|
|
|
| void RefCurrentFrameResources() {
|
| - Surface* surface = manager_.GetSurfaceForId(surface_id_);
|
| + Surface* surface = manager_.GetSurfaceForId(
|
| + SurfaceId(factory_->frame_sink_id(), local_frame_id_));
|
| factory_->RefResources(
|
| surface->GetEligibleFrame().delegated_frame_data->resource_list);
|
| }
|
| @@ -143,7 +144,7 @@ class SurfaceFactoryTest : public testing::Test, public SurfaceDamageObserver {
|
| SurfaceManager manager_;
|
| TestSurfaceFactoryClient client_;
|
| std::unique_ptr<SurfaceFactory> factory_;
|
| - SurfaceId surface_id_;
|
| + LocalFrameId local_frame_id_;
|
|
|
| // This is the sync token submitted with the frame. It should never be
|
| // returned to the client.
|
| @@ -422,41 +423,42 @@ TEST_F(SurfaceFactoryTest, ResourceLifetime) {
|
| }
|
|
|
| TEST_F(SurfaceFactoryTest, BlankNoIndexIncrement) {
|
| - SurfaceId surface_id(kArbitraryFrameSinkId, 6, 0);
|
| - factory_->Create(surface_id);
|
| + LocalFrameId local_frame_id(6, 0);
|
| + SurfaceId surface_id(kArbitraryFrameSinkId, local_frame_id);
|
| + factory_->Create(local_frame_id);
|
| Surface* surface = manager_.GetSurfaceForId(surface_id);
|
| ASSERT_NE(nullptr, surface);
|
| EXPECT_EQ(2, surface->frame_index());
|
| CompositorFrame frame;
|
| frame.delegated_frame_data.reset(new DelegatedFrameData);
|
|
|
| - factory_->SubmitCompositorFrame(surface_id, std::move(frame),
|
| + factory_->SubmitCompositorFrame(local_frame_id, std::move(frame),
|
| SurfaceFactory::DrawCallback());
|
| EXPECT_EQ(2, surface->frame_index());
|
| - factory_->Destroy(surface_id);
|
| + factory_->Destroy(local_frame_id);
|
| }
|
|
|
| void CreateSurfaceDrawCallback(SurfaceFactory* factory,
|
| uint32_t* execute_count) {
|
| - SurfaceId new_id(kArbitraryFrameSinkId, 7, 0);
|
| + LocalFrameId new_id(7, 0);
|
| factory->Create(new_id);
|
| factory->Destroy(new_id);
|
| *execute_count += 1;
|
| }
|
|
|
| TEST_F(SurfaceFactoryTest, AddDuringDestroy) {
|
| - SurfaceId surface_id(kArbitraryFrameSinkId, 6, 0);
|
| - factory_->Create(surface_id);
|
| + LocalFrameId local_frame_id(6, 0);
|
| + factory_->Create(local_frame_id);
|
| CompositorFrame frame;
|
| frame.delegated_frame_data.reset(new DelegatedFrameData);
|
|
|
| uint32_t execute_count = 0;
|
| factory_->SubmitCompositorFrame(
|
| - surface_id, std::move(frame),
|
| + local_frame_id, std::move(frame),
|
| base::Bind(&CreateSurfaceDrawCallback, base::Unretained(factory_.get()),
|
| &execute_count));
|
| EXPECT_EQ(0u, execute_count);
|
| - factory_->Destroy(surface_id);
|
| + factory_->Destroy(local_frame_id);
|
| EXPECT_EQ(1u, execute_count);
|
| }
|
|
|
| @@ -466,7 +468,7 @@ void DrawCallback(uint32_t* execute_count) {
|
|
|
| // Tests doing a DestroyAll before shutting down the factory;
|
| TEST_F(SurfaceFactoryTest, DestroyAll) {
|
| - SurfaceId id(kArbitraryFrameSinkId, 7, 0);
|
| + LocalFrameId id(7, 0);
|
| factory_->Create(id);
|
|
|
| std::unique_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData);
|
| @@ -480,21 +482,22 @@ TEST_F(SurfaceFactoryTest, DestroyAll) {
|
| factory_->SubmitCompositorFrame(id, std::move(frame),
|
| base::Bind(&DrawCallback, &execute_count));
|
|
|
| - surface_id_ = SurfaceId();
|
| + local_frame_id_ = LocalFrameId();
|
| factory_->DestroyAll();
|
| EXPECT_EQ(1u, execute_count);
|
| }
|
|
|
| TEST_F(SurfaceFactoryTest, DestroySequence) {
|
| - SurfaceId id2(kArbitraryFrameSinkId, 5, 0);
|
| - factory_->Create(id2);
|
| + LocalFrameId local_frame_id2(5, 0);
|
| + SurfaceId id2(kArbitraryFrameSinkId, local_frame_id2);
|
| + factory_->Create(local_frame_id2);
|
|
|
| manager_.RegisterFrameSinkId(kArbitraryFrameSinkId);
|
|
|
| // Check that waiting before the sequence is satisfied works.
|
| manager_.GetSurfaceForId(id2)->AddDestructionDependency(
|
| SurfaceSequence(kArbitraryFrameSinkId, 4));
|
| - factory_->Destroy(id2);
|
| + factory_->Destroy(local_frame_id2);
|
|
|
| std::unique_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData);
|
| CompositorFrame frame;
|
| @@ -502,16 +505,16 @@ TEST_F(SurfaceFactoryTest, DestroySequence) {
|
| frame.metadata.satisfies_sequences.push_back(4);
|
| frame.delegated_frame_data = std::move(frame_data);
|
| DCHECK(manager_.GetSurfaceForId(id2));
|
| - factory_->SubmitCompositorFrame(surface_id_, std::move(frame),
|
| + factory_->SubmitCompositorFrame(local_frame_id_, std::move(frame),
|
| SurfaceFactory::DrawCallback());
|
| DCHECK(!manager_.GetSurfaceForId(id2));
|
|
|
| // Check that waiting after the sequence is satisfied works.
|
| - factory_->Create(id2);
|
| + factory_->Create(local_frame_id2);
|
| DCHECK(manager_.GetSurfaceForId(id2));
|
| manager_.GetSurfaceForId(id2)->AddDestructionDependency(
|
| SurfaceSequence(FrameSinkId(0, 0), 6));
|
| - factory_->Destroy(id2);
|
| + factory_->Destroy(local_frame_id2);
|
| DCHECK(!manager_.GetSurfaceForId(id2));
|
| }
|
|
|
| @@ -520,13 +523,14 @@ TEST_F(SurfaceFactoryTest, DestroySequence) {
|
| TEST_F(SurfaceFactoryTest, InvalidFrameSinkId) {
|
| FrameSinkId frame_sink_id(1234, 5678);
|
|
|
| - SurfaceId id(factory_->frame_sink_id(), 5, 0);
|
| - factory_->Create(id);
|
| + LocalFrameId local_frame_id(5, 0);
|
| + SurfaceId id(factory_->frame_sink_id(), local_frame_id);
|
| + factory_->Create(local_frame_id);
|
|
|
| manager_.RegisterFrameSinkId(frame_sink_id);
|
| manager_.GetSurfaceForId(id)->AddDestructionDependency(
|
| SurfaceSequence(frame_sink_id, 4));
|
| - factory_->Destroy(id);
|
| + factory_->Destroy(local_frame_id);
|
|
|
| // Verify the dependency has prevented the surface from getting destroyed.
|
| EXPECT_TRUE(manager_.GetSurfaceForId(id));
|
| @@ -539,28 +543,30 @@ TEST_F(SurfaceFactoryTest, InvalidFrameSinkId) {
|
| }
|
|
|
| TEST_F(SurfaceFactoryTest, DestroyCycle) {
|
| - SurfaceId id2(kArbitraryFrameSinkId, 5, 0);
|
| - factory_->Create(id2);
|
| + LocalFrameId local_frame_id2(5, 0);
|
| + SurfaceId id2(kArbitraryFrameSinkId, local_frame_id2);
|
| + factory_->Create(local_frame_id2);
|
|
|
| manager_.RegisterFrameSinkId(FrameSinkId(0, 0));
|
|
|
| manager_.GetSurfaceForId(id2)->AddDestructionDependency(
|
| SurfaceSequence(FrameSinkId(0, 0), 4));
|
|
|
| - // Give id2 a frame that references surface_id_.
|
| + // Give id2 a frame that references local_frame_id_.
|
| {
|
| std::unique_ptr<RenderPass> render_pass(RenderPass::Create());
|
| std::unique_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData);
|
| frame_data->render_pass_list.push_back(std::move(render_pass));
|
| CompositorFrame frame;
|
| - frame.metadata.referenced_surfaces.push_back(surface_id_);
|
| + frame.metadata.referenced_surfaces.push_back(
|
| + SurfaceId(factory_->frame_sink_id(), local_frame_id_));
|
| frame.delegated_frame_data = std::move(frame_data);
|
| - factory_->SubmitCompositorFrame(id2, std::move(frame),
|
| + factory_->SubmitCompositorFrame(local_frame_id2, std::move(frame),
|
| SurfaceFactory::DrawCallback());
|
| }
|
| - factory_->Destroy(id2);
|
| + factory_->Destroy(local_frame_id2);
|
|
|
| - // Give surface_id_ a frame that references id2.
|
| + // Give local_frame_id_ a frame that references id2.
|
| {
|
| std::unique_ptr<RenderPass> render_pass(RenderPass::Create());
|
| std::unique_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData);
|
| @@ -568,25 +574,27 @@ TEST_F(SurfaceFactoryTest, DestroyCycle) {
|
| CompositorFrame frame;
|
| frame.metadata.referenced_surfaces.push_back(id2);
|
| frame.delegated_frame_data = std::move(frame_data);
|
| - factory_->SubmitCompositorFrame(surface_id_, std::move(frame),
|
| + factory_->SubmitCompositorFrame(local_frame_id_, std::move(frame),
|
| SurfaceFactory::DrawCallback());
|
| }
|
| - factory_->Destroy(surface_id_);
|
| + factory_->Destroy(local_frame_id_);
|
| EXPECT_TRUE(manager_.GetSurfaceForId(id2));
|
| - // surface_id_ should be retained by reference from id2.
|
| - EXPECT_TRUE(manager_.GetSurfaceForId(surface_id_));
|
| + // local_frame_id_ should be retained by reference from id2.
|
| + EXPECT_TRUE(manager_.GetSurfaceForId(
|
| + SurfaceId(factory_->frame_sink_id(), local_frame_id_)));
|
|
|
| // Satisfy last destruction dependency for id2.
|
| std::vector<uint32_t> to_satisfy;
|
| to_satisfy.push_back(4);
|
| manager_.DidSatisfySequences(FrameSinkId(0, 0), &to_satisfy);
|
|
|
| - // id2 and surface_id_ are in a reference cycle that has no surface
|
| + // id2 and local_frame_id_ are in a reference cycle that has no surface
|
| // sequences holding on to it, so they should be destroyed.
|
| EXPECT_TRUE(!manager_.GetSurfaceForId(id2));
|
| - EXPECT_TRUE(!manager_.GetSurfaceForId(surface_id_));
|
| + EXPECT_TRUE(!manager_.GetSurfaceForId(
|
| + SurfaceId(factory_->frame_sink_id(), local_frame_id_)));
|
|
|
| - surface_id_ = SurfaceId();
|
| + local_frame_id_ = LocalFrameId();
|
| }
|
|
|
| void CopyRequestTestCallback(bool* called,
|
| @@ -600,9 +608,10 @@ TEST_F(SurfaceFactoryTest, DuplicateCopyRequest) {
|
| std::unique_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData);
|
| frame_data->render_pass_list.push_back(std::move(render_pass));
|
| CompositorFrame frame;
|
| - frame.metadata.referenced_surfaces.push_back(surface_id_);
|
| + frame.metadata.referenced_surfaces.push_back(
|
| + SurfaceId(factory_->frame_sink_id(), local_frame_id_));
|
| frame.delegated_frame_data = std::move(frame_data);
|
| - factory_->SubmitCompositorFrame(surface_id_, std::move(frame),
|
| + factory_->SubmitCompositorFrame(local_frame_id_, std::move(frame),
|
| SurfaceFactory::DrawCallback());
|
| }
|
| void* source1 = &source1;
|
| @@ -614,7 +623,7 @@ TEST_F(SurfaceFactoryTest, DuplicateCopyRequest) {
|
| base::Bind(&CopyRequestTestCallback, &called1));
|
| request->set_source(source1);
|
|
|
| - factory_->RequestCopyOfSurface(surface_id_, std::move(request));
|
| + factory_->RequestCopyOfSurface(local_frame_id_, std::move(request));
|
| EXPECT_FALSE(called1);
|
|
|
| bool called2 = false;
|
| @@ -622,7 +631,7 @@ TEST_F(SurfaceFactoryTest, DuplicateCopyRequest) {
|
| base::Bind(&CopyRequestTestCallback, &called2));
|
| request->set_source(source2);
|
|
|
| - factory_->RequestCopyOfSurface(surface_id_, std::move(request));
|
| + factory_->RequestCopyOfSurface(local_frame_id_, std::move(request));
|
| // Callbacks have different sources so neither should be called.
|
| EXPECT_FALSE(called1);
|
| EXPECT_FALSE(called2);
|
| @@ -632,14 +641,14 @@ TEST_F(SurfaceFactoryTest, DuplicateCopyRequest) {
|
| base::Bind(&CopyRequestTestCallback, &called3));
|
| request->set_source(source1);
|
|
|
| - factory_->RequestCopyOfSurface(surface_id_, std::move(request));
|
| + factory_->RequestCopyOfSurface(local_frame_id_, std::move(request));
|
| // Two callbacks are from source1, so the first should be called.
|
| EXPECT_TRUE(called1);
|
| EXPECT_FALSE(called2);
|
| EXPECT_FALSE(called3);
|
|
|
| - factory_->Destroy(surface_id_);
|
| - surface_id_ = SurfaceId();
|
| + factory_->Destroy(local_frame_id_);
|
| + local_frame_id_ = LocalFrameId();
|
| EXPECT_TRUE(called1);
|
| EXPECT_TRUE(called2);
|
| EXPECT_TRUE(called3);
|
|
|