Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / cc / resources / prioritized_resource_unittest.cc
index b58774d..14eb317 100644 (file)
@@ -8,9 +8,11 @@
 
 #include "cc/resources/prioritized_resource_manager.h"
 #include "cc/resources/resource.h"
+#include "cc/resources/resource_provider.h"
 #include "cc/test/fake_output_surface.h"
 #include "cc/test/fake_output_surface_client.h"
 #include "cc/test/fake_proxy.h"
+#include "cc/test/test_shared_bitmap_manager.h"
 #include "cc/test/tiled_layer_test_common.h"
 #include "cc/trees/single_thread_proxy.h"  // For DebugScopedSetImplThread
 #include "testing/gtest/include/gtest/gtest.h"
@@ -25,8 +27,10 @@ class PrioritizedResourceTest : public testing::Test {
         output_surface_(FakeOutputSurface::Create3d()) {
     DebugScopedSetImplThread impl_thread(&proxy_);
     CHECK(output_surface_->BindToClient(&output_surface_client_));
-    resource_provider_ =
-        ResourceProvider::Create(output_surface_.get(), NULL, 0, false, 1);
+    shared_bitmap_manager_.reset(new TestSharedBitmapManager());
+    resource_provider_ = ResourceProvider::Create(
+        output_surface_.get(), shared_bitmap_manager_.get(), 0, false, 1,
+        false);
   }
 
   virtual ~PrioritizedResourceTest() {
@@ -56,7 +60,7 @@ class PrioritizedResourceTest : public testing::Test {
         impl_thread_and_main_thread_blocked(&proxy_);
     bool success = texture->can_acquire_backing_texture();
     if (success)
-      texture->AcquireBackingTexture(ResourceProvider());
+      texture->AcquireBackingTexture(resource_provider());
     return success;
   }
 
@@ -73,15 +77,13 @@ class PrioritizedResourceTest : public testing::Test {
     resource_manager->PushTexturePrioritiesToBackings();
   }
 
-  cc::ResourceProvider* ResourceProvider() { return resource_provider_.get(); }
+  ResourceProvider* resource_provider() { return resource_provider_.get(); }
 
   void ResourceManagerAssertInvariants(
       PrioritizedResourceManager* resource_manager) {
-#ifndef NDEBUG
     DebugScopedSetImplThreadAndMainThreadBlocked
         impl_thread_and_main_thread_blocked(&proxy_);
     resource_manager->AssertInvariants();
-#endif
   }
 
   bool TextureBackingIsAbovePriorityCutoff(PrioritizedResource* texture) {
@@ -109,8 +111,9 @@ class PrioritizedResourceTest : public testing::Test {
   const gfx::Size texture_size_;
   const ResourceFormat texture_format_;
   FakeOutputSurfaceClient output_surface_client_;
-  scoped_ptr<cc::OutputSurface> output_surface_;
-  scoped_ptr<cc::ResourceProvider> resource_provider_;
+  scoped_ptr<OutputSurface> output_surface_;
+  scoped_ptr<SharedBitmapManager> shared_bitmap_manager_;
+  scoped_ptr<ResourceProvider> resource_provider_;
 };
 
 namespace {
@@ -158,7 +161,7 @@ TEST_F(PrioritizedResourceTest, RequestTextureExceedingMaxLimit) {
 
   DebugScopedSetImplThreadAndMainThreadBlocked
       impl_thread_and_main_thread_blocked(&proxy_);
-  resource_manager->ClearAllMemory(ResourceProvider());
+  resource_manager->ClearAllMemory(resource_provider());
 }
 
 TEST_F(PrioritizedResourceTest, ChangeMemoryLimits) {
@@ -182,7 +185,7 @@ TEST_F(PrioritizedResourceTest, ChangeMemoryLimits) {
   {
     DebugScopedSetImplThreadAndMainThreadBlocked
         impl_thread_and_main_thread_blocked(&proxy_);
-    resource_manager->ReduceMemory(ResourceProvider());
+    resource_manager->ReduceMemory(resource_provider());
   }
 
   EXPECT_EQ(TexturesMemorySize(8), resource_manager->MemoryAboveCutoffBytes());
@@ -197,7 +200,7 @@ TEST_F(PrioritizedResourceTest, ChangeMemoryLimits) {
   {
     DebugScopedSetImplThreadAndMainThreadBlocked
         impl_thread_and_main_thread_blocked(&proxy_);
-    resource_manager->ReduceMemory(ResourceProvider());
+    resource_manager->ReduceMemory(resource_provider());
   }
 
   EXPECT_EQ(TexturesMemorySize(5), resource_manager->MemoryAboveCutoffBytes());
@@ -214,7 +217,7 @@ TEST_F(PrioritizedResourceTest, ChangeMemoryLimits) {
   {
     DebugScopedSetImplThreadAndMainThreadBlocked
         impl_thread_and_main_thread_blocked(&proxy_);
-    resource_manager->ReduceMemory(ResourceProvider());
+    resource_manager->ReduceMemory(resource_provider());
   }
 
   EXPECT_EQ(TexturesMemorySize(4), resource_manager->MemoryAboveCutoffBytes());
@@ -225,7 +228,7 @@ TEST_F(PrioritizedResourceTest, ChangeMemoryLimits) {
 
   DebugScopedSetImplThreadAndMainThreadBlocked
       impl_thread_and_main_thread_blocked(&proxy_);
-  resource_manager->ClearAllMemory(ResourceProvider());
+  resource_manager->ClearAllMemory(resource_provider());
 }
 
 TEST_F(PrioritizedResourceTest, ReduceWastedMemory) {
@@ -263,7 +266,7 @@ TEST_F(PrioritizedResourceTest, ReduceWastedMemory) {
   {
     DebugScopedSetImplThreadAndMainThreadBlocked
         impl_thread_and_main_thread_blocked(&proxy_);
-    resource_manager->ReduceMemory(ResourceProvider());
+    resource_manager->ReduceMemory(resource_provider());
   }
 
   // 20 textures have backings allocated.
@@ -275,8 +278,8 @@ TEST_F(PrioritizedResourceTest, ReduceWastedMemory) {
   {
     DebugScopedSetImplThreadAndMainThreadBlocked
         impl_thread_and_main_thread_blocked(&proxy_);
-    resource_manager->UpdateBackingsState(ResourceProvider());
-    resource_manager->ReduceWastedMemory(ResourceProvider());
+    resource_manager->UpdateBackingsState(resource_provider());
+    resource_manager->ReduceWastedMemory(resource_provider());
   }
   EXPECT_EQ(TexturesMemorySize(20), resource_manager->MemoryUseBytes());
 
@@ -288,14 +291,14 @@ TEST_F(PrioritizedResourceTest, ReduceWastedMemory) {
   {
     DebugScopedSetImplThreadAndMainThreadBlocked
         impl_thread_and_main_thread_blocked(&proxy_);
-    resource_manager->UpdateBackingsState(ResourceProvider());
-    resource_manager->ReduceWastedMemory(ResourceProvider());
+    resource_manager->UpdateBackingsState(resource_provider());
+    resource_manager->ReduceWastedMemory(resource_provider());
   }
   EXPECT_GT(TexturesMemorySize(20), resource_manager->MemoryUseBytes());
 
   DebugScopedSetImplThreadAndMainThreadBlocked
       impl_thread_and_main_thread_blocked(&proxy_);
-  resource_manager->ClearAllMemory(ResourceProvider());
+  resource_manager->ClearAllMemory(resource_provider());
 }
 
 TEST_F(PrioritizedResourceTest, InUseNotWastedMemory) {
@@ -333,7 +336,7 @@ TEST_F(PrioritizedResourceTest, InUseNotWastedMemory) {
   {
     DebugScopedSetImplThreadAndMainThreadBlocked
         impl_thread_and_main_thread_blocked(&proxy_);
-    resource_manager->ReduceMemory(ResourceProvider());
+    resource_manager->ReduceMemory(resource_provider());
   }
 
   // 20 textures have backings allocated.
@@ -355,8 +358,8 @@ TEST_F(PrioritizedResourceTest, InUseNotWastedMemory) {
   {
     DebugScopedSetImplThreadAndMainThreadBlocked
         impl_thread_and_main_thread_blocked(&proxy_);
-    resource_manager->UpdateBackingsState(ResourceProvider());
-    resource_manager->ReduceWastedMemory(ResourceProvider());
+    resource_manager->UpdateBackingsState(resource_provider());
+    resource_manager->ReduceWastedMemory(resource_provider());
   }
   EXPECT_EQ(TexturesMemorySize(20), resource_manager->MemoryUseBytes());
 
@@ -368,14 +371,14 @@ TEST_F(PrioritizedResourceTest, InUseNotWastedMemory) {
   {
     DebugScopedSetImplThreadAndMainThreadBlocked
         impl_thread_and_main_thread_blocked(&proxy_);
-    resource_manager->UpdateBackingsState(ResourceProvider());
-    resource_manager->ReduceWastedMemory(ResourceProvider());
+    resource_manager->UpdateBackingsState(resource_provider());
+    resource_manager->ReduceWastedMemory(resource_provider());
   }
   EXPECT_GT(TexturesMemorySize(20), resource_manager->MemoryUseBytes());
 
   DebugScopedSetImplThreadAndMainThreadBlocked
       impl_thread_and_main_thread_blocked(&proxy_);
-  resource_manager->ClearAllMemory(ResourceProvider());
+  resource_manager->ClearAllMemory(resource_provider());
 }
 
 TEST_F(PrioritizedResourceTest, ChangePriorityCutoff) {
@@ -402,7 +405,7 @@ TEST_F(PrioritizedResourceTest, ChangePriorityCutoff) {
   {
     DebugScopedSetImplThreadAndMainThreadBlocked
         impl_thread_and_main_thread_blocked(&proxy_);
-    resource_manager->ReduceMemory(ResourceProvider());
+    resource_manager->ReduceMemory(resource_provider());
   }
   EXPECT_EQ(TexturesMemorySize(6), resource_manager->MemoryAboveCutoffBytes());
   EXPECT_LE(resource_manager->MemoryUseBytes(),
@@ -416,7 +419,7 @@ TEST_F(PrioritizedResourceTest, ChangePriorityCutoff) {
   {
     DebugScopedSetImplThreadAndMainThreadBlocked
         impl_thread_and_main_thread_blocked(&proxy_);
-    resource_manager->ReduceMemory(ResourceProvider());
+    resource_manager->ReduceMemory(resource_provider());
   }
   EXPECT_EQ(TexturesMemorySize(4), resource_manager->MemoryAboveCutoffBytes());
 
@@ -426,10 +429,10 @@ TEST_F(PrioritizedResourceTest, ChangePriorityCutoff) {
     DebugScopedSetImplThreadAndMainThreadBlocked
         impl_thread_and_main_thread_blocked(&proxy_);
     resource_manager->ReduceMemoryOnImplThread(
-        TexturesMemorySize(8), 104, ResourceProvider());
+        TexturesMemorySize(8), 104, resource_provider());
     EXPECT_EQ(0u, EvictedBackingCount(resource_manager.get()));
     resource_manager->ReduceMemoryOnImplThread(
-        TexturesMemorySize(8), 103, ResourceProvider());
+        TexturesMemorySize(8), 103, resource_provider());
     EXPECT_EQ(1u, EvictedBackingCount(resource_manager.get()));
   }
   resource_manager->UnlinkAndClearEvictedBackings();
@@ -442,16 +445,16 @@ TEST_F(PrioritizedResourceTest, ChangePriorityCutoff) {
   {
     DebugScopedSetImplThreadAndMainThreadBlocked
         impl_thread_and_main_thread_blocked(&proxy_);
-    resource_manager->ReduceMemory(ResourceProvider());
+    resource_manager->ReduceMemory(resource_provider());
   }
   EXPECT_EQ(TexturesMemorySize(4), resource_manager->MemoryAboveCutoffBytes());
 
   DebugScopedSetImplThreadAndMainThreadBlocked
       impl_thread_and_main_thread_blocked(&proxy_);
-  resource_manager->ClearAllMemory(ResourceProvider());
+  resource_manager->ClearAllMemory(resource_provider());
 }
 
-TEST_F(PrioritizedResourceTest, NotEvictingTexturesInParent) {
+TEST_F(PrioritizedResourceTest, EvictingTexturesInParent) {
   const size_t kMaxTextures = 8;
   scoped_ptr<PrioritizedResourceManager> resource_manager =
       CreateManager(kMaxTextures);
@@ -482,7 +485,7 @@ TEST_F(PrioritizedResourceTest, NotEvictingTexturesInParent) {
   {
     DebugScopedSetImplThreadAndMainThreadBlocked
         impl_thread_and_main_thread_blocked(&proxy_);
-    resource_manager->ReduceMemory(ResourceProvider());
+    resource_manager->ReduceMemory(resource_provider());
   }
   EXPECT_EQ(TexturesMemorySize(8), resource_manager->MemoryAboveCutoffBytes());
 
@@ -494,7 +497,7 @@ TEST_F(PrioritizedResourceTest, NotEvictingTexturesInParent) {
     DebugScopedSetImplThreadAndMainThreadBlocked
         impl_thread_and_main_thread_blocked(&proxy_);
     resource_manager->ReduceMemoryOnImplThread(
-        TexturesMemorySize(4), 200, ResourceProvider());
+        TexturesMemorySize(4), 200, resource_provider());
 
     EXPECT_EQ(4u, EvictedBackingCount(resource_manager.get()));
 
@@ -535,7 +538,7 @@ TEST_F(PrioritizedResourceTest, NotEvictingTexturesInParent) {
   {
     DebugScopedSetImplThreadAndMainThreadBlocked
         impl_thread_and_main_thread_blocked(&proxy_);
-    resource_manager->ReduceMemory(ResourceProvider());
+    resource_manager->ReduceMemory(resource_provider());
   }
   EXPECT_EQ(TexturesMemorySize(8), resource_manager->MemoryAboveCutoffBytes());
 
@@ -546,6 +549,13 @@ TEST_F(PrioritizedResourceTest, NotEvictingTexturesInParent) {
     to_send.push_back(textures[i]->resource_id());
   resource_provider_->PrepareSendToParent(to_send, &transferable);
 
+  // Set the last two textures to be tied for prioity with the two
+  // before them. Being sent to the parent will break the tie.
+  textures[4]->set_request_priority(100 + 4);
+  textures[5]->set_request_priority(100 + 5);
+  textures[6]->set_request_priority(100 + 4);
+  textures[7]->set_request_priority(100 + 5);
+
   for (size_t i = 0; i < 8; ++i)
     texture_resource_ids[i] = textures[i]->resource_id();
 
@@ -558,7 +568,7 @@ TEST_F(PrioritizedResourceTest, NotEvictingTexturesInParent) {
   {
     DebugScopedSetImplThreadAndMainThreadBlocked
         impl_thread_and_main_thread_blocked(&proxy_);
-    resource_manager->UpdateBackingsState(ResourceProvider());
+    resource_manager->UpdateBackingsState(resource_provider());
   }
 
   // Evict four textures. It would be the last four again, except that 2 of them
@@ -567,24 +577,24 @@ TEST_F(PrioritizedResourceTest, NotEvictingTexturesInParent) {
     DebugScopedSetImplThreadAndMainThreadBlocked
         impl_thread_and_main_thread_blocked(&proxy_);
     resource_manager->ReduceMemoryOnImplThread(
-        TexturesMemorySize(4), 200, ResourceProvider());
+        TexturesMemorySize(4), 200, resource_provider());
 
     EXPECT_EQ(4u, EvictedBackingCount(resource_manager.get()));
     // The last 2 backings remain this time.
     std::vector<unsigned> remaining = BackingResources(resource_manager.get());
     EXPECT_TRUE(std::find(remaining.begin(),
                           remaining.end(),
-                          texture_resource_ids[6]) != remaining.end());
+                          texture_resource_ids[6]) == remaining.end());
     EXPECT_TRUE(std::find(remaining.begin(),
                           remaining.end(),
-                          texture_resource_ids[7]) != remaining.end());
+                          texture_resource_ids[7]) == remaining.end());
   }
   resource_manager->UnlinkAndClearEvictedBackings();
   EXPECT_EQ(TexturesMemorySize(4), resource_manager->MemoryUseBytes());
 
   DebugScopedSetImplThreadAndMainThreadBlocked
       impl_thread_and_main_thread_blocked(&proxy_);
-  resource_manager->ClearAllMemory(ResourceProvider());
+  resource_manager->ClearAllMemory(resource_provider());
 }
 
 TEST_F(PrioritizedResourceTest, ResourceManagerPartialUpdateTextures) {
@@ -647,7 +657,7 @@ TEST_F(PrioritizedResourceTest, ResourceManagerPartialUpdateTextures) {
 
   DebugScopedSetImplThreadAndMainThreadBlocked
       impl_thread_and_main_thread_blocked(&proxy_);
-  resource_manager->ClearAllMemory(ResourceProvider());
+  resource_manager->ClearAllMemory(resource_provider());
 }
 
 TEST_F(PrioritizedResourceTest, ResourceManagerPrioritiesAreEqual) {
@@ -692,7 +702,7 @@ TEST_F(PrioritizedResourceTest, ResourceManagerPrioritiesAreEqual) {
 
   DebugScopedSetImplThreadAndMainThreadBlocked
       impl_thread_and_main_thread_blocked(&proxy_);
-  resource_manager->ClearAllMemory(ResourceProvider());
+  resource_manager->ClearAllMemory(resource_provider());
 }
 
 TEST_F(PrioritizedResourceTest, ResourceManagerDestroyedFirst) {
@@ -712,7 +722,7 @@ TEST_F(PrioritizedResourceTest, ResourceManagerDestroyedFirst) {
   {
     DebugScopedSetImplThreadAndMainThreadBlocked
         impl_thread_and_main_thread_blocked(&proxy_);
-    resource_manager->ClearAllMemory(ResourceProvider());
+    resource_manager->ClearAllMemory(resource_provider());
   }
   resource_manager.reset();
 
@@ -742,7 +752,7 @@ TEST_F(PrioritizedResourceTest, TextureMovedToNewManager) {
   {
     DebugScopedSetImplThreadAndMainThreadBlocked
         impl_thread_and_main_thread_blocked(&proxy_);
-    resource_manager_one->ClearAllMemory(ResourceProvider());
+    resource_manager_one->ClearAllMemory(resource_provider());
   }
   resource_manager_one.reset();
 
@@ -759,7 +769,7 @@ TEST_F(PrioritizedResourceTest, TextureMovedToNewManager) {
 
   DebugScopedSetImplThreadAndMainThreadBlocked
       impl_thread_and_main_thread_blocked(&proxy_);
-  resource_manager_two->ClearAllMemory(ResourceProvider());
+  resource_manager_two->ClearAllMemory(resource_provider());
 }
 
 TEST_F(PrioritizedResourceTest,
@@ -816,7 +826,7 @@ TEST_F(PrioritizedResourceTest,
 
   DebugScopedSetImplThreadAndMainThreadBlocked
       impl_thread_and_main_thread_blocked(&proxy_);
-  resource_manager->ClearAllMemory(ResourceProvider());
+  resource_manager->ClearAllMemory(resource_provider());
 }
 
 TEST_F(PrioritizedResourceTest,
@@ -864,7 +874,7 @@ TEST_F(PrioritizedResourceTest,
 
   DebugScopedSetImplThreadAndMainThreadBlocked
       impl_thread_and_main_thread_blocked(&proxy_);
-  resource_manager->ClearAllMemory(ResourceProvider());
+  resource_manager->ClearAllMemory(resource_provider());
 }
 
 TEST_F(PrioritizedResourceTest,
@@ -916,7 +926,7 @@ TEST_F(PrioritizedResourceTest,
 
   DebugScopedSetImplThreadAndMainThreadBlocked
       impl_thread_and_main_thread_blocked(&proxy_);
-  resource_manager->ClearAllMemory(ResourceProvider());
+  resource_manager->ClearAllMemory(resource_provider());
 }
 
 TEST_F(PrioritizedResourceTest, RequestLateBackingsSorting) {
@@ -968,7 +978,7 @@ TEST_F(PrioritizedResourceTest, RequestLateBackingsSorting) {
 
   DebugScopedSetImplThreadAndMainThreadBlocked
       impl_thread_and_main_thread_blocked(&proxy_);
-  resource_manager->ClearAllMemory(ResourceProvider());
+  resource_manager->ClearAllMemory(resource_provider());
 }
 
 TEST_F(PrioritizedResourceTest, ClearUploadsToEvictedResources) {
@@ -1010,12 +1020,12 @@ TEST_F(PrioritizedResourceTest, ClearUploadsToEvictedResources) {
   resource_manager->ReduceMemoryOnImplThread(
       TexturesMemorySize(1),
       PriorityCalculator::AllowEverythingCutoff(),
-      ResourceProvider());
+      resource_provider());
   queue.ClearUploadsToEvictedResources();
   EXPECT_EQ(1u, queue.FullUploadSize());
 
   resource_manager->ReduceMemoryOnImplThread(
-      0, PriorityCalculator::AllowEverythingCutoff(), ResourceProvider());
+      0, PriorityCalculator::AllowEverythingCutoff(), resource_provider());
   queue.ClearUploadsToEvictedResources();
   EXPECT_EQ(0u, queue.FullUploadSize());
 }
@@ -1096,7 +1106,7 @@ TEST_F(PrioritizedResourceTest, UsageStatistics) {
 
   DebugScopedSetImplThreadAndMainThreadBlocked
       impl_thread_and_main_thread_blocked(&proxy_);
-  resource_manager->ClearAllMemory(ResourceProvider());
+  resource_manager->ClearAllMemory(resource_provider());
 }
 
 }  // namespace