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

Unified Diff: third_party/WebKit/Source/core/loader/resource/ImageResource.cpp

Issue 2797993007: Show image placeholders on dimension decode error (Closed)
Patch Set: fix comment Created 3 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/loader/resource/ImageResource.cpp
diff --git a/third_party/WebKit/Source/core/loader/resource/ImageResource.cpp b/third_party/WebKit/Source/core/loader/resource/ImageResource.cpp
index 2124f45c950eebeb31443d97ec0fcd87ed4ef2a6..472011ecc1d4f824c1980053de6f0114e20a7220 100644
--- a/third_party/WebKit/Source/core/loader/resource/ImageResource.cpp
+++ b/third_party/WebKit/Source/core/loader/resource/ImageResource.cpp
@@ -461,6 +461,7 @@ void ImageResource::ResponseReceived(
bool ImageResource::ShouldShowPlaceholder() const {
switch (placeholder_option_) {
case PlaceholderOption::kShowAndReloadPlaceholderAlways:
+ case PlaceholderOption::kShowAndDoNotReloadPlaceholder:
return true;
case PlaceholderOption::kReloadPlaceholderOnDecodeError:
case PlaceholderOption::kDoNotReloadPlaceholder:
@@ -476,6 +477,7 @@ bool ImageResource::ShouldReloadBrokenPlaceholder() const {
return ErrorOccurred();
case PlaceholderOption::kReloadPlaceholderOnDecodeError:
return GetStatus() == ResourceStatus::kDecodeError;
+ case PlaceholderOption::kShowAndDoNotReloadPlaceholder:
case PlaceholderOption::kDoNotReloadPlaceholder:
return false;
}
@@ -518,6 +520,8 @@ void ImageResource::ReloadIfLoFiOrPlaceholderImage(
// The reloaded image should not use any previews transformations.
WebURLRequest::PreviewsState previews_state_for_reload =
WebURLRequest::kPreviewsNoTransform;
+ WebURLRequest::PreviewsState old_previews_state =
+ GetResourceRequest().GetPreviewsState();
if (policy == kReloadIfNeeded && (GetResourceRequest().GetPreviewsState() &
WebURLRequest::kClientLoFiOn)) {
@@ -532,7 +536,13 @@ void ImageResource::ReloadIfLoFiOrPlaceholderImage(
if (placeholder_option_ != PlaceholderOption::kDoNotReloadPlaceholder)
ClearRangeRequestHeader();
- placeholder_option_ = PlaceholderOption::kDoNotReloadPlaceholder;
+
+ if (old_previews_state & WebURLRequest::kClientLoFiOn &&
+ policy != kReloadAlways) {
+ placeholder_option_ = PlaceholderOption::kShowAndDoNotReloadPlaceholder;
+ } else {
+ placeholder_option_ = PlaceholderOption::kDoNotReloadPlaceholder;
+ }
if (IsLoading()) {
Loader()->Cancel();

Powered by Google App Engine
This is Rietveld 408576698