OLD | NEW |
1 /* | 1 /* |
2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) | 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) |
3 Copyright (C) 2001 Dirk Mueller <mueller@kde.org> | 3 Copyright (C) 2001 Dirk Mueller <mueller@kde.org> |
4 Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) | 4 Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) |
5 Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. | 5 Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. |
6 | 6 |
7 This library is free software; you can redistribute it and/or | 7 This library is free software; you can redistribute it and/or |
8 modify it under the terms of the GNU Library General Public | 8 modify it under the terms of the GNU Library General Public |
9 License as published by the Free Software Foundation; either | 9 License as published by the Free Software Foundation; either |
10 version 2 of the License, or (at your option) any later version. | 10 version 2 of the License, or (at your option) any later version. |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 static ImageResource* fetch(FetchRequest&, ResourceFetcher*); | 63 static ImageResource* fetch(FetchRequest&, ResourceFetcher*); |
64 | 64 |
65 // TODO(hiroshige): Make create() test-only by refactoring ImageDocument. | 65 // TODO(hiroshige): Make create() test-only by refactoring ImageDocument. |
66 static ImageResource* create(const ResourceRequest&); | 66 static ImageResource* create(const ResourceRequest&); |
67 | 67 |
68 ~ImageResource() override; | 68 ~ImageResource() override; |
69 | 69 |
70 ImageResourceContent* getContent(); | 70 ImageResourceContent* getContent(); |
71 const ImageResourceContent* getContent() const; | 71 const ImageResourceContent* getContent() const; |
72 | 72 |
73 void reloadIfLoFiOrPlaceholderImage(ResourceFetcher*, | 73 ImageResource* reloadIfLoFiOrPlaceholderImage( |
74 ReloadLoFiOrPlaceholderPolicy); | 74 ResourceFetcher*, |
| 75 ReloadLoFiOrPlaceholderPolicy) override; |
75 | 76 |
76 void didAddClient(ResourceClient*) override; | 77 void didAddClient(ResourceClient*) override; |
77 | 78 |
78 ResourcePriority priorityFromObservers() override; | 79 ResourcePriority priorityFromObservers() override; |
79 | 80 |
80 void allClientsAndObserversRemoved() override; | 81 void allClientsAndObserversRemoved() override; |
81 | 82 |
82 bool canReuse(const FetchRequest&) const override; | 83 bool canReuse(const FetchRequest&) const override; |
83 | 84 |
84 PassRefPtr<const SharedBuffer> resourceBuffer() const override; | 85 PassRefPtr<const SharedBuffer> resourceBuffer() const override; |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
122 SecurityOrigin*, | 123 SecurityOrigin*, |
123 ImageResourceInfo::DoesCurrentFrameHaveSingleSecurityOrigin) const; | 124 ImageResourceInfo::DoesCurrentFrameHaveSingleSecurityOrigin) const; |
124 | 125 |
125 bool hasClientsOrObservers() const override; | 126 bool hasClientsOrObservers() const override; |
126 | 127 |
127 void updateImageAndClearBuffer(); | 128 void updateImageAndClearBuffer(); |
128 void updateImage(PassRefPtr<SharedBuffer>, | 129 void updateImage(PassRefPtr<SharedBuffer>, |
129 ImageResourceContent::UpdateImageOption, | 130 ImageResourceContent::UpdateImageOption, |
130 bool allDataReceived); | 131 bool allDataReceived); |
131 | 132 |
132 void checkNotify() override; | |
133 | |
134 void destroyDecodedDataIfPossible() override; | 133 void destroyDecodedDataIfPossible() override; |
135 void destroyDecodedDataForFailedRevalidation() override; | 134 void destroyDecodedDataForFailedRevalidation() override; |
136 | 135 |
137 void flushImageIfNeeded(TimerBase*); | 136 void flushImageIfNeeded(TimerBase*); |
138 | 137 |
139 bool shouldReloadBrokenPlaceholder() const; | 138 bool shouldReloadBrokenPlaceholder() const; |
140 | 139 |
| 140 void detachContent(); |
| 141 |
141 Member<ImageResourceContent> m_content; | 142 Member<ImageResourceContent> m_content; |
142 | 143 |
143 // TODO(hiroshige): move |m_devicePixelRatioHeaderValue| and | 144 // TODO(hiroshige): move |m_devicePixelRatioHeaderValue| and |
144 // |m_hasDevicePixelRatioHeaderValue| to ImageResourceContent and update | 145 // |m_hasDevicePixelRatioHeaderValue| to ImageResourceContent and update |
145 // it via ImageResourceContent::updateImage(). | 146 // it via ImageResourceContent::updateImage(). |
146 float m_devicePixelRatioHeaderValue; | 147 float m_devicePixelRatioHeaderValue; |
147 | 148 |
148 Member<MultipartImageResourceParser> m_multipartParser; | 149 Member<MultipartImageResourceParser> m_multipartParser; |
149 MultipartParsingState m_multipartParsingState = | 150 MultipartParsingState m_multipartParsingState = |
150 MultipartParsingState::WaitingForFirstPart; | 151 MultipartParsingState::WaitingForFirstPart; |
151 bool m_hasDevicePixelRatioHeaderValue; | 152 bool m_hasDevicePixelRatioHeaderValue; |
152 | 153 |
153 // Indicates if the ImageResource is currently scheduling a reload, e.g. | |
154 // because reloadIfLoFi() was called. | |
155 bool m_isSchedulingReload; | |
156 | |
157 // Indicates if this ImageResource is either attempting to load a placeholder | 154 // Indicates if this ImageResource is either attempting to load a placeholder |
158 // image, or is a (possibly broken) placeholder image. | 155 // image, or is a (possibly broken) placeholder image. |
159 enum class PlaceholderOption { | 156 enum class PlaceholderOption { |
160 // Do not show or reload placeholder. | 157 // Do not show or reload placeholder. |
161 DoNotReloadPlaceholder, | 158 DoNotReloadPlaceholder, |
162 | 159 |
163 // Do not show placeholder, reload only when decode error occurs. | 160 // Do not show placeholder, reload only when decode error occurs. |
164 ReloadPlaceholderOnDecodeError, | 161 ReloadPlaceholderOnDecodeError, |
165 | 162 |
166 // Show placeholder and reload. | 163 // Show placeholder and reload. |
167 ShowAndReloadPlaceholderAlways, | 164 ShowAndReloadPlaceholderAlways, |
168 }; | 165 }; |
169 PlaceholderOption m_placeholderOption; | 166 PlaceholderOption m_placeholderOption; |
170 | 167 |
171 Timer<ImageResource> m_flushTimer; | 168 Timer<ImageResource> m_flushTimer; |
172 double m_lastFlushTime = 0.; | 169 double m_lastFlushTime = 0.; |
173 }; | 170 }; |
174 | 171 |
175 DEFINE_RESOURCE_TYPE_CASTS(Image); | 172 DEFINE_RESOURCE_TYPE_CASTS(Image); |
176 | 173 |
177 } // namespace blink | 174 } // namespace blink |
178 | 175 |
179 #endif | 176 #endif |
OLD | NEW |