summaryrefslogtreecommitdiff
path: root/chromium/components/favicon/core/large_icon_service.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2017-07-17 13:57:45 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2017-07-19 13:44:40 +0000
commit6ec7b8da05d21a3878bd21c691b41e675d74bb1c (patch)
treeb87f250bc19413750b9bb9cdbf2da20ef5014820 /chromium/components/favicon/core/large_icon_service.cc
parentec02ee4181c49b61fce1c8fb99292dbb8139cc90 (diff)
downloadqtwebengine-chromium-6ec7b8da05d21a3878bd21c691b41e675d74bb1c.tar.gz
BASELINE: Update Chromium to 60.0.3112.70
Change-Id: I9911c2280a014d4632f254857876a395d4baed2d Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'chromium/components/favicon/core/large_icon_service.cc')
-rw-r--r--chromium/components/favicon/core/large_icon_service.cc67
1 files changed, 61 insertions, 6 deletions
diff --git a/chromium/components/favicon/core/large_icon_service.cc b/chromium/components/favicon/core/large_icon_service.cc
index bf94e5b38ea..a6587e9d381 100644
--- a/chromium/components/favicon/core/large_icon_service.cc
+++ b/chromium/components/favicon/core/large_icon_service.cc
@@ -40,10 +40,20 @@ const base::Feature kLargeIconServiceFetchingFeature{
const char kGoogleServerV2RequestFormat[] =
"https://t0.gstatic.com/faviconV2?"
- "client=chrome&drop_404_icon=true&size=32&min_size=%d&max_size=64&"
- "fallback_opts=TYPE,SIZE,URL&url=%s";
+ "client=chrome&drop_404_icon=true&%s"
+ "size=%d&min_size=%d&max_size=%d&fallback_opts=TYPE,SIZE,URL&url=%s";
const char kGoogleServerV2RequestFormatParam[] = "request_format";
+const char kCheckSeenParam[] = "check_seen=true&";
+
+const int kGoogleServerV2EnforcedMinSizeInPixel = 16;
+const char kGoogleServerV2EnforcedMinSizeInPixelParam[] =
+ "enforced_min_size_in_pixel";
+
+const double kGoogleServerV2DesiredToMaxSizeFactor = 2.0;
+const char kGoogleServerV2DesiredToMaxSizeFactorParam[] =
+ "desired_to_max_size_factor";
+
GURL TrimPageUrlForGoogleServer(const GURL& page_url) {
if (!page_url.SchemeIsHTTPOrHTTPS() || page_url.HostIsIPAddress())
return GURL();
@@ -57,13 +67,30 @@ GURL TrimPageUrlForGoogleServer(const GURL& page_url) {
}
GURL GetRequestUrlForGoogleServerV2(const GURL& page_url,
- int min_source_size_in_pixel) {
+ int min_source_size_in_pixel,
+ int desired_size_in_pixel,
+ bool may_page_url_be_private) {
std::string url_format = base::GetFieldTrialParamValueByFeature(
kLargeIconServiceFetchingFeature, kGoogleServerV2RequestFormatParam);
+ double desired_to_max_size_factor = base::GetFieldTrialParamByFeatureAsDouble(
+ kLargeIconServiceFetchingFeature,
+ kGoogleServerV2DesiredToMaxSizeFactorParam,
+ kGoogleServerV2DesiredToMaxSizeFactor);
+
+ min_source_size_in_pixel = std::max(
+ min_source_size_in_pixel, base::GetFieldTrialParamByFeatureAsInt(
+ kLargeIconServiceFetchingFeature,
+ kGoogleServerV2EnforcedMinSizeInPixelParam,
+ kGoogleServerV2EnforcedMinSizeInPixel));
+ desired_size_in_pixel =
+ std::max(desired_size_in_pixel, min_source_size_in_pixel);
+ int max_size_in_pixel =
+ static_cast<int>(desired_size_in_pixel * desired_to_max_size_factor);
return GURL(base::StringPrintf(
url_format.empty() ? kGoogleServerV2RequestFormat : url_format.c_str(),
- min_source_size_in_pixel, page_url.spec().c_str()));
+ may_page_url_be_private ? kCheckSeenParam : "", desired_size_in_pixel,
+ min_source_size_in_pixel, max_size_in_pixel, page_url.spec().c_str()));
}
bool IsDbResultAdequate(const favicon_base::FaviconRawBitmapResult& db_result,
@@ -284,6 +311,7 @@ LargeIconService::LargeIconService(
: favicon_service_(favicon_service),
background_task_runner_(background_task_runner),
image_fetcher_(std::move(image_fetcher)) {
+ large_icon_types_.push_back(favicon_base::IconType::WEB_MANIFEST_ICON);
large_icon_types_.push_back(favicon_base::IconType::FAVICON);
large_icon_types_.push_back(favicon_base::IconType::TOUCH_ICON);
large_icon_types_.push_back(favicon_base::IconType::TOUCH_PRECOMPOSED_ICON);
@@ -320,12 +348,15 @@ void LargeIconService::
GetLargeIconOrFallbackStyleFromGoogleServerSkippingLocalCache(
const GURL& page_url,
int min_source_size_in_pixel,
+ int desired_size_in_pixel,
+ bool may_page_url_be_private,
const base::Callback<void(bool success)>& callback) {
DCHECK_LE(0, min_source_size_in_pixel);
const GURL trimmed_page_url = TrimPageUrlForGoogleServer(page_url);
const GURL server_request_url = GetRequestUrlForGoogleServerV2(
- trimmed_page_url, min_source_size_in_pixel);
+ trimmed_page_url, min_source_size_in_pixel, desired_size_in_pixel,
+ may_page_url_be_private);
// Do not download if the URL is invalid after trimming, or there is a
// previous cache miss recorded for |server_request_url|.
@@ -339,10 +370,34 @@ void LargeIconService::
image_fetcher_->SetDataUseServiceName(
data_use_measurement::DataUseUserData::LARGE_ICON_SERVICE);
+ net::NetworkTrafficAnnotationTag traffic_annotation =
+ net::DefineNetworkTrafficAnnotation("favicon_component", R"(
+ semantics {
+ sender: "Favicon Component"
+ description:
+ "Sends a request to a Google server to retrieve the favicon bitmap "
+ "for a page URL."
+ trigger:
+ "A request can be sent if Chrome does not have a favicon for a "
+ "particular page. This is done in two scenarios:\n"
+ " 1- For articles suggestions on the new tab page (URLs are public "
+ " and provided by Google).\n"
+ " 2- For server-suggested most visited tiles on the new tab page "
+ " (User gets these URLs from Google, only if history sync is "
+ " enabled)."
+ data: "Page URL and desired icon size."
+ destination: GOOGLE_OWNED_SERVICE
+ }
+ policy {
+ cookies_allowed: false
+ setting: "This feature cannot be disabled by settings."
+ policy_exception_justification: "Not implemented."
+ })");
image_fetcher_->StartOrQueueNetworkRequest(
server_request_url.spec(), server_request_url,
base::Bind(&OnFetchIconFromGoogleServerComplete, favicon_service_,
- page_url, callback));
+ page_url, callback),
+ traffic_annotation);
}
base::CancelableTaskTracker::TaskId