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 548ff36029ec9d518bb8765b9cfe31e2475b6158..879e5347e311078e380b072780e3c6ff6f393cd9 100644 |
--- a/cc/trees/layer_tree_host_unittest_context.cc |
+++ b/cc/trees/layer_tree_host_unittest_context.cc |
@@ -65,9 +65,6 @@ |
} |
void LoseContext() { |
- // For sanity-checking tests, they should only call this when the |
- // context is not lost. |
- CHECK(context3d_); |
context3d_->loseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_ARB, |
GL_INNOCENT_CONTEXT_RESET_ARB); |
context3d_ = NULL; |
@@ -203,53 +200,45 @@ |
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; |
@@ -311,8 +300,7 @@ |
} |
}; |
-SINGLE_AND_MULTI_THREAD_TEST_F( |
- LayerTreeHostClientNotReadyDoesNotCreateOutputSurface); |
+MULTI_THREAD_TEST_F(LayerTreeHostClientNotReadyDoesNotCreateOutputSurface); |
class LayerTreeHostContextTestLostContextSucceedsWithContent |
: public LayerTreeHostContextTestLostContextSucceeds { |
@@ -370,11 +358,10 @@ |
: times_to_fail_(times_to_fail), |
expect_fallback_attempt_(expect_fallback_attempt), |
did_attempt_fallback_(false), |
- times_initialized_(0) { |
+ times_initialized_(0) {} |
+ |
+ virtual void BeginTest() OVERRIDE { |
times_to_fail_create_ = times_to_fail_; |
- } |
- |
- virtual void BeginTest() OVERRIDE { |
PostSetNeedsCommitToMainThread(); |
} |
@@ -988,6 +975,12 @@ |
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(); |
} |
@@ -1031,10 +1024,12 @@ |
void PostLoseContextToImplThread() { |
EXPECT_TRUE(layer_tree_host()->proxy()->IsMainThread()); |
- ImplThreadTaskRunner()->PostTask( |
- FROM_HERE, |
- base::Bind(&LayerTreeHostContextTest::LoseContext, |
- base::Unretained(this))); |
+ base::SingleThreadTaskRunner* task_runner = |
+ HasImplThread() ? ImplThreadTaskRunner() |
+ : base::MessageLoopProxy::current(); |
+ task_runner->PostTask(FROM_HERE, |
+ base::Bind(&LayerTreeHostContextTest::LoseContext, |
+ base::Unretained(this))); |
} |
protected: |
@@ -1089,8 +1084,13 @@ |
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,8 +1178,13 @@ |
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; |
} |
} |
@@ -1200,8 +1205,15 @@ |
// Sequence 2 (continued): |
// The previous resource should have been deleted. |
EXPECT_EQ(0u, impl->ResourceIdForUIResource(test_id0_)); |
- // The second resource should have been created. |
- EXPECT_NE(0u, impl->ResourceIdForUIResource(test_id1_)); |
+ 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 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); |
@@ -1517,8 +1529,8 @@ |
bool deferred_; |
}; |
-SINGLE_AND_MULTI_THREAD_TEST_F( |
- LayerTreeHostContextTestLoseAfterSendingBeginMainFrame); |
+// TODO(danakj): We don't use scheduler with SingleThreadProxy yet. |
+MULTI_THREAD_TEST_F(LayerTreeHostContextTestLoseAfterSendingBeginMainFrame); |
} // namespace |
} // namespace cc |