Index: chrome/browser/chromeos/login/profile_auth_data.cc |
diff --git a/chrome/browser/chromeos/login/profile_auth_data.cc b/chrome/browser/chromeos/login/profile_auth_data.cc |
index 41adacf67ac0ef053d7c23407235f530d427b4af..bee001ef2c0ae975aa1f91caa7b50e28a54ea677 100644 |
--- a/chrome/browser/chromeos/login/profile_auth_data.cc |
+++ b/chrome/browser/chromeos/login/profile_auth_data.cc |
@@ -44,16 +44,28 @@ void ImportCookies(const net::CookieList& cookies, |
// To re-create the original cookie, a domain should only be passed in to |
// SetCookieWithDetailsAsync if cookie.Domain() has a leading period, to |
// re-create the original cookie. |
- std::string domain; |
- if (!cookie.Domain().empty() && cookie.Domain()[0] == '.') |
- domain = cookie.Domain(); |
+ std::string effective_domain = cookie.Domain(); |
achuithb
2016/07/13 09:18:31
Could we add a unit test for this?
mmenke
2016/07/14 17:34:57
The no-dot path was already being tested. Added a
|
+ std::string host; |
+ if (effective_domain.length() > 1 && effective_domain[0] == '.') { |
+ host = effective_domain.substr(1); |
+ } else { |
+ host = effective_domain; |
+ effective_domain = ""; |
+ } |
+ |
+ // Assume HTTPS - since the cookies are being restored from another store, |
+ // they have already gone through the strict secure check. |
+ GURL url(std::string(url::kHttpsScheme) + url::kStandardSchemeSeparator + |
+ host + "/"); |
cookie_store->SetCookieWithDetailsAsync( |
- cookie.Source(), cookie.Name(), cookie.Value(), domain, cookie.Path(), |
+ url, cookie.Name(), cookie.Value(), effective_domain, cookie.Path(), |
cookie.CreationDate(), cookie.ExpiryDate(), cookie.LastAccessDate(), |
cookie.IsSecure(), cookie.IsHttpOnly(), cookie.SameSite(), |
// enforce_strict_secure should have been applied on the original |
- // cookie, prior to import. |
+ // cookie, prior to import. This allows URL to be treated as an HTTP |
Mike West
2016/07/13 09:59:26
Nit: "... to be treated as an _HTTPS_ URL"?
mmenke
2016/07/14 17:34:57
Done
|
+ // URL, whether the cookie was set by an HTTP or HTTPS domain (Something |
+ // that can't be determined by just looking at the CanonicalCookie). |
false, cookie.Priority(), net::CookieStore::SetCookiesCallback()); |
} |
} |