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 "core/CoreExport.h" | 8 #include "core/CoreExport.h" |
9 #include "platform/geometry/IntRect.h" | 9 #include "platform/geometry/IntRect.h" |
10 #include "platform/geometry/IntSizeHash.h" | 10 #include "platform/geometry/IntSizeHash.h" |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 | 84 |
85 void addObserver(ImageResourceObserver*); | 85 void addObserver(ImageResourceObserver*); |
86 void removeObserver(ImageResourceObserver*); | 86 void removeObserver(ImageResourceObserver*); |
87 | 87 |
88 bool isSizeAvailable() const { | 88 bool isSizeAvailable() const { |
89 return m_sizeAvailable == Image::SizeAvailable; | 89 return m_sizeAvailable == Image::SizeAvailable; |
90 } | 90 } |
91 | 91 |
92 DECLARE_TRACE(); | 92 DECLARE_TRACE(); |
93 | 93 |
| 94 // ResourceStatus and deriving predicates. |
| 95 // ImageResourceContent::getStatus() can be different from |
| 96 // ImageResource::getStatus(). Use ImageResourceContent::getStatus(). |
| 97 ResourceStatus getStatus() const; |
| 98 bool isLoaded() const; |
| 99 bool isLoading() const; |
| 100 bool errorOccurred() const; |
| 101 bool loadFailedOrCanceled() const; |
| 102 |
94 // Redirecting methods to Resource. | 103 // Redirecting methods to Resource. |
95 const KURL& url() const; | 104 const KURL& url() const; |
96 bool isAccessAllowed(SecurityOrigin*); | 105 bool isAccessAllowed(SecurityOrigin*); |
97 const ResourceResponse& response() const; | 106 const ResourceResponse& response() const; |
98 bool isLoaded() const; | |
99 bool isLoading() const; | |
100 bool errorOccurred() const; | |
101 bool loadFailedOrCanceled() const; | |
102 ResourceStatus getStatus() const; | |
103 const ResourceError& resourceError() const; | 107 const ResourceError& resourceError() const; |
104 | 108 |
105 // For FrameSerializer. | 109 // For FrameSerializer. |
106 bool hasCacheControlNoStoreHeader() const; | 110 bool hasCacheControlNoStoreHeader() const; |
107 | 111 |
108 void emulateLoadStartedForInspector(ResourceFetcher*, | 112 void emulateLoadStartedForInspector(ResourceFetcher*, |
109 const KURL&, | 113 const KURL&, |
110 const AtomicString& initiatorName); | 114 const AtomicString& initiatorName); |
111 | 115 |
112 void setNotRefetchableDataFromDiskCache() { | 116 void setNotRefetchableDataFromDiskCache() { |
(...skipping 20 matching lines...) Expand all Loading... |
133 ClearImageAndNotifyObservers, | 137 ClearImageAndNotifyObservers, |
134 }; | 138 }; |
135 enum class UpdateImageResult { | 139 enum class UpdateImageResult { |
136 NoDecodeError, | 140 NoDecodeError, |
137 | 141 |
138 // Decode error occurred. Observers are not notified. | 142 // Decode error occurred. Observers are not notified. |
139 // Only occurs when UpdateImage or ClearAndUpdateImage is specified. | 143 // Only occurs when UpdateImage or ClearAndUpdateImage is specified. |
140 ShouldDecodeError, | 144 ShouldDecodeError, |
141 }; | 145 }; |
142 WARN_UNUSED_RESULT UpdateImageResult updateImage(PassRefPtr<SharedBuffer>, | 146 WARN_UNUSED_RESULT UpdateImageResult updateImage(PassRefPtr<SharedBuffer>, |
| 147 ResourceStatus, |
143 UpdateImageOption, | 148 UpdateImageOption, |
144 bool allDataReceived); | 149 bool allDataReceived); |
145 | 150 |
| 151 void notifyStartLoad(); |
146 void destroyDecodedData(); | 152 void destroyDecodedData(); |
147 void doResetAnimation(); | 153 void doResetAnimation(); |
148 | 154 |
149 void setImageResourceInfo(ImageResourceInfo*); | 155 void setImageResourceInfo(ImageResourceInfo*); |
150 | 156 |
151 ResourcePriority priorityFromObservers() const; | 157 ResourcePriority priorityFromObservers() const; |
152 PassRefPtr<const SharedBuffer> resourceBuffer() const; | 158 PassRefPtr<const SharedBuffer> resourceBuffer() const; |
153 bool shouldUpdateImageImmediately() const; | 159 bool shouldUpdateImageImmediately() const; |
154 bool hasObservers() const { | 160 bool hasObservers() const { |
155 return !m_observers.isEmpty() || !m_finishedObservers.isEmpty(); | 161 return !m_observers.isEmpty() || !m_finishedObservers.isEmpty(); |
(...skipping 12 matching lines...) Expand all Loading... |
168 void changedInRect(const blink::Image*, const IntRect&) override; | 174 void changedInRect(const blink::Image*, const IntRect&) override; |
169 | 175 |
170 PassRefPtr<Image> createImage(); | 176 PassRefPtr<Image> createImage(); |
171 void clearImage(); | 177 void clearImage(); |
172 | 178 |
173 enum NotifyFinishOption { ShouldNotifyFinish, DoNotNotifyFinish }; | 179 enum NotifyFinishOption { ShouldNotifyFinish, DoNotNotifyFinish }; |
174 | 180 |
175 // If not null, changeRect is the changed part of the image. | 181 // If not null, changeRect is the changed part of the image. |
176 void notifyObservers(NotifyFinishOption, const IntRect* changeRect = nullptr); | 182 void notifyObservers(NotifyFinishOption, const IntRect* changeRect = nullptr); |
177 void markObserverFinished(ImageResourceObserver*); | 183 void markObserverFinished(ImageResourceObserver*); |
| 184 void updateStatus(ResourceStatus, NotifyFinishOption); |
178 | 185 |
179 Member<ImageResourceInfo> m_info; | 186 Member<ImageResourceInfo> m_info; |
| 187 ResourceStatus m_status = ResourceStatus::NotStarted; |
180 | 188 |
181 RefPtr<blink::Image> m_image; | 189 RefPtr<blink::Image> m_image; |
182 | 190 |
183 HashCountedSet<ImageResourceObserver*> m_observers; | 191 HashCountedSet<ImageResourceObserver*> m_observers; |
184 HashCountedSet<ImageResourceObserver*> m_finishedObservers; | 192 HashCountedSet<ImageResourceObserver*> m_finishedObservers; |
185 | 193 |
186 Image::SizeAvailability m_sizeAvailable = Image::SizeUnavailable; | 194 Image::SizeAvailability m_sizeAvailable = Image::SizeUnavailable; |
187 | 195 |
188 // Indicates if this resource's encoded image data can be purged and refetched | 196 // Indicates if this resource's encoded image data can be purged and refetched |
189 // from disk cache to save memory usage. See crbug/664437. | 197 // from disk cache to save memory usage. See crbug/664437. |
190 bool m_isRefetchableDataFromDiskCache; | 198 bool m_isRefetchableDataFromDiskCache; |
191 | 199 |
192 #if DCHECK_IS_ON() | 200 #if DCHECK_IS_ON() |
193 bool m_isUpdateImageBeingCalled = false; | 201 bool m_isUpdateImageBeingCalled = false; |
194 #endif | 202 #endif |
195 }; | 203 }; |
196 | 204 |
197 } // namespace blink | 205 } // namespace blink |
198 | 206 |
199 #endif | 207 #endif |
OLD | NEW |