Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(970)

Unified Diff: tests/CodexTest.cpp

Issue 1050893002: SkCodec::onGetScanlineDecoder must call rewind. (Closed) Base URL: https://skia.googlesource.com/skia.git@pngRewind
Patch Set: All codecs can now rewind. Remove code to support unrewindable codecs. Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/codec/SkCodec_libpng.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/CodexTest.cpp
diff --git a/tests/CodexTest.cpp b/tests/CodexTest.cpp
index f4ed0e8b02858bceb343fbe5092573c4643a9a83..6c4fe68e27dd6d6b60df109b9e933715e4e106c1 100644
--- a/tests/CodexTest.cpp
+++ b/tests/CodexTest.cpp
@@ -30,25 +30,24 @@ static void md5(const SkBitmap& bm, SkMD5::Digest* digest) {
static void check(skiatest::Reporter* r,
const char path[],
SkISize size,
- bool canRewind) {
+ bool supportsScanlineDecoding) {
SkAutoTDelete<SkStream> stream(resource(path));
if (!stream) {
SkDebugf("Missing resource '%s'\n", path);
return;
}
- SkAutoTDelete<SkImageGenerator> gen(
- SkCodec::NewFromStream(stream.detach()));
- if (!gen) {
+ SkAutoTDelete<SkCodec> codec(SkCodec::NewFromStream(stream.detach()));
+ if (!codec) {
ERRORF(r, "Unable to decode '%s'", path);
return;
}
- SkImageInfo info = gen->getInfo();
+ SkImageInfo info = codec->getInfo();
REPORTER_ASSERT(r, info.dimensions() == size);
SkBitmap bm;
bm.allocPixels(info);
SkAutoLockPixels autoLockPixels(bm);
SkImageGenerator::Result result =
- gen->getPixels(info, bm.getPixels(), bm.rowBytes(), NULL, NULL, NULL);
+ codec->getPixels(info, bm.getPixels(), bm.rowBytes(), NULL, NULL, NULL);
REPORTER_ASSERT(r, result == SkImageGenerator::kSuccess);
SkMD5::Digest digest1, digest2;
@@ -57,27 +56,39 @@ static void check(skiatest::Reporter* r,
bm.eraseColor(SK_ColorYELLOW);
result =
- gen->getPixels(info, bm.getPixels(), bm.rowBytes(), NULL, NULL, NULL);
+ codec->getPixels(info, bm.getPixels(), bm.rowBytes(), NULL, NULL, NULL);
- // All ImageGenerators should support re-decoding the pixels.
- // It is a known bug that some can not.
- if (canRewind) {
- REPORTER_ASSERT(r, result == SkImageGenerator::kSuccess);
- // verify that re-decoding gives the same result.
- md5(bm, &digest2);
- REPORTER_ASSERT(r, digest1 == digest2);
+ REPORTER_ASSERT(r, result == SkImageGenerator::kSuccess);
+ // verify that re-decoding gives the same result.
+ md5(bm, &digest2);
+ REPORTER_ASSERT(r, digest1 == digest2);
+
+ SkScanlineDecoder* scanlineDecoder = codec->getScanlineDecoder(info);
+ if (supportsScanlineDecoding) {
+ bm.eraseColor(SK_ColorYELLOW);
+ REPORTER_ASSERT(r, scanlineDecoder);
+ for (int y = 0; y < info.height(); y++) {
+ result = scanlineDecoder->getScanlines(bm.getAddr(0, y), 1, 0);
+ REPORTER_ASSERT(r, result == SkImageGenerator::kSuccess);
+ }
+ // verify that scanline decoding gives the same result.
+ SkMD5::Digest digest3;
+ md5(bm, &digest3);
+ REPORTER_ASSERT(r, digest3 == digest1);
+ } else {
+ REPORTER_ASSERT(r, !scanlineDecoder);
}
}
DEF_TEST(Codec, r) {
// WBMP
- check(r, "mandrill.wbmp", SkISize::Make(512, 512), true);
+ check(r, "mandrill.wbmp", SkISize::Make(512, 512), false);
// BMP
- check(r, "randPixels.bmp", SkISize::Make(8, 8), true);
+ check(r, "randPixels.bmp", SkISize::Make(8, 8), false);
// ICO
- check(r, "color_wheel.ico", SkISize::Make(128, 128), true);
+ check(r, "color_wheel.ico", SkISize::Make(128, 128), false);
// PNG
check(r, "arrow.png", SkISize::Make(187, 312), true);
« no previous file with comments | « src/codec/SkCodec_libpng.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698