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 e5e5504a8399842a8fd279cb07f9fbf6b4e6e1c7..7ebca1422f1de4d86c203aa7b80fde8a1079e1da 100644 |
--- a/cc/trees/layer_tree_host_unittest_context.cc |
+++ b/cc/trees/layer_tree_host_unittest_context.cc |
@@ -1275,7 +1275,7 @@ SINGLE_AND_MULTI_THREAD_TEST_F(UIResourceLostAfterCommit); |
// of creation/deletion are considered: |
// 1. Create one resource -> Context Lost => Expect the resource to have been |
// created. |
-// 2. Delete an exisiting resource (test_id0_) -> create a second resource |
+// 2. Delete an existing resource (test_id0_) -> create a second resource |
// (test_id1_) -> Context Lost => Expect the test_id0_ to be removed and |
// test_id1_ to have been created. |
// 3. Create one resource -> Delete that same resource -> Context Lost => Expect |
@@ -1353,10 +1353,10 @@ class UIResourceLostBeforeCommit : public UIResourceLostTestSimple { |
EXPECT_EQ(0u, impl->ResourceIdForUIResource(test_id0_)); |
// 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); |
- EXPECT_EQ(1, ui_resource_->lost_resource_count); |
+ // The second resource was not actually uploaded before the context |
+ // was lost, so it only got created once. |
+ EXPECT_EQ(1, ui_resource_->resource_create_count); |
+ EXPECT_EQ(0, ui_resource_->lost_resource_count); |
break; |
case 5: |
// Sequence 3 (continued): |
@@ -1468,16 +1468,22 @@ class UIResourceLostEviction : public UIResourceLostTestSimple { |
switch (step) { |
case 0: |
ui_resource_ = FakeScopedUIResource::Create(layer_tree_host()); |
+ ui_resource2_ = FakeScopedUIResource::Create(layer_tree_host()); |
EXPECT_NE(0, ui_resource_->id()); |
+ EXPECT_NE(0, ui_resource2_->id()); |
PostSetNeedsCommitToMainThread(); |
break; |
case 2: |
// Make the tree not visible. |
PostSetVisibleToMainThread(false); |
+ ui_resource2_->DeleteResource(); |
+ ui_resource3_ = FakeScopedUIResource::Create(layer_tree_host()); |
break; |
case 3: |
- // Release resource before ending the test. |
+ // Release resources before ending the test. |
ui_resource_ = nullptr; |
+ ui_resource2_ = nullptr; |
+ ui_resource3_ = nullptr; |
EndTest(); |
break; |
case 4: |
@@ -1490,6 +1496,8 @@ class UIResourceLostEviction : public UIResourceLostTestSimple { |
// All resources should have been evicted. |
ASSERT_EQ(0u, context3d_->NumTextures()); |
EXPECT_EQ(0u, impl->ResourceIdForUIResource(ui_resource_->id())); |
+ EXPECT_EQ(0u, impl->ResourceIdForUIResource(ui_resource2_->id())); |
+ EXPECT_EQ(0u, impl->ResourceIdForUIResource(ui_resource3_->id())); |
EXPECT_EQ(2, ui_resource_->resource_create_count); |
EXPECT_EQ(1, ui_resource_->lost_resource_count); |
// Drawing is disabled both because of the evicted resources and |
@@ -1504,9 +1512,11 @@ class UIResourceLostEviction : public UIResourceLostTestSimple { |
LayerTreeHostContextTest::CommitCompleteOnThread(impl); |
switch (time_step_) { |
case 1: |
- // The resource should have been created on LTHI after the commit. |
- ASSERT_EQ(1u, context3d_->NumTextures()); |
+ // The first two resources should have been created on LTHI after the |
+ // commit. |
+ ASSERT_EQ(2u, context3d_->NumTextures()); |
EXPECT_NE(0u, impl->ResourceIdForUIResource(ui_resource_->id())); |
+ EXPECT_NE(0u, impl->ResourceIdForUIResource(ui_resource2_->id())); |
EXPECT_EQ(1, ui_resource_->resource_create_count); |
EXPECT_EQ(0, ui_resource_->lost_resource_count); |
EXPECT_TRUE(impl->CanDraw()); |
@@ -1514,29 +1524,47 @@ class UIResourceLostEviction : public UIResourceLostTestSimple { |
impl->EvictAllUIResources(); |
ASSERT_EQ(0u, context3d_->NumTextures()); |
EXPECT_EQ(0u, impl->ResourceIdForUIResource(ui_resource_->id())); |
+ EXPECT_EQ(0u, impl->ResourceIdForUIResource(ui_resource2_->id())); |
EXPECT_EQ(1, ui_resource_->resource_create_count); |
EXPECT_EQ(0, ui_resource_->lost_resource_count); |
EXPECT_FALSE(impl->CanDraw()); |
break; |
case 2: |
- // The resource should have been recreated. |
- ASSERT_EQ(1u, context3d_->NumTextures()); |
+ // The first two resources should have been recreated. |
+ ASSERT_EQ(2u, context3d_->NumTextures()); |
EXPECT_NE(0u, impl->ResourceIdForUIResource(ui_resource_->id())); |
EXPECT_EQ(2, ui_resource_->resource_create_count); |
EXPECT_EQ(1, ui_resource_->lost_resource_count); |
+ EXPECT_NE(0u, impl->ResourceIdForUIResource(ui_resource2_->id())); |
+ EXPECT_EQ(2, ui_resource2_->resource_create_count); |
+ EXPECT_EQ(1, ui_resource2_->lost_resource_count); |
EXPECT_TRUE(impl->CanDraw()); |
break; |
case 3: |
- // The resource should have been recreated after visibility was |
+ // The first resource should have been recreated after visibility was |
// restored. |
- ASSERT_EQ(1u, context3d_->NumTextures()); |
+ ASSERT_EQ(2u, context3d_->NumTextures()); |
EXPECT_NE(0u, impl->ResourceIdForUIResource(ui_resource_->id())); |
EXPECT_EQ(3, ui_resource_->resource_create_count); |
EXPECT_EQ(2, ui_resource_->lost_resource_count); |
+ |
+ // This resource was deleted. |
+ EXPECT_EQ(0u, impl->ResourceIdForUIResource(ui_resource2_->id())); |
+ EXPECT_EQ(2, ui_resource2_->resource_create_count); |
+ EXPECT_EQ(1, ui_resource2_->lost_resource_count); |
+ |
+ // This resource should have been created now. |
+ EXPECT_NE(0u, impl->ResourceIdForUIResource(ui_resource3_->id())); |
+ EXPECT_EQ(1, ui_resource3_->resource_create_count); |
+ EXPECT_EQ(0, ui_resource3_->lost_resource_count); |
EXPECT_TRUE(impl->CanDraw()); |
break; |
} |
} |
+ |
+ private: |
+ std::unique_ptr<FakeScopedUIResource> ui_resource2_; |
+ std::unique_ptr<FakeScopedUIResource> ui_resource3_; |
}; |
SINGLE_AND_MULTI_THREAD_TEST_F(UIResourceLostEviction); |