Index: cc/trees/layer_tree_host_unittest.cc |
diff --git a/cc/trees/layer_tree_host_unittest.cc b/cc/trees/layer_tree_host_unittest.cc |
index 28395b53acc3437fcefcb6afb0cff4ce2edf91cd..89a082df9ac74340518c46fceaa97cbf71c657d0 100644 |
--- a/cc/trees/layer_tree_host_unittest.cc |
+++ b/cc/trees/layer_tree_host_unittest.cc |
@@ -2929,6 +2929,7 @@ |
const RendererSettings& renderer_settings, |
base::SingleThreadTaskRunner* task_runner, |
bool synchronous_composite, |
+ bool force_disable_reclaim_resources, |
base::Closure invalidate_callback) |
: TestCompositorFrameSink(std::move(compositor_context_provider), |
std::move(worker_context_provider), |
@@ -2936,7 +2937,8 @@ |
gpu_memory_buffer_manager, |
renderer_settings, |
task_runner, |
- synchronous_composite), |
+ synchronous_composite, |
+ force_disable_reclaim_resources), |
invalidate_callback_(std::move(invalidate_callback)) {} |
// TestCompositorFrameSink overrides. |
@@ -2972,6 +2974,7 @@ |
shared_bitmap_manager(), gpu_memory_buffer_manager(), |
layer_tree_host()->GetSettings().renderer_settings, |
ImplThreadTaskRunner(), false /* synchronous_composite */, |
+ false /* force_disable_reclaim_resources */, |
std::move(on_draw_callback)); |
compositor_frame_sink_ = frame_sink.get(); |
return std::move(frame_sink); |
@@ -3111,6 +3114,7 @@ |
shared_bitmap_manager(), gpu_memory_buffer_manager(), |
layer_tree_host()->GetSettings().renderer_settings, |
ImplThreadTaskRunner(), false /* synchronous_composite */, |
+ false /* force_disable_reclaim_resources */, |
std::move(on_draw_callback)); |
compositor_frame_sink_ = frame_sink.get(); |
return std::move(frame_sink); |
@@ -5629,11 +5633,14 @@ |
bool synchronous_composite = |
!HasImplThread() && |
!layer_tree_host()->GetSettings().single_thread_proxy_scheduler; |
+ // Relaiming resources is parameterized for this test. |
+ bool force_disable_reclaim_resources = !reclaim_resources_; |
return base::MakeUnique<TestCompositorFrameSink>( |
compositor_context_provider, std::move(worker_context_provider), |
shared_bitmap_manager(), gpu_memory_buffer_manager(), |
layer_tree_host()->GetSettings().renderer_settings, |
- ImplThreadTaskRunner(), synchronous_composite); |
+ ImplThreadTaskRunner(), synchronous_composite, |
+ force_disable_reclaim_resources); |
} |
void BeginTest() override { |
@@ -5644,7 +5651,7 @@ |
std::move(swap_promise0)); |
layer_tree_host()->Composite(base::TimeTicks::Now()); |
- // Fail to swap (no damage). |
+ // Fail to swap (no damage) if not reclaiming resources from the Display. |
std::unique_ptr<SwapPromise> swap_promise1( |
new TestSwapPromise(&swap_promise_result_[1])); |
layer_tree_host()->GetSwapPromiseManager()->QueueSwapPromise( |
@@ -5680,13 +5687,19 @@ |
EXPECT_TRUE(swap_promise_result_[0].dtor_called); |
} |
- // Second swap promise fails to swap. |
+ // Second swap promise fails to swap if not reclaiming resources from the |
+ // Display. |
{ |
base::AutoLock lock(swap_promise_result_[1].lock); |
EXPECT_TRUE(swap_promise_result_[1].did_activate_called); |
- EXPECT_FALSE(swap_promise_result_[1].did_swap_called); |
- EXPECT_TRUE(swap_promise_result_[1].did_not_swap_called); |
- EXPECT_EQ(SwapPromise::SWAP_FAILS, swap_promise_result_[1].reason); |
+ if (!reclaim_resources_) { |
+ EXPECT_FALSE(swap_promise_result_[1].did_swap_called); |
+ EXPECT_TRUE(swap_promise_result_[1].did_not_swap_called); |
+ EXPECT_EQ(SwapPromise::SWAP_FAILS, swap_promise_result_[1].reason); |
+ } else { |
+ EXPECT_TRUE(swap_promise_result_[1].did_swap_called); |
+ EXPECT_FALSE(swap_promise_result_[1].did_not_swap_called); |
+ } |
EXPECT_TRUE(swap_promise_result_[1].dtor_called); |
} |
@@ -5701,12 +5714,20 @@ |
} |
} |
+ bool reclaim_resources_; |
int commit_count_ = 0; |
TestSwapPromiseResult swap_promise_result_[3]; |
}; |
-// Synchronous composite is a single-threaded only feature. |
-SINGLE_THREAD_TEST_F(LayerTreeHostTestSynchronousCompositeSwapPromise); |
+TEST_F(LayerTreeHostTestSynchronousCompositeSwapPromise, NoReclaim) { |
+ reclaim_resources_ = false; |
+ RunTest(CompositorMode::SINGLE_THREADED); |
+} |
+ |
+TEST_F(LayerTreeHostTestSynchronousCompositeSwapPromise, Reclaim) { |
+ reclaim_resources_ = true; |
+ RunTest(CompositorMode::SINGLE_THREADED); |
+} |
// Make sure page scale and top control deltas are applied to the client even |
// when the LayerTreeHost doesn't have a root layer. |