OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 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 | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. 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 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
165 PaintCanvas* temp_canvas = recorder.beginRecording(100, 100); | 165 PaintCanvas* temp_canvas = recorder.beginRecording(100, 100); |
166 temp_canvas->drawImage( | 166 temp_canvas->drawImage( |
167 PaintImage(std::move(image), PaintImage::AnimationType::STATIC, | 167 PaintImage(std::move(image), PaintImage::AnimationType::STATIC, |
168 PaintImage::CompletionState::DONE), | 168 PaintImage::CompletionState::DONE), |
169 0, 0); | 169 0, 0); |
170 sk_sp<PaintRecord> record = recorder.finishRecordingAsPicture(); | 170 sk_sp<PaintRecord> record = recorder.finishRecordingAsPicture(); |
171 EXPECT_EQ(0, decode_request_count_); | 171 EXPECT_EQ(0, decode_request_count_); |
172 | 172 |
173 canvas_->drawPicture(record); | 173 canvas_->drawPicture(record); |
174 EXPECT_EQ(0, decode_request_count_); | 174 EXPECT_EQ(0, decode_request_count_); |
175 | |
176 SkAutoLockPixels auto_lock(bitmap_); | |
177 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), bitmap_.getColor(0, 0)); | 175 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), bitmap_.getColor(0, 0)); |
178 } | 176 } |
179 | 177 |
180 TEST_F(DeferredImageDecoderTest, drawIntoPaintRecordProgressive) { | 178 TEST_F(DeferredImageDecoderTest, drawIntoPaintRecordProgressive) { |
181 RefPtr<SharedBuffer> partial_data = | 179 RefPtr<SharedBuffer> partial_data = |
182 SharedBuffer::Create(data_->Data(), data_->size() - 10); | 180 SharedBuffer::Create(data_->Data(), data_->size() - 10); |
183 | 181 |
184 // Received only half the file. | 182 // Received only half the file. |
185 lazy_decoder_->SetData(partial_data, false); | 183 lazy_decoder_->SetData(partial_data, false); |
186 sk_sp<SkImage> image = lazy_decoder_->CreateFrameAtIndex(0); | 184 sk_sp<SkImage> image = lazy_decoder_->CreateFrameAtIndex(0); |
187 ASSERT_TRUE(image); | 185 ASSERT_TRUE(image); |
188 PaintRecorder recorder; | 186 PaintRecorder recorder; |
189 PaintCanvas* temp_canvas = recorder.beginRecording(100, 100); | 187 PaintCanvas* temp_canvas = recorder.beginRecording(100, 100); |
190 temp_canvas->drawImage( | 188 temp_canvas->drawImage( |
191 PaintImage(std::move(image), PaintImage::AnimationType::STATIC, | 189 PaintImage(std::move(image), PaintImage::AnimationType::STATIC, |
192 PaintImage::CompletionState::PARTIALLY_DONE), | 190 PaintImage::CompletionState::PARTIALLY_DONE), |
193 0, 0); | 191 0, 0); |
194 canvas_->drawPicture(recorder.finishRecordingAsPicture()); | 192 canvas_->drawPicture(recorder.finishRecordingAsPicture()); |
195 | 193 |
196 // Fully received the file and draw the PaintRecord again. | 194 // Fully received the file and draw the PaintRecord again. |
197 lazy_decoder_->SetData(data_, true); | 195 lazy_decoder_->SetData(data_, true); |
198 image = lazy_decoder_->CreateFrameAtIndex(0); | 196 image = lazy_decoder_->CreateFrameAtIndex(0); |
199 ASSERT_TRUE(image); | 197 ASSERT_TRUE(image); |
200 temp_canvas = recorder.beginRecording(100, 100); | 198 temp_canvas = recorder.beginRecording(100, 100); |
201 temp_canvas->drawImage( | 199 temp_canvas->drawImage( |
202 PaintImage(std::move(image), PaintImage::AnimationType::STATIC, | 200 PaintImage(std::move(image), PaintImage::AnimationType::STATIC, |
203 PaintImage::CompletionState::DONE), | 201 PaintImage::CompletionState::DONE), |
204 0, 0); | 202 0, 0); |
205 canvas_->drawPicture(recorder.finishRecordingAsPicture()); | 203 canvas_->drawPicture(recorder.finishRecordingAsPicture()); |
206 | |
207 SkAutoLockPixels auto_lock(bitmap_); | |
208 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), bitmap_.getColor(0, 0)); | 204 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), bitmap_.getColor(0, 0)); |
209 } | 205 } |
210 | 206 |
211 static void RasterizeMain(PaintCanvas* canvas, sk_sp<PaintRecord> record) { | 207 static void RasterizeMain(PaintCanvas* canvas, sk_sp<PaintRecord> record) { |
212 canvas->drawPicture(record); | 208 canvas->drawPicture(record); |
213 } | 209 } |
214 | 210 |
215 TEST_F(DeferredImageDecoderTest, decodeOnOtherThread) { | 211 TEST_F(DeferredImageDecoderTest, decodeOnOtherThread) { |
216 lazy_decoder_->SetData(data_, true); | 212 lazy_decoder_->SetData(data_, true); |
217 sk_sp<SkImage> image = lazy_decoder_->CreateFrameAtIndex(0); | 213 sk_sp<SkImage> image = lazy_decoder_->CreateFrameAtIndex(0); |
(...skipping 12 matching lines...) Expand all Loading... |
230 | 226 |
231 // Create a thread to rasterize PaintRecord. | 227 // Create a thread to rasterize PaintRecord. |
232 std::unique_ptr<WebThread> thread = | 228 std::unique_ptr<WebThread> thread = |
233 WTF::WrapUnique(Platform::Current()->CreateThread("RasterThread")); | 229 WTF::WrapUnique(Platform::Current()->CreateThread("RasterThread")); |
234 thread->GetWebTaskRunner()->PostTask( | 230 thread->GetWebTaskRunner()->PostTask( |
235 BLINK_FROM_HERE, | 231 BLINK_FROM_HERE, |
236 CrossThreadBind(&RasterizeMain, CrossThreadUnretained(canvas_.get()), | 232 CrossThreadBind(&RasterizeMain, CrossThreadUnretained(canvas_.get()), |
237 record)); | 233 record)); |
238 thread.reset(); | 234 thread.reset(); |
239 EXPECT_EQ(0, decode_request_count_); | 235 EXPECT_EQ(0, decode_request_count_); |
240 | |
241 SkAutoLockPixels auto_lock(bitmap_); | |
242 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), bitmap_.getColor(0, 0)); | 236 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), bitmap_.getColor(0, 0)); |
243 } | 237 } |
244 | 238 |
245 TEST_F(DeferredImageDecoderTest, singleFrameImageLoading) { | 239 TEST_F(DeferredImageDecoderTest, singleFrameImageLoading) { |
246 status_ = ImageFrame::kFramePartial; | 240 status_ = ImageFrame::kFramePartial; |
247 lazy_decoder_->SetData(data_, false); | 241 lazy_decoder_->SetData(data_, false); |
248 EXPECT_FALSE(lazy_decoder_->FrameIsCompleteAtIndex(0)); | 242 EXPECT_FALSE(lazy_decoder_->FrameIsCompleteAtIndex(0)); |
249 sk_sp<SkImage> image = lazy_decoder_->CreateFrameAtIndex(0); | 243 sk_sp<SkImage> image = lazy_decoder_->CreateFrameAtIndex(0); |
250 ASSERT_TRUE(image); | 244 ASSERT_TRUE(image); |
251 unsigned first_id = image->uniqueID(); | 245 unsigned first_id = image->uniqueID(); |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
401 SharedBuffer::Create(data_->Data(), data_->size()); | 395 SharedBuffer::Create(data_->Data(), data_->size()); |
402 EXPECT_EQ(original_data->size(), data_->size()); | 396 EXPECT_EQ(original_data->size(), data_->size()); |
403 lazy_decoder_->SetData(original_data, false); | 397 lazy_decoder_->SetData(original_data, false); |
404 RefPtr<SharedBuffer> new_data = lazy_decoder_->Data(); | 398 RefPtr<SharedBuffer> new_data = lazy_decoder_->Data(); |
405 EXPECT_EQ(original_data->size(), new_data->size()); | 399 EXPECT_EQ(original_data->size(), new_data->size()); |
406 EXPECT_EQ(0, std::memcmp(original_data->Data(), new_data->Data(), | 400 EXPECT_EQ(0, std::memcmp(original_data->Data(), new_data->Data(), |
407 new_data->size())); | 401 new_data->size())); |
408 } | 402 } |
409 | 403 |
410 } // namespace blink | 404 } // namespace blink |
OLD | NEW |