Chromium Code Reviews| Index: cc/trees/layer_tree_host_unittest_context.cc |
| diff --git a/cc/trees/layer_tree_host_unittest_context.cc b/cc/trees/layer_tree_host_unittest_context.cc |
| index 879e5347e311078e380b072780e3c6ff6f393cd9..562a8bea5bcab872910f4a19e0262dc9bd6bd619 100644 |
| --- a/cc/trees/layer_tree_host_unittest_context.cc |
| +++ b/cc/trees/layer_tree_host_unittest_context.cc |
| @@ -65,9 +65,17 @@ class LayerTreeHostContextTest : public LayerTreeTest { |
| } |
| void LoseContext() { |
| - context3d_->loseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_ARB, |
| - GL_INNOCENT_CONTEXT_RESET_ARB); |
| + // For sanity-checking tests, they should only call this when the |
| + // context is not lost. |
| + CHECK(context3d_); |
| + |
| + // Set the context3d_ member to null *before* calling lose context, |
| + // as the single-threaded proxy may synchronously recreate the |
| + // output surface, setting context3d_ back to not-NULL. |
| + TestWebGraphicsContext3D* temp_context3d = context3d_; |
| context3d_ = NULL; |
| + temp_context3d->loseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_ARB, |
| + GL_INNOCENT_CONTEXT_RESET_ARB); |
| } |
| virtual scoped_ptr<TestWebGraphicsContext3D> CreateContext3d() { |
| @@ -200,45 +208,53 @@ class LayerTreeHostContextTestLostContextSucceeds |
| static const TestCase kTests[] = { |
| // Losing the context and failing to recreate it (or losing it again |
| // immediately) a small number of times should succeed. |
| - {1, // times_to_lose_during_commit |
| + { |
| + 1, // times_to_lose_during_commit |
| 0, // times_to_lose_during_draw |
| 0, // times_to_fail_recreate |
| false, // fallback_context_works |
| }, |
| - {0, // times_to_lose_during_commit |
| + { |
| + 0, // times_to_lose_during_commit |
| 1, // times_to_lose_during_draw |
| 0, // times_to_fail_recreate |
| false, // fallback_context_works |
| }, |
| - {1, // times_to_lose_during_commit |
| + { |
| + 1, // times_to_lose_during_commit |
| 0, // times_to_lose_during_draw |
| 3, // times_to_fail_recreate |
| false, // fallback_context_works |
| }, |
| - {0, // times_to_lose_during_commit |
| + { |
| + 0, // times_to_lose_during_commit |
| 1, // times_to_lose_during_draw |
| 3, // times_to_fail_recreate |
| false, // fallback_context_works |
| }, |
| // Losing the context and recreating it any number of times should |
| // succeed. |
| - {10, // times_to_lose_during_commit |
| + { |
| + 10, // times_to_lose_during_commit |
| 0, // times_to_lose_during_draw |
| 0, // times_to_fail_recreate |
| false, // fallback_context_works |
| }, |
| - {0, // times_to_lose_during_commit |
| + { |
| + 0, // times_to_lose_during_commit |
| 10, // times_to_lose_during_draw |
| 0, // times_to_fail_recreate |
| false, // fallback_context_works |
| }, |
| // Losing the context, failing to reinitialize it, and making a fallback |
| // context should work. |
| - {0, // times_to_lose_during_commit |
| + { |
| + 0, // times_to_lose_during_commit |
| 1, // times_to_lose_during_draw |
| 0, // times_to_fail_recreate |
| true, // fallback_context_works |
| - }, }; |
| + }, |
| + }; |
| if (test_case_ >= arraysize(kTests)) |
| return false; |
| @@ -300,7 +316,8 @@ class LayerTreeHostClientNotReadyDoesNotCreateOutputSurface |
| } |
| }; |
| -MULTI_THREAD_TEST_F(LayerTreeHostClientNotReadyDoesNotCreateOutputSurface); |
| +SINGLE_AND_MULTI_THREAD_TEST_F( |
|
enne (OOO)
2014/06/12 20:45:00
Done.
|
| + LayerTreeHostClientNotReadyDoesNotCreateOutputSurface); |
| class LayerTreeHostContextTestLostContextSucceedsWithContent |
| : public LayerTreeHostContextTestLostContextSucceeds { |
| @@ -358,10 +375,11 @@ class LayerTreeHostContextTestCreateOutputSurfaceFails |
| : times_to_fail_(times_to_fail), |
| expect_fallback_attempt_(expect_fallback_attempt), |
| did_attempt_fallback_(false), |
| - times_initialized_(0) {} |
| + times_initialized_(0) { |
| + times_to_fail_create_ = times_to_fail_; |
| + } |
| virtual void BeginTest() OVERRIDE { |
| - times_to_fail_create_ = times_to_fail_; |
| PostSetNeedsCommitToMainThread(); |
| } |
| @@ -975,12 +993,6 @@ class ScrollbarLayerLostContext : public LayerTreeHostContextTest { |
| EXPECT_EQ(2, scrollbar_layer_->update_count()); |
| EndTest(); |
| break; |
| - case 3: |
| - // Single thread proxy issues extra commits after context lost. |
| - // http://crbug.com/287250 |
| - if (HasImplThread()) |
| - NOTREACHED(); |
| - break; |
| default: |
| NOTREACHED(); |
| } |
| @@ -1024,12 +1036,10 @@ class UIResourceLostTest : public LayerTreeHostContextTest { |
| void PostLoseContextToImplThread() { |
| EXPECT_TRUE(layer_tree_host()->proxy()->IsMainThread()); |
| - base::SingleThreadTaskRunner* task_runner = |
| - HasImplThread() ? ImplThreadTaskRunner() |
| - : base::MessageLoopProxy::current(); |
| - task_runner->PostTask(FROM_HERE, |
| - base::Bind(&LayerTreeHostContextTest::LoseContext, |
| - base::Unretained(this))); |
| + ImplThreadTaskRunner()->PostTask( |
| + FROM_HERE, |
| + base::Bind(&LayerTreeHostContextTest::LoseContext, |
| + base::Unretained(this))); |
| } |
| protected: |
| @@ -1084,13 +1094,8 @@ class UIResourceLostAfterCommit : public UIResourceLostTestSimple { |
| EndTest(); |
| break; |
| case 5: |
| - // Single thread proxy issues extra commits after context lost. |
| - // http://crbug.com/287250 |
| - if (HasImplThread()) |
| - NOTREACHED(); |
| - break; |
| - case 6: |
| NOTREACHED(); |
| + break; |
| } |
| } |
| @@ -1178,13 +1183,8 @@ class UIResourceLostBeforeCommit : public UIResourceLostTestSimple { |
| EndTest(); |
| break; |
| case 6: |
| - // Single thread proxy issues extra commits after context lost. |
| - // http://crbug.com/287250 |
| - if (HasImplThread()) |
| - NOTREACHED(); |
| - break; |
| - case 8: |
| NOTREACHED(); |
| + break; |
| } |
| } |
| @@ -1205,15 +1205,8 @@ class UIResourceLostBeforeCommit : public UIResourceLostTestSimple { |
| // Sequence 2 (continued): |
| // The previous resource should have been deleted. |
| EXPECT_EQ(0u, impl->ResourceIdForUIResource(test_id0_)); |
| - if (HasImplThread()) { |
| - // The second resource should have been created. |
| - EXPECT_NE(0u, impl->ResourceIdForUIResource(test_id1_)); |
| - } else { |
| - // The extra commit that happens at context lost in the single thread |
| - // proxy changes the timing so that the resource has been destroyed. |
| - // http://crbug.com/287250 |
| - EXPECT_EQ(0u, impl->ResourceIdForUIResource(test_id1_)); |
| - } |
| + // The second resource should have been created. |
| + EXPECT_NE(0u, impl->ResourceIdForUIResource(test_id1_)); |
| // The second resource called the resource callback once and since the |
| // context is lost, a "resource lost" callback was also issued. |
| EXPECT_EQ(2, ui_resource_->resource_create_count); |
| @@ -1529,8 +1522,8 @@ class LayerTreeHostContextTestLoseAfterSendingBeginMainFrame |
| bool deferred_; |
| }; |
| -// TODO(danakj): We don't use scheduler with SingleThreadProxy yet. |
| -MULTI_THREAD_TEST_F(LayerTreeHostContextTestLoseAfterSendingBeginMainFrame); |
| +SINGLE_AND_MULTI_THREAD_TEST_F( |
| + LayerTreeHostContextTestLoseAfterSendingBeginMainFrame); |
| } // namespace |
| } // namespace cc |