| Index: tests/CodexTest.cpp
|
| diff --git a/tests/CodexTest.cpp b/tests/CodexTest.cpp
|
| index 0bd58935daedbd75b31c7de874935f04a53fa180..0286f0c1d3f4b19b34a4a195984d0d11dd41ffee 100644
|
| --- a/tests/CodexTest.cpp
|
| +++ b/tests/CodexTest.cpp
|
| @@ -333,33 +333,44 @@ static void check(skiatest::Reporter* r,
|
|
|
| DEF_TEST(Codec, r) {
|
| // WBMP
|
| +#if defined(SK_CODEC_DECODES_WBMP)
|
| check(r, "mandrill.wbmp", SkISize::Make(512, 512), true, false);
|
| +#endif
|
|
|
| // WEBP
|
| +#if defined(SK_CODEC_DECODES_WEBP)
|
| check(r, "baby_tux.webp", SkISize::Make(386, 395), false, true);
|
| check(r, "color_wheel.webp", SkISize::Make(128, 128), false, true);
|
| check(r, "yellow_rose.webp", SkISize::Make(400, 301), false, true);
|
| +#endif
|
|
|
| // BMP
|
| +#if defined(SK_CODEC_DECODES_BMP)
|
| check(r, "randPixels.bmp", SkISize::Make(8, 8), true, false);
|
| check(r, "rle.bmp", SkISize::Make(320, 240), true, false);
|
| +#endif
|
|
|
| // ICO
|
| +#if defined(SK_CODEC_DECODES_ICO)
|
| // FIXME: We are not ready to test incomplete ICOs
|
| // These two tests examine interestingly different behavior:
|
| // Decodes an embedded BMP image
|
| check(r, "color_wheel.ico", SkISize::Make(128, 128), true, false, false);
|
| // Decodes an embedded PNG image
|
| check(r, "google_chrome.ico", SkISize::Make(256, 256), true, false, false);
|
| +#endif
|
|
|
| // GIF
|
| +#if defined(SK_CODEC_DECODES_GIF)
|
| // FIXME: We are not ready to test incomplete GIFs
|
| check(r, "box.gif", SkISize::Make(200, 55), true, false, false);
|
| check(r, "color_wheel.gif", SkISize::Make(128, 128), true, false, false);
|
| // randPixels.gif is too small to test incomplete
|
| check(r, "randPixels.gif", SkISize::Make(8, 8), true, false, false);
|
| +#endif
|
|
|
| // JPG
|
| +#if defined(SK_CODEC_DECODES_JPEG)
|
| check(r, "CMYK.jpg", SkISize::Make(642, 516), true, false);
|
| check(r, "color_wheel.jpg", SkISize::Make(128, 128), true, false);
|
| // grayscale.jpg is too small to test incomplete
|
| @@ -367,8 +378,10 @@ DEF_TEST(Codec, r) {
|
| check(r, "mandrill_512_q075.jpg", SkISize::Make(512, 512), true, false);
|
| // randPixels.jpg is too small to test incomplete
|
| check(r, "randPixels.jpg", SkISize::Make(8, 8), true, false, false);
|
| +#endif
|
|
|
| // PNG
|
| +#if defined(SK_CODEC_DECODES_PNG)
|
| check(r, "arrow.png", SkISize::Make(187, 312), true, false, false);
|
| check(r, "baby_tux.png", SkISize::Make(240, 246), true, false, false);
|
| check(r, "color_wheel.png", SkISize::Make(128, 128), true, false, false);
|
| @@ -384,6 +397,7 @@ DEF_TEST(Codec, r) {
|
| check(r, "plane_interlaced.png", SkISize::Make(250, 126), true, false, false);
|
| check(r, "randPixels.png", SkISize::Make(8, 8), true, false, false);
|
| check(r, "yellow_rose.png", SkISize::Make(400, 301), true, false, false);
|
| +#endif
|
|
|
| // RAW
|
| #if defined(SK_CODEC_DECODES_RAW)
|
| @@ -563,17 +577,20 @@ static void test_dimensions(skiatest::Reporter* r, const char path[]) {
|
| // Ensure that onGetScaledDimensions returns valid image dimensions to use for decodes
|
| DEF_TEST(Codec_Dimensions, r) {
|
| // JPG
|
| +#if defined(SK_CODEC_DECODES_JPEG)
|
| test_dimensions(r, "CMYK.jpg");
|
| test_dimensions(r, "color_wheel.jpg");
|
| test_dimensions(r, "grayscale.jpg");
|
| test_dimensions(r, "mandrill_512_q075.jpg");
|
| test_dimensions(r, "randPixels.jpg");
|
| +#endif
|
|
|
| // Decoding small images with very large scaling factors is a potential
|
| // source of bugs and crashes. We disable these tests in Gold because
|
| // tiny images are not very useful to look at.
|
| // Here we make sure that we do not crash or access illegal memory when
|
| // performing scaled decodes on small images.
|
| +#if defined(SK_CODEC_DECODES_PNG)
|
| test_dimensions(r, "1x1.png");
|
| test_dimensions(r, "2x2.png");
|
| test_dimensions(r, "3x3.png");
|
| @@ -582,6 +599,7 @@ DEF_TEST(Codec_Dimensions, r) {
|
| test_dimensions(r, "16x1.png");
|
| test_dimensions(r, "1x16.png");
|
| test_dimensions(r, "mandrill_16.png");
|
| +#endif
|
|
|
| // RAW
|
| #if defined(SK_CODEC_DECODES_RAW)
|
| @@ -646,8 +664,12 @@ static void test_invalid_parameters(skiatest::Reporter* r, const char path[]) {
|
| }
|
|
|
| DEF_TEST(Codec_Params, r) {
|
| +#if defined(SK_CODEC_DECODES_PNG)
|
| test_invalid_parameters(r, "index8.png");
|
| +#endif
|
| +#if defined(SK_CODEC_DECODES_WBMP)
|
| test_invalid_parameters(r, "mandrill.wbmp");
|
| +#endif
|
| }
|
|
|
| static void codex_test_write_fn(png_structp png_ptr, png_bytep data, png_size_t len) {
|
| @@ -657,7 +679,7 @@ static void codex_test_write_fn(png_structp png_ptr, png_bytep data, png_size_t
|
| }
|
| }
|
|
|
| -#ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED
|
| +#if defined(SK_CODEC_DECODES_PNG) && defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)
|
| DEF_TEST(Codec_pngChunkReader, r) {
|
| // Create a dummy bitmap. Use unpremul RGBA for libpng.
|
| SkBitmap bm;
|
| @@ -804,7 +826,7 @@ DEF_TEST(Codec_pngChunkReader, r) {
|
| REPORTER_ASSERT(r, SkCodec::kSuccess == result);
|
| REPORTER_ASSERT(r, chunkReader.allHaveBeenSeen());
|
| }
|
| -#endif // PNG_READ_UNKNOWN_CHUNKS_SUPPORTED
|
| +#endif // SK_CODEC_DECODES_PNG && PNG_READ_UNKNOWN_CHUNKS_SUPPORTED
|
|
|
| // Stream that can only peek up to a limit
|
| class LimitedPeekingMemStream : public SkStream {
|
| @@ -878,6 +900,7 @@ DEF_TEST(Codec_raw_notseekable, r) {
|
| }
|
| #endif
|
|
|
| +#if defined(SK_CODEC_DECODES_WEBP)
|
| // Test that even if webp_parse_header fails to peek enough, it will fall back to read()
|
| // + rewind() and succeed.
|
| DEF_TEST(Codec_webp_peek, r) {
|
| @@ -901,7 +924,9 @@ DEF_TEST(Codec_webp_peek, r) {
|
|
|
| test_info(r, codec.get(), codec->getInfo(), SkCodec::kSuccess, nullptr);
|
| }
|
| +#endif
|
|
|
| +#if defined(SK_CODEC_DECODES_WBMP)
|
| // SkCodec's wbmp decoder was initially more restrictive than SkImageDecoder.
|
| // It required the second byte to be zero. But SkImageDecoder allowed a couple
|
| // of bits to be 1 (so long as they do not overlap with 0x9F). Test that
|
| @@ -960,3 +985,4 @@ DEF_TEST(Codec_wbmp_max_size, r) {
|
|
|
| REPORTER_ASSERT(r, !codec);
|
| }
|
| +#endif
|
|
|