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

Side by Side Diff: components/search_provider_logos/logo_tracker.cc

Issue 497723004: Remove implicit conversions from scoped_refptr to T* in components/search_provider_logos/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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 | « components/search_provider_logos/logo_cache_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/search_provider_logos/logo_tracker.h" 5 #include "components/search_provider_logos/logo_tracker.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/task_runner_util.h" 10 #include "base/task_runner_util.h"
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 append_fingerprint_func_ = append_fingerprint_func; 100 append_fingerprint_func_ = append_fingerprint_func;
101 } 101 }
102 102
103 void LogoTracker::GetLogo(LogoObserver* observer) { 103 void LogoTracker::GetLogo(LogoObserver* observer) {
104 DCHECK(!logo_url_.is_empty()); 104 DCHECK(!logo_url_.is_empty());
105 logo_observers_.AddObserver(observer); 105 logo_observers_.AddObserver(observer);
106 106
107 if (is_idle_) { 107 if (is_idle_) {
108 is_idle_ = false; 108 is_idle_ = false;
109 base::PostTaskAndReplyWithResult( 109 base::PostTaskAndReplyWithResult(
110 file_task_runner_, 110 file_task_runner_.get(),
111 FROM_HERE, 111 FROM_HERE,
112 base::Bind(&GetLogoFromCacheOnFileThread, 112 base::Bind(&GetLogoFromCacheOnFileThread,
113 logo_cache_, 113 logo_cache_,
114 logo_url_, 114 logo_url_,
115 clock_->Now()), 115 clock_->Now()),
116 base::Bind(&LogoTracker::OnCachedLogoRead, 116 base::Bind(&LogoTracker::OnCachedLogoRead,
117 weak_ptr_factory_.GetWeakPtr())); 117 weak_ptr_factory_.GetWeakPtr()));
118 } else if (is_cached_logo_valid_) { 118 } else if (is_cached_logo_valid_) {
119 observer->OnLogoAvailable(cached_logo_.get(), true); 119 observer->OnLogoAvailable(cached_logo_.get(), true);
120 } 120 }
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 GURL url; 201 GURL url;
202 if (cached_logo_ && !cached_logo_->metadata.fingerprint.empty() && 202 if (cached_logo_ && !cached_logo_->metadata.fingerprint.empty() &&
203 cached_logo_->metadata.expiration_time >= clock_->Now()) { 203 cached_logo_->metadata.expiration_time >= clock_->Now()) {
204 url = append_fingerprint_func_.Run(logo_url_, 204 url = append_fingerprint_func_.Run(logo_url_,
205 cached_logo_->metadata.fingerprint); 205 cached_logo_->metadata.fingerprint);
206 } else { 206 } else {
207 url = logo_url_; 207 url = logo_url_;
208 } 208 }
209 209
210 fetcher_.reset(net::URLFetcher::Create(url, net::URLFetcher::GET, this)); 210 fetcher_.reset(net::URLFetcher::Create(url, net::URLFetcher::GET, this));
211 fetcher_->SetRequestContext(request_context_getter_); 211 fetcher_->SetRequestContext(request_context_getter_.get());
212 fetcher_->Start(); 212 fetcher_->Start();
213 } 213 }
214 214
215 void LogoTracker::OnFreshLogoParsed(scoped_ptr<EncodedLogo> logo) { 215 void LogoTracker::OnFreshLogoParsed(scoped_ptr<EncodedLogo> logo) {
216 DCHECK(!is_idle_); 216 DCHECK(!is_idle_);
217 217
218 if (logo) 218 if (logo)
219 logo->metadata.source_url = logo_url_.spec(); 219 logo->metadata.source_url = logo_url_.spec();
220 220
221 if (!logo || !logo->encoded_image) { 221 if (!logo || !logo->encoded_image.get()) {
222 OnFreshLogoAvailable(logo.Pass(), SkBitmap()); 222 OnFreshLogoAvailable(logo.Pass(), SkBitmap());
223 } else { 223 } else {
224 // Store the value of logo->encoded_image for use below. This ensures that 224 // Store the value of logo->encoded_image for use below. This ensures that
225 // logo->encoded_image is evaulated before base::Passed(&logo), which sets 225 // logo->encoded_image is evaulated before base::Passed(&logo), which sets
226 // logo to NULL. 226 // logo to NULL.
227 scoped_refptr<base::RefCountedString> encoded_image = logo->encoded_image; 227 scoped_refptr<base::RefCountedString> encoded_image = logo->encoded_image;
228 logo_delegate_->DecodeUntrustedImage( 228 logo_delegate_->DecodeUntrustedImage(
229 encoded_image, 229 encoded_image,
230 base::Bind(&LogoTracker::OnFreshLogoAvailable, 230 base::Bind(&LogoTracker::OnFreshLogoAvailable,
231 weak_ptr_factory_.GetWeakPtr(), 231 weak_ptr_factory_.GetWeakPtr(),
232 base::Passed(&logo))); 232 base::Passed(&logo)));
233 } 233 }
234 } 234 }
235 235
236 void LogoTracker::OnFreshLogoAvailable(scoped_ptr<EncodedLogo> encoded_logo, 236 void LogoTracker::OnFreshLogoAvailable(scoped_ptr<EncodedLogo> encoded_logo,
237 const SkBitmap& image) { 237 const SkBitmap& image) {
238 DCHECK(!is_idle_); 238 DCHECK(!is_idle_);
239 239
240 if (encoded_logo && !encoded_logo->encoded_image && cached_logo_ && 240 if (encoded_logo && !encoded_logo->encoded_image.get() && cached_logo_ &&
241 !encoded_logo->metadata.fingerprint.empty() && 241 !encoded_logo->metadata.fingerprint.empty() &&
242 encoded_logo->metadata.fingerprint == 242 encoded_logo->metadata.fingerprint ==
243 cached_logo_->metadata.fingerprint) { 243 cached_logo_->metadata.fingerprint) {
244 // The cached logo was revalidated, i.e. its fingerprint was verified. 244 // The cached logo was revalidated, i.e. its fingerprint was verified.
245 SetCachedMetadata(encoded_logo->metadata); 245 SetCachedMetadata(encoded_logo->metadata);
246 } else if (encoded_logo && image.isNull()) { 246 } else if (encoded_logo && image.isNull()) {
247 // Image decoding failed. Do nothing. 247 // Image decoding failed. Do nothing.
248 } else { 248 } else {
249 scoped_ptr<Logo> logo; 249 scoped_ptr<Logo> logo;
250 // Check if the server returned a valid, non-empty response. 250 // Check if the server returned a valid, non-empty response.
(...skipping 24 matching lines...) Expand all
275 if (!source->GetStatus().is_success() || (source->GetResponseCode() != 200)) { 275 if (!source->GetStatus().is_success() || (source->GetResponseCode() != 200)) {
276 ReturnToIdle(); 276 ReturnToIdle();
277 return; 277 return;
278 } 278 }
279 279
280 scoped_ptr<std::string> response(new std::string()); 280 scoped_ptr<std::string> response(new std::string());
281 source->GetResponseAsString(response.get()); 281 source->GetResponseAsString(response.get());
282 base::Time response_time = clock_->Now(); 282 base::Time response_time = clock_->Now();
283 283
284 base::PostTaskAndReplyWithResult( 284 base::PostTaskAndReplyWithResult(
285 background_task_runner_, 285 background_task_runner_.get(),
286 FROM_HERE, 286 FROM_HERE,
287 base::Bind(parse_logo_response_func_, 287 base::Bind(
288 base::Passed(&response), 288 parse_logo_response_func_, base::Passed(&response), response_time),
289 response_time),
290 base::Bind(&LogoTracker::OnFreshLogoParsed, 289 base::Bind(&LogoTracker::OnFreshLogoParsed,
291 weak_ptr_factory_.GetWeakPtr())); 290 weak_ptr_factory_.GetWeakPtr()));
292 } 291 }
293 292
294 void LogoTracker::OnURLFetchDownloadProgress(const net::URLFetcher* source, 293 void LogoTracker::OnURLFetchDownloadProgress(const net::URLFetcher* source,
295 int64 current, 294 int64 current,
296 int64 total) { 295 int64 total) {
297 if (total > kMaxDownloadBytes || current > kMaxDownloadBytes) { 296 if (total > kMaxDownloadBytes || current > kMaxDownloadBytes) {
298 LOG(WARNING) << "Search provider logo exceeded download size limit"; 297 LOG(WARNING) << "Search provider logo exceeded download size limit";
299 ReturnToIdle(); 298 ReturnToIdle();
300 } 299 }
301 } 300 }
302 301
303 } // namespace search_provider_logos 302 } // namespace search_provider_logos
OLDNEW
« no previous file with comments | « components/search_provider_logos/logo_cache_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698