| OLD | NEW |
| 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 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 EXPECT_EQ(1u, frameBuffers[3].requiredPreviousFrameIndex()); | 101 EXPECT_EQ(1u, frameBuffers[3].requiredPreviousFrameIndex()); |
| 102 EXPECT_EQ(1u, frameBuffers[4].requiredPreviousFrameIndex()); | 102 EXPECT_EQ(1u, frameBuffers[4].requiredPreviousFrameIndex()); |
| 103 EXPECT_EQ(4u, frameBuffers[5].requiredPreviousFrameIndex()); | 103 EXPECT_EQ(4u, frameBuffers[5].requiredPreviousFrameIndex()); |
| 104 } | 104 } |
| 105 | 105 |
| 106 TEST(ImageDecoderTest, requiredPreviousFrameIndexDisposeOverwriteBgcolor) { | 106 TEST(ImageDecoderTest, requiredPreviousFrameIndexDisposeOverwriteBgcolor) { |
| 107 std::unique_ptr<TestImageDecoder> decoder(wrapUnique(new TestImageDecoder())); | 107 std::unique_ptr<TestImageDecoder> decoder(wrapUnique(new TestImageDecoder())); |
| 108 decoder->initFrames(3); | 108 decoder->initFrames(3); |
| 109 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache(); | 109 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache(); |
| 110 | 110 |
| 111 // Fully covering DisposeOverwriteBgcolor previous frame resets the starting s
tate. | 111 // Fully covering DisposeOverwriteBgcolor previous frame resets the starting |
| 112 // state. |
| 112 frameBuffers[1].setDisposalMethod(ImageFrame::DisposeOverwriteBgcolor); | 113 frameBuffers[1].setDisposalMethod(ImageFrame::DisposeOverwriteBgcolor); |
| 113 decoder->resetRequiredPreviousFrames(); | 114 decoder->resetRequiredPreviousFrames(); |
| 114 EXPECT_EQ(kNotFound, frameBuffers[2].requiredPreviousFrameIndex()); | 115 EXPECT_EQ(kNotFound, frameBuffers[2].requiredPreviousFrameIndex()); |
| 115 | 116 |
| 116 // Partially covering DisposeOverwriteBgcolor previous frame is required by th
is frame. | 117 // Partially covering DisposeOverwriteBgcolor previous frame is required by |
| 118 // this frame. |
| 117 frameBuffers[1].setOriginalFrameRect(IntRect(50, 50, 50, 50)); | 119 frameBuffers[1].setOriginalFrameRect(IntRect(50, 50, 50, 50)); |
| 118 decoder->resetRequiredPreviousFrames(); | 120 decoder->resetRequiredPreviousFrames(); |
| 119 EXPECT_EQ(1u, frameBuffers[2].requiredPreviousFrameIndex()); | 121 EXPECT_EQ(1u, frameBuffers[2].requiredPreviousFrameIndex()); |
| 120 } | 122 } |
| 121 | 123 |
| 122 TEST(ImageDecoderTest, requiredPreviousFrameIndexForFrame1) { | 124 TEST(ImageDecoderTest, requiredPreviousFrameIndexForFrame1) { |
| 123 std::unique_ptr<TestImageDecoder> decoder(wrapUnique(new TestImageDecoder())); | 125 std::unique_ptr<TestImageDecoder> decoder(wrapUnique(new TestImageDecoder())); |
| 124 decoder->initFrames(2); | 126 decoder->initFrames(2); |
| 125 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache(); | 127 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache(); |
| 126 | 128 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 148 } | 150 } |
| 149 | 151 |
| 150 TEST(ImageDecoderTest, requiredPreviousFrameIndexBlendAtopBgcolor) { | 152 TEST(ImageDecoderTest, requiredPreviousFrameIndexBlendAtopBgcolor) { |
| 151 std::unique_ptr<TestImageDecoder> decoder(wrapUnique(new TestImageDecoder())); | 153 std::unique_ptr<TestImageDecoder> decoder(wrapUnique(new TestImageDecoder())); |
| 152 decoder->initFrames(3); | 154 decoder->initFrames(3); |
| 153 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache(); | 155 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache(); |
| 154 | 156 |
| 155 frameBuffers[1].setOriginalFrameRect(IntRect(25, 25, 50, 50)); | 157 frameBuffers[1].setOriginalFrameRect(IntRect(25, 25, 50, 50)); |
| 156 frameBuffers[2].setAlphaBlendSource(ImageFrame::BlendAtopBgcolor); | 158 frameBuffers[2].setAlphaBlendSource(ImageFrame::BlendAtopBgcolor); |
| 157 | 159 |
| 158 // A full frame with 'blending method == BlendAtopBgcolor' doesn't depend on a
ny prior frames. | 160 // A full frame with 'blending method == BlendAtopBgcolor' doesn't depend on |
| 161 // any prior frames. |
| 159 for (int disposeMethod = ImageFrame::DisposeNotSpecified; | 162 for (int disposeMethod = ImageFrame::DisposeNotSpecified; |
| 160 disposeMethod <= ImageFrame::DisposeOverwritePrevious; ++disposeMethod) { | 163 disposeMethod <= ImageFrame::DisposeOverwritePrevious; ++disposeMethod) { |
| 161 frameBuffers[1].setDisposalMethod( | 164 frameBuffers[1].setDisposalMethod( |
| 162 static_cast<ImageFrame::DisposalMethod>(disposeMethod)); | 165 static_cast<ImageFrame::DisposalMethod>(disposeMethod)); |
| 163 decoder->resetRequiredPreviousFrames(); | 166 decoder->resetRequiredPreviousFrames(); |
| 164 EXPECT_EQ(kNotFound, frameBuffers[2].requiredPreviousFrameIndex()); | 167 EXPECT_EQ(kNotFound, frameBuffers[2].requiredPreviousFrameIndex()); |
| 165 } | 168 } |
| 166 | 169 |
| 167 // A non-full frame with 'blending method == BlendAtopBgcolor' does depend on
a prior frame. | 170 // A non-full frame with 'blending method == BlendAtopBgcolor' does depend on |
| 171 // a prior frame. |
| 168 frameBuffers[2].setOriginalFrameRect(IntRect(50, 50, 50, 50)); | 172 frameBuffers[2].setOriginalFrameRect(IntRect(50, 50, 50, 50)); |
| 169 for (int disposeMethod = ImageFrame::DisposeNotSpecified; | 173 for (int disposeMethod = ImageFrame::DisposeNotSpecified; |
| 170 disposeMethod <= ImageFrame::DisposeOverwritePrevious; ++disposeMethod) { | 174 disposeMethod <= ImageFrame::DisposeOverwritePrevious; ++disposeMethod) { |
| 171 frameBuffers[1].setDisposalMethod( | 175 frameBuffers[1].setDisposalMethod( |
| 172 static_cast<ImageFrame::DisposalMethod>(disposeMethod)); | 176 static_cast<ImageFrame::DisposalMethod>(disposeMethod)); |
| 173 decoder->resetRequiredPreviousFrames(); | 177 decoder->resetRequiredPreviousFrames(); |
| 174 EXPECT_NE(kNotFound, frameBuffers[2].requiredPreviousFrameIndex()); | 178 EXPECT_NE(kNotFound, frameBuffers[2].requiredPreviousFrameIndex()); |
| 175 } | 179 } |
| 176 } | 180 } |
| 177 | 181 |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 241 for (size_t i = 0; i < numFrames; ++i) { | 245 for (size_t i = 0; i < numFrames; ++i) { |
| 242 SCOPED_TRACE(testing::Message() << i); | 246 SCOPED_TRACE(testing::Message() << i); |
| 243 if (i == 5) | 247 if (i == 5) |
| 244 EXPECT_EQ(ImageFrame::FrameComplete, frameBuffers[i].getStatus()); | 248 EXPECT_EQ(ImageFrame::FrameComplete, frameBuffers[i].getStatus()); |
| 245 else | 249 else |
| 246 EXPECT_EQ(ImageFrame::FrameEmpty, frameBuffers[i].getStatus()); | 250 EXPECT_EQ(ImageFrame::FrameEmpty, frameBuffers[i].getStatus()); |
| 247 } | 251 } |
| 248 } | 252 } |
| 249 | 253 |
| 250 } // namespace blink | 254 } // namespace blink |
| OLD | NEW |