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

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

Issue 2527353002: Phase II Step 3: Reload LoFi/placeholder images via new ImageResource
Patch Set: Reflect comments and rebase Created 3 years, 9 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.
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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