Index: components/search_provider_logos/logo_tracker.cc |
diff --git a/components/search_provider_logos/logo_tracker.cc b/components/search_provider_logos/logo_tracker.cc |
index 7bd11b5f52c74c34790878cf43b2a89c29f3a624..a2fc7f9e9e4b9071fd6defae6e0a3e07c8b904a1 100644 |
--- a/components/search_provider_logos/logo_tracker.cc |
+++ b/components/search_provider_logos/logo_tracker.cc |
@@ -261,6 +261,7 @@ void LogoTracker::FetchLogo() { |
} |
void LogoTracker::OnFreshLogoParsed(bool* parsing_failed, |
+ bool from_http_cache, |
std::unique_ptr<EncodedLogo> logo) { |
DCHECK(!is_idle_); |
@@ -268,7 +269,8 @@ void LogoTracker::OnFreshLogoParsed(bool* parsing_failed, |
logo->metadata.source_url = logo_url_.spec(); |
if (!logo || !logo->encoded_image.get()) { |
- OnFreshLogoAvailable(std::move(logo), *parsing_failed, SkBitmap()); |
+ OnFreshLogoAvailable(std::move(logo), *parsing_failed, from_http_cache, |
+ SkBitmap()); |
} else { |
// Store the value of logo->encoded_image for use below. This ensures that |
// logo->encoded_image is evaulated before base::Passed(&logo), which sets |
@@ -277,15 +279,15 @@ void LogoTracker::OnFreshLogoParsed(bool* parsing_failed, |
logo_delegate_->DecodeUntrustedImage( |
encoded_image, |
base::Bind(&LogoTracker::OnFreshLogoAvailable, |
- weak_ptr_factory_.GetWeakPtr(), |
- base::Passed(&logo), |
- *parsing_failed)); |
+ weak_ptr_factory_.GetWeakPtr(), base::Passed(&logo), |
+ *parsing_failed, from_http_cache)); |
} |
} |
void LogoTracker::OnFreshLogoAvailable( |
std::unique_ptr<EncodedLogo> encoded_logo, |
bool parsing_failed, |
+ bool from_http_cache, |
const SkBitmap& image) { |
DCHECK(!is_idle_); |
@@ -307,6 +309,8 @@ void LogoTracker::OnFreshLogoAvailable( |
std::unique_ptr<Logo> logo; |
// Check if the server returned a valid, non-empty response. |
if (encoded_logo) { |
+ UMA_HISTOGRAM_BOOLEAN("NewTabPage.LogoImageDownloaded", from_http_cache); |
+ |
DCHECK(!image.isNull()); |
logo.reset(new Logo()); |
logo->metadata = encoded_logo->metadata; |
@@ -360,13 +364,16 @@ void LogoTracker::OnURLFetchComplete(const net::URLFetcher* source) { |
source->GetResponseAsString(response.get()); |
base::Time response_time = clock_->Now(); |
+ bool from_http_cache = source->WasCached(); |
+ |
bool* parsing_failed = new bool(false); |
base::PostTaskAndReplyWithResult( |
background_task_runner_.get(), FROM_HERE, |
base::Bind(parse_logo_response_func_, base::Passed(&response), |
response_time, parsing_failed), |
base::Bind(&LogoTracker::OnFreshLogoParsed, |
- weak_ptr_factory_.GetWeakPtr(), base::Owned(parsing_failed))); |
+ weak_ptr_factory_.GetWeakPtr(), base::Owned(parsing_failed), |
+ from_http_cache)); |
} |
void LogoTracker::OnURLFetchDownloadProgress(const net::URLFetcher* source, |