Index: tests/CachedDecodingPixelRefTest.cpp |
diff --git a/tests/CachedDecodingPixelRefTest.cpp b/tests/CachedDecodingPixelRefTest.cpp |
index c14fb0052c54091a9a92418f3ec935ab5649a332..b58880b10dcb1af70dc299301ad68f924d522a33 100644 |
--- a/tests/CachedDecodingPixelRefTest.cpp |
+++ b/tests/CachedDecodingPixelRefTest.cpp |
@@ -6,6 +6,7 @@ |
*/ |
#include "SkBitmap.h" |
+#include "SkCachingPixelRef.h" |
#include "SkCanvas.h" |
#include "SkData.h" |
#include "SkDiscardableMemoryPool.h" |
@@ -140,6 +141,9 @@ |
} |
//////////////////////////////////////////////////////////////////////////////// |
+static bool install_skCachingPixelRef(SkData* encoded, SkBitmap* dst) { |
+ return SkCachingPixelRef::Install(SkImageGenerator::NewFromEncoded(encoded), dst); |
+} |
static bool install_skDiscardablePixelRef(SkData* encoded, SkBitmap* dst) { |
// Use system-default discardable memory. |
return SkInstallDiscardablePixelRef(encoded, dst); |
@@ -147,10 +151,12 @@ |
//////////////////////////////////////////////////////////////////////////////// |
/** |
- * This checks to see that SkDiscardablePixelRef works as advertised with a |
+ * This checks to see that a SkCachingPixelRef and a |
+ * SkDiscardablePixelRef works as advertised with a |
* SkDecodingImageGenerator. |
*/ |
DEF_TEST(DecodingImageGenerator, reporter) { |
+ test_three_encodings(reporter, install_skCachingPixelRef); |
test_three_encodings(reporter, install_skDiscardablePixelRef); |
} |
@@ -222,14 +228,27 @@ |
REPORTER_ASSERT(reporter, 0 == errors); |
} |
+enum PixelRefType { |
+ kSkCaching_PixelRefType, |
+ kSkDiscardable_PixelRefType, |
+ kLast_PixelRefType = kSkDiscardable_PixelRefType |
+}; |
+ |
static void check_pixelref(TestImageGenerator::TestType type, |
skiatest::Reporter* reporter, |
+ PixelRefType pixelRefType, |
SkDiscardableMemory::Factory* factory) { |
+ SkASSERT((pixelRefType >= 0) && (pixelRefType <= kLast_PixelRefType)); |
SkAutoTDelete<SkImageGenerator> gen(new TestImageGenerator(type, reporter)); |
REPORTER_ASSERT(reporter, gen.get() != nullptr); |
SkBitmap lazy; |
- bool success = SkInstallDiscardablePixelRef(gen.detach(), nullptr, &lazy, factory); |
- |
+ bool success; |
+ if (kSkCaching_PixelRefType == pixelRefType) { |
+ // Ignore factory; use global cache. |
+ success = SkCachingPixelRef::Install(gen.detach(), &lazy); |
+ } else { |
+ success = SkInstallDiscardablePixelRef(gen.detach(), nullptr, &lazy, factory); |
+ } |
REPORTER_ASSERT(reporter, success); |
if (TestImageGenerator::kSucceedGetPixels_TestType == type) { |
check_test_image_generator_bitmap(reporter, lazy); |
@@ -258,23 +277,34 @@ |
DEF_TEST(DiscardableAndCachingPixelRef, reporter) { |
test_newlockdelete(reporter); |
- check_pixelref(TestImageGenerator::kFailGetPixels_TestType, reporter, nullptr); |
- check_pixelref(TestImageGenerator::kSucceedGetPixels_TestType, reporter, nullptr); |
+ check_pixelref(TestImageGenerator::kFailGetPixels_TestType, |
+ reporter, kSkCaching_PixelRefType, nullptr); |
+ check_pixelref(TestImageGenerator::kSucceedGetPixels_TestType, |
+ reporter, kSkCaching_PixelRefType, nullptr); |
+ |
+ check_pixelref(TestImageGenerator::kFailGetPixels_TestType, |
+ reporter, kSkDiscardable_PixelRefType, nullptr); |
+ check_pixelref(TestImageGenerator::kSucceedGetPixels_TestType, |
+ reporter, kSkDiscardable_PixelRefType, nullptr); |
SkAutoTUnref<SkDiscardableMemoryPool> pool( |
SkDiscardableMemoryPool::Create(1, nullptr)); |
REPORTER_ASSERT(reporter, 0 == pool->getRAMUsed()); |
- check_pixelref(TestImageGenerator::kFailGetPixels_TestType, reporter, pool); |
+ check_pixelref(TestImageGenerator::kFailGetPixels_TestType, |
+ reporter, kSkDiscardable_PixelRefType, pool); |
REPORTER_ASSERT(reporter, 0 == pool->getRAMUsed()); |
- check_pixelref(TestImageGenerator::kSucceedGetPixels_TestType, reporter, pool); |
+ check_pixelref(TestImageGenerator::kSucceedGetPixels_TestType, |
+ reporter, kSkDiscardable_PixelRefType, pool); |
REPORTER_ASSERT(reporter, 0 == pool->getRAMUsed()); |
SkDiscardableMemoryPool* globalPool = SkGetGlobalDiscardableMemoryPool(); |
// Only acts differently from nullptr on a platform that has a |
// default discardable memory implementation that differs from the |
// global DM pool. |
- check_pixelref(TestImageGenerator::kFailGetPixels_TestType, reporter, globalPool); |
- check_pixelref(TestImageGenerator::kSucceedGetPixels_TestType, reporter, globalPool); |
+ check_pixelref(TestImageGenerator::kFailGetPixels_TestType, |
+ reporter, kSkDiscardable_PixelRefType, globalPool); |
+ check_pixelref(TestImageGenerator::kSucceedGetPixels_TestType, |
+ reporter, kSkDiscardable_PixelRefType, globalPool); |
} |
//////////////////////////////////////////////////////////////////////////////// |