Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(129)

Side by Side Diff: third_party/WebKit/Source/core/loader/resource/ImageResource.h

Issue 2552653002: Explicitly clear the image in the first updateImage() call (Closed)
Patch Set: Rebase Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/loader/resource/ImageResource.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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.
11 11
12 This library is distributed in the hope that it will be useful, 12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Library General Public License for more details. 15 Library General Public License for more details.
16 16
17 You should have received a copy of the GNU Library General Public License 17 You should have received a copy of the GNU Library General Public License
18 along with this library; see the file COPYING.LIB. If not, write to 18 along with this library; see the file COPYING.LIB. If not, write to
19 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 19 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 Boston, MA 02110-1301, USA. 20 Boston, MA 02110-1301, USA.
21 */ 21 */
22 22
23 #ifndef ImageResource_h 23 #ifndef ImageResource_h
24 #define ImageResource_h 24 #define ImageResource_h
25 25
26 #include "core/CoreExport.h" 26 #include "core/CoreExport.h"
27 #include "core/fetch/Resource.h" 27 #include "core/fetch/Resource.h"
28 #include "core/loader/resource/ImageResourceContent.h"
28 #include "core/loader/resource/ImageResourceInfo.h" 29 #include "core/loader/resource/ImageResourceInfo.h"
29 #include "core/loader/resource/MultipartImageResourceParser.h" 30 #include "core/loader/resource/MultipartImageResourceParser.h"
30 #include "platform/Timer.h" 31 #include "platform/Timer.h"
31 #include "platform/heap/Handle.h" 32 #include "platform/heap/Handle.h"
32 #include <memory> 33 #include <memory>
33 34
34 namespace blink { 35 namespace blink {
35 36
36 class FetchRequest; 37 class FetchRequest;
37 class ImageResourceContent; 38 class ImageResourceContent;
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 123
123 bool hasClientsOrObservers() const override; 124 bool hasClientsOrObservers() const override;
124 125
125 void updateImageAndClearBuffer(); 126 void updateImageAndClearBuffer();
126 127
127 void checkNotify() override; 128 void checkNotify() override;
128 129
129 void destroyDecodedDataIfPossible() override; 130 void destroyDecodedDataIfPossible() override;
130 void destroyDecodedDataForFailedRevalidation() override; 131 void destroyDecodedDataForFailedRevalidation() override;
131 132
133 // When UpdateImageOption is UpdateImage but this is the first
134 // updateImage() call, then ClearAndUpdateImage is used instead to enforce
135 // new image creation.
136 void updateImage(PassRefPtr<SharedBuffer>,
137 ImageResourceContent::UpdateImageOption,
138 bool allDataReceived);
132 void flushImageIfNeeded(TimerBase*); 139 void flushImageIfNeeded(TimerBase*);
133 140
134 bool shouldReloadBrokenPlaceholder() const { 141 bool shouldReloadBrokenPlaceholder() const {
135 return m_isPlaceholder && willPaintBrokenImage(); 142 return m_isPlaceholder && willPaintBrokenImage();
136 } 143 }
137 144
138 bool willPaintBrokenImage() const; 145 bool willPaintBrokenImage() const;
139 146
140 Member<ImageResourceContent> m_content; 147 Member<ImageResourceContent> m_content;
141 148
149 // Indicates we should clear the image (and then create a new image) in the
150 // next updateImage() call.
151 bool m_shouldEnforceClearImage = true;
152
142 // TODO(hiroshige): move |m_devicePixelRatioHeaderValue| and 153 // TODO(hiroshige): move |m_devicePixelRatioHeaderValue| and
143 // |m_hasDevicePixelRatioHeaderValue| to ImageResourceContent and update 154 // |m_hasDevicePixelRatioHeaderValue| to ImageResourceContent and update
144 // it via ImageResourceContent::updateImage(). 155 // it via ImageResourceContent::updateImage().
145 float m_devicePixelRatioHeaderValue; 156 float m_devicePixelRatioHeaderValue;
146 157
147 Member<MultipartImageResourceParser> m_multipartParser; 158 Member<MultipartImageResourceParser> m_multipartParser;
148 MultipartParsingState m_multipartParsingState = 159 MultipartParsingState m_multipartParsingState =
149 MultipartParsingState::WaitingForFirstPart; 160 MultipartParsingState::WaitingForFirstPart;
150 bool m_hasDevicePixelRatioHeaderValue; 161 bool m_hasDevicePixelRatioHeaderValue;
151 162
152 // Indicates if the ImageResource is currently scheduling a reload, e.g. 163 // Indicates if the ImageResource is currently scheduling a reload, e.g.
153 // because reloadIfLoFi() was called. 164 // because reloadIfLoFi() was called.
154 bool m_isSchedulingReload; 165 bool m_isSchedulingReload;
155 166
156 // Indicates if this ImageResource is either attempting to load a placeholder 167 // Indicates if this ImageResource is either attempting to load a placeholder
157 // image, or is a (possibly broken) placeholder image. 168 // image, or is a (possibly broken) placeholder image.
158 bool m_isPlaceholder; 169 bool m_isPlaceholder;
159 170
160 Timer<ImageResource> m_flushTimer; 171 Timer<ImageResource> m_flushTimer;
161 double m_lastFlushTime = 0.; 172 double m_lastFlushTime = 0.;
162 }; 173 };
163 174
164 DEFINE_RESOURCE_TYPE_CASTS(Image); 175 DEFINE_RESOURCE_TYPE_CASTS(Image);
165 176
166 } // namespace blink 177 } // namespace blink
167 178
168 #endif 179 #endif
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/loader/resource/ImageResource.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698