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

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 4 years 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 whether updateImage() is called for this resource, or for this
150 // part (in case of multipart images), and is used for enforcing creation of
151 // new blink::Image in ImageResourceContent for the first updateImage().
152 bool m_isUpdateImageCalled = false;
kouhei (in TOK) 2016/12/19 01:32:04 This flag name is quite confusing, as onePartIn~()
hiroshige 2016/12/27 23:25:31 Done in Patch Set 10.
153
142 // TODO(hiroshige): move |m_devicePixelRatioHeaderValue| and 154 // TODO(hiroshige): move |m_devicePixelRatioHeaderValue| and
143 // |m_hasDevicePixelRatioHeaderValue| to ImageResourceContent and update 155 // |m_hasDevicePixelRatioHeaderValue| to ImageResourceContent and update
144 // it via ImageResourceContent::updateImage(). 156 // it via ImageResourceContent::updateImage().
145 float m_devicePixelRatioHeaderValue; 157 float m_devicePixelRatioHeaderValue;
146 158
147 Member<MultipartImageResourceParser> m_multipartParser; 159 Member<MultipartImageResourceParser> m_multipartParser;
148 MultipartParsingState m_multipartParsingState = 160 MultipartParsingState m_multipartParsingState =
149 MultipartParsingState::WaitingForFirstPart; 161 MultipartParsingState::WaitingForFirstPart;
150 bool m_hasDevicePixelRatioHeaderValue; 162 bool m_hasDevicePixelRatioHeaderValue;
151 163
152 // Indicates if the ImageResource is currently scheduling a reload, e.g. 164 // Indicates if the ImageResource is currently scheduling a reload, e.g.
153 // because reloadIfLoFi() was called. 165 // because reloadIfLoFi() was called.
154 bool m_isSchedulingReload; 166 bool m_isSchedulingReload;
155 167
156 // Indicates if this ImageResource is either attempting to load a placeholder 168 // Indicates if this ImageResource is either attempting to load a placeholder
157 // image, or is a (possibly broken) placeholder image. 169 // image, or is a (possibly broken) placeholder image.
158 bool m_isPlaceholder; 170 bool m_isPlaceholder;
159 171
160 Timer<ImageResource> m_flushTimer; 172 Timer<ImageResource> m_flushTimer;
161 double m_lastFlushTime = 0.; 173 double m_lastFlushTime = 0.;
162 }; 174 };
163 175
164 DEFINE_RESOURCE_TYPE_CASTS(Image); 176 DEFINE_RESOURCE_TYPE_CASTS(Image);
165 177
166 } // namespace blink 178 } // namespace blink
167 179
168 #endif 180 #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