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