diff options
author | justincohen <justincohen@chromium.org> | 2015-04-07 19:14:28 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-04-08 02:15:09 +0000 |
commit | c438c1843041746877c9dc83d9ce63a3c43bb6bb (patch) | |
tree | 650acf54236e317ba78fc7d916dae0d4fa0da923 /components/search_provider_logos/google_logo_api.cc | |
parent | 5729f982048935b2b702181d0b349589d607f34b (diff) | |
download | chromium_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.cc | 33 |
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( |