| 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 #ifndef ImageResourceContent_h | 5 #ifndef ImageResourceContent_h |
| 6 #define ImageResourceContent_h | 6 #define ImageResourceContent_h |
| 7 | 7 |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include "core/CoreExport.h" | 9 #include "core/CoreExport.h" |
| 10 #include "platform/WebTaskRunner.h" |
| 10 #include "platform/geometry/IntRect.h" | 11 #include "platform/geometry/IntRect.h" |
| 11 #include "platform/geometry/IntSizeHash.h" | 12 #include "platform/geometry/IntSizeHash.h" |
| 12 #include "platform/geometry/LayoutSize.h" | 13 #include "platform/geometry/LayoutSize.h" |
| 13 #include "platform/graphics/Image.h" | 14 #include "platform/graphics/Image.h" |
| 14 #include "platform/graphics/ImageObserver.h" | 15 #include "platform/graphics/ImageObserver.h" |
| 15 #include "platform/graphics/ImageOrientation.h" | 16 #include "platform/graphics/ImageOrientation.h" |
| 16 #include "platform/loader/fetch/ResourceLoadPriority.h" | 17 #include "platform/loader/fetch/ResourceLoadPriority.h" |
| 17 #include "platform/loader/fetch/ResourceStatus.h" | 18 #include "platform/loader/fetch/ResourceStatus.h" |
| 18 #include "platform/weborigin/KURL.h" | 19 #include "platform/weborigin/KURL.h" |
| 19 #include "platform/wtf/AutoReset.h" | 20 #include "platform/wtf/AutoReset.h" |
| (...skipping 20 matching lines...) Expand all Loading... |
| 40 // word 'observer' from ImageResource. | 41 // word 'observer' from ImageResource. |
| 41 // TODO(hiroshige): Rename local variables of type ImageResourceContent to | 42 // TODO(hiroshige): Rename local variables of type ImageResourceContent to |
| 42 // e.g. |imageContent|. Currently they have Resource-like names. | 43 // e.g. |imageContent|. Currently they have Resource-like names. |
| 43 class CORE_EXPORT ImageResourceContent final | 44 class CORE_EXPORT ImageResourceContent final |
| 44 : public GarbageCollectedFinalized<ImageResourceContent>, | 45 : public GarbageCollectedFinalized<ImageResourceContent>, |
| 45 public ImageObserver { | 46 public ImageObserver { |
| 46 USING_GARBAGE_COLLECTED_MIXIN(ImageResourceContent); | 47 USING_GARBAGE_COLLECTED_MIXIN(ImageResourceContent); |
| 47 | 48 |
| 48 public: | 49 public: |
| 49 static ImageResourceContent* Create( | 50 static ImageResourceContent* Create( |
| 51 RefPtr<WebTaskRunner> task_runner, |
| 50 PassRefPtr<blink::Image> image = nullptr) { | 52 PassRefPtr<blink::Image> image = nullptr) { |
| 51 return new ImageResourceContent(std::move(image)); | 53 return new ImageResourceContent(task_runner, std::move(image)); |
| 52 } | 54 } |
| 53 static ImageResourceContent* Fetch(FetchParameters&, ResourceFetcher*); | 55 static ImageResourceContent* Fetch(RefPtr<WebTaskRunner>, |
| 56 FetchParameters&, |
| 57 ResourceFetcher*); |
| 54 | 58 |
| 55 // Returns the nullImage() if the image is not available yet. | 59 // Returns the nullImage() if the image is not available yet. |
| 56 blink::Image* GetImage(); | 60 blink::Image* GetImage(); |
| 57 bool HasImage() const { return image_.Get(); } | 61 bool HasImage() const { return image_.Get(); } |
| 58 | 62 |
| 59 static std::pair<blink::Image*, float> BrokenImage( | 63 static std::pair<blink::Image*, float> BrokenImage( |
| 60 float | 64 float |
| 61 device_scale_factor); // Returns an image and the image's resolution | 65 device_scale_factor); // Returns an image and the image's resolution |
| 62 // scale factor. | 66 // scale factor. |
| 63 | 67 |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 154 PassRefPtr<const SharedBuffer> ResourceBuffer() const; | 158 PassRefPtr<const SharedBuffer> ResourceBuffer() const; |
| 155 bool ShouldUpdateImageImmediately() const; | 159 bool ShouldUpdateImageImmediately() const; |
| 156 bool HasObservers() const { | 160 bool HasObservers() const { |
| 157 return !observers_.IsEmpty() || !finished_observers_.IsEmpty(); | 161 return !observers_.IsEmpty() || !finished_observers_.IsEmpty(); |
| 158 } | 162 } |
| 159 bool IsRefetchableDataFromDiskCache() const { | 163 bool IsRefetchableDataFromDiskCache() const { |
| 160 return is_refetchable_data_from_disk_cache_; | 164 return is_refetchable_data_from_disk_cache_; |
| 161 } | 165 } |
| 162 | 166 |
| 163 private: | 167 private: |
| 164 explicit ImageResourceContent(PassRefPtr<blink::Image> = nullptr); | 168 explicit ImageResourceContent(RefPtr<WebTaskRunner>, |
| 169 PassRefPtr<blink::Image> = nullptr); |
| 165 | 170 |
| 166 // ImageObserver | 171 // ImageObserver |
| 167 void DecodedSizeChangedTo(const blink::Image*, size_t new_size) override; | 172 void DecodedSizeChangedTo(const blink::Image*, size_t new_size) override; |
| 168 bool ShouldPauseAnimation(const blink::Image*) override; | 173 bool ShouldPauseAnimation(const blink::Image*) override; |
| 169 void AnimationAdvanced(const blink::Image*) override; | 174 void AnimationAdvanced(const blink::Image*) override; |
| 170 void ChangedInRect(const blink::Image*, const IntRect&) override; | 175 void ChangedInRect(const blink::Image*, const IntRect&) override; |
| 171 | 176 |
| 172 PassRefPtr<Image> CreateImage(); | 177 PassRefPtr<Image> CreateImage(); |
| 173 void ClearImage(); | 178 void ClearImage(); |
| 174 | 179 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 196 | 201 |
| 197 // Indicates if this resource's encoded image data can be purged and refetched | 202 // Indicates if this resource's encoded image data can be purged and refetched |
| 198 // from disk cache to save memory usage. See crbug/664437. | 203 // from disk cache to save memory usage. See crbug/664437. |
| 199 bool is_refetchable_data_from_disk_cache_; | 204 bool is_refetchable_data_from_disk_cache_; |
| 200 | 205 |
| 201 mutable bool is_add_remove_observer_prohibited_ = false; | 206 mutable bool is_add_remove_observer_prohibited_ = false; |
| 202 | 207 |
| 203 #if DCHECK_IS_ON() | 208 #if DCHECK_IS_ON() |
| 204 bool is_update_image_being_called_ = false; | 209 bool is_update_image_being_called_ = false; |
| 205 #endif | 210 #endif |
| 211 |
| 212 RefPtr<WebTaskRunner> task_runner_; |
| 206 }; | 213 }; |
| 207 | 214 |
| 208 } // namespace blink | 215 } // namespace blink |
| 209 | 216 |
| 210 #endif | 217 #endif |
| OLD | NEW |