summaryrefslogtreecommitdiffstats
path: root/components/search_provider_logos/google_logo_api.cc
diff options
context:
space:
mode:
authorjustincohen <justincohen@chromium.org>2015-04-07 19:14:28 -0700
committerCommit bot <commit-bot@chromium.org>2015-04-08 02:15:09 +0000
commitc438c1843041746877c9dc83d9ce63a3c43bb6bb (patch)
tree650acf54236e317ba78fc7d916dae0d4fa0da923 /components/search_provider_logos/google_logo_api.cc
parent5729f982048935b2b702181d0b349589d607f34b (diff)
downloadchromium_src-c438c1843041746877c9dc83d9ce63a3c43bb6bb.zip
chromium_src-c438c1843041746877c9dc83d9ce63a3c43bb6bb.tar.gz
chromium_src-c438c1843041746877c9dc83d9ce63a3c43bb6bb.tar.bz2
[LogoTracker] Correct fingerprint append in async parameter.
Clients that already set the async parameter (in this case, with 'cta:1'), will end up with query strings with two differeny async parameters, instead of a comma delimited async param. E.g. converts ?async=cta:1&async=es_dfp:123 -> ?async=cta:1,es_dfp:123 BUG=414528 Review URL: https://codereview.chromium.org/1066923002 Cr-Commit-Position: refs/heads/master@{#324174}
Diffstat (limited to 'components/search_provider_logos/google_logo_api.cc')
-rw-r--r--components/search_provider_logos/google_logo_api.cc33
1 files changed, 22 insertions, 11 deletions
diff --git a/components/search_provider_logos/google_logo_api.cc b/components/search_provider_logos/google_logo_api.cc
index 90067c2..0e7501f 100644
--- a/components/search_provider_logos/google_logo_api.cc
+++ b/components/search_provider_logos/google_logo_api.cc
@@ -16,24 +16,35 @@ namespace {
const char kResponsePreamble[] = ")]}'";
}
-GURL GoogleAppendFingerprintToLogoURL(const GURL& logo_url,
- const std::string& fingerprint) {
+GURL GoogleAppendQueryparamsToLogoURL(const GURL& logo_url,
+ const std::string& fingerprint,
+ bool wants_cta) {
// Note: we can't just use net::AppendQueryParameter() because it escapes
// ":" to "%3A", but the server requires the colon not to be escaped.
// See: http://crbug.com/413845
// TODO(newt): Switch to using net::AppendQueryParameter once it no longer
// escapes ":"
+ if (!fingerprint.empty() || wants_cta) {
+ std::string query(logo_url.query());
+ if (!query.empty())
+ query += "&";
+
+ query += "async=";
+ if (!fingerprint.empty()) {
+ query += "es_dfp:" + fingerprint;
+ if (wants_cta)
+ query += ",";
+ }
+ if (wants_cta) {
+ query += "cta:1";
+ }
+ GURL::Replacements replacements;
+ replacements.SetQueryStr(query);
+ return logo_url.ReplaceComponents(replacements);
+ }
- std::string query(logo_url.query());
- if (!query.empty())
- query += "&";
-
- query += "async=es_dfp:";
- query += fingerprint;
- GURL::Replacements replacements;
- replacements.SetQueryStr(query);
- return logo_url.ReplaceComponents(replacements);
+ return logo_url;
}
scoped_ptr<EncodedLogo> GoogleParseLogoResponse(