| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "core/loader/resource/ImageResourceContent.h" | 5 #include "core/loader/resource/ImageResourceContent.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "core/loader/resource/ImageResource.h" | 9 #include "core/loader/resource/ImageResource.h" |
| 10 #include "core/loader/resource/ImageResourceInfo.h" | 10 #include "core/loader/resource/ImageResourceInfo.h" |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 const KURL&, | 61 const KURL&, |
| 62 const AtomicString& initiator_name) override {} | 62 const AtomicString& initiator_name) override {} |
| 63 | 63 |
| 64 const KURL url_; | 64 const KURL url_; |
| 65 const ResourceResponse response_; | 65 const ResourceResponse response_; |
| 66 const ResourceError error_; | 66 const ResourceError error_; |
| 67 }; | 67 }; |
| 68 | 68 |
| 69 } // namespace | 69 } // namespace |
| 70 | 70 |
| 71 ImageResourceContent::ImageResourceContent(PassRefPtr<blink::Image> image) | 71 ImageResourceContent::ImageResourceContent(RefPtr<WebTaskRunner> task_runner, |
| 72 : image_(std::move(image)), is_refetchable_data_from_disk_cache_(true) { | 72 PassRefPtr<blink::Image> image) |
| 73 : image_(std::move(image)), |
| 74 is_refetchable_data_from_disk_cache_(true), |
| 75 task_runner_(task_runner) { |
| 73 DEFINE_STATIC_LOCAL(NullImageResourceInfo, null_info, | 76 DEFINE_STATIC_LOCAL(NullImageResourceInfo, null_info, |
| 74 (new NullImageResourceInfo())); | 77 (new NullImageResourceInfo())); |
| 75 info_ = &null_info; | 78 info_ = &null_info; |
| 76 } | 79 } |
| 77 | 80 |
| 78 ImageResourceContent* ImageResourceContent::Fetch(FetchParameters& params, | 81 ImageResourceContent* ImageResourceContent::Fetch( |
| 79 ResourceFetcher* fetcher) { | 82 RefPtr<WebTaskRunner> task_runner, |
| 83 FetchParameters& params, |
| 84 ResourceFetcher* fetcher) { |
| 80 // TODO(hiroshige): Remove direct references to ImageResource by making | 85 // TODO(hiroshige): Remove direct references to ImageResource by making |
| 81 // the dependencies around ImageResource and ImageResourceContent cleaner. | 86 // the dependencies around ImageResource and ImageResourceContent cleaner. |
| 82 ImageResource* resource = ImageResource::Fetch(params, fetcher); | 87 ImageResource* resource = ImageResource::Fetch(task_runner, params, fetcher); |
| 83 if (!resource) | 88 if (!resource) |
| 84 return nullptr; | 89 return nullptr; |
| 85 return resource->GetContent(); | 90 return resource->GetContent(); |
| 86 } | 91 } |
| 87 | 92 |
| 88 void ImageResourceContent::SetImageResourceInfo(ImageResourceInfo* info) { | 93 void ImageResourceContent::SetImageResourceInfo(ImageResourceInfo* info) { |
| 89 info_ = info; | 94 info_ = info; |
| 90 } | 95 } |
| 91 | 96 |
| 92 DEFINE_TRACE(ImageResourceContent) { | 97 DEFINE_TRACE(ImageResourceContent) { |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 302 observer->ImageNotifyFinished(this); | 307 observer->ImageNotifyFinished(this); |
| 303 } | 308 } |
| 304 } | 309 } |
| 305 } | 310 } |
| 306 } | 311 } |
| 307 } | 312 } |
| 308 | 313 |
| 309 PassRefPtr<Image> ImageResourceContent::CreateImage() { | 314 PassRefPtr<Image> ImageResourceContent::CreateImage() { |
| 310 if (info_->GetResponse().MimeType() == "image/svg+xml") | 315 if (info_->GetResponse().MimeType() == "image/svg+xml") |
| 311 return SVGImage::Create(this); | 316 return SVGImage::Create(this); |
| 312 return BitmapImage::Create(this); | 317 return BitmapImage::Create(task_runner_, this); |
| 313 } | 318 } |
| 314 | 319 |
| 315 void ImageResourceContent::ClearImage() { | 320 void ImageResourceContent::ClearImage() { |
| 316 if (!image_) | 321 if (!image_) |
| 317 return; | 322 return; |
| 318 int64_t length = image_->Data() ? image_->Data()->size() : 0; | 323 int64_t length = image_->Data() ? image_->Data()->size() : 0; |
| 319 v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory(-length); | 324 v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory(-length); |
| 320 | 325 |
| 321 // If our Image has an observer, it's always us so we need to clear the back | 326 // If our Image has an observer, it's always us so we need to clear the back |
| 322 // pointer before dropping our reference. | 327 // pointer before dropping our reference. |
| (...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 511 | 516 |
| 512 const ResourceResponse& ImageResourceContent::GetResponse() const { | 517 const ResourceResponse& ImageResourceContent::GetResponse() const { |
| 513 return info_->GetResponse(); | 518 return info_->GetResponse(); |
| 514 } | 519 } |
| 515 | 520 |
| 516 const ResourceError& ImageResourceContent::GetResourceError() const { | 521 const ResourceError& ImageResourceContent::GetResourceError() const { |
| 517 return info_->GetResourceError(); | 522 return info_->GetResourceError(); |
| 518 } | 523 } |
| 519 | 524 |
| 520 } // namespace blink | 525 } // namespace blink |
| OLD | NEW |