Chromium Code Reviews| Index: chrome/browser/ui/webui/about_ui.cc |
| diff --git a/chrome/browser/ui/webui/about_ui.cc b/chrome/browser/ui/webui/about_ui.cc |
| index 5e5c545e8c504c1cc0b0534a60aeb15705d5ddd7..38ef82ce2897da995d43ce74446bd940f27e159e 100644 |
| --- a/chrome/browser/ui/webui/about_ui.cc |
| +++ b/chrome/browser/ui/webui/about_ui.cc |
| @@ -103,7 +103,7 @@ const char kMemoryCssPath[] = "about_memory.css"; |
| const char kStatsJsPath[] = "stats.js"; |
| const char kStringsJsPath[] = "strings.js"; |
| // chrome://terms falls back to offline page after kOnlineTermsTimeoutSec. |
| -const int kOnlineTermsTimeoutSec = 10; |
| +const int kOnlineTermsTimeoutSec = 7; |
| // When you type about:memory, it actually loads this intermediate URL that |
| // redirects you to the final page. This avoids the problem where typing |
| @@ -145,18 +145,54 @@ class AboutMemoryHandler : public MemoryDetails { |
| }; |
| #if defined(OS_CHROMEOS) |
| + |
| +// Contains pairs of corresponding languages for Chrome and Google URLs. |
| +struct Chrome2GoogleLanguageMapping { |
|
Nikita (slow)
2013/05/06 14:22:25
nit: Please rename language to locale to match ter
vasilii
2013/05/06 15:36:33
Done.
|
| + const char* chrome_language; |
| + const char* google_language; |
| +}; |
| + |
| +// List of languages constant which are different for Google URL |
| +const Chrome2GoogleLanguageMapping language_mapping[] = { |
| + {"de-AT", "de"}, |
| + {"de-CH", "de"}, |
| + {"de-DE", "de"}, |
| + {"en-GB", "en_uk"}, |
| + {"fr-CA", "fr"}, |
| + {"fr-CH", "fr"}, |
| + {"fr-FR", "fr"}, |
| + {"it-CH", "it"}, |
| + {"it-IT", "it"} |
| +}; |
| + |
| +// Returns language in Google format if it's different from the Chrome one. |
|
Nikita (slow)
2013/05/06 14:22:25
nit: Change "Google format" to something like "ser
vasilii
2013/05/06 15:36:33
Done.
|
| +// Otherwise, returns NULL. |
| +const char* TranslateChromeLangToGoogle(const char* chrome_language) { |
| + for (std::size_t i = 0; i < arraysize(language_mapping); ++i) { |
| + if (LowerCaseEqualsASCII(chrome_language, |
| + language_mapping[i].chrome_language)) |
| + return language_mapping[i].google_language; |
|
Nikita (slow)
2013/05/06 14:22:25
nit: Add {}
vasilii
2013/05/06 15:36:33
Done.
|
| + } |
| + return NULL; |
| +} |
| + |
| // Helper class that fetches the online Chrome OS terms. Empty string is |
| // returned once fetching failed or exceeded |kOnlineTermsTimeoutSec|. |
| class ChromeOSOnlineTermsHandler : public net::URLFetcherDelegate { |
| public: |
| typedef base::Callback<void (ChromeOSOnlineTermsHandler*)> FetchCallback; |
| - explicit ChromeOSOnlineTermsHandler(const FetchCallback& callback) |
| + explicit ChromeOSOnlineTermsHandler(const FetchCallback& callback, |
| + const std::string& locale) |
| : fetch_callback_(callback) { |
| - eula_fetcher_.reset(net::URLFetcher::Create( |
| - GURL(l10n_util::GetStringUTF16(IDS_EULA_POLICY_URL)), |
| - net::URLFetcher::GET, |
| - this)); |
| + const char* google_lang = TranslateChromeLangToGoogle(locale.c_str()); |
| + if (!google_lang) |
| + google_lang = locale.c_str(); |
| + std::string eula_URL = base::StringPrintf(chrome::kOnlineEulaURLPath, |
| + google_lang); |
| + eula_fetcher_.reset(net::URLFetcher::Create(GURL(eula_URL), |
| + net::URLFetcher::GET, |
| + this)); |
| eula_fetcher_->SetRequestContext( |
| g_browser_process->system_request_context()); |
| eula_fetcher_->AddExtraRequestHeader("Accept: text/html"); |
| @@ -257,7 +293,8 @@ class ChromeOSTermsHandler |
| // Try to load online version of ChromeOS terms first. |
| // ChromeOSOnlineTermsHandler object destroys itself. |
| new ChromeOSOnlineTermsHandler( |
| - base::Bind(&ChromeOSTermsHandler::OnOnlineEULAFetched, this)); |
| + base::Bind(&ChromeOSTermsHandler::OnOnlineEULAFetched, this), |
| + locale_); |
| } |
| } |