| Index: chrome/browser/profiles/profile_downloader_unittest.cc
|
| diff --git a/chrome/browser/profiles/profile_downloader_unittest.cc b/chrome/browser/profiles/profile_downloader_unittest.cc
|
| index 3761c77ef2a8cbf0057de3d9198cc4930f975c9a..4bcfc6f59c20dc42b5ec4c8f8272e82844d783d5 100644
|
| --- a/chrome/browser/profiles/profile_downloader_unittest.cc
|
| +++ b/chrome/browser/profiles/profile_downloader_unittest.cc
|
| @@ -4,38 +4,33 @@
|
|
|
| #include "chrome/browser/profiles/profile_downloader.h"
|
|
|
| +#include "base/strings/string_util.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| namespace {
|
|
|
| -std::string GetJSonData(const std::string& full_name,
|
| - const std::string& given_name,
|
| - const std::string& url,
|
| - const std::string& locale) {
|
| - std::stringstream stream;
|
| - bool started = false;
|
| -
|
| - stream << "{ ";
|
| - if (!full_name.empty()) {
|
| - stream << "\"name\": \"" << full_name << "\"";
|
| - started = true;
|
| - }
|
| - if (!given_name.empty()) {
|
| - stream << (started ? ", " : "") << "\"given_name\": \"" << given_name
|
| - << "\"";
|
| - started = true;
|
| - }
|
| - if (!url.empty()) {
|
| - stream << (started ? ", " : "") << "\"picture\": \"" << url << "\"";
|
| - started = true;
|
| - }
|
| +void GetJSonData(const std::string& full_name,
|
| + const std::string& given_name,
|
| + const std::string& url,
|
| + const std::string& locale,
|
| + const std::string& hosted_domain,
|
| + bool include_empty_hosted_domain,
|
| + base::DictionaryValue* dict) {
|
| + if (!full_name.empty())
|
| + dict->SetString("name", full_name);
|
| +
|
| + if (!given_name.empty())
|
| + dict->SetString("given_name", given_name);
|
| +
|
| + if (!url.empty())
|
| + dict->SetString("picture", url);
|
|
|
| if (!locale.empty())
|
| - stream << (started ? ", " : "") << "\"locale\": \"" << locale << "\"";
|
| + dict->SetString("locale", locale);
|
|
|
| - stream << " }";
|
| - return stream.str();
|
| + if (!hosted_domain.empty() || include_empty_hosted_domain)
|
| + dict->SetString("hd", hosted_domain);
|
| }
|
|
|
| } // namespace
|
| @@ -53,26 +48,36 @@ class ProfileDownloaderTest : public testing::Test {
|
| const std::string& url,
|
| const std::string& expected_url,
|
| const std::string& locale,
|
| + const std::string& hosted_domain,
|
| + bool include_empty_hosted_domain,
|
| bool is_valid) {
|
| base::string16 parsed_full_name;
|
| base::string16 parsed_given_name;
|
| std::string parsed_url;
|
| std::string parsed_locale;
|
| + base::string16 parsed_hosted_domain;
|
| + scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue);
|
| + GetJSonData(full_name, given_name, url, locale, hosted_domain,
|
| + include_empty_hosted_domain, dict.get());
|
| bool result = ProfileDownloader::ParseProfileJSON(
|
| - GetJSonData(full_name, given_name, url, locale),
|
| + dict.get(),
|
| &parsed_full_name,
|
| &parsed_given_name,
|
| &parsed_url,
|
| 32,
|
| - &parsed_locale);
|
| + &parsed_locale,
|
| + &parsed_hosted_domain);
|
| EXPECT_EQ(is_valid, result);
|
| std::string parsed_full_name_utf8 = base::UTF16ToUTF8(parsed_full_name);
|
| std::string parsed_given_name_utf8 = base::UTF16ToUTF8(parsed_given_name);
|
| + std::string parsed_hosted_domain_utf8 =
|
| + base::UTF16ToUTF8(parsed_hosted_domain);
|
|
|
| EXPECT_EQ(full_name, parsed_full_name_utf8);
|
| EXPECT_EQ(given_name, parsed_given_name_utf8);
|
| EXPECT_EQ(expected_url, parsed_url);
|
| EXPECT_EQ(locale, parsed_locale);
|
| + EXPECT_EQ(hosted_domain, parsed_hosted_domain_utf8);
|
| }
|
| };
|
|
|
| @@ -84,6 +89,8 @@ TEST_F(ProfileDownloaderTest, ParseData) {
|
| "https://example.com/--Abc/AAAAAAAAAAI/AAAAAAAAACQ/Efg/photo.jpg",
|
| "https://example.com/--Abc/AAAAAAAAAAI/AAAAAAAAACQ/Efg/s32-c/photo.jpg",
|
| "en-US",
|
| + "google.com",
|
| + false,
|
| true);
|
|
|
| // URL with size specified.
|
| @@ -93,6 +100,8 @@ TEST_F(ProfileDownloaderTest, ParseData) {
|
| "http://lh0.ggpht.com/-abcd1aBCDEf/AAAA/AAA_A/abc12/s64-c/1234567890.jpg",
|
| "http://lh0.ggpht.com/-abcd1aBCDEf/AAAA/AAA_A/abc12/s32-c/1234567890.jpg",
|
| "en-US",
|
| + "google.com",
|
| + false,
|
| true);
|
|
|
| // URL with unknown format.
|
| @@ -101,6 +110,8 @@ TEST_F(ProfileDownloaderTest, ParseData) {
|
| "http://lh0.ggpht.com/-abcd1aBCDEf/AAAA/AAA_A/",
|
| "http://lh0.ggpht.com/-abcd1aBCDEf/AAAA/AAA_A/",
|
| "en-US",
|
| + "google.com",
|
| + false,
|
| true);
|
|
|
| // Try different locales. URL with size specified.
|
| @@ -110,6 +121,8 @@ TEST_F(ProfileDownloaderTest, ParseData) {
|
| "http://lh0.ggpht.com/-abcd1aBCDEf/AAAA/AAA_A/abc12/s64-c/1234567890.jpg",
|
| "http://lh0.ggpht.com/-abcd1aBCDEf/AAAA/AAA_A/abc12/s32-c/1234567890.jpg",
|
| "jp",
|
| + "google.com",
|
| + false,
|
| true);
|
|
|
| // URL with unknown format.
|
| @@ -118,11 +131,29 @@ TEST_F(ProfileDownloaderTest, ParseData) {
|
| "http://lh0.ggpht.com/-abcd1aBCDEf/AAAA/AAA_A/",
|
| "http://lh0.ggpht.com/-abcd1aBCDEf/AAAA/AAA_A/",
|
| "fr",
|
| + "",
|
| + false,
|
| true);
|
|
|
| // Data with only name.
|
| - VerifyWithAccountData(
|
| - "Pat Smith", "Pat", std::string(), std::string(), std::string(), true);
|
| + VerifyWithAccountData("Pat Smith",
|
| + "Pat",
|
| + std::string(),
|
| + std::string(),
|
| + std::string(),
|
| + std::string(),
|
| + false,
|
| + true);
|
| +
|
| + // Data with only name and a blank but present hosted domain.
|
| + VerifyWithAccountData("Pat Smith",
|
| + "Pat",
|
| + std::string(),
|
| + std::string(),
|
| + std::string(),
|
| + std::string(),
|
| + true,
|
| + true);
|
|
|
| // Data with only URL.
|
| VerifyWithAccountData(
|
| @@ -131,11 +162,19 @@ TEST_F(ProfileDownloaderTest, ParseData) {
|
| "https://example.com/--Abc/AAAAAAAAAAI/AAAAAAAAACQ/Efg/photo.jpg",
|
| "https://example.com/--Abc/AAAAAAAAAAI/AAAAAAAAACQ/Efg/s32-c/photo.jpg",
|
| std::string(),
|
| + std::string(),
|
| + false,
|
| true);
|
|
|
| // Data with only locale.
|
| - VerifyWithAccountData(
|
| - std::string(), std::string(), std::string(), std::string(), "fr", false);
|
| + VerifyWithAccountData(std::string(),
|
| + std::string(),
|
| + std::string(),
|
| + std::string(),
|
| + "fr",
|
| + std::string(),
|
| + false,
|
| + false);
|
|
|
| // Data without name or URL or locale.
|
| VerifyWithAccountData(std::string(),
|
| @@ -143,6 +182,8 @@ TEST_F(ProfileDownloaderTest, ParseData) {
|
| std::string(),
|
| std::string(),
|
| std::string(),
|
| + std::string(),
|
| + false,
|
| false);
|
|
|
| // Data with an invalid URL.
|
| @@ -151,6 +192,8 @@ TEST_F(ProfileDownloaderTest, ParseData) {
|
| "invalid url",
|
| std::string(),
|
| std::string(),
|
| + std::string(),
|
| + false,
|
| false);
|
| }
|
|
|
|
|