OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/resources/resource_provider.h" | 5 #include "cc/resources/resource_provider.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 683 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
694 resource_provider_->ReceiveFromChild(child_id, list); | 694 resource_provider_->ReceiveFromChild(child_id, list); |
695 EXPECT_NE(list[0].mailbox_holder.sync_token, | 695 EXPECT_NE(list[0].mailbox_holder.sync_token, |
696 context3d_->last_waited_sync_token()); | 696 context3d_->last_waited_sync_token()); |
697 { | 697 { |
698 resource_provider_->WaitSyncTokenIfNeeded(list[0].id); | 698 resource_provider_->WaitSyncTokenIfNeeded(list[0].id); |
699 ResourceProvider::ScopedReadLockGL lock(resource_provider_.get(), | 699 ResourceProvider::ScopedReadLockGL lock(resource_provider_.get(), |
700 list[0].id); | 700 list[0].id); |
701 } | 701 } |
702 EXPECT_EQ(list[0].mailbox_holder.sync_token, | 702 EXPECT_EQ(list[0].mailbox_holder.sync_token, |
703 context3d_->last_waited_sync_token()); | 703 context3d_->last_waited_sync_token()); |
704 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 704 ResourceIdSet resource_ids_to_receive; |
705 resource_ids_to_receive.insert(id1); | 705 resource_ids_to_receive.insert(id1); |
706 resource_ids_to_receive.insert(id2); | 706 resource_ids_to_receive.insert(id2); |
707 resource_ids_to_receive.insert(id3); | 707 resource_ids_to_receive.insert(id3); |
708 resource_ids_to_receive.insert(id4); | 708 resource_ids_to_receive.insert(id4); |
709 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 709 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
710 resource_ids_to_receive); | 710 resource_ids_to_receive); |
711 } | 711 } |
712 | 712 |
713 EXPECT_EQ(4u, resource_provider_->num_resources()); | 713 EXPECT_EQ(4u, resource_provider_->num_resources()); |
714 ResourceProvider::ResourceIdMap resource_map = | 714 ResourceProvider::ResourceIdMap resource_map = |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
779 // be in-use. | 779 // be in-use. |
780 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); | 780 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); |
781 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); | 781 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); |
782 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id3)); | 782 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id3)); |
783 } | 783 } |
784 { | 784 { |
785 EXPECT_EQ(0u, returned_to_child.size()); | 785 EXPECT_EQ(0u, returned_to_child.size()); |
786 | 786 |
787 // Transfer resources back from the parent to the child. Set no resources as | 787 // Transfer resources back from the parent to the child. Set no resources as |
788 // being in use. | 788 // being in use. |
789 ResourceProvider::ResourceIdSet no_resources; | 789 ResourceIdSet no_resources; |
790 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 790 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
791 | 791 |
792 ASSERT_EQ(4u, returned_to_child.size()); | 792 ASSERT_EQ(4u, returned_to_child.size()); |
793 EXPECT_TRUE(returned_to_child[0].sync_token.HasData()); | 793 EXPECT_TRUE(returned_to_child[0].sync_token.HasData()); |
794 EXPECT_TRUE(returned_to_child[1].sync_token.HasData()); | 794 EXPECT_TRUE(returned_to_child[1].sync_token.HasData()); |
795 EXPECT_TRUE(returned_to_child[2].sync_token.HasData()); | 795 EXPECT_TRUE(returned_to_child[2].sync_token.HasData()); |
796 EXPECT_TRUE(returned_to_child[3].sync_token.HasData()); | 796 EXPECT_TRUE(returned_to_child[3].sync_token.HasData()); |
797 EXPECT_FALSE(returned_to_child[0].lost); | 797 EXPECT_FALSE(returned_to_child[0].lost); |
798 EXPECT_FALSE(returned_to_child[1].lost); | 798 EXPECT_FALSE(returned_to_child[1].lost); |
799 EXPECT_FALSE(returned_to_child[2].lost); | 799 EXPECT_FALSE(returned_to_child[2].lost); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
849 list[1].mailbox_holder.texture_target); | 849 list[1].mailbox_holder.texture_target); |
850 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), | 850 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), |
851 list[2].mailbox_holder.texture_target); | 851 list[2].mailbox_holder.texture_target); |
852 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), | 852 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), |
853 list[3].mailbox_holder.texture_target); | 853 list[3].mailbox_holder.texture_target); |
854 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); | 854 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); |
855 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); | 855 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); |
856 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id3)); | 856 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id3)); |
857 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id4)); | 857 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id4)); |
858 resource_provider_->ReceiveFromChild(child_id, list); | 858 resource_provider_->ReceiveFromChild(child_id, list); |
859 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 859 ResourceIdSet resource_ids_to_receive; |
860 resource_ids_to_receive.insert(id1); | 860 resource_ids_to_receive.insert(id1); |
861 resource_ids_to_receive.insert(id2); | 861 resource_ids_to_receive.insert(id2); |
862 resource_ids_to_receive.insert(id3); | 862 resource_ids_to_receive.insert(id3); |
863 resource_ids_to_receive.insert(id4); | 863 resource_ids_to_receive.insert(id4); |
864 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 864 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
865 resource_ids_to_receive); | 865 resource_ids_to_receive); |
866 } | 866 } |
867 | 867 |
868 EXPECT_EQ(0u, returned_to_child.size()); | 868 EXPECT_EQ(0u, returned_to_child.size()); |
869 | 869 |
870 EXPECT_EQ(4u, resource_provider_->num_resources()); | 870 EXPECT_EQ(4u, resource_provider_->num_resources()); |
871 resource_provider_->DestroyChild(child_id); | 871 resource_provider_->DestroyChild(child_id); |
872 EXPECT_EQ(0u, resource_provider_->num_resources()); | 872 EXPECT_EQ(0u, resource_provider_->num_resources()); |
873 | 873 |
874 ASSERT_EQ(4u, returned_to_child.size()); | 874 ASSERT_EQ(4u, returned_to_child.size()); |
875 EXPECT_TRUE(returned_to_child[0].sync_token.HasData()); | 875 EXPECT_TRUE(returned_to_child[0].sync_token.HasData()); |
876 EXPECT_TRUE(returned_to_child[1].sync_token.HasData()); | 876 EXPECT_TRUE(returned_to_child[1].sync_token.HasData()); |
877 EXPECT_TRUE(returned_to_child[2].sync_token.HasData()); | 877 EXPECT_TRUE(returned_to_child[2].sync_token.HasData()); |
878 EXPECT_TRUE(returned_to_child[3].sync_token.HasData()); | 878 EXPECT_TRUE(returned_to_child[3].sync_token.HasData()); |
879 EXPECT_FALSE(returned_to_child[0].lost); | 879 EXPECT_FALSE(returned_to_child[0].lost); |
880 EXPECT_FALSE(returned_to_child[1].lost); | 880 EXPECT_FALSE(returned_to_child[1].lost); |
881 EXPECT_FALSE(returned_to_child[2].lost); | 881 EXPECT_FALSE(returned_to_child[2].lost); |
882 EXPECT_FALSE(returned_to_child[3].lost); | 882 EXPECT_FALSE(returned_to_child[3].lost); |
883 } | 883 } |
884 | 884 |
| 885 #if defined(OS_ANDROID) |
| 886 TEST_P(ResourceProviderTest, OverlayPromotionHint) { |
| 887 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) |
| 888 return; |
| 889 |
| 890 GLuint external_texture_id = child_context_->createExternalTexture(); |
| 891 |
| 892 gpu::Mailbox external_mailbox; |
| 893 child_context_->genMailboxCHROMIUM(external_mailbox.name); |
| 894 child_context_->produceTextureDirectCHROMIUM( |
| 895 external_texture_id, GL_TEXTURE_EXTERNAL_OES, external_mailbox.name); |
| 896 gpu::SyncToken external_sync_token; |
| 897 child_context_->genSyncToken(child_context_->insertFenceSync(), |
| 898 external_sync_token.GetData()); |
| 899 EXPECT_TRUE(external_sync_token.HasData()); |
| 900 |
| 901 TextureMailbox id1_mailbox(external_mailbox, external_sync_token, |
| 902 GL_TEXTURE_EXTERNAL_OES); |
| 903 id1_mailbox.set_wants_promotion_hint(true); |
| 904 id1_mailbox.set_is_overlay_candidate(true); |
| 905 id1_mailbox.set_is_backed_by_surface_texture(true); |
| 906 ResourceId id1 = child_resource_provider_->CreateResourceFromTextureMailbox( |
| 907 id1_mailbox, |
| 908 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback))); |
| 909 |
| 910 TextureMailbox id2_mailbox(external_mailbox, external_sync_token, |
| 911 GL_TEXTURE_EXTERNAL_OES); |
| 912 id2_mailbox.set_wants_promotion_hint(false); |
| 913 id2_mailbox.set_is_overlay_candidate(true); |
| 914 id2_mailbox.set_is_backed_by_surface_texture(false); |
| 915 ResourceId id2 = child_resource_provider_->CreateResourceFromTextureMailbox( |
| 916 id2_mailbox, |
| 917 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback))); |
| 918 |
| 919 ReturnedResourceArray returned_to_child; |
| 920 int child_id = |
| 921 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
| 922 |
| 923 { |
| 924 // Transfer some resources to the parent. |
| 925 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 926 resource_ids_to_transfer.push_back(id1); |
| 927 resource_ids_to_transfer.push_back(id2); |
| 928 |
| 929 child_resource_provider_->GenerateSyncTokenForResources( |
| 930 resource_ids_to_transfer); |
| 931 |
| 932 TransferableResourceArray list; |
| 933 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 934 &list); |
| 935 ASSERT_EQ(2u, list.size()); |
| 936 resource_provider_->ReceiveFromChild(child_id, list); |
| 937 { |
| 938 resource_provider_->WaitSyncTokenIfNeeded(list[0].id); |
| 939 ResourceProvider::ScopedReadLockGL lock(resource_provider_.get(), |
| 940 list[0].id); |
| 941 } |
| 942 |
| 943 EXPECT_EQ(list[0].mailbox_holder.sync_token, |
| 944 context3d_->last_waited_sync_token()); |
| 945 ResourceIdSet resource_ids_to_receive; |
| 946 resource_ids_to_receive.insert(id1); |
| 947 resource_ids_to_receive.insert(id2); |
| 948 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
| 949 resource_ids_to_receive); |
| 950 } |
| 951 |
| 952 EXPECT_EQ(2u, resource_provider_->num_resources()); |
| 953 ResourceProvider::ResourceIdMap resource_map = |
| 954 resource_provider_->GetChildToParentMap(child_id); |
| 955 ResourceId mapped_id1 = resource_map[id1]; |
| 956 ResourceId mapped_id2 = resource_map[id2]; |
| 957 EXPECT_NE(0u, mapped_id1); |
| 958 EXPECT_NE(0u, mapped_id2); |
| 959 |
| 960 // Make sure that the request for a promotion hint was noticed. |
| 961 EXPECT_TRUE(resource_provider_->IsOverlayCandidate(mapped_id1)); |
| 962 EXPECT_TRUE(resource_provider_->IsBackedBySurfaceTexture(mapped_id1)); |
| 963 EXPECT_TRUE(resource_provider_->WantsPromotionHint(mapped_id1)); |
| 964 |
| 965 EXPECT_TRUE(resource_provider_->IsOverlayCandidate(mapped_id2)); |
| 966 EXPECT_FALSE(resource_provider_->IsBackedBySurfaceTexture(mapped_id2)); |
| 967 EXPECT_FALSE(resource_provider_->WantsPromotionHint(mapped_id2)); |
| 968 |
| 969 EXPECT_EQ(1u, resource_provider_->CountPromotionHintRequestsForTesting()); |
| 970 |
| 971 // ResourceProvider maintains a set of promotion hint requests that should be |
| 972 // cleared when resources are deleted. |
| 973 resource_provider_->DeclareUsedResourcesFromChild(child_id, ResourceIdSet()); |
| 974 EXPECT_EQ(2u, returned_to_child.size()); |
| 975 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); |
| 976 |
| 977 EXPECT_EQ(0u, resource_provider_->CountPromotionHintRequestsForTesting()); |
| 978 |
| 979 resource_provider_->DestroyChild(child_id); |
| 980 } |
| 981 #endif |
| 982 |
885 class ResourceProviderTestNoSyncToken : public ResourceProviderTest { | 983 class ResourceProviderTestNoSyncToken : public ResourceProviderTest { |
886 public: | 984 public: |
887 ResourceProviderTestNoSyncToken() : ResourceProviderTest(false) { | 985 ResourceProviderTestNoSyncToken() : ResourceProviderTest(false) { |
888 EXPECT_EQ(ResourceProvider::RESOURCE_TYPE_GL_TEXTURE, GetParam()); | 986 EXPECT_EQ(ResourceProvider::RESOURCE_TYPE_GL_TEXTURE, GetParam()); |
889 } | 987 } |
890 }; | 988 }; |
891 | 989 |
892 TEST_P(ResourceProviderTestNoSyncToken, TransferGLResources) { | 990 TEST_P(ResourceProviderTestNoSyncToken, TransferGLResources) { |
893 gfx::Size size(1, 1); | 991 gfx::Size size(1, 1); |
894 ResourceFormat format = RGBA_8888; | 992 ResourceFormat format = RGBA_8888; |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
944 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1042 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
945 &list); | 1043 &list); |
946 ASSERT_EQ(3u, list.size()); | 1044 ASSERT_EQ(3u, list.size()); |
947 // Standard resources shouldn't require creating and sending a sync point. | 1045 // Standard resources shouldn't require creating and sending a sync point. |
948 EXPECT_FALSE(list[0].mailbox_holder.sync_token.HasData()); | 1046 EXPECT_FALSE(list[0].mailbox_holder.sync_token.HasData()); |
949 EXPECT_FALSE(list[1].mailbox_holder.sync_token.HasData()); | 1047 EXPECT_FALSE(list[1].mailbox_holder.sync_token.HasData()); |
950 // A given sync point should be passed through. | 1048 // A given sync point should be passed through. |
951 EXPECT_EQ(external_sync_token, list[2].mailbox_holder.sync_token); | 1049 EXPECT_EQ(external_sync_token, list[2].mailbox_holder.sync_token); |
952 resource_provider_->ReceiveFromChild(child_id, list); | 1050 resource_provider_->ReceiveFromChild(child_id, list); |
953 | 1051 |
954 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 1052 ResourceIdSet resource_ids_to_receive; |
955 resource_ids_to_receive.insert(id1); | 1053 resource_ids_to_receive.insert(id1); |
956 resource_ids_to_receive.insert(id2); | 1054 resource_ids_to_receive.insert(id2); |
957 resource_ids_to_receive.insert(id3); | 1055 resource_ids_to_receive.insert(id3); |
958 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 1056 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
959 resource_ids_to_receive); | 1057 resource_ids_to_receive); |
960 } | 1058 } |
961 | 1059 |
962 { | 1060 { |
963 EXPECT_EQ(0u, returned_to_child.size()); | 1061 EXPECT_EQ(0u, returned_to_child.size()); |
964 | 1062 |
965 // Transfer resources back from the parent to the child. Set no resources as | 1063 // Transfer resources back from the parent to the child. Set no resources as |
966 // being in use. | 1064 // being in use. |
967 ResourceProvider::ResourceIdSet no_resources; | 1065 ResourceIdSet no_resources; |
968 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 1066 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
969 | 1067 |
970 ASSERT_EQ(3u, returned_to_child.size()); | 1068 ASSERT_EQ(3u, returned_to_child.size()); |
971 std::map<ResourceId, gpu::SyncToken> returned_sync_tokens; | 1069 std::map<ResourceId, gpu::SyncToken> returned_sync_tokens; |
972 for (const auto& returned : returned_to_child) | 1070 for (const auto& returned : returned_to_child) |
973 returned_sync_tokens[returned.id] = returned.sync_token; | 1071 returned_sync_tokens[returned.id] = returned.sync_token; |
974 | 1072 |
975 ASSERT_TRUE(returned_sync_tokens.find(id1) != returned_sync_tokens.end()); | 1073 ASSERT_TRUE(returned_sync_tokens.find(id1) != returned_sync_tokens.end()); |
976 // No new sync point should be created transferring back. | 1074 // No new sync point should be created transferring back. |
977 ASSERT_TRUE(returned_sync_tokens.find(id1) != returned_sync_tokens.end()); | 1075 ASSERT_TRUE(returned_sync_tokens.find(id1) != returned_sync_tokens.end()); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1024 &list); | 1122 &list); |
1025 ASSERT_EQ(1u, list.size()); | 1123 ASSERT_EQ(1u, list.size()); |
1026 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); | 1124 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); |
1027 | 1125 |
1028 resource_provider_->ReceiveFromChild(child_id, list); | 1126 resource_provider_->ReceiveFromChild(child_id, list); |
1029 | 1127 |
1030 resource_provider_->WaitSyncTokenIfNeeded(list[0].id); | 1128 resource_provider_->WaitSyncTokenIfNeeded(list[0].id); |
1031 ResourceProvider::ScopedReadLockGL lock(resource_provider_.get(), | 1129 ResourceProvider::ScopedReadLockGL lock(resource_provider_.get(), |
1032 list[0].id); | 1130 list[0].id); |
1033 | 1131 |
1034 resource_provider_->DeclareUsedResourcesFromChild( | 1132 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
1035 child_id, ResourceProvider::ResourceIdSet()); | 1133 ResourceIdSet()); |
1036 EXPECT_EQ(0u, returned_to_child.size()); | 1134 EXPECT_EQ(0u, returned_to_child.size()); |
1037 } | 1135 } |
1038 | 1136 |
1039 EXPECT_EQ(1u, returned_to_child.size()); | 1137 EXPECT_EQ(1u, returned_to_child.size()); |
1040 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); | 1138 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); |
1041 | 1139 |
1042 { | 1140 { |
1043 child_resource_provider_->WaitSyncTokenIfNeeded(id1); | 1141 child_resource_provider_->WaitSyncTokenIfNeeded(id1); |
1044 ResourceProvider::ScopedReadLockGL lock(child_resource_provider_.get(), | 1142 ResourceProvider::ScopedReadLockGL lock(child_resource_provider_.get(), |
1045 id1); | 1143 id1); |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1099 resource_provider_->ReceiveFromChild(child_id, list); | 1197 resource_provider_->ReceiveFromChild(child_id, list); |
1100 | 1198 |
1101 scoped_refptr<TestFence> fence(new TestFence); | 1199 scoped_refptr<TestFence> fence(new TestFence); |
1102 resource_provider_->SetReadLockFence(fence.get()); | 1200 resource_provider_->SetReadLockFence(fence.get()); |
1103 { | 1201 { |
1104 unsigned parent_id = list.front().id; | 1202 unsigned parent_id = list.front().id; |
1105 resource_provider_->WaitSyncTokenIfNeeded(parent_id); | 1203 resource_provider_->WaitSyncTokenIfNeeded(parent_id); |
1106 ResourceProvider::ScopedReadLockGL lock(resource_provider_.get(), | 1204 ResourceProvider::ScopedReadLockGL lock(resource_provider_.get(), |
1107 parent_id); | 1205 parent_id); |
1108 } | 1206 } |
1109 resource_provider_->DeclareUsedResourcesFromChild( | 1207 resource_provider_->DeclareUsedResourcesFromChild(child_id, ResourceIdSet()); |
1110 child_id, ResourceProvider::ResourceIdSet()); | |
1111 EXPECT_EQ(0u, returned_to_child.size()); | 1208 EXPECT_EQ(0u, returned_to_child.size()); |
1112 | 1209 |
1113 resource_provider_->DeclareUsedResourcesFromChild( | 1210 resource_provider_->DeclareUsedResourcesFromChild(child_id, ResourceIdSet()); |
1114 child_id, ResourceProvider::ResourceIdSet()); | |
1115 EXPECT_EQ(0u, returned_to_child.size()); | 1211 EXPECT_EQ(0u, returned_to_child.size()); |
1116 fence->passed = true; | 1212 fence->passed = true; |
1117 | 1213 |
1118 resource_provider_->DeclareUsedResourcesFromChild( | 1214 resource_provider_->DeclareUsedResourcesFromChild(child_id, ResourceIdSet()); |
1119 child_id, ResourceProvider::ResourceIdSet()); | |
1120 EXPECT_EQ(1u, returned_to_child.size()); | 1215 EXPECT_EQ(1u, returned_to_child.size()); |
1121 | 1216 |
1122 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); | 1217 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); |
1123 child_resource_provider_->DeleteResource(id1); | 1218 child_resource_provider_->DeleteResource(id1); |
1124 EXPECT_EQ(0u, child_resource_provider_->num_resources()); | 1219 EXPECT_EQ(0u, child_resource_provider_->num_resources()); |
1125 } | 1220 } |
1126 | 1221 |
1127 TEST_P(ResourceProviderTest, ReadLockFenceDestroyChild) { | 1222 TEST_P(ResourceProviderTest, ReadLockFenceDestroyChild) { |
1128 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 1223 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) |
1129 return; | 1224 return; |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1299 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1394 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
1300 &list); | 1395 &list); |
1301 ASSERT_EQ(3u, list.size()); | 1396 ASSERT_EQ(3u, list.size()); |
1302 EXPECT_FALSE(list[0].mailbox_holder.sync_token.HasData()); | 1397 EXPECT_FALSE(list[0].mailbox_holder.sync_token.HasData()); |
1303 EXPECT_FALSE(list[1].mailbox_holder.sync_token.HasData()); | 1398 EXPECT_FALSE(list[1].mailbox_holder.sync_token.HasData()); |
1304 EXPECT_FALSE(list[2].mailbox_holder.sync_token.HasData()); | 1399 EXPECT_FALSE(list[2].mailbox_holder.sync_token.HasData()); |
1305 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); | 1400 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); |
1306 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); | 1401 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); |
1307 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id3)); | 1402 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id3)); |
1308 resource_provider_->ReceiveFromChild(child_id, list); | 1403 resource_provider_->ReceiveFromChild(child_id, list); |
1309 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 1404 ResourceIdSet resource_ids_to_receive; |
1310 resource_ids_to_receive.insert(id1); | 1405 resource_ids_to_receive.insert(id1); |
1311 resource_ids_to_receive.insert(id2); | 1406 resource_ids_to_receive.insert(id2); |
1312 resource_ids_to_receive.insert(id3); | 1407 resource_ids_to_receive.insert(id3); |
1313 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 1408 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
1314 resource_ids_to_receive); | 1409 resource_ids_to_receive); |
1315 } | 1410 } |
1316 | 1411 |
1317 EXPECT_EQ(3u, resource_provider_->num_resources()); | 1412 EXPECT_EQ(3u, resource_provider_->num_resources()); |
1318 ResourceProvider::ResourceIdMap resource_map = | 1413 ResourceProvider::ResourceIdMap resource_map = |
1319 resource_provider_->GetChildToParentMap(child_id); | 1414 resource_provider_->GetChildToParentMap(child_id); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1358 // ids were exported twice, we returned them only once, they should still | 1453 // ids were exported twice, we returned them only once, they should still |
1359 // be in-use. | 1454 // be in-use. |
1360 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); | 1455 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); |
1361 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); | 1456 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); |
1362 } | 1457 } |
1363 { | 1458 { |
1364 EXPECT_EQ(0u, returned_to_child.size()); | 1459 EXPECT_EQ(0u, returned_to_child.size()); |
1365 | 1460 |
1366 // Transfer resources back from the parent to the child. Set no resources as | 1461 // Transfer resources back from the parent to the child. Set no resources as |
1367 // being in use. | 1462 // being in use. |
1368 ResourceProvider::ResourceIdSet no_resources; | 1463 ResourceIdSet no_resources; |
1369 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 1464 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
1370 | 1465 |
1371 ASSERT_EQ(3u, returned_to_child.size()); | 1466 ASSERT_EQ(3u, returned_to_child.size()); |
1372 EXPECT_FALSE(returned_to_child[0].sync_token.HasData()); | 1467 EXPECT_FALSE(returned_to_child[0].sync_token.HasData()); |
1373 EXPECT_FALSE(returned_to_child[1].sync_token.HasData()); | 1468 EXPECT_FALSE(returned_to_child[1].sync_token.HasData()); |
1374 EXPECT_FALSE(returned_to_child[2].sync_token.HasData()); | 1469 EXPECT_FALSE(returned_to_child[2].sync_token.HasData()); |
1375 std::set<ResourceId> expected_ids; | 1470 std::set<ResourceId> expected_ids; |
1376 expected_ids.insert(id1); | 1471 expected_ids.insert(id1); |
1377 expected_ids.insert(id2); | 1472 expected_ids.insert(id2); |
1378 expected_ids.insert(id3); | 1473 expected_ids.insert(id3); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1420 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1515 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
1421 &list); | 1516 &list); |
1422 ASSERT_EQ(3u, list.size()); | 1517 ASSERT_EQ(3u, list.size()); |
1423 EXPECT_EQ(id1, list[0].id); | 1518 EXPECT_EQ(id1, list[0].id); |
1424 EXPECT_EQ(id2, list[1].id); | 1519 EXPECT_EQ(id2, list[1].id); |
1425 EXPECT_EQ(id3, list[2].id); | 1520 EXPECT_EQ(id3, list[2].id); |
1426 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); | 1521 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); |
1427 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); | 1522 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); |
1428 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id3)); | 1523 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id3)); |
1429 resource_provider_->ReceiveFromChild(child_id, list); | 1524 resource_provider_->ReceiveFromChild(child_id, list); |
1430 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 1525 ResourceIdSet resource_ids_to_receive; |
1431 resource_ids_to_receive.insert(id1); | 1526 resource_ids_to_receive.insert(id1); |
1432 resource_ids_to_receive.insert(id2); | 1527 resource_ids_to_receive.insert(id2); |
1433 resource_ids_to_receive.insert(id3); | 1528 resource_ids_to_receive.insert(id3); |
1434 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 1529 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
1435 resource_ids_to_receive); | 1530 resource_ids_to_receive); |
1436 } | 1531 } |
1437 | 1532 |
1438 EXPECT_EQ(0u, returned_to_child.size()); | 1533 EXPECT_EQ(0u, returned_to_child.size()); |
1439 | 1534 |
1440 EXPECT_EQ(3u, resource_provider_->num_resources()); | 1535 EXPECT_EQ(3u, resource_provider_->num_resources()); |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1609 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1704 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
1610 &list); | 1705 &list); |
1611 ASSERT_EQ(2u, list.size()); | 1706 ASSERT_EQ(2u, list.size()); |
1612 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { | 1707 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { |
1613 EXPECT_TRUE(list[0].mailbox_holder.sync_token.HasData()); | 1708 EXPECT_TRUE(list[0].mailbox_holder.sync_token.HasData()); |
1614 EXPECT_TRUE(list[1].mailbox_holder.sync_token.HasData()); | 1709 EXPECT_TRUE(list[1].mailbox_holder.sync_token.HasData()); |
1615 } | 1710 } |
1616 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); | 1711 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); |
1617 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); | 1712 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); |
1618 resource_provider_->ReceiveFromChild(child_id, list); | 1713 resource_provider_->ReceiveFromChild(child_id, list); |
1619 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 1714 ResourceIdSet resource_ids_to_receive; |
1620 resource_ids_to_receive.insert(id1); | 1715 resource_ids_to_receive.insert(id1); |
1621 resource_ids_to_receive.insert(id2); | 1716 resource_ids_to_receive.insert(id2); |
1622 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 1717 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
1623 resource_ids_to_receive); | 1718 resource_ids_to_receive); |
1624 } | 1719 } |
1625 | 1720 |
1626 EXPECT_EQ(2u, resource_provider_->num_resources()); | 1721 EXPECT_EQ(2u, resource_provider_->num_resources()); |
1627 ResourceProvider::ResourceIdMap resource_map = | 1722 ResourceProvider::ResourceIdMap resource_map = |
1628 resource_provider_->GetChildToParentMap(child_id); | 1723 resource_provider_->GetChildToParentMap(child_id); |
1629 ResourceId mapped_id1 = resource_map[id1]; | 1724 ResourceId mapped_id1 = resource_map[id1]; |
(...skipping 18 matching lines...) Expand all Loading... |
1648 ASSERT_EQ(2u, list.size()); | 1743 ASSERT_EQ(2u, list.size()); |
1649 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { | 1744 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { |
1650 EXPECT_TRUE(list[0].mailbox_holder.sync_token.HasData()); | 1745 EXPECT_TRUE(list[0].mailbox_holder.sync_token.HasData()); |
1651 EXPECT_TRUE(list[1].mailbox_holder.sync_token.HasData()); | 1746 EXPECT_TRUE(list[1].mailbox_holder.sync_token.HasData()); |
1652 } | 1747 } |
1653 EXPECT_TRUE(resource_provider_->InUseByConsumer(id1)); | 1748 EXPECT_TRUE(resource_provider_->InUseByConsumer(id1)); |
1654 EXPECT_TRUE(resource_provider_->InUseByConsumer(id2)); | 1749 EXPECT_TRUE(resource_provider_->InUseByConsumer(id2)); |
1655 | 1750 |
1656 // Release the resource in the parent. Set no resources as being in use. The | 1751 // Release the resource in the parent. Set no resources as being in use. The |
1657 // resources are exported so that can't be transferred back yet. | 1752 // resources are exported so that can't be transferred back yet. |
1658 ResourceProvider::ResourceIdSet no_resources; | 1753 ResourceIdSet no_resources; |
1659 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 1754 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
1660 | 1755 |
1661 EXPECT_EQ(0u, returned_to_child.size()); | 1756 EXPECT_EQ(0u, returned_to_child.size()); |
1662 EXPECT_EQ(2u, resource_provider_->num_resources()); | 1757 EXPECT_EQ(2u, resource_provider_->num_resources()); |
1663 | 1758 |
1664 // Return the resources from the grandparent to the parent. They should be | 1759 // Return the resources from the grandparent to the parent. They should be |
1665 // returned to the child then. | 1760 // returned to the child then. |
1666 EXPECT_EQ(2u, list.size()); | 1761 EXPECT_EQ(2u, list.size()); |
1667 EXPECT_EQ(mapped_id1, list[0].id); | 1762 EXPECT_EQ(mapped_id1, list[0].id); |
1668 EXPECT_EQ(mapped_id2, list[1].id); | 1763 EXPECT_EQ(mapped_id2, list[1].id); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1715 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1810 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
1716 &list); | 1811 &list); |
1717 ASSERT_EQ(2u, list.size()); | 1812 ASSERT_EQ(2u, list.size()); |
1718 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { | 1813 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { |
1719 EXPECT_TRUE(list[0].mailbox_holder.sync_token.HasData()); | 1814 EXPECT_TRUE(list[0].mailbox_holder.sync_token.HasData()); |
1720 EXPECT_TRUE(list[1].mailbox_holder.sync_token.HasData()); | 1815 EXPECT_TRUE(list[1].mailbox_holder.sync_token.HasData()); |
1721 } | 1816 } |
1722 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); | 1817 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); |
1723 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); | 1818 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); |
1724 resource_provider_->ReceiveFromChild(child_id, list); | 1819 resource_provider_->ReceiveFromChild(child_id, list); |
1725 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 1820 ResourceIdSet resource_ids_to_receive; |
1726 resource_ids_to_receive.insert(id1); | 1821 resource_ids_to_receive.insert(id1); |
1727 resource_ids_to_receive.insert(id2); | 1822 resource_ids_to_receive.insert(id2); |
1728 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 1823 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
1729 resource_ids_to_receive); | 1824 resource_ids_to_receive); |
1730 } | 1825 } |
1731 | 1826 |
1732 EXPECT_EQ(2u, resource_provider_->num_resources()); | 1827 EXPECT_EQ(2u, resource_provider_->num_resources()); |
1733 ResourceProvider::ResourceIdMap resource_map = | 1828 ResourceProvider::ResourceIdMap resource_map = |
1734 resource_provider_->GetChildToParentMap(child_id); | 1829 resource_provider_->GetChildToParentMap(child_id); |
1735 ResourceId mapped_id1 = resource_map[id1]; | 1830 ResourceId mapped_id1 = resource_map[id1]; |
(...skipping 18 matching lines...) Expand all Loading... |
1754 ASSERT_EQ(2u, list.size()); | 1849 ASSERT_EQ(2u, list.size()); |
1755 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { | 1850 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { |
1756 EXPECT_TRUE(list[0].mailbox_holder.sync_token.HasData()); | 1851 EXPECT_TRUE(list[0].mailbox_holder.sync_token.HasData()); |
1757 EXPECT_TRUE(list[1].mailbox_holder.sync_token.HasData()); | 1852 EXPECT_TRUE(list[1].mailbox_holder.sync_token.HasData()); |
1758 } | 1853 } |
1759 EXPECT_TRUE(resource_provider_->InUseByConsumer(id1)); | 1854 EXPECT_TRUE(resource_provider_->InUseByConsumer(id1)); |
1760 EXPECT_TRUE(resource_provider_->InUseByConsumer(id2)); | 1855 EXPECT_TRUE(resource_provider_->InUseByConsumer(id2)); |
1761 | 1856 |
1762 // Release the resource in the parent. Set no resources as being in use. The | 1857 // Release the resource in the parent. Set no resources as being in use. The |
1763 // resources are exported so that can't be transferred back yet. | 1858 // resources are exported so that can't be transferred back yet. |
1764 ResourceProvider::ResourceIdSet no_resources; | 1859 ResourceIdSet no_resources; |
1765 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 1860 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
1766 | 1861 |
1767 // Destroy the child, the resources should not be returned yet. | 1862 // Destroy the child, the resources should not be returned yet. |
1768 EXPECT_EQ(0u, returned_to_child.size()); | 1863 EXPECT_EQ(0u, returned_to_child.size()); |
1769 EXPECT_EQ(2u, resource_provider_->num_resources()); | 1864 EXPECT_EQ(2u, resource_provider_->num_resources()); |
1770 | 1865 |
1771 resource_provider_->DestroyChild(child_id); | 1866 resource_provider_->DestroyChild(child_id); |
1772 | 1867 |
1773 EXPECT_EQ(2u, resource_provider_->num_resources()); | 1868 EXPECT_EQ(2u, resource_provider_->num_resources()); |
1774 ASSERT_EQ(0u, returned_to_child.size()); | 1869 ASSERT_EQ(0u, returned_to_child.size()); |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1828 resource_ids_to_transfer); | 1923 resource_ids_to_transfer); |
1829 | 1924 |
1830 TransferableResourceArray list; | 1925 TransferableResourceArray list; |
1831 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1926 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
1832 &list); | 1927 &list); |
1833 ASSERT_EQ(1u, list.size()); | 1928 ASSERT_EQ(1u, list.size()); |
1834 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 1929 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) |
1835 EXPECT_TRUE(list[0].mailbox_holder.sync_token.HasData()); | 1930 EXPECT_TRUE(list[0].mailbox_holder.sync_token.HasData()); |
1836 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id)); | 1931 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id)); |
1837 resource_provider_->ReceiveFromChild(child_id, list); | 1932 resource_provider_->ReceiveFromChild(child_id, list); |
1838 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 1933 ResourceIdSet resource_ids_to_receive; |
1839 resource_ids_to_receive.insert(id); | 1934 resource_ids_to_receive.insert(id); |
1840 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 1935 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
1841 resource_ids_to_receive); | 1936 resource_ids_to_receive); |
1842 } | 1937 } |
1843 | 1938 |
1844 // Delete textures in the child, while they are transfered. | 1939 // Delete textures in the child, while they are transfered. |
1845 child_resource_provider_->DeleteResource(id); | 1940 child_resource_provider_->DeleteResource(id); |
1846 EXPECT_EQ(1u, child_resource_provider_->num_resources()); | 1941 EXPECT_EQ(1u, child_resource_provider_->num_resources()); |
1847 { | 1942 { |
1848 EXPECT_EQ(0u, returned_to_child.size()); | 1943 EXPECT_EQ(0u, returned_to_child.size()); |
1849 | 1944 |
1850 // Transfer resources back from the parent to the child. Set no resources as | 1945 // Transfer resources back from the parent to the child. Set no resources as |
1851 // being in use. | 1946 // being in use. |
1852 ResourceProvider::ResourceIdSet no_resources; | 1947 ResourceIdSet no_resources; |
1853 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 1948 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
1854 | 1949 |
1855 ASSERT_EQ(1u, returned_to_child.size()); | 1950 ASSERT_EQ(1u, returned_to_child.size()); |
1856 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 1951 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) |
1857 EXPECT_TRUE(returned_to_child[0].sync_token.HasData()); | 1952 EXPECT_TRUE(returned_to_child[0].sync_token.HasData()); |
1858 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); | 1953 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); |
1859 } | 1954 } |
1860 EXPECT_EQ(0u, child_resource_provider_->num_resources()); | 1955 EXPECT_EQ(0u, child_resource_provider_->num_resources()); |
1861 } | 1956 } |
1862 | 1957 |
(...skipping 20 matching lines...) Expand all Loading... |
1883 resource_ids_to_transfer.push_back(id); | 1978 resource_ids_to_transfer.push_back(id); |
1884 | 1979 |
1885 child_resource_provider_->GenerateSyncTokenForResources( | 1980 child_resource_provider_->GenerateSyncTokenForResources( |
1886 resource_ids_to_transfer); | 1981 resource_ids_to_transfer); |
1887 | 1982 |
1888 TransferableResourceArray list; | 1983 TransferableResourceArray list; |
1889 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1984 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
1890 &list); | 1985 &list); |
1891 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id)); | 1986 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id)); |
1892 resource_provider_->ReceiveFromChild(child_id, list); | 1987 resource_provider_->ReceiveFromChild(child_id, list); |
1893 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 1988 ResourceIdSet resource_ids_to_receive; |
1894 resource_ids_to_receive.insert(id); | 1989 resource_ids_to_receive.insert(id); |
1895 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 1990 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
1896 resource_ids_to_receive); | 1991 resource_ids_to_receive); |
1897 } | 1992 } |
1898 TransferableResourceArray sent_to_top_level; | 1993 TransferableResourceArray sent_to_top_level; |
1899 { | 1994 { |
1900 // Parent transfers to top-level. | 1995 // Parent transfers to top-level. |
1901 ASSERT_TRUE(map.find(id) != map.end()); | 1996 ASSERT_TRUE(map.find(id) != map.end()); |
1902 ResourceId parent_id = map.find(id)->second; | 1997 ResourceId parent_id = map.find(id)->second; |
1903 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1998 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
1904 resource_ids_to_transfer.push_back(parent_id); | 1999 resource_ids_to_transfer.push_back(parent_id); |
1905 resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 2000 resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
1906 &sent_to_top_level); | 2001 &sent_to_top_level); |
1907 EXPECT_TRUE(resource_provider_->InUseByConsumer(parent_id)); | 2002 EXPECT_TRUE(resource_provider_->InUseByConsumer(parent_id)); |
1908 } | 2003 } |
1909 { | 2004 { |
1910 // Stop using resource. | 2005 // Stop using resource. |
1911 ResourceProvider::ResourceIdSet empty; | 2006 ResourceIdSet empty; |
1912 resource_provider_->DeclareUsedResourcesFromChild(child_id, empty); | 2007 resource_provider_->DeclareUsedResourcesFromChild(child_id, empty); |
1913 // Resource is not yet returned to the child, since it's in use by the | 2008 // Resource is not yet returned to the child, since it's in use by the |
1914 // top-level. | 2009 // top-level. |
1915 EXPECT_TRUE(returned_to_child.empty()); | 2010 EXPECT_TRUE(returned_to_child.empty()); |
1916 } | 2011 } |
1917 { | 2012 { |
1918 // Send the resource to the parent again. | 2013 // Send the resource to the parent again. |
1919 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 2014 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
1920 resource_ids_to_transfer.push_back(id); | 2015 resource_ids_to_transfer.push_back(id); |
1921 TransferableResourceArray list; | 2016 TransferableResourceArray list; |
1922 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 2017 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
1923 &list); | 2018 &list); |
1924 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id)); | 2019 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id)); |
1925 resource_provider_->ReceiveFromChild(child_id, list); | 2020 resource_provider_->ReceiveFromChild(child_id, list); |
1926 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 2021 ResourceIdSet resource_ids_to_receive; |
1927 resource_ids_to_receive.insert(id); | 2022 resource_ids_to_receive.insert(id); |
1928 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 2023 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
1929 resource_ids_to_receive); | 2024 resource_ids_to_receive); |
1930 } | 2025 } |
1931 { | 2026 { |
1932 // Receive returns back from top-level. | 2027 // Receive returns back from top-level. |
1933 ReturnedResourceArray returned; | 2028 ReturnedResourceArray returned; |
1934 TransferableResource::ReturnResources(sent_to_top_level, &returned); | 2029 TransferableResource::ReturnResources(sent_to_top_level, &returned); |
1935 resource_provider_->ReceiveReturnsFromParent(returned); | 2030 resource_provider_->ReceiveReturnsFromParent(returned); |
1936 // Resource is still not yet returned to the child, since it's declared used | 2031 // Resource is still not yet returned to the child, since it's declared used |
(...skipping 21 matching lines...) Expand all Loading... |
1958 resource_provider_->ReceiveReturnsFromParent(returned); | 2053 resource_provider_->ReceiveReturnsFromParent(returned); |
1959 // Resource is still not yet returned to the child, since it's still | 2054 // Resource is still not yet returned to the child, since it's still |
1960 // declared used in the parent. | 2055 // declared used in the parent. |
1961 EXPECT_TRUE(returned_to_child.empty()); | 2056 EXPECT_TRUE(returned_to_child.empty()); |
1962 ASSERT_TRUE(map.find(id) != map.end()); | 2057 ASSERT_TRUE(map.find(id) != map.end()); |
1963 ResourceId parent_id = map.find(id)->second; | 2058 ResourceId parent_id = map.find(id)->second; |
1964 EXPECT_FALSE(resource_provider_->InUseByConsumer(parent_id)); | 2059 EXPECT_FALSE(resource_provider_->InUseByConsumer(parent_id)); |
1965 } | 2060 } |
1966 { | 2061 { |
1967 // Stop using resource. | 2062 // Stop using resource. |
1968 ResourceProvider::ResourceIdSet empty; | 2063 ResourceIdSet empty; |
1969 resource_provider_->DeclareUsedResourcesFromChild(child_id, empty); | 2064 resource_provider_->DeclareUsedResourcesFromChild(child_id, empty); |
1970 // Resource should have been returned to the child, since it's no longer in | 2065 // Resource should have been returned to the child, since it's no longer in |
1971 // use by the top-level. | 2066 // use by the top-level. |
1972 ASSERT_EQ(1u, returned_to_child.size()); | 2067 ASSERT_EQ(1u, returned_to_child.size()); |
1973 EXPECT_EQ(id, returned_to_child[0].id); | 2068 EXPECT_EQ(id, returned_to_child[0].id); |
1974 EXPECT_EQ(2, returned_to_child[0].count); | 2069 EXPECT_EQ(2, returned_to_child[0].count); |
1975 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); | 2070 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); |
1976 returned_to_child.clear(); | 2071 returned_to_child.clear(); |
1977 EXPECT_FALSE(child_resource_provider_->InUseByConsumer(id)); | 2072 EXPECT_FALSE(child_resource_provider_->InUseByConsumer(id)); |
1978 } | 2073 } |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2085 .WillOnce(Return(parent_texture_id)); | 2180 .WillOnce(Return(parent_texture_id)); |
2086 | 2181 |
2087 parent_resource_provider->ReceiveFromChild(child_id, list); | 2182 parent_resource_provider->ReceiveFromChild(child_id, list); |
2088 { | 2183 { |
2089 parent_resource_provider->WaitSyncTokenIfNeeded(list[0].id); | 2184 parent_resource_provider->WaitSyncTokenIfNeeded(list[0].id); |
2090 ResourceProvider::ScopedReadLockGL lock(parent_resource_provider.get(), | 2185 ResourceProvider::ScopedReadLockGL lock(parent_resource_provider.get(), |
2091 list[0].id); | 2186 list[0].id); |
2092 } | 2187 } |
2093 Mock::VerifyAndClearExpectations(parent_context); | 2188 Mock::VerifyAndClearExpectations(parent_context); |
2094 | 2189 |
2095 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 2190 ResourceIdSet resource_ids_to_receive; |
2096 resource_ids_to_receive.insert(id); | 2191 resource_ids_to_receive.insert(id); |
2097 parent_resource_provider->DeclareUsedResourcesFromChild( | 2192 parent_resource_provider->DeclareUsedResourcesFromChild( |
2098 child_id, resource_ids_to_receive); | 2193 child_id, resource_ids_to_receive); |
2099 Mock::VerifyAndClearExpectations(parent_context); | 2194 Mock::VerifyAndClearExpectations(parent_context); |
2100 } | 2195 } |
2101 ResourceProvider::ResourceIdMap resource_map = | 2196 ResourceProvider::ResourceIdMap resource_map = |
2102 parent_resource_provider->GetChildToParentMap(child_id); | 2197 parent_resource_provider->GetChildToParentMap(child_id); |
2103 ResourceId mapped_id = resource_map[id]; | 2198 ResourceId mapped_id = resource_map[id]; |
2104 EXPECT_NE(0u, mapped_id); | 2199 EXPECT_NE(0u, mapped_id); |
2105 | 2200 |
(...skipping 16 matching lines...) Expand all Loading... |
2122 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, child_filter)); | 2217 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, child_filter)); |
2123 EXPECT_CALL( | 2218 EXPECT_CALL( |
2124 *parent_context, | 2219 *parent_context, |
2125 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, child_filter)); | 2220 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, child_filter)); |
2126 | 2221 |
2127 { | 2222 { |
2128 EXPECT_EQ(0u, returned_to_child.size()); | 2223 EXPECT_EQ(0u, returned_to_child.size()); |
2129 | 2224 |
2130 // Transfer resources back from the parent to the child. Set no resources | 2225 // Transfer resources back from the parent to the child. Set no resources |
2131 // as being in use. | 2226 // as being in use. |
2132 ResourceProvider::ResourceIdSet no_resources; | 2227 ResourceIdSet no_resources; |
2133 parent_resource_provider->DeclareUsedResourcesFromChild(child_id, | 2228 parent_resource_provider->DeclareUsedResourcesFromChild(child_id, |
2134 no_resources); | 2229 no_resources); |
2135 Mock::VerifyAndClearExpectations(parent_context); | 2230 Mock::VerifyAndClearExpectations(parent_context); |
2136 | 2231 |
2137 ASSERT_EQ(1u, returned_to_child.size()); | 2232 ASSERT_EQ(1u, returned_to_child.size()); |
2138 child_resource_provider->ReceiveReturnsFromParent(returned_to_child); | 2233 child_resource_provider->ReceiveReturnsFromParent(returned_to_child); |
2139 } | 2234 } |
2140 | 2235 |
2141 // The child remembers the texture filter is set to |child_filter|. | 2236 // The child remembers the texture filter is set to |child_filter|. |
2142 EXPECT_CALL(*child_context, bindTexture(GL_TEXTURE_2D, child_texture_id)); | 2237 EXPECT_CALL(*child_context, bindTexture(GL_TEXTURE_2D, child_texture_id)); |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2311 { | 2406 { |
2312 // Transfer the resource to the parent. | 2407 // Transfer the resource to the parent. |
2313 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 2408 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
2314 resource_ids_to_transfer.push_back(resource); | 2409 resource_ids_to_transfer.push_back(resource); |
2315 TransferableResourceArray list; | 2410 TransferableResourceArray list; |
2316 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 2411 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
2317 &list); | 2412 &list); |
2318 EXPECT_EQ(1u, list.size()); | 2413 EXPECT_EQ(1u, list.size()); |
2319 | 2414 |
2320 resource_provider_->ReceiveFromChild(child_id, list); | 2415 resource_provider_->ReceiveFromChild(child_id, list); |
2321 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 2416 ResourceIdSet resource_ids_to_receive; |
2322 resource_ids_to_receive.insert(resource); | 2417 resource_ids_to_receive.insert(resource); |
2323 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 2418 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
2324 resource_ids_to_receive); | 2419 resource_ids_to_receive); |
2325 } | 2420 } |
2326 | 2421 |
2327 // Lose the output surface in the parent. | 2422 // Lose the output surface in the parent. |
2328 resource_provider_->DidLoseContextProvider(); | 2423 resource_provider_->DidLoseContextProvider(); |
2329 | 2424 |
2330 { | 2425 { |
2331 EXPECT_EQ(0u, returned_to_child.size()); | 2426 EXPECT_EQ(0u, returned_to_child.size()); |
2332 | 2427 |
2333 // Transfer resources back from the parent to the child. Set no resources as | 2428 // Transfer resources back from the parent to the child. Set no resources as |
2334 // being in use. | 2429 // being in use. |
2335 ResourceProvider::ResourceIdSet no_resources; | 2430 ResourceIdSet no_resources; |
2336 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 2431 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
2337 | 2432 |
2338 // Expect a GL resource to be lost. | 2433 // Expect a GL resource to be lost. |
2339 ASSERT_EQ(1u, returned_to_child.size()); | 2434 ASSERT_EQ(1u, returned_to_child.size()); |
2340 EXPECT_EQ(should_lose_resource, returned_to_child[0].lost); | 2435 EXPECT_EQ(should_lose_resource, returned_to_child[0].lost); |
2341 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); | 2436 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); |
2342 returned_to_child.clear(); | 2437 returned_to_child.clear(); |
2343 } | 2438 } |
2344 | 2439 |
2345 // A GL resource should be lost. | 2440 // A GL resource should be lost. |
(...skipping 18 matching lines...) Expand all Loading... |
2364 { | 2459 { |
2365 // Transfer the resource to the parent. | 2460 // Transfer the resource to the parent. |
2366 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 2461 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
2367 resource_ids_to_transfer.push_back(resource); | 2462 resource_ids_to_transfer.push_back(resource); |
2368 TransferableResourceArray list; | 2463 TransferableResourceArray list; |
2369 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 2464 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
2370 &list); | 2465 &list); |
2371 EXPECT_EQ(1u, list.size()); | 2466 EXPECT_EQ(1u, list.size()); |
2372 | 2467 |
2373 resource_provider_->ReceiveFromChild(child_id, list); | 2468 resource_provider_->ReceiveFromChild(child_id, list); |
2374 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 2469 ResourceIdSet resource_ids_to_receive; |
2375 resource_ids_to_receive.insert(resource); | 2470 resource_ids_to_receive.insert(resource); |
2376 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 2471 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
2377 resource_ids_to_receive); | 2472 resource_ids_to_receive); |
2378 } | 2473 } |
2379 | 2474 |
2380 { | 2475 { |
2381 ResourceProvider::ResourceIdMap resource_map = | 2476 ResourceProvider::ResourceIdMap resource_map = |
2382 resource_provider_->GetChildToParentMap(child_id); | 2477 resource_provider_->GetChildToParentMap(child_id); |
2383 ResourceId parent_resource = resource_map[resource]; | 2478 ResourceId parent_resource = resource_map[resource]; |
2384 EXPECT_NE(0u, parent_resource); | 2479 EXPECT_NE(0u, parent_resource); |
(...skipping 19 matching lines...) Expand all Loading... |
2404 | 2499 |
2405 // Lost resources stay in use in the parent forever. | 2500 // Lost resources stay in use in the parent forever. |
2406 EXPECT_TRUE(resource_provider_->InUseByConsumer(parent_resource)); | 2501 EXPECT_TRUE(resource_provider_->InUseByConsumer(parent_resource)); |
2407 } | 2502 } |
2408 | 2503 |
2409 { | 2504 { |
2410 EXPECT_EQ(0u, returned_to_child.size()); | 2505 EXPECT_EQ(0u, returned_to_child.size()); |
2411 | 2506 |
2412 // Transfer resources back from the parent to the child. Set no resources as | 2507 // Transfer resources back from the parent to the child. Set no resources as |
2413 // being in use. | 2508 // being in use. |
2414 ResourceProvider::ResourceIdSet no_resources; | 2509 ResourceIdSet no_resources; |
2415 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 2510 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
2416 | 2511 |
2417 // Expect the resource to be lost. | 2512 // Expect the resource to be lost. |
2418 ASSERT_EQ(1u, returned_to_child.size()); | 2513 ASSERT_EQ(1u, returned_to_child.size()); |
2419 EXPECT_TRUE(returned_to_child[0].lost); | 2514 EXPECT_TRUE(returned_to_child[0].lost); |
2420 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); | 2515 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); |
2421 returned_to_child.clear(); | 2516 returned_to_child.clear(); |
2422 } | 2517 } |
2423 | 2518 |
2424 // The resource should be lost. | 2519 // The resource should be lost. |
(...skipping 17 matching lines...) Expand all Loading... |
2442 { | 2537 { |
2443 // Transfer the resource to the parent. | 2538 // Transfer the resource to the parent. |
2444 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 2539 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
2445 resource_ids_to_transfer.push_back(resource); | 2540 resource_ids_to_transfer.push_back(resource); |
2446 TransferableResourceArray list; | 2541 TransferableResourceArray list; |
2447 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 2542 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
2448 &list); | 2543 &list); |
2449 EXPECT_EQ(1u, list.size()); | 2544 EXPECT_EQ(1u, list.size()); |
2450 | 2545 |
2451 resource_provider_->ReceiveFromChild(child_id, list); | 2546 resource_provider_->ReceiveFromChild(child_id, list); |
2452 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 2547 ResourceIdSet resource_ids_to_receive; |
2453 resource_ids_to_receive.insert(resource); | 2548 resource_ids_to_receive.insert(resource); |
2454 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 2549 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
2455 resource_ids_to_receive); | 2550 resource_ids_to_receive); |
2456 } | 2551 } |
2457 | 2552 |
2458 // Lose the output surface in the parent. | 2553 // Lose the output surface in the parent. |
2459 resource_provider_->DidLoseContextProvider(); | 2554 resource_provider_->DidLoseContextProvider(); |
2460 | 2555 |
2461 { | 2556 { |
2462 EXPECT_EQ(0u, returned_to_child.size()); | 2557 EXPECT_EQ(0u, returned_to_child.size()); |
2463 | 2558 |
2464 // Transfer resources back from the parent to the child. Set no resources as | 2559 // Transfer resources back from the parent to the child. Set no resources as |
2465 // being in use. | 2560 // being in use. |
2466 ResourceProvider::ResourceIdSet no_resources; | 2561 ResourceIdSet no_resources; |
2467 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 2562 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
2468 | 2563 |
2469 ASSERT_EQ(1u, returned_to_child.size()); | 2564 ASSERT_EQ(1u, returned_to_child.size()); |
2470 // Losing an output surface only loses hardware resources. | 2565 // Losing an output surface only loses hardware resources. |
2471 EXPECT_EQ(returned_to_child[0].lost, | 2566 EXPECT_EQ(returned_to_child[0].lost, |
2472 GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE); | 2567 GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE); |
2473 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); | 2568 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); |
2474 returned_to_child.clear(); | 2569 returned_to_child.clear(); |
2475 } | 2570 } |
2476 | 2571 |
(...skipping 18 matching lines...) Expand all Loading... |
2495 { | 2590 { |
2496 // Transfer the resource to the parent. | 2591 // Transfer the resource to the parent. |
2497 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 2592 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
2498 resource_ids_to_transfer.push_back(resource); | 2593 resource_ids_to_transfer.push_back(resource); |
2499 TransferableResourceArray list; | 2594 TransferableResourceArray list; |
2500 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 2595 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
2501 &list); | 2596 &list); |
2502 EXPECT_EQ(1u, list.size()); | 2597 EXPECT_EQ(1u, list.size()); |
2503 | 2598 |
2504 resource_provider_->ReceiveFromChild(child_id, list); | 2599 resource_provider_->ReceiveFromChild(child_id, list); |
2505 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 2600 ResourceIdSet resource_ids_to_receive; |
2506 resource_ids_to_receive.insert(resource); | 2601 resource_ids_to_receive.insert(resource); |
2507 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 2602 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
2508 resource_ids_to_receive); | 2603 resource_ids_to_receive); |
2509 } | 2604 } |
2510 | 2605 |
2511 { | 2606 { |
2512 ResourceProvider::ResourceIdMap resource_map = | 2607 ResourceProvider::ResourceIdMap resource_map = |
2513 resource_provider_->GetChildToParentMap(child_id); | 2608 resource_provider_->GetChildToParentMap(child_id); |
2514 ResourceId parent_resource = resource_map[resource]; | 2609 ResourceId parent_resource = resource_map[resource]; |
2515 EXPECT_NE(0u, parent_resource); | 2610 EXPECT_NE(0u, parent_resource); |
(...skipping 13 matching lines...) Expand all Loading... |
2529 EXPECT_EQ(parent_resource, returned[0].id); | 2624 EXPECT_EQ(parent_resource, returned[0].id); |
2530 returned[0].lost = true; | 2625 returned[0].lost = true; |
2531 resource_provider_->ReceiveReturnsFromParent(returned); | 2626 resource_provider_->ReceiveReturnsFromParent(returned); |
2532 } | 2627 } |
2533 | 2628 |
2534 { | 2629 { |
2535 EXPECT_EQ(0u, returned_to_child.size()); | 2630 EXPECT_EQ(0u, returned_to_child.size()); |
2536 | 2631 |
2537 // Transfer resources back from the parent to the child. Set no resources as | 2632 // Transfer resources back from the parent to the child. Set no resources as |
2538 // being in use. | 2633 // being in use. |
2539 ResourceProvider::ResourceIdSet no_resources; | 2634 ResourceIdSet no_resources; |
2540 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 2635 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
2541 | 2636 |
2542 // Expect the resource to be lost. | 2637 // Expect the resource to be lost. |
2543 ASSERT_EQ(1u, returned_to_child.size()); | 2638 ASSERT_EQ(1u, returned_to_child.size()); |
2544 EXPECT_TRUE(returned_to_child[0].lost); | 2639 EXPECT_TRUE(returned_to_child[0].lost); |
2545 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); | 2640 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); |
2546 returned_to_child.clear(); | 2641 returned_to_child.clear(); |
2547 } | 2642 } |
2548 | 2643 |
2549 // Delete the resource in the child. Expect the resource to be lost. | 2644 // Delete the resource in the child. Expect the resource to be lost. |
(...skipping 1134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3684 resource_provider->AllocateForTesting(id); | 3779 resource_provider->AllocateForTesting(id); |
3685 Mock::VerifyAndClearExpectations(context); | 3780 Mock::VerifyAndClearExpectations(context); |
3686 | 3781 |
3687 DCHECK_EQ(10u, context->PeekTextureId()); | 3782 DCHECK_EQ(10u, context->PeekTextureId()); |
3688 resource_provider->DeleteResource(id); | 3783 resource_provider->DeleteResource(id); |
3689 } | 3784 } |
3690 } | 3785 } |
3691 | 3786 |
3692 } // namespace | 3787 } // namespace |
3693 } // namespace cc | 3788 } // namespace cc |
OLD | NEW |