diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index bad6d1b797fa5..681868ba215f5 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -269,6 +269,8 @@ FILE: ../../../flutter/lib/ui/dart_ui.h FILE: ../../../flutter/lib/ui/dart_wrapper.h FILE: ../../../flutter/lib/ui/fixtures/DashInNooglerHat.jpg FILE: ../../../flutter/lib/ui/fixtures/Horizontal.jpg +FILE: ../../../flutter/lib/ui/fixtures/hello_loop_2.gif +FILE: ../../../flutter/lib/ui/fixtures/hello_loop_2.webp FILE: ../../../flutter/lib/ui/fixtures/ui_test.dart FILE: ../../../flutter/lib/ui/geometry.dart FILE: ../../../flutter/lib/ui/hash_codes.dart diff --git a/lib/ui/BUILD.gn b/lib/ui/BUILD.gn index d548d94594184..967f061f1cc58 100644 --- a/lib/ui/BUILD.gn +++ b/lib/ui/BUILD.gn @@ -155,6 +155,8 @@ if (current_toolchain == host_toolchain) { fixtures = [ "fixtures/DashInNooglerHat.jpg", "fixtures/Horizontal.jpg", + "fixtures/hello_loop_2.gif", + "fixtures/hello_loop_2.webp", ] } diff --git a/lib/ui/fixtures/hello_loop_2.gif b/lib/ui/fixtures/hello_loop_2.gif new file mode 100644 index 0000000000000..e9ac36d917d22 Binary files /dev/null and b/lib/ui/fixtures/hello_loop_2.gif differ diff --git a/lib/ui/fixtures/hello_loop_2.webp b/lib/ui/fixtures/hello_loop_2.webp new file mode 100644 index 0000000000000..cc79d776f8a68 Binary files /dev/null and b/lib/ui/fixtures/hello_loop_2.webp differ diff --git a/lib/ui/painting/image_decoder_unittests.cc b/lib/ui/painting/image_decoder_unittests.cc index 258da2dbeee18..47e7bafe96052 100644 --- a/lib/ui/painting/image_decoder_unittests.cc +++ b/lib/ui/painting/image_decoder_unittests.cc @@ -9,6 +9,7 @@ #include "flutter/testing/test_gl_surface.h" #include "flutter/testing/testing.h" #include "flutter/testing/thread_test.h" +#include "third_party/skia/include/codec/SkCodec.h" namespace flutter { namespace testing { @@ -496,5 +497,27 @@ TEST_F(ImageDecoderFixtureTest, CanResizeWithoutDecode) { latch.Wait(); } +// Verifies https://skia-review.googlesource.com/c/skia/+/259161 is present in +// Flutter. +TEST(ImageDecoderTest, + VerifyCodecRepeatCountsForGifAndWebPAreConsistentWithLoopCounts) { + auto gif_mapping = OpenFixtureAsSkData("hello_loop_2.gif"); + auto webp_mapping = OpenFixtureAsSkData("hello_loop_2.webp"); + + ASSERT_TRUE(gif_mapping); + ASSERT_TRUE(webp_mapping); + + auto gif_codec = SkCodec::MakeFromData(gif_mapping); + auto webp_codec = SkCodec::MakeFromData(webp_mapping); + + ASSERT_TRUE(gif_codec); + ASSERT_TRUE(webp_codec); + + // Both fixtures have a loop count of 2 which should lead to the repeat count + // of 1 + ASSERT_EQ(gif_codec->getRepetitionCount(), 1); + ASSERT_EQ(webp_codec->getRepetitionCount(), 1); +} + } // namespace testing } // namespace flutter