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

Side by Side Diff: third_party/WebKit/Source/platform/image-decoders/gif/GIFImageDecoderTest.cpp

Issue 2523943002: Explicitly specify target color space to ImageDecoder at creation (Closed)
Patch Set: Rebase Created 4 years 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 28 matching lines...) Expand all
39 #include "wtf/Vector.h" 39 #include "wtf/Vector.h"
40 #include <memory> 40 #include <memory>
41 41
42 namespace blink { 42 namespace blink {
43 43
44 namespace { 44 namespace {
45 45
46 const char layoutTestResourcesDir[] = "LayoutTests/images/resources"; 46 const char layoutTestResourcesDir[] = "LayoutTests/images/resources";
47 47
48 std::unique_ptr<ImageDecoder> createDecoder() { 48 std::unique_ptr<ImageDecoder> createDecoder() {
49 return wrapUnique(new GIFImageDecoder(ImageDecoder::AlphaNotPremultiplied, 49 return wrapUnique(new GIFImageDecoder(
50 ImageDecoder::ColorSpaceApplied, 50 ImageDecoder::AlphaNotPremultiplied, ImageDecoder::ColorSpaceTransformed,
51 ImageDecoder::noDecodedImageByteLimit)); 51 ImageDecoder::targetColorSpaceForTesting(),
52 ImageDecoder::noDecodedImageByteLimit));
52 } 53 }
53 54
54 void testRepetitionCount(const char* dir, 55 void testRepetitionCount(const char* dir,
55 const char* file, 56 const char* file,
56 int expectedRepetitionCount) { 57 int expectedRepetitionCount) {
57 std::unique_ptr<ImageDecoder> decoder = createDecoder(); 58 std::unique_ptr<ImageDecoder> decoder = createDecoder();
58 RefPtr<SharedBuffer> data = readFile(dir, file); 59 RefPtr<SharedBuffer> data = readFile(dir, file);
59 ASSERT_TRUE(data.get()); 60 ASSERT_TRUE(data.get());
60 decoder->setData(data.get(), true); 61 decoder->setData(data.get(), true);
61 EXPECT_EQ(cAnimationLoopOnce, 62 EXPECT_EQ(cAnimationLoopOnce,
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 441
441 // Empirically chosen truncation size: 442 // Empirically chosen truncation size:
442 // a) large enough to produce a partial frame && 443 // a) large enough to produce a partial frame &&
443 // b) small enough to not fully decode the frame 444 // b) small enough to not fully decode the frame
444 const size_t kTruncateSize = 800; 445 const size_t kTruncateSize = 800;
445 ASSERT_TRUE(kTruncateSize < fullData->size()); 446 ASSERT_TRUE(kTruncateSize < fullData->size());
446 RefPtr<SharedBuffer> partialData = 447 RefPtr<SharedBuffer> partialData =
447 SharedBuffer::create(fullData->data(), kTruncateSize); 448 SharedBuffer::create(fullData->data(), kTruncateSize);
448 449
449 std::unique_ptr<ImageDecoder> premulDecoder = wrapUnique(new GIFImageDecoder( 450 std::unique_ptr<ImageDecoder> premulDecoder = wrapUnique(new GIFImageDecoder(
450 ImageDecoder::AlphaPremultiplied, ImageDecoder::ColorSpaceApplied, 451 ImageDecoder::AlphaPremultiplied, ImageDecoder::ColorSpaceTransformed,
452 ImageDecoder::targetColorSpaceForTesting(),
451 ImageDecoder::noDecodedImageByteLimit)); 453 ImageDecoder::noDecodedImageByteLimit));
452 std::unique_ptr<ImageDecoder> unpremulDecoder = 454 std::unique_ptr<ImageDecoder> unpremulDecoder =
453 wrapUnique(new GIFImageDecoder(ImageDecoder::AlphaNotPremultiplied, 455 wrapUnique(new GIFImageDecoder(ImageDecoder::AlphaNotPremultiplied,
454 ImageDecoder::ColorSpaceApplied, 456 ImageDecoder::ColorSpaceTransformed,
457 ImageDecoder::targetColorSpaceForTesting(),
455 ImageDecoder::noDecodedImageByteLimit)); 458 ImageDecoder::noDecodedImageByteLimit));
456 459
457 // Partially decoded frame => the frame alpha type is unknown and should 460 // Partially decoded frame => the frame alpha type is unknown and should
458 // reflect the requested format. 461 // reflect the requested format.
459 premulDecoder->setData(partialData.get(), false); 462 premulDecoder->setData(partialData.get(), false);
460 ASSERT_TRUE(premulDecoder->frameCount()); 463 ASSERT_TRUE(premulDecoder->frameCount());
461 unpremulDecoder->setData(partialData.get(), false); 464 unpremulDecoder->setData(partialData.get(), false);
462 ASSERT_TRUE(unpremulDecoder->frameCount()); 465 ASSERT_TRUE(unpremulDecoder->frameCount());
463 ImageFrame* premulFrame = premulDecoder->frameBufferAtIndex(0); 466 ImageFrame* premulFrame = premulDecoder->frameBufferAtIndex(0);
464 EXPECT_TRUE(premulFrame && 467 EXPECT_TRUE(premulFrame &&
(...skipping 13 matching lines...) Expand all
478 EXPECT_TRUE(premulFrame && 481 EXPECT_TRUE(premulFrame &&
479 premulFrame->getStatus() == ImageFrame::FrameComplete); 482 premulFrame->getStatus() == ImageFrame::FrameComplete);
480 EXPECT_EQ(premulFrame->bitmap().alphaType(), kOpaque_SkAlphaType); 483 EXPECT_EQ(premulFrame->bitmap().alphaType(), kOpaque_SkAlphaType);
481 unpremulFrame = unpremulDecoder->frameBufferAtIndex(0); 484 unpremulFrame = unpremulDecoder->frameBufferAtIndex(0);
482 EXPECT_TRUE(unpremulFrame && 485 EXPECT_TRUE(unpremulFrame &&
483 unpremulFrame->getStatus() == ImageFrame::FrameComplete); 486 unpremulFrame->getStatus() == ImageFrame::FrameComplete);
484 EXPECT_EQ(unpremulFrame->bitmap().alphaType(), kOpaque_SkAlphaType); 487 EXPECT_EQ(unpremulFrame->bitmap().alphaType(), kOpaque_SkAlphaType);
485 } 488 }
486 489
487 } // namespace blink 490 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698