Chromium Code Reviews| 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 0a4c23602b416eddd9dafb3217e693fb628e6d47..1b22d93754b04382337214da1223c7c4ad02ed01 100644 |
| --- a/cc/trees/layer_tree_host_unittest.cc |
| +++ b/cc/trees/layer_tree_host_unittest.cc |
| @@ -85,8 +85,8 @@ class LayerTreeHostTestSetNeedsCommit1 : public LayerTreeHostTest { |
| } |
| virtual void AfterTest() OVERRIDE { |
| - EXPECT_GE(1, num_commits_); |
| - EXPECT_GE(1, num_draws_); |
| + EXPECT_GE(num_commits_, 1); |
| + EXPECT_GE(num_draws_, 1); |
| } |
| private: |
| @@ -154,6 +154,7 @@ class LayerTreeHostTestPushPropertiesTo : public LayerTreeHostTest { |
| virtual void BeginTest() OVERRIDE { |
| index_ = STARTUP; |
| + index_impl_ = STARTUP; |
| PostSetNeedsCommitToMainThread(); |
| } |
| @@ -166,10 +167,8 @@ class LayerTreeHostTestPushPropertiesTo : public LayerTreeHostTest { |
| VerifyBeforeValues(layer_tree_host()->root_layer()); |
| ++index_; |
| - if (index_ == DONE) { |
| + if (index_ == DONE) |
| EndTest(); |
| - return; |
| - } |
| SetAfterValues(layer_tree_host()->root_layer()); |
| } |
| @@ -223,6 +222,7 @@ class LayerTreeHostTestPushPropertiesTo : public LayerTreeHostTest { |
| } |
| int index_; |
| + int index_impl_; |
|
brianderson
2013/08/05 21:56:19
I need to revert my changes to this test.
|
| }; |
| SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestPushPropertiesTo); |
| @@ -621,7 +621,7 @@ class LayerTreeHostTestCompositeAndReadbackWhileInvisible |
| virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| - virtual void DidCommitAndDrawFrame() OVERRIDE { |
| + virtual void DidCommit() OVERRIDE { |
| num_commits_++; |
| if (num_commits_ == 1) { |
| layer_tree_host()->SetVisible(false); |
| @@ -700,7 +700,8 @@ MULTI_THREAD_TEST_F(LayerTreeHostTestCommit); |
| class LayerTreeHostTestFrameTimeUpdatesAfterActivationFails |
| : public LayerTreeHostTest { |
| public: |
| - LayerTreeHostTestFrameTimeUpdatesAfterActivationFails() : frame_(0) {} |
| + LayerTreeHostTestFrameTimeUpdatesAfterActivationFails() |
| + : frame_count_with_pending_tree_(0) {} |
| virtual void BeginTest() OVERRIDE { |
| layer_tree_host()->SetViewportSize(gfx::Size(20, 20)); |
| @@ -709,9 +710,17 @@ class LayerTreeHostTestFrameTimeUpdatesAfterActivationFails |
| PostSetNeedsCommitToMainThread(); |
| } |
| + virtual void WillBeginFrameOnThread(LayerTreeHostImpl* host_impl, |
| + const BeginFrameArgs &args) OVERRIDE { |
| + TRACE_EVENT0("cc", "WillBeginFrameOnThreadbca"); |
| + if (host_impl->pending_tree()) |
| + frame_count_with_pending_tree_++; |
| + } |
| + |
| virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
| - if (frame_ >= 1) { |
| - EXPECT_NE(first_frame_time_, impl->CurrentFrameTimeTicks()); |
| + if (frame_count_with_pending_tree_ > 1) { |
| + EXPECT_NE(first_frame_time_.ToInternalValue(), |
| + impl->CurrentFrameTimeTicks().ToInternalValue()); |
| EndTest(); |
| return; |
| } |
| @@ -721,33 +730,34 @@ class LayerTreeHostTestFrameTimeUpdatesAfterActivationFails |
| } |
| virtual bool CanActivatePendingTree(LayerTreeHostImpl* impl) OVERRIDE { |
| - if (frame_ >= 1) |
| - return true; |
| - |
| - return false; |
| + return frame_count_with_pending_tree_ > 1; |
| } |
| virtual bool CanActivatePendingTreeIfNeeded(LayerTreeHostImpl* impl) |
| OVERRIDE { |
| - frame_++; |
| - if (frame_ == 1) { |
| + if (frame_count_with_pending_tree_ > 1) |
| + return true; |
| + |
| + if (first_frame_time_.is_null()) { |
| first_frame_time_ = impl->CurrentFrameTimeTicks(); |
| // Since base::TimeTicks::Now() uses a low-resolution clock on |
| // Windows, we need to make sure that the clock has incremented past |
| // first_frame_time_. |
| while (first_frame_time_ == base::TimeTicks::Now()) {} |
| - |
| - return false; |
| } |
| + return false; |
| + } |
| - return true; |
| + virtual void DidActivateTreeOnThread(LayerTreeHostImpl *impl) OVERRIDE { |
| + if (impl->settings().impl_side_painting) |
| + EXPECT_NE(frame_count_with_pending_tree_, 1); |
| } |
| virtual void AfterTest() OVERRIDE {} |
| private: |
| - int frame_; |
| + int frame_count_with_pending_tree_; |
| base::TimeTicks first_frame_time_; |
| }; |
| @@ -824,13 +834,14 @@ class LayerTreeHostTestStartPageScaleAnimation : public LayerTreeHostTest { |
| virtual void ApplyScrollAndScale(gfx::Vector2d scroll_delta, float scale) |
| OVERRIDE { |
| + TRACE_EVENT0("cc", "ApplyScrollAndScale9"); |
| gfx::Vector2d offset = scroll_layer_->scroll_offset(); |
| scroll_layer_->SetScrollOffset(offset + scroll_delta); |
| layer_tree_host()->SetPageScaleFactorAndLimits(scale, 0.5f, 2.f); |
| } |
| - virtual void DidActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
| - impl->ProcessScrollDeltas(); |
| + virtual void SwapBuffersOnThread(LayerTreeHostImpl *impl, bool result) |
| + OVERRIDE { |
| // We get one commit before the first draw, and the animation doesn't happen |
| // until the second draw. |
| switch (impl->active_tree()->source_frame_number()) { |
| @@ -840,10 +851,14 @@ class LayerTreeHostTestStartPageScaleAnimation : public LayerTreeHostTest { |
| break; |
| case 1: |
| EXPECT_EQ(1.f, impl->active_tree()->page_scale_factor()); |
| - PostSetNeedsRedrawToMainThread(); |
| break; |
| case 2: |
| + case 3: |
| + case 4: |
|
brianderson
2013/08/05 21:56:19
I will remove case 3 and 4 here. They were an expe
|
| EXPECT_EQ(1.25f, impl->active_tree()->page_scale_factor()); |
| + PostSetNeedsCommitToMainThread(); |
| + break; |
| + case 5: |
| EndTest(); |
| break; |
| default: |
| @@ -851,7 +866,7 @@ class LayerTreeHostTestStartPageScaleAnimation : public LayerTreeHostTest { |
| } |
| } |
| - virtual void DidCommitAndDrawFrame() OVERRIDE { |
| + virtual void DidCommit() OVERRIDE { |
| switch (layer_tree_host()->source_frame_number()) { |
| case 1: |
| layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.5f, 2.f); |
| @@ -1262,7 +1277,7 @@ class LayerTreeHostTestAtomicCommitWithPartialUpdate |
| PostSetNeedsCommitToMainThread(); |
| } |
| - virtual void DidCommitAndDrawFrame() OVERRIDE { |
| + virtual void DidCommit() OVERRIDE { |
| switch (layer_tree_host()->source_frame_number()) { |
| case 1: |
| parent_->SetNeedsDisplay(); |
| @@ -1393,7 +1408,7 @@ class LayerTreeHostTestFinishAllRendering : public LayerTreeHostTest { |
| PostSetNeedsCommitToMainThread(); |
| } |
| - virtual void DidCommitAndDrawFrame() OVERRIDE { |
| + virtual void DidCommit() OVERRIDE { |
| if (once_) |
| return; |
| once_ = true; |
| @@ -1481,6 +1496,16 @@ class LayerTreeHostTestSurfaceNotAllocatedForLayersOutsideMemoryLimit |
| PostSetNeedsCommitToMainThread(); |
| } |
| + virtual void DidActivateTreeOnThread(LayerTreeHostImpl *host_impl) OVERRIDE { |
| + // Reduce the memory limit to only fit the root layer and one render |
| + // surface. This prevents any contents drawing into surfaces |
| + // from being allocated. |
| + if (host_impl->active_tree()->source_frame_number() == 0) { |
| + host_impl->SetMemoryPolicy( |
| + ManagedMemoryPolicy(100 * 100 * 4 * 2), true); |
| + } |
| + } |
| + |
| virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
| Renderer* renderer = host_impl->renderer(); |
| RenderPass::Id surface1_render_pass_id = host_impl->active_tree() |
| @@ -1495,25 +1520,18 @@ class LayerTreeHostTestSurfaceNotAllocatedForLayersOutsideMemoryLimit |
| surface1_render_pass_id)); |
| EXPECT_TRUE(renderer->HaveCachedResourcesForRenderPassId( |
| surface2_render_pass_id)); |
| - |
| - // Reduce the memory limit to only fit the root layer and one render |
| - // surface. This prevents any contents drawing into surfaces |
| - // from being allocated. |
| - host_impl->SetMemoryPolicy( |
| - ManagedMemoryPolicy(100 * 100 * 4 * 2), true); |
| break; |
| case 1: |
| EXPECT_FALSE(renderer->HaveCachedResourcesForRenderPassId( |
| surface1_render_pass_id)); |
| EXPECT_FALSE(renderer->HaveCachedResourcesForRenderPassId( |
| surface2_render_pass_id)); |
| - |
| EndTest(); |
| break; |
| } |
| } |
| - virtual void DidCommitAndDrawFrame() OVERRIDE { |
|
enne (OOO)
2013/08/05 19:37:43
I want to look through these test changes a little
brianderson
2013/08/05 21:56:19
DidCommitAndDrawFrame is definitely race prone whe
|
| + virtual void DidCommit() OVERRIDE { |
| if (layer_tree_host()->source_frame_number() < 2) |
| root_layer_->SetNeedsDisplay(); |
| } |
| @@ -1819,7 +1837,7 @@ class LayerTreeHostTestContinuousInvalidate : public LayerTreeHostTest { |
| PostSetNeedsCommitToMainThread(); |
| } |
| - virtual void DidCommitAndDrawFrame() OVERRIDE { |
| + virtual void DidCommit() OVERRIDE { |
| if (num_draw_layers_ == 2) |
| return; |
| content_layer_->SetNeedsDisplay(); |
| @@ -2215,9 +2233,9 @@ class LayerTreeHostTestBeginFrameNotificationShutdownWhileEnabled |
| // The BeginFrame notification is turned off now but will get enabled |
| // once we return. End test while it's enabled. |
| ImplThreadTaskRunner()->PostTask( |
| - FROM_HERE, |
| - base::Bind(&LayerTreeHostTestBeginFrameNotification::EndTest, |
| - base::Unretained(this))); |
| + FROM_HERE, base::Bind( |
| + &LayerTreeHostTestBeginFrameNotificationShutdownWhileEnabled::EndTest, |
| + base::Unretained(this))); |
| } |
| virtual void AfterTest() OVERRIDE {} |
| @@ -2469,7 +2487,7 @@ class LayerTreeHostTestAsyncReadback : public LayerTreeHostTest { |
| PostSetNeedsCommitToMainThread(); |
| } |
| - virtual void DidCommitAndDrawFrame() OVERRIDE { |
| + virtual void DidCommit() OVERRIDE { |
| WaitForCallback(); |
| } |
| @@ -3011,6 +3029,10 @@ class LayerTreeHostTestNumFramesPending : public LayerTreeHostTest { |
| // Round 4 done. |
| EXPECT_EQ(2, frame_); |
| layer_tree_host()->SetNeedsCommit(); |
| + // We cant SetNeedsRedraw immediately because it will race the commit. |
| + break; |
| + case 5: |
| + EXPECT_EQ(2, frame_); |
| layer_tree_host()->SetNeedsRedraw(); |
| break; |
| } |
| @@ -3325,7 +3347,7 @@ class LayerTreeHostTestLayersPushProperties : public LayerTreeHostTest { |
| LayerTreeHostTest::SetupTree(); |
| } |
| - virtual void DidCommitAndDrawFrame() OVERRIDE { |
| + virtual void DidCommit() OVERRIDE { |
| ++num_commits_; |
| EXPECT_EQ(expected_push_properties_root_, root_->push_properties_count()); |
| @@ -3507,7 +3529,7 @@ class LayerTreeHostTestPropertyChangesDuringUpdateArePushed |
| LayerTreeHostTest::SetupTree(); |
| } |
| - virtual void DidCommitAndDrawFrame() OVERRIDE { |
| + virtual void DidCommit() OVERRIDE { |
| switch (layer_tree_host()->source_frame_number()) { |
| case 0: |
| break; |
| @@ -3590,7 +3612,7 @@ class LayerTreeHostTestCasePushPropertiesThreeGrandChildren |
| class LayerTreeHostTestPushPropertiesAddingToTreeRequiresPush |
| : public LayerTreeHostTestCasePushPropertiesThreeGrandChildren { |
| protected: |
| - virtual void DidCommitAndDrawFrame() OVERRIDE { |
| + virtual void DidCommit() OVERRIDE { |
| int last_source_frame_number = layer_tree_host()->source_frame_number() - 1; |
| switch (last_source_frame_number) { |
| case 0: |
| @@ -3630,7 +3652,7 @@ MULTI_THREAD_TEST_F(LayerTreeHostTestPushPropertiesAddingToTreeRequiresPush); |
| class LayerTreeHostTestPushPropertiesRemovingChildStopsRecursion |
| : public LayerTreeHostTestCasePushPropertiesThreeGrandChildren { |
| protected: |
| - virtual void DidCommitAndDrawFrame() OVERRIDE { |
| + virtual void DidCommit() OVERRIDE { |
| int last_source_frame_number = layer_tree_host()->source_frame_number() - 1; |
| switch (last_source_frame_number) { |
| case 0: |
| @@ -3713,7 +3735,7 @@ MULTI_THREAD_TEST_F(LayerTreeHostTestPushPropertiesRemovingChildStopsRecursion); |
| class LayerTreeHostTestPushPropertiesRemovingChildStopsRecursionWithPersistence |
| : public LayerTreeHostTestCasePushPropertiesThreeGrandChildren { |
| protected: |
| - virtual void DidCommitAndDrawFrame() OVERRIDE { |
| + virtual void DidCommit() OVERRIDE { |
| int last_source_frame_number = layer_tree_host()->source_frame_number() - 1; |
| switch (last_source_frame_number) { |
| case 0: |
| @@ -3761,7 +3783,7 @@ MULTI_THREAD_TEST_F( |
| class LayerTreeHostTestPushPropertiesSetPropertiesWhileOutsideTree |
| : public LayerTreeHostTestCasePushPropertiesThreeGrandChildren { |
| protected: |
| - virtual void DidCommitAndDrawFrame() OVERRIDE { |
| + virtual void DidCommit() OVERRIDE { |
| int last_source_frame_number = layer_tree_host()->source_frame_number() - 1; |
| switch (last_source_frame_number) { |
| case 0: |
| @@ -3829,7 +3851,7 @@ MULTI_THREAD_TEST_F( |
| class LayerTreeHostTestPushPropertiesSetPropertyInParentThenChild |
| : public LayerTreeHostTestCasePushPropertiesThreeGrandChildren { |
| protected: |
| - virtual void DidCommitAndDrawFrame() OVERRIDE { |
| + virtual void DidCommit() OVERRIDE { |
| int last_source_frame_number = layer_tree_host()->source_frame_number() - 1; |
| switch (last_source_frame_number) { |
| case 0: |
| @@ -3893,7 +3915,7 @@ MULTI_THREAD_TEST_F( |
| class LayerTreeHostTestPushPropertiesSetPropertyInChildThenParent |
| : public LayerTreeHostTestCasePushPropertiesThreeGrandChildren { |
| protected: |
| - virtual void DidCommitAndDrawFrame() OVERRIDE { |
| + virtual void DidCommit() OVERRIDE { |
| int last_source_frame_number = layer_tree_host()->source_frame_number() - 1; |
| switch (last_source_frame_number) { |
| case 0: |