| Index: tests/CodecTest.cpp
|
| diff --git a/tests/CodecTest.cpp b/tests/CodecTest.cpp
|
| index 12d6ac8d3d2997a164da8219a4bd39f7923e349b..b8b957fe55cf7f6dca6640ac334ca2870a3c0b89 100644
|
| --- a/tests/CodecTest.cpp
|
| +++ b/tests/CodecTest.cpp
|
| @@ -1012,3 +1012,32 @@ DEF_TEST(Codec_wbmp_max_size, r) {
|
|
|
| REPORTER_ASSERT(r, !codec);
|
| }
|
| +
|
| +DEF_TEST(Codec_jpeg_rewind, r) {
|
| + const char* path = "mandrill_512_q075.jpg";
|
| + SkAutoTDelete<SkStream> stream(resource(path));
|
| + if (!stream) {
|
| + SkDebugf("Missing resource '%s'\n", path);
|
| + return;
|
| + }
|
| + SkAutoTDelete<SkAndroidCodec> codec(SkAndroidCodec::NewFromStream(stream.release()));
|
| + if (!codec) {
|
| + ERRORF(r, "Unable to create codec '%s'.", path);
|
| + return;
|
| + }
|
| +
|
| + const int width = codec->getInfo().width();
|
| + const int height = codec->getInfo().height();
|
| + size_t rowBytes = sizeof(SkPMColor) * width;
|
| + SkAutoMalloc pixelStorage(height * rowBytes);
|
| +
|
| + // Perform a sampled decode.
|
| + SkAndroidCodec::AndroidOptions opts;
|
| + opts.fSampleSize = 12;
|
| + codec->getAndroidPixels(codec->getInfo().makeWH(width / 12, height / 12), pixelStorage.get(),
|
| + rowBytes, &opts);
|
| +
|
| + // Rewind the codec and perform a full image decode.
|
| + SkCodec::Result result = codec->getPixels(codec->getInfo(), pixelStorage.get(), rowBytes);
|
| + REPORTER_ASSERT(r, SkCodec::kSuccess == result);
|
| +}
|
|
|