| 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 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 for (size_t i = 0; i < numFrames; ++i) | 63 for (size_t i = 0; i < numFrames; ++i) |
| 64 m_frameBufferCache[i].setOriginalFrameRect(IntRect(0, 0, width, height)); | 64 m_frameBufferCache[i].setOriginalFrameRect(IntRect(0, 0, width, height)); |
| 65 } | 65 } |
| 66 | 66 |
| 67 private: | 67 private: |
| 68 void decodeSize() override {} | 68 void decodeSize() override {} |
| 69 void decode(size_t index) override {} | 69 void decode(size_t index) override {} |
| 70 }; | 70 }; |
| 71 | 71 |
| 72 TEST(ImageDecoderTest, sizeCalculationMayOverflow) { | 72 TEST(ImageDecoderTest, sizeCalculationMayOverflow) { |
| 73 std::unique_ptr<TestImageDecoder> decoder(wrapUnique(new TestImageDecoder())); | 73 std::unique_ptr<TestImageDecoder> decoder(makeUnique<TestImageDecoder>()); |
| 74 EXPECT_FALSE(decoder->setSize(1 << 29, 1)); | 74 EXPECT_FALSE(decoder->setSize(1 << 29, 1)); |
| 75 EXPECT_FALSE(decoder->setSize(1, 1 << 29)); | 75 EXPECT_FALSE(decoder->setSize(1, 1 << 29)); |
| 76 EXPECT_FALSE(decoder->setSize(1 << 15, 1 << 15)); | 76 EXPECT_FALSE(decoder->setSize(1 << 15, 1 << 15)); |
| 77 EXPECT_TRUE(decoder->setSize(1 << 28, 1)); | 77 EXPECT_TRUE(decoder->setSize(1 << 28, 1)); |
| 78 EXPECT_TRUE(decoder->setSize(1, 1 << 28)); | 78 EXPECT_TRUE(decoder->setSize(1, 1 << 28)); |
| 79 EXPECT_TRUE(decoder->setSize(1 << 14, 1 << 14)); | 79 EXPECT_TRUE(decoder->setSize(1 << 14, 1 << 14)); |
| 80 } | 80 } |
| 81 | 81 |
| 82 TEST(ImageDecoderTest, requiredPreviousFrameIndex) { | 82 TEST(ImageDecoderTest, requiredPreviousFrameIndex) { |
| 83 std::unique_ptr<TestImageDecoder> decoder(wrapUnique(new TestImageDecoder())); | 83 std::unique_ptr<TestImageDecoder> decoder(makeUnique<TestImageDecoder>()); |
| 84 decoder->initFrames(6); | 84 decoder->initFrames(6); |
| 85 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache(); | 85 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache(); |
| 86 | 86 |
| 87 frameBuffers[1].setDisposalMethod(ImageFrame::DisposeKeep); | 87 frameBuffers[1].setDisposalMethod(ImageFrame::DisposeKeep); |
| 88 frameBuffers[2].setDisposalMethod(ImageFrame::DisposeOverwritePrevious); | 88 frameBuffers[2].setDisposalMethod(ImageFrame::DisposeOverwritePrevious); |
| 89 frameBuffers[3].setDisposalMethod(ImageFrame::DisposeOverwritePrevious); | 89 frameBuffers[3].setDisposalMethod(ImageFrame::DisposeOverwritePrevious); |
| 90 frameBuffers[4].setDisposalMethod(ImageFrame::DisposeKeep); | 90 frameBuffers[4].setDisposalMethod(ImageFrame::DisposeKeep); |
| 91 | 91 |
| 92 decoder->resetRequiredPreviousFrames(); | 92 decoder->resetRequiredPreviousFrames(); |
| 93 | 93 |
| 94 // The first frame doesn't require any previous frame. | 94 // The first frame doesn't require any previous frame. |
| 95 EXPECT_EQ(kNotFound, frameBuffers[0].requiredPreviousFrameIndex()); | 95 EXPECT_EQ(kNotFound, frameBuffers[0].requiredPreviousFrameIndex()); |
| 96 // The previous DisposeNotSpecified frame is required. | 96 // The previous DisposeNotSpecified frame is required. |
| 97 EXPECT_EQ(0u, frameBuffers[1].requiredPreviousFrameIndex()); | 97 EXPECT_EQ(0u, frameBuffers[1].requiredPreviousFrameIndex()); |
| 98 // DisposeKeep is treated as DisposeNotSpecified. | 98 // DisposeKeep is treated as DisposeNotSpecified. |
| 99 EXPECT_EQ(1u, frameBuffers[2].requiredPreviousFrameIndex()); | 99 EXPECT_EQ(1u, frameBuffers[2].requiredPreviousFrameIndex()); |
| 100 // Previous DisposeOverwritePrevious frames are skipped. | 100 // Previous DisposeOverwritePrevious frames are skipped. |
| 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(makeUnique<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 | 111 // Fully covering DisposeOverwriteBgcolor previous frame resets the starting |
| 112 // state. | 112 // state. |
| 113 frameBuffers[1].setDisposalMethod(ImageFrame::DisposeOverwriteBgcolor); | 113 frameBuffers[1].setDisposalMethod(ImageFrame::DisposeOverwriteBgcolor); |
| 114 decoder->resetRequiredPreviousFrames(); | 114 decoder->resetRequiredPreviousFrames(); |
| 115 EXPECT_EQ(kNotFound, frameBuffers[2].requiredPreviousFrameIndex()); | 115 EXPECT_EQ(kNotFound, frameBuffers[2].requiredPreviousFrameIndex()); |
| 116 | 116 |
| 117 // Partially covering DisposeOverwriteBgcolor previous frame is required by | 117 // Partially covering DisposeOverwriteBgcolor previous frame is required by |
| 118 // this frame. | 118 // this frame. |
| 119 frameBuffers[1].setOriginalFrameRect(IntRect(50, 50, 50, 50)); | 119 frameBuffers[1].setOriginalFrameRect(IntRect(50, 50, 50, 50)); |
| 120 decoder->resetRequiredPreviousFrames(); | 120 decoder->resetRequiredPreviousFrames(); |
| 121 EXPECT_EQ(1u, frameBuffers[2].requiredPreviousFrameIndex()); | 121 EXPECT_EQ(1u, frameBuffers[2].requiredPreviousFrameIndex()); |
| 122 } | 122 } |
| 123 | 123 |
| 124 TEST(ImageDecoderTest, requiredPreviousFrameIndexForFrame1) { | 124 TEST(ImageDecoderTest, requiredPreviousFrameIndexForFrame1) { |
| 125 std::unique_ptr<TestImageDecoder> decoder(wrapUnique(new TestImageDecoder())); | 125 std::unique_ptr<TestImageDecoder> decoder(makeUnique<TestImageDecoder>()); |
| 126 decoder->initFrames(2); | 126 decoder->initFrames(2); |
| 127 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache(); | 127 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache(); |
| 128 | 128 |
| 129 decoder->resetRequiredPreviousFrames(); | 129 decoder->resetRequiredPreviousFrames(); |
| 130 EXPECT_EQ(0u, frameBuffers[1].requiredPreviousFrameIndex()); | 130 EXPECT_EQ(0u, frameBuffers[1].requiredPreviousFrameIndex()); |
| 131 | 131 |
| 132 // The first frame with DisposeOverwritePrevious or DisposeOverwriteBgcolor | 132 // The first frame with DisposeOverwritePrevious or DisposeOverwriteBgcolor |
| 133 // resets the starting state. | 133 // resets the starting state. |
| 134 frameBuffers[0].setDisposalMethod(ImageFrame::DisposeOverwritePrevious); | 134 frameBuffers[0].setDisposalMethod(ImageFrame::DisposeOverwritePrevious); |
| 135 decoder->resetRequiredPreviousFrames(); | 135 decoder->resetRequiredPreviousFrames(); |
| 136 EXPECT_EQ(kNotFound, frameBuffers[1].requiredPreviousFrameIndex()); | 136 EXPECT_EQ(kNotFound, frameBuffers[1].requiredPreviousFrameIndex()); |
| 137 frameBuffers[0].setDisposalMethod(ImageFrame::DisposeOverwriteBgcolor); | 137 frameBuffers[0].setDisposalMethod(ImageFrame::DisposeOverwriteBgcolor); |
| 138 decoder->resetRequiredPreviousFrames(); | 138 decoder->resetRequiredPreviousFrames(); |
| 139 EXPECT_EQ(kNotFound, frameBuffers[1].requiredPreviousFrameIndex()); | 139 EXPECT_EQ(kNotFound, frameBuffers[1].requiredPreviousFrameIndex()); |
| 140 | 140 |
| 141 // ... even if it partially covers. | 141 // ... even if it partially covers. |
| 142 frameBuffers[0].setOriginalFrameRect(IntRect(50, 50, 50, 50)); | 142 frameBuffers[0].setOriginalFrameRect(IntRect(50, 50, 50, 50)); |
| 143 | 143 |
| 144 frameBuffers[0].setDisposalMethod(ImageFrame::DisposeOverwritePrevious); | 144 frameBuffers[0].setDisposalMethod(ImageFrame::DisposeOverwritePrevious); |
| 145 decoder->resetRequiredPreviousFrames(); | 145 decoder->resetRequiredPreviousFrames(); |
| 146 EXPECT_EQ(kNotFound, frameBuffers[1].requiredPreviousFrameIndex()); | 146 EXPECT_EQ(kNotFound, frameBuffers[1].requiredPreviousFrameIndex()); |
| 147 frameBuffers[0].setDisposalMethod(ImageFrame::DisposeOverwriteBgcolor); | 147 frameBuffers[0].setDisposalMethod(ImageFrame::DisposeOverwriteBgcolor); |
| 148 decoder->resetRequiredPreviousFrames(); | 148 decoder->resetRequiredPreviousFrames(); |
| 149 EXPECT_EQ(kNotFound, frameBuffers[1].requiredPreviousFrameIndex()); | 149 EXPECT_EQ(kNotFound, frameBuffers[1].requiredPreviousFrameIndex()); |
| 150 } | 150 } |
| 151 | 151 |
| 152 TEST(ImageDecoderTest, requiredPreviousFrameIndexBlendAtopBgcolor) { | 152 TEST(ImageDecoderTest, requiredPreviousFrameIndexBlendAtopBgcolor) { |
| 153 std::unique_ptr<TestImageDecoder> decoder(wrapUnique(new TestImageDecoder())); | 153 std::unique_ptr<TestImageDecoder> decoder(makeUnique<TestImageDecoder>()); |
| 154 decoder->initFrames(3); | 154 decoder->initFrames(3); |
| 155 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache(); | 155 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache(); |
| 156 | 156 |
| 157 frameBuffers[1].setOriginalFrameRect(IntRect(25, 25, 50, 50)); | 157 frameBuffers[1].setOriginalFrameRect(IntRect(25, 25, 50, 50)); |
| 158 frameBuffers[2].setAlphaBlendSource(ImageFrame::BlendAtopBgcolor); | 158 frameBuffers[2].setAlphaBlendSource(ImageFrame::BlendAtopBgcolor); |
| 159 | 159 |
| 160 // A full frame with 'blending method == BlendAtopBgcolor' doesn't depend on | 160 // A full frame with 'blending method == BlendAtopBgcolor' doesn't depend on |
| 161 // any prior frames. | 161 // any prior frames. |
| 162 for (int disposeMethod = ImageFrame::DisposeNotSpecified; | 162 for (int disposeMethod = ImageFrame::DisposeNotSpecified; |
| 163 disposeMethod <= ImageFrame::DisposeOverwritePrevious; ++disposeMethod) { | 163 disposeMethod <= ImageFrame::DisposeOverwritePrevious; ++disposeMethod) { |
| 164 frameBuffers[1].setDisposalMethod( | 164 frameBuffers[1].setDisposalMethod( |
| 165 static_cast<ImageFrame::DisposalMethod>(disposeMethod)); | 165 static_cast<ImageFrame::DisposalMethod>(disposeMethod)); |
| 166 decoder->resetRequiredPreviousFrames(); | 166 decoder->resetRequiredPreviousFrames(); |
| 167 EXPECT_EQ(kNotFound, frameBuffers[2].requiredPreviousFrameIndex()); | 167 EXPECT_EQ(kNotFound, frameBuffers[2].requiredPreviousFrameIndex()); |
| 168 } | 168 } |
| 169 | 169 |
| 170 // A non-full frame with 'blending method == BlendAtopBgcolor' does depend on | 170 // A non-full frame with 'blending method == BlendAtopBgcolor' does depend on |
| 171 // a prior frame. | 171 // a prior frame. |
| 172 frameBuffers[2].setOriginalFrameRect(IntRect(50, 50, 50, 50)); | 172 frameBuffers[2].setOriginalFrameRect(IntRect(50, 50, 50, 50)); |
| 173 for (int disposeMethod = ImageFrame::DisposeNotSpecified; | 173 for (int disposeMethod = ImageFrame::DisposeNotSpecified; |
| 174 disposeMethod <= ImageFrame::DisposeOverwritePrevious; ++disposeMethod) { | 174 disposeMethod <= ImageFrame::DisposeOverwritePrevious; ++disposeMethod) { |
| 175 frameBuffers[1].setDisposalMethod( | 175 frameBuffers[1].setDisposalMethod( |
| 176 static_cast<ImageFrame::DisposalMethod>(disposeMethod)); | 176 static_cast<ImageFrame::DisposalMethod>(disposeMethod)); |
| 177 decoder->resetRequiredPreviousFrames(); | 177 decoder->resetRequiredPreviousFrames(); |
| 178 EXPECT_NE(kNotFound, frameBuffers[2].requiredPreviousFrameIndex()); | 178 EXPECT_NE(kNotFound, frameBuffers[2].requiredPreviousFrameIndex()); |
| 179 } | 179 } |
| 180 } | 180 } |
| 181 | 181 |
| 182 TEST(ImageDecoderTest, requiredPreviousFrameIndexKnownOpaque) { | 182 TEST(ImageDecoderTest, requiredPreviousFrameIndexKnownOpaque) { |
| 183 std::unique_ptr<TestImageDecoder> decoder(wrapUnique(new TestImageDecoder())); | 183 std::unique_ptr<TestImageDecoder> decoder(makeUnique<TestImageDecoder>()); |
| 184 decoder->initFrames(3); | 184 decoder->initFrames(3); |
| 185 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache(); | 185 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache(); |
| 186 | 186 |
| 187 frameBuffers[1].setOriginalFrameRect(IntRect(25, 25, 50, 50)); | 187 frameBuffers[1].setOriginalFrameRect(IntRect(25, 25, 50, 50)); |
| 188 | 188 |
| 189 // A full frame that is known to be opaque doesn't depend on any prior frames. | 189 // A full frame that is known to be opaque doesn't depend on any prior frames. |
| 190 for (int disposeMethod = ImageFrame::DisposeNotSpecified; | 190 for (int disposeMethod = ImageFrame::DisposeNotSpecified; |
| 191 disposeMethod <= ImageFrame::DisposeOverwritePrevious; ++disposeMethod) { | 191 disposeMethod <= ImageFrame::DisposeOverwritePrevious; ++disposeMethod) { |
| 192 frameBuffers[1].setDisposalMethod( | 192 frameBuffers[1].setDisposalMethod( |
| 193 static_cast<ImageFrame::DisposalMethod>(disposeMethod)); | 193 static_cast<ImageFrame::DisposalMethod>(disposeMethod)); |
| 194 decoder->resetRequiredPreviousFrames(true); | 194 decoder->resetRequiredPreviousFrames(true); |
| 195 EXPECT_EQ(kNotFound, frameBuffers[2].requiredPreviousFrameIndex()); | 195 EXPECT_EQ(kNotFound, frameBuffers[2].requiredPreviousFrameIndex()); |
| 196 } | 196 } |
| 197 | 197 |
| 198 // A non-full frame that is known to be opaque does depend on a prior frame. | 198 // A non-full frame that is known to be opaque does depend on a prior frame. |
| 199 frameBuffers[2].setOriginalFrameRect(IntRect(50, 50, 50, 50)); | 199 frameBuffers[2].setOriginalFrameRect(IntRect(50, 50, 50, 50)); |
| 200 for (int disposeMethod = ImageFrame::DisposeNotSpecified; | 200 for (int disposeMethod = ImageFrame::DisposeNotSpecified; |
| 201 disposeMethod <= ImageFrame::DisposeOverwritePrevious; ++disposeMethod) { | 201 disposeMethod <= ImageFrame::DisposeOverwritePrevious; ++disposeMethod) { |
| 202 frameBuffers[1].setDisposalMethod( | 202 frameBuffers[1].setDisposalMethod( |
| 203 static_cast<ImageFrame::DisposalMethod>(disposeMethod)); | 203 static_cast<ImageFrame::DisposalMethod>(disposeMethod)); |
| 204 decoder->resetRequiredPreviousFrames(true); | 204 decoder->resetRequiredPreviousFrames(true); |
| 205 EXPECT_NE(kNotFound, frameBuffers[2].requiredPreviousFrameIndex()); | 205 EXPECT_NE(kNotFound, frameBuffers[2].requiredPreviousFrameIndex()); |
| 206 } | 206 } |
| 207 } | 207 } |
| 208 | 208 |
| 209 TEST(ImageDecoderTest, clearCacheExceptFrameDoNothing) { | 209 TEST(ImageDecoderTest, clearCacheExceptFrameDoNothing) { |
| 210 std::unique_ptr<TestImageDecoder> decoder(wrapUnique(new TestImageDecoder())); | 210 std::unique_ptr<TestImageDecoder> decoder(makeUnique<TestImageDecoder>()); |
| 211 decoder->clearCacheExceptFrame(0); | 211 decoder->clearCacheExceptFrame(0); |
| 212 | 212 |
| 213 // This should not crash. | 213 // This should not crash. |
| 214 decoder->initFrames(20); | 214 decoder->initFrames(20); |
| 215 decoder->clearCacheExceptFrame(kNotFound); | 215 decoder->clearCacheExceptFrame(kNotFound); |
| 216 } | 216 } |
| 217 | 217 |
| 218 TEST(ImageDecoderTest, clearCacheExceptFrameAll) { | 218 TEST(ImageDecoderTest, clearCacheExceptFrameAll) { |
| 219 const size_t numFrames = 10; | 219 const size_t numFrames = 10; |
| 220 std::unique_ptr<TestImageDecoder> decoder(wrapUnique(new TestImageDecoder())); | 220 std::unique_ptr<TestImageDecoder> decoder(makeUnique<TestImageDecoder>()); |
| 221 decoder->initFrames(numFrames); | 221 decoder->initFrames(numFrames); |
| 222 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache(); | 222 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache(); |
| 223 for (size_t i = 0; i < numFrames; ++i) | 223 for (size_t i = 0; i < numFrames; ++i) |
| 224 frameBuffers[i].setStatus(i % 2 ? ImageFrame::FramePartial | 224 frameBuffers[i].setStatus(i % 2 ? ImageFrame::FramePartial |
| 225 : ImageFrame::FrameComplete); | 225 : ImageFrame::FrameComplete); |
| 226 | 226 |
| 227 decoder->clearCacheExceptFrame(kNotFound); | 227 decoder->clearCacheExceptFrame(kNotFound); |
| 228 | 228 |
| 229 for (size_t i = 0; i < numFrames; ++i) { | 229 for (size_t i = 0; i < numFrames; ++i) { |
| 230 SCOPED_TRACE(testing::Message() << i); | 230 SCOPED_TRACE(testing::Message() << i); |
| 231 EXPECT_EQ(ImageFrame::FrameEmpty, frameBuffers[i].getStatus()); | 231 EXPECT_EQ(ImageFrame::FrameEmpty, frameBuffers[i].getStatus()); |
| 232 } | 232 } |
| 233 } | 233 } |
| 234 | 234 |
| 235 TEST(ImageDecoderTest, clearCacheExceptFramePreverveClearExceptFrame) { | 235 TEST(ImageDecoderTest, clearCacheExceptFramePreverveClearExceptFrame) { |
| 236 const size_t numFrames = 10; | 236 const size_t numFrames = 10; |
| 237 std::unique_ptr<TestImageDecoder> decoder(wrapUnique(new TestImageDecoder())); | 237 std::unique_ptr<TestImageDecoder> decoder(makeUnique<TestImageDecoder>()); |
| 238 decoder->initFrames(numFrames); | 238 decoder->initFrames(numFrames); |
| 239 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache(); | 239 Vector<ImageFrame, 1>& frameBuffers = decoder->frameBufferCache(); |
| 240 for (size_t i = 0; i < numFrames; ++i) | 240 for (size_t i = 0; i < numFrames; ++i) |
| 241 frameBuffers[i].setStatus(ImageFrame::FrameComplete); | 241 frameBuffers[i].setStatus(ImageFrame::FrameComplete); |
| 242 | 242 |
| 243 decoder->resetRequiredPreviousFrames(); | 243 decoder->resetRequiredPreviousFrames(); |
| 244 decoder->clearCacheExceptFrame(5); | 244 decoder->clearCacheExceptFrame(5); |
| 245 for (size_t i = 0; i < numFrames; ++i) { | 245 for (size_t i = 0; i < numFrames; ++i) { |
| 246 SCOPED_TRACE(testing::Message() << i); | 246 SCOPED_TRACE(testing::Message() << i); |
| 247 if (i == 5) | 247 if (i == 5) |
| 248 EXPECT_EQ(ImageFrame::FrameComplete, frameBuffers[i].getStatus()); | 248 EXPECT_EQ(ImageFrame::FrameComplete, frameBuffers[i].getStatus()); |
| 249 else | 249 else |
| 250 EXPECT_EQ(ImageFrame::FrameEmpty, frameBuffers[i].getStatus()); | 250 EXPECT_EQ(ImageFrame::FrameEmpty, frameBuffers[i].getStatus()); |
| 251 } | 251 } |
| 252 } | 252 } |
| 253 | 253 |
| 254 } // namespace blink | 254 } // namespace blink |
| OLD | NEW |