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

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

Issue 2454123002: Refactor image decoders to use 'colorSpace' instead of 'colorProfile' (Closed)
Patch Set: Fix legacy ImageFrame Created 4 years, 1 month 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 29 matching lines...) Expand all
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 decodersTestingDir[] = "Source/platform/image-decoders/testing"; 46 const char decodersTestingDir[] = "Source/platform/image-decoders/testing";
47 const char layoutTestResourcesDir[] = "LayoutTests/fast/images/resources"; 47 const char layoutTestResourcesDir[] = "LayoutTests/fast/images/resources";
48 48
49 std::unique_ptr<ImageDecoder> createDecoder() { 49 std::unique_ptr<ImageDecoder> createDecoder() {
50 return wrapUnique( 50 return wrapUnique(new GIFImageDecoder(ImageDecoder::AlphaNotPremultiplied,
51 new GIFImageDecoder(ImageDecoder::AlphaNotPremultiplied, 51 ImageDecoder::ColorSpaceApplied,
52 ImageDecoder::GammaAndColorProfileApplied, 52 ImageDecoder::noDecodedImageByteLimit));
53 ImageDecoder::noDecodedImageByteLimit));
54 } 53 }
55 54
56 void testRandomFrameDecode(const char* dir, const char* gifFile) { 55 void testRandomFrameDecode(const char* dir, const char* gifFile) {
57 SCOPED_TRACE(gifFile); 56 SCOPED_TRACE(gifFile);
58 57
59 RefPtr<SharedBuffer> fullData = readFile(dir, gifFile); 58 RefPtr<SharedBuffer> fullData = readFile(dir, gifFile);
60 ASSERT_TRUE(fullData.get()); 59 ASSERT_TRUE(fullData.get());
61 Vector<unsigned> baselineHashes; 60 Vector<unsigned> baselineHashes;
62 createDecodingBaseline(&createDecoder, fullData.get(), &baselineHashes); 61 createDecodingBaseline(&createDecoder, fullData.get(), &baselineHashes);
63 size_t frameCount = baselineHashes.size(); 62 size_t frameCount = baselineHashes.size();
(...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 ASSERT_TRUE(fullData.get()); 535 ASSERT_TRUE(fullData.get());
537 536
538 // Empirically chosen truncation size: 537 // Empirically chosen truncation size:
539 // a) large enough to produce a partial frame && 538 // a) large enough to produce a partial frame &&
540 // b) small enough to not fully decode the frame 539 // b) small enough to not fully decode the frame
541 const size_t kTruncateSize = 800; 540 const size_t kTruncateSize = 800;
542 ASSERT_TRUE(kTruncateSize < fullData->size()); 541 ASSERT_TRUE(kTruncateSize < fullData->size());
543 RefPtr<SharedBuffer> partialData = 542 RefPtr<SharedBuffer> partialData =
544 SharedBuffer::create(fullData->data(), kTruncateSize); 543 SharedBuffer::create(fullData->data(), kTruncateSize);
545 544
546 std::unique_ptr<ImageDecoder> premulDecoder = 545 std::unique_ptr<ImageDecoder> premulDecoder = wrapUnique(new GIFImageDecoder(
547 wrapUnique(new GIFImageDecoder(ImageDecoder::AlphaPremultiplied, 546 ImageDecoder::AlphaPremultiplied, ImageDecoder::ColorSpaceApplied,
548 ImageDecoder::GammaAndColorProfileApplied, 547 ImageDecoder::noDecodedImageByteLimit));
549 ImageDecoder::noDecodedImageByteLimit));
550 std::unique_ptr<ImageDecoder> unpremulDecoder = 548 std::unique_ptr<ImageDecoder> unpremulDecoder =
551 wrapUnique(new GIFImageDecoder(ImageDecoder::AlphaNotPremultiplied, 549 wrapUnique(new GIFImageDecoder(ImageDecoder::AlphaNotPremultiplied,
552 ImageDecoder::GammaAndColorProfileApplied, 550 ImageDecoder::ColorSpaceApplied,
553 ImageDecoder::noDecodedImageByteLimit)); 551 ImageDecoder::noDecodedImageByteLimit));
554 552
555 // Partially decoded frame => the frame alpha type is unknown and should 553 // Partially decoded frame => the frame alpha type is unknown and should
556 // reflect the requested format. 554 // reflect the requested format.
557 premulDecoder->setData(partialData.get(), false); 555 premulDecoder->setData(partialData.get(), false);
558 ASSERT_TRUE(premulDecoder->frameCount()); 556 ASSERT_TRUE(premulDecoder->frameCount());
559 unpremulDecoder->setData(partialData.get(), false); 557 unpremulDecoder->setData(partialData.get(), false);
560 ASSERT_TRUE(unpremulDecoder->frameCount()); 558 ASSERT_TRUE(unpremulDecoder->frameCount());
561 ImageFrame* premulFrame = premulDecoder->frameBufferAtIndex(0); 559 ImageFrame* premulFrame = premulDecoder->frameBufferAtIndex(0);
562 EXPECT_TRUE(premulFrame && 560 EXPECT_TRUE(premulFrame &&
(...skipping 13 matching lines...) Expand all
576 EXPECT_TRUE(premulFrame && 574 EXPECT_TRUE(premulFrame &&
577 premulFrame->getStatus() == ImageFrame::FrameComplete); 575 premulFrame->getStatus() == ImageFrame::FrameComplete);
578 EXPECT_EQ(premulFrame->bitmap().alphaType(), kOpaque_SkAlphaType); 576 EXPECT_EQ(premulFrame->bitmap().alphaType(), kOpaque_SkAlphaType);
579 unpremulFrame = unpremulDecoder->frameBufferAtIndex(0); 577 unpremulFrame = unpremulDecoder->frameBufferAtIndex(0);
580 EXPECT_TRUE(unpremulFrame && 578 EXPECT_TRUE(unpremulFrame &&
581 unpremulFrame->getStatus() == ImageFrame::FrameComplete); 579 unpremulFrame->getStatus() == ImageFrame::FrameComplete);
582 EXPECT_EQ(unpremulFrame->bitmap().alphaType(), kOpaque_SkAlphaType); 580 EXPECT_EQ(unpremulFrame->bitmap().alphaType(), kOpaque_SkAlphaType);
583 } 581 }
584 582
585 } // namespace blink 583 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698