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

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

Issue 2810423003: Schedule bitmap animation timers on the compositor task runner. (Closed)
Patch Set: fix up comment about a method changed by blink reformat Created 3 years, 7 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
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) 2002 Waldo Bastian (bastian@kde.org) 4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org)
5 Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) 5 Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
6 Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. 6 Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved.
7 7
8 This library is free software; you can redistribute it and/or 8 This library is free software; you can redistribute it and/or
9 modify it under the terms of the GNU Library General Public 9 modify it under the terms of the GNU Library General Public
10 License as published by the Free Software Foundation; either 10 License as published by the Free Software Foundation; either
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 initiator_name); 122 initiator_name);
123 } 123 }
124 124
125 const Member<ImageResource> resource_; 125 const Member<ImageResource> resource_;
126 }; 126 };
127 127
128 class ImageResource::ImageResourceFactory : public ResourceFactory { 128 class ImageResource::ImageResourceFactory : public ResourceFactory {
129 STACK_ALLOCATED(); 129 STACK_ALLOCATED();
130 130
131 public: 131 public:
132 ImageResourceFactory(const FetchParameters& fetch_params) 132 ImageResourceFactory(const FetchParameters& fetch_params,
133 : ResourceFactory(Resource::kImage), fetch_params_(&fetch_params) {} 133 RefPtr<WebTaskRunner> task_runner)
134 : ResourceFactory(Resource::kImage),
135 fetch_params_(&fetch_params),
136 task_runner_(task_runner) {}
134 137
135 Resource* Create(const ResourceRequest& request, 138 Resource* Create(const ResourceRequest& request,
136 const ResourceLoaderOptions& options, 139 const ResourceLoaderOptions& options,
137 const String&) const override { 140 const String&) const override {
138 return new ImageResource(request, options, ImageResourceContent::Create(), 141 return new ImageResource(task_runner_, request, options,
142 ImageResourceContent::Create(task_runner_),
139 fetch_params_->GetPlaceholderImageRequestType() == 143 fetch_params_->GetPlaceholderImageRequestType() ==
140 FetchParameters::kAllowPlaceholder); 144 FetchParameters::kAllowPlaceholder);
141 } 145 }
142 146
143 private: 147 private:
144 // Weak, unowned pointer. Must outlive |this|. 148 // Weak, unowned pointer. Must outlive |this|.
145 const FetchParameters* fetch_params_; 149 const FetchParameters* fetch_params_;
150 RefPtr<WebTaskRunner> task_runner_;
146 }; 151 };
147 152
148 ImageResource* ImageResource::Fetch(FetchParameters& params, 153 ImageResource* ImageResource::Fetch(RefPtr<WebTaskRunner> task_runner,
154 FetchParameters& params,
149 ResourceFetcher* fetcher) { 155 ResourceFetcher* fetcher) {
150 if (params.GetResourceRequest().GetRequestContext() == 156 if (params.GetResourceRequest().GetRequestContext() ==
151 WebURLRequest::kRequestContextUnspecified) { 157 WebURLRequest::kRequestContextUnspecified) {
152 params.SetRequestContext(WebURLRequest::kRequestContextImage); 158 params.SetRequestContext(WebURLRequest::kRequestContextImage);
153 } 159 }
154 if (fetcher->Context().PageDismissalEventBeingDispatched()) { 160 if (fetcher->Context().PageDismissalEventBeingDispatched()) {
155 KURL request_url = params.GetResourceRequest().Url(); 161 KURL request_url = params.GetResourceRequest().Url();
156 if (request_url.IsValid()) { 162 if (request_url.IsValid()) {
157 ResourceRequestBlockedReason block_reason = fetcher->Context().CanRequest( 163 ResourceRequestBlockedReason block_reason = fetcher->Context().CanRequest(
158 Resource::kImage, params.GetResourceRequest(), request_url, 164 Resource::kImage, params.GetResourceRequest(), request_url,
159 params.Options(), 165 params.Options(),
160 /* Don't send security violation reports for speculative preloads */ 166 /* Don't send security violation reports for speculative preloads */
161 params.IsSpeculativePreload() 167 params.IsSpeculativePreload()
162 ? SecurityViolationReportingPolicy::kSuppressReporting 168 ? SecurityViolationReportingPolicy::kSuppressReporting
163 : SecurityViolationReportingPolicy::kReport, 169 : SecurityViolationReportingPolicy::kReport,
164 params.GetOriginRestriction()); 170 params.GetOriginRestriction());
165 if (block_reason == ResourceRequestBlockedReason::kNone) 171 if (block_reason == ResourceRequestBlockedReason::kNone)
166 fetcher->Context().SendImagePing(request_url); 172 fetcher->Context().SendImagePing(request_url);
167 } 173 }
168 return nullptr; 174 return nullptr;
169 } 175 }
170 176
171 return ToImageResource( 177 return ToImageResource(fetcher->RequestResource(
172 fetcher->RequestResource(params, ImageResourceFactory(params))); 178 params, ImageResourceFactory(params, task_runner)));
173 } 179 }
174 180
175 bool ImageResource::CanReuse(const FetchParameters& params) const { 181 bool ImageResource::CanReuse(const FetchParameters& params) const {
176 // If the image is a placeholder, but this fetch doesn't allow a 182 // If the image is a placeholder, but this fetch doesn't allow a
177 // placeholder, then do not reuse this resource. 183 // placeholder, then do not reuse this resource.
178 if (params.GetPlaceholderImageRequestType() != 184 if (params.GetPlaceholderImageRequestType() !=
179 FetchParameters::kAllowPlaceholder && 185 FetchParameters::kAllowPlaceholder &&
180 placeholder_option_ != PlaceholderOption::kDoNotReloadPlaceholder) 186 placeholder_option_ != PlaceholderOption::kDoNotReloadPlaceholder)
181 return false; 187 return false;
182 return true; 188 return true;
183 } 189 }
184 190
185 ImageResource* ImageResource::Create(const ResourceRequest& request) { 191 ImageResource* ImageResource::Create(RefPtr<WebTaskRunner> task_runner,
186 return new ImageResource(request, ResourceLoaderOptions(), 192 const ResourceRequest& request) {
187 ImageResourceContent::Create(), false); 193 return new ImageResource(task_runner, request, ResourceLoaderOptions(),
194 ImageResourceContent::Create(task_runner), false);
188 } 195 }
189 196
190 ImageResource::ImageResource(const ResourceRequest& resource_request, 197 ImageResource::ImageResource(RefPtr<WebTaskRunner> task_runner,
198 const ResourceRequest& resource_request,
191 const ResourceLoaderOptions& options, 199 const ResourceLoaderOptions& options,
192 ImageResourceContent* content, 200 ImageResourceContent* content,
193 bool is_placeholder) 201 bool is_placeholder)
194 : Resource(resource_request, kImage, options), 202 : Resource(resource_request, kImage, options),
195 content_(content), 203 content_(content),
196 device_pixel_ratio_header_value_(1.0), 204 device_pixel_ratio_header_value_(1.0),
197 has_device_pixel_ratio_header_value_(false), 205 has_device_pixel_ratio_header_value_(false),
198 is_scheduling_reload_(false), 206 is_scheduling_reload_(false),
199 placeholder_option_( 207 placeholder_option_(
200 is_placeholder ? PlaceholderOption::kShowAndReloadPlaceholderAlways 208 is_placeholder ? PlaceholderOption::kShowAndReloadPlaceholderAlways
201 : PlaceholderOption::kDoNotReloadPlaceholder), 209 : PlaceholderOption::kDoNotReloadPlaceholder),
202 flush_timer_(this, &ImageResource::FlushImageIfNeeded) { 210 flush_timer_(this, &ImageResource::FlushImageIfNeeded),
211 task_runner_(task_runner) {
203 DCHECK(GetContent()); 212 DCHECK(GetContent());
204 RESOURCE_LOADING_DVLOG(1) << "new ImageResource(ResourceRequest) " << this; 213 RESOURCE_LOADING_DVLOG(1) << "new ImageResource(ResourceRequest) " << this;
205 GetContent()->SetImageResourceInfo(new ImageResourceInfoImpl(this)); 214 GetContent()->SetImageResourceInfo(new ImageResourceInfoImpl(this));
206 } 215 }
207 216
208 ImageResource::~ImageResource() { 217 ImageResource::~ImageResource() {
209 RESOURCE_LOADING_DVLOG(1) << "~ImageResource " << this; 218 RESOURCE_LOADING_DVLOG(1) << "~ImageResource " << this;
210 } 219 }
211 220
212 DEFINE_TRACE(ImageResource) { 221 DEFINE_TRACE(ImageResource) {
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after
594 // reloading in Step 3 due to notifyObservers()'s 603 // reloading in Step 3 due to notifyObservers()'s
595 // schedulingReloadOrShouldReloadBrokenPlaceholder() check. 604 // schedulingReloadOrShouldReloadBrokenPlaceholder() check.
596 // 3. reloadIfLoFiOrPlaceholderImage() is called via ResourceFetcher 605 // 3. reloadIfLoFiOrPlaceholderImage() is called via ResourceFetcher
597 // (a) via didFinishLoading() called in decodeError(), or 606 // (a) via didFinishLoading() called in decodeError(), or
598 // (b) after returning ImageResource::updateImage(). 607 // (b) after returning ImageResource::updateImage().
599 DecodeError(all_data_received); 608 DecodeError(all_data_received);
600 } 609 }
601 } 610 }
602 611
603 } // namespace blink 612 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698