From 398337b3a5d66a7db5d36a3b5182e4407e2292f7 Mon Sep 17 00:00:00 2001 From: "reed@google.com" Date: Wed, 11 Dec 2013 21:22:39 +0000 Subject: Revert "remvoe duplicate impl for SkImageInfo flattening" Reason: breaks chrome_mac_tests which still have non-imageinfo constructors This reverts commit a06b8cf60b39bda93e9ef1a73579007b2b930d29. BUG= Review URL: https://codereview.chromium.org/103033005 git-svn-id: http://skia.googlecode.com/svn/trunk@12631 2bbb7eff-a529-9590-31e7-b0007b416f81 --- tests/PictureTest.cpp | 35 ++++++++++++++++++++++++++++++++--- tests/PixelRefTest.cpp | 24 +++++++++++------------- tests/SerializationTest.cpp | 19 +++---------------- 3 files changed, 46 insertions(+), 32 deletions(-) (limited to 'tests') diff --git a/tests/PictureTest.cpp b/tests/PictureTest.cpp index 3c53dd3838..9ef4bb06bd 100644 --- a/tests/PictureTest.cpp +++ b/tests/PictureTest.cpp @@ -9,7 +9,6 @@ #include "SkCanvas.h" #include "SkColorPriv.h" #include "SkData.h" -#include "SkDecodingImageGenerator.h" #include "SkError.h" #include "SkPaint.h" #include "SkPicture.h" @@ -336,6 +335,32 @@ static void test_bad_bitmap() { } #endif +#include "SkData.h" +#include "SkImageRef_GlobalPool.h" +// Class to test SkPixelRef::onRefEncodedData, since there are currently no implementations in skia. +class SkDataImageRef : public SkImageRef_GlobalPool { + +public: + SkDataImageRef(SkMemoryStream* stream) + : SkImageRef_GlobalPool(stream, SkBitmap::kNo_Config) { + SkASSERT(stream != NULL); + fData = stream->copyToData(); + this->setImmutable(); + } + + ~SkDataImageRef() { + fData->unref(); + } + + virtual SkData* onRefEncodedData() SK_OVERRIDE { + fData->ref(); + return fData; + } + +private: + SkData* fData; +}; + #include "SkImageEncoder.h" static SkData* encode_bitmap_to_data(size_t* offset, const SkBitmap& bm) { @@ -377,10 +402,14 @@ static void test_bitmap_with_encoded_data(skiatest::Reporter* reporter) { return; } SkAutoDataUnref data(wStream.copyToData()); + SkMemoryStream memStream; + memStream.setData(data); + // Use the encoded bitmap as the data for an image ref. SkBitmap bm; - bool installSuccess = SkDecodingImageGenerator::Install(data, &bm); - REPORTER_ASSERT(reporter, installSuccess); + SkAutoTUnref imageRef(SkNEW_ARGS(SkDataImageRef, (&memStream))); + imageRef->getInfo(&bm); + bm.setPixelRef(imageRef); // Write both bitmaps to pictures, and ensure that the resulting data streams are the same. // Flattening original will follow the old path of performing an encode, while flattening bm diff --git a/tests/PixelRefTest.cpp b/tests/PixelRefTest.cpp index e0ffd7a601..470221c0fe 100644 --- a/tests/PixelRefTest.cpp +++ b/tests/PixelRefTest.cpp @@ -51,37 +51,35 @@ private: } // namespace DEF_TEST(PixelRef_GenIDChange, r) { - SkImageInfo info = { 10, 10, kPMColor_SkColorType, kPremul_SkAlphaType }; - - SkAutoTUnref pixelRef(SkMallocPixelRef::NewAllocate(info, 0, NULL)); + SkMallocPixelRef pixelRef(NULL, 0, NULL); // We don't really care about the pixels here. // Register a listener. int count = 0; - pixelRef->addGenIDChangeListener(SkNEW_ARGS(TestListener, (&count))); + pixelRef.addGenIDChangeListener(SkNEW_ARGS(TestListener, (&count))); REPORTER_ASSERT(r, 0 == count); // No one has looked at our pixelRef's generation ID, so invalidating it doesn't make sense. // (An SkPixelRef tree falls in the forest but there's nobody around to hear it. Do we care?) - pixelRef->notifyPixelsChanged(); + pixelRef.notifyPixelsChanged(); REPORTER_ASSERT(r, 0 == count); // Force the generation ID to be calculated. - REPORTER_ASSERT(r, 0 != pixelRef->getGenerationID()); + REPORTER_ASSERT(r, 0 != pixelRef.getGenerationID()); // Our listener was dropped in the first call to notifyPixelsChanged(). This is a no-op. - pixelRef->notifyPixelsChanged(); + pixelRef.notifyPixelsChanged(); REPORTER_ASSERT(r, 0 == count); // Force the generation ID to be recalculated, then add a listener. - REPORTER_ASSERT(r, 0 != pixelRef->getGenerationID()); - pixelRef->addGenIDChangeListener(SkNEW_ARGS(TestListener, (&count))); - pixelRef->notifyPixelsChanged(); + REPORTER_ASSERT(r, 0 != pixelRef.getGenerationID()); + pixelRef.addGenIDChangeListener(SkNEW_ARGS(TestListener, (&count))); + pixelRef.notifyPixelsChanged(); REPORTER_ASSERT(r, 1 == count); // Quick check that NULL is safe. - REPORTER_ASSERT(r, 0 != pixelRef->getGenerationID()); - pixelRef->addGenIDChangeListener(NULL); - pixelRef->notifyPixelsChanged(); + REPORTER_ASSERT(r, 0 != pixelRef.getGenerationID()); + pixelRef.addGenIDChangeListener(NULL); + pixelRef.notifyPixelsChanged(); test_info(r); } diff --git a/tests/SerializationTest.cpp b/tests/SerializationTest.cpp index f1d0f900fd..7ae06d737e 100644 --- a/tests/SerializationTest.cpp +++ b/tests/SerializationTest.cpp @@ -148,7 +148,6 @@ static T* TestFlattenableSerialization(T* testObj, bool shouldSucceed, REPORTER_ASSERT(reporter, SkAlign4(bytesWritten) == bytesWritten); unsigned char dataWritten[1024]; - SkASSERT(bytesWritten <= sizeof(dataWritten)); writer.writeToMemory(dataWritten); // Make sure this fails when it should (test with smaller size, but still multiple of 4) @@ -308,22 +307,10 @@ static void Tests(skiatest::Reporter* reporter) { TestBitmapSerialization(validBitmap, invalidBitmap, true, reporter); // Create a bitmap with a pixel ref too small - SkImageInfo info; - info.fWidth = 256; - info.fHeight = 256; - info.fColorType = kPMColor_SkColorType; - info.fAlphaType = kPremul_SkAlphaType; - SkBitmap invalidBitmap2; - invalidBitmap2.setConfig(info); - - // Hack to force invalid, by making the pixelref smaller than its - // owning bitmap. - info.fWidth = 32; - info.fHeight = 1; - - invalidBitmap2.setPixelRef(SkMallocPixelRef::NewAllocate( - info, invalidBitmap2.rowBytes(), NULL))->unref(); + invalidBitmap2.setConfig(SkBitmap::kARGB_8888_Config, 256, 256); + invalidBitmap2.setPixelRef(SkNEW_ARGS(SkMallocPixelRef, + (NULL, 256, NULL)))->unref(); // The deserialization should detect the pixel ref being too small and fail TestBitmapSerialization(validBitmap, invalidBitmap2, false, reporter); -- cgit v1.2.3