Chromium Code Reviews| Index: cc/trees/layer_tree_host_unittest_delegated.cc |
| diff --git a/cc/trees/layer_tree_host_unittest_delegated.cc b/cc/trees/layer_tree_host_unittest_delegated.cc |
| index d48931328afb8f4af02a324966b609af66d2031f..efc65b430f3058085d92e7e1e293a5a98ba7b6c1 100644 |
| --- a/cc/trees/layer_tree_host_unittest_delegated.cc |
| +++ b/cc/trees/layer_tree_host_unittest_delegated.cc |
| @@ -488,14 +488,18 @@ class LayerTreeHostDelegatedTestMergeResources |
| AddTransferableResource(frame1.get(), 999); |
| delegated_->SetFrameData(frame1.Pass()); |
| - // The second frame uses resource 999 still, but also adds 555. |
| + // The second frame doesn't use resource 999 anymore, but adds 555. |
| scoped_ptr<DelegatedFrameData> frame2 = |
| CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| - AddTextureQuad(frame2.get(), 999); |
| AddTextureQuad(frame2.get(), 555); |
| AddTransferableResource(frame2.get(), 555); |
| delegated_->SetFrameData(frame2.Pass()); |
| + TransferableResourceArray returned_resources; |
| + delegated_->TakeUnusedResourcesForChildCompositor(&returned_resources); |
| + EXPECT_EQ(1u, returned_resources.size()); |
| + EXPECT_EQ(999u, returned_resources[0].id); |
| + |
| PostSetNeedsCommitToMainThread(); |
| } |
| @@ -509,12 +513,11 @@ class LayerTreeHostDelegatedTestMergeResources |
| delegated_impl->ChildId()); |
| // Both frames' resources should be in the parent's resource provider. |
|
danakj
2013/08/15 22:20:19
Comment's wrong now, but why'd you choose to remov
piman
2013/08/16 04:29:55
TBH I don't remember (this CL has been pending for
|
| - EXPECT_EQ(2u, map.size()); |
| - EXPECT_EQ(1u, map.count(999)); |
| + EXPECT_EQ(1u, map.size()); |
| + EXPECT_EQ(0u, map.count(999)); |
| EXPECT_EQ(1u, map.count(555)); |
| - EXPECT_EQ(2u, delegated_impl->Resources().size()); |
| - EXPECT_EQ(1u, delegated_impl->Resources().count(map.find(999)->second)); |
| + EXPECT_EQ(1u, delegated_impl->Resources().size()); |
| EXPECT_EQ(1u, delegated_impl->Resources().count(map.find(555)->second)); |
| EndTest(); |
| @@ -890,6 +893,7 @@ class LayerTreeHostDelegatedTestFrameBeforeTakeResources |
| // Keep using 999 but stop using 555 and 444. |
| frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| AddTextureQuad(frame.get(), 999); |
| + AddTransferableResource(frame.get(), 999); |
| delegated_->SetFrameData(frame.Pass()); |
| // Resource are not immediately released. |
| @@ -909,13 +913,17 @@ class LayerTreeHostDelegatedTestFrameBeforeTakeResources |
| // and 444, which were just released during commit. |
| frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| AddTextureQuad(frame.get(), 999); |
| + AddTransferableResource(frame.get(), 999); |
| AddTextureQuad(frame.get(), 555); |
| + AddTransferableResource(frame.get(), 555); |
| AddTextureQuad(frame.get(), 444); |
| + AddTransferableResource(frame.get(), 444); |
| delegated_->SetFrameData(frame.Pass()); |
| - // The resources are used by the new frame so are not returned. |
| + // The resources are used by the new frame but are returned anyway since |
| + // we passed them again. |
| delegated_->TakeUnusedResourcesForChildCompositor(&resources); |
| - EXPECT_EQ(0u, resources.size()); |
| + EXPECT_EQ(2u, resources.size()); |
|
danakj
2013/08/15 22:20:19
Verify which resources are in the array.
piman
2013/08/16 04:29:55
Done.
|
| break; |
| case 6: |
| // Retrieve unused resources to the main thread. |
| @@ -1227,14 +1235,30 @@ class LayerTreeHostDelegatedTestDontLeakResource |
| // But then we immediately stop using 999. |
| frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| AddTextureQuad(frame.get(), 555); |
| + AddTransferableResource(frame.get(), 555); |
| delegated_->SetFrameData(frame.Pass()); |
| break; |
| case 2: |
| - // The unused resource should be returned. |
| + // The unused resources should be returned. 555 is still used, but it's |
| + // returned once to account for the first frame. |
| delegated_->TakeUnusedResourcesForChildCompositor(&resources); |
| - EXPECT_EQ(1u, resources.size()); |
| + EXPECT_EQ(2u, resources.size()); |
| EXPECT_EQ(999u, resources[0].id); |
| + EXPECT_EQ(555u, resources[1].id); |
| + frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
|
danakj
2013/08/15 22:20:19
// Send a frame with no resources in it.
piman
2013/08/16 04:29:55
Done.
|
| + delegated_->SetFrameData(frame.Pass()); |
| + break; |
| + case 3: |
| + // The impl side will get back the resource at some point. |
| + // TODO(danakj): The test should work without this. |
|
danakj
2013/08/15 22:20:19
I see what you did there :)
piman
2013/08/16 04:29:55
copy & paste :)
|
| + layer_tree_host()->SetNeedsCommit(); |
| + break; |
| + case 4: |
| + resources.clear(); |
|
danakj
2013/08/15 22:20:19
// The unused resource 555 should be returned.
piman
2013/08/16 04:29:55
Done.
|
| + delegated_->TakeUnusedResourcesForChildCompositor(&resources); |
| + EXPECT_EQ(1u, resources.size()); |
| + EXPECT_EQ(555u, resources[0].id); |
| EndTest(); |
| break; |
| } |
| @@ -1260,6 +1284,11 @@ class LayerTreeHostDelegatedTestDontLeakResource |
| EXPECT_EQ(1u, delegated_impl->Resources().count(map.find(555)->second)); |
| } |
| + virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, |
| + bool result) OVERRIDE { |
| + ReturnUnusedResourcesFromParent(host_impl); |
| + } |
| + |
| virtual void AfterTest() OVERRIDE {} |
| }; |
| @@ -1404,20 +1433,40 @@ class LayerTreeHostDelegatedTestCommitWithoutTake |
| // Stop using 999 and 444 in this frame and commit. |
| frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| AddTextureQuad(frame.get(), 555); |
| + AddTransferableResource(frame.get(), 555); |
| delegated_->SetFrameData(frame.Pass()); |
| + // 999 and 444 will be returned for frame 1, but not 555 since it's in |
| + // the current frame. |
| break; |
| case 3: |
| // Don't take resources here, but set a new frame that uses 999 again. |
| frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| AddTextureQuad(frame.get(), 999); |
| + AddTransferableResource(frame.get(), 999); |
| AddTextureQuad(frame.get(), 555); |
| + AddTransferableResource(frame.get(), 555); |
| delegated_->SetFrameData(frame.Pass()); |
| break; |
| case 4: |
| - // 999 and 555 are in use, but 444 should be returned now. |
| + // 555 from frame 1 and 2 isn't returned since it's still in use. 999 |
| + // from frame 1 is returned though. |
| delegated_->TakeUnusedResourcesForChildCompositor(&resources); |
| - EXPECT_EQ(1u, resources.size()); |
| - EXPECT_EQ(444u, resources[0].id); |
| + EXPECT_EQ(2u, resources.size()); |
| + EXPECT_EQ(999u, resources[0].id); |
| + EXPECT_EQ(444u, resources[1].id); |
| + |
| + frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| + delegated_->SetFrameData(frame.Pass()); |
| + // 555 will be returned 3 times for frames 1 2 and 3, and 999 will be |
| + // returned once for frame 3. |
| + break; |
| + case 5: |
| + delegated_->TakeUnusedResourcesForChildCompositor(&resources); |
| + EXPECT_EQ(4u, resources.size()); |
| + EXPECT_EQ(999u, resources[0].id); |
| + EXPECT_EQ(555u, resources[1].id); |
| + EXPECT_EQ(555u, resources[2].id); |
| + EXPECT_EQ(555u, resources[3].id); |
| EndTest(); |
| break; |