OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/translate/translate_language_list.h" | 5 #include "chrome/browser/translate/translate_language_list.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 | 8 |
9 #include "base/command_line.h" | |
10 #include "base/json/json_reader.h" | 9 #include "base/json/json_reader.h" |
11 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
12 #include "base/logging.h" | 11 #include "base/logging.h" |
13 #include "base/string_util.h" | 12 #include "base/string_util.h" |
14 #include "base/values.h" | 13 #include "base/values.h" |
15 #include "chrome/browser/browser_process.h" | 14 #include "chrome/browser/browser_process.h" |
16 #include "chrome/browser/translate/translate_url_util.h" | 15 #include "chrome/browser/translate/translate_url_util.h" |
17 #include "chrome/common/chrome_switches.h" | |
18 #include "googleurl/src/gurl.h" | 16 #include "googleurl/src/gurl.h" |
19 #include "net/base/load_flags.h" | 17 #include "net/base/load_flags.h" |
20 #include "net/base/url_util.h" | 18 #include "net/base/url_util.h" |
21 #include "net/http/http_status_code.h" | 19 #include "net/http/http_status_code.h" |
22 #include "net/url_request/url_fetcher.h" | 20 #include "net/url_request/url_fetcher.h" |
23 #include "net/url_request/url_request_status.h" | 21 #include "net/url_request/url_request_status.h" |
24 | 22 |
25 namespace { | 23 namespace { |
26 | 24 |
27 // The default list of languages the Google translation server supports. | 25 // The default list of languages the Google translation server supports. |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
150 set->clear(); | 148 set->clear(); |
151 // ... and replace it with the values we just fetched from the server. | 149 // ... and replace it with the values we just fetched from the server. |
152 for (DictionaryValue::Iterator iter(*target_languages); | 150 for (DictionaryValue::Iterator iter(*target_languages); |
153 !iter.IsAtEnd(); | 151 !iter.IsAtEnd(); |
154 iter.Advance()) { | 152 iter.Advance()) { |
155 // TODO(toyoshim): Check if UI libraries support adding locale. | 153 // TODO(toyoshim): Check if UI libraries support adding locale. |
156 set->insert(iter.key()); | 154 set->insert(iter.key()); |
157 } | 155 } |
158 } | 156 } |
159 | 157 |
160 net::URLFetcher* CreateAndStartFetch(const GURL& url, | 158 net::URLFetcher* CreateAndStartFetch(int id, |
| 159 const GURL& url, |
161 net::URLFetcherDelegate* delegate) { | 160 net::URLFetcherDelegate* delegate) { |
162 DCHECK(delegate); | 161 DCHECK(delegate); |
163 VLOG(9) << "Fetch supporting language list from: " << url.spec().c_str(); | 162 VLOG(9) << "Fetch supporting language list from: " << url.spec().c_str(); |
164 | 163 |
165 scoped_ptr<net::URLFetcher> fetcher; | 164 scoped_ptr<net::URLFetcher> fetcher; |
166 fetcher.reset(net::URLFetcher::Create(1, | 165 fetcher.reset(net::URLFetcher::Create(id, |
167 url, | 166 url, |
168 net::URLFetcher::GET, | 167 net::URLFetcher::GET, |
169 delegate)); | 168 delegate)); |
170 fetcher->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES | | 169 fetcher->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES | |
171 net::LOAD_DO_NOT_SAVE_COOKIES); | 170 net::LOAD_DO_NOT_SAVE_COOKIES); |
172 fetcher->SetRequestContext(g_browser_process->system_request_context()); | 171 fetcher->SetRequestContext(g_browser_process->system_request_context()); |
173 fetcher->SetMaxRetriesOn5xx(kMaxRetryLanguageListFetch); | 172 fetcher->SetMaxRetriesOn5xx(kMaxRetryLanguageListFetch); |
174 fetcher->Start(); | 173 fetcher->Start(); |
175 | 174 |
176 return fetcher.release(); | 175 return fetcher.release(); |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
255 return; | 254 return; |
256 | 255 |
257 // Fetch the stable language list. | 256 // Fetch the stable language list. |
258 GURL language_list_fetch_url = GURL(kLanguageListFetchURL); | 257 GURL language_list_fetch_url = GURL(kLanguageListFetchURL); |
259 language_list_fetch_url = | 258 language_list_fetch_url = |
260 TranslateURLUtil::AddHostLocaleToUrl(language_list_fetch_url); | 259 TranslateURLUtil::AddHostLocaleToUrl(language_list_fetch_url); |
261 language_list_fetch_url = | 260 language_list_fetch_url = |
262 TranslateURLUtil::AddApiKeyToUrl(language_list_fetch_url); | 261 TranslateURLUtil::AddApiKeyToUrl(language_list_fetch_url); |
263 | 262 |
264 language_list_fetcher_.reset( | 263 language_list_fetcher_.reset( |
265 CreateAndStartFetch(language_list_fetch_url, this)); | 264 CreateAndStartFetch(1, language_list_fetch_url, this)); |
266 | |
267 // TODO(toyoshim): Make it enabled by default. http://crbug.com/242178 | |
268 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); | |
269 if (!command_line.HasSwitch(switches::kEnableTranslateAlphaLanguages)) | |
270 return; | |
271 | 265 |
272 // Fetch the alpha language list. | 266 // Fetch the alpha language list. |
273 language_list_fetch_url = net::AppendQueryParameter( | 267 language_list_fetch_url = net::AppendQueryParameter( |
274 language_list_fetch_url, | 268 language_list_fetch_url, |
275 kAlphaLanguageQueryName, | 269 kAlphaLanguageQueryName, |
276 kAlphaLanguageQueryValue); | 270 kAlphaLanguageQueryValue); |
277 | 271 |
278 alpha_language_list_fetcher_.reset( | 272 alpha_language_list_fetcher_.reset( |
279 CreateAndStartFetch(language_list_fetch_url, this)); | 273 CreateAndStartFetch(2, language_list_fetch_url, this)); |
280 } | 274 } |
281 | 275 |
282 void TranslateLanguageList::UpdateSupportedLanguages() { | 276 void TranslateLanguageList::UpdateSupportedLanguages() { |
283 all_supported_languages_.clear(); | 277 all_supported_languages_.clear(); |
284 std::set<std::string>::const_iterator iter; | 278 std::set<std::string>::const_iterator iter; |
285 for (iter = supported_languages_.begin(); | 279 for (iter = supported_languages_.begin(); |
286 iter != supported_languages_.end(); | 280 iter != supported_languages_.end(); |
287 ++iter) | 281 ++iter) |
288 all_supported_languages_.insert(*iter); | 282 all_supported_languages_.insert(*iter); |
289 for (iter = supported_alpha_languages_.begin(); | 283 for (iter = supported_alpha_languages_.begin(); |
290 iter != supported_alpha_languages_.end(); | 284 iter != supported_alpha_languages_.end(); |
291 ++iter) | 285 ++iter) |
292 all_supported_languages_.insert(*iter); | 286 all_supported_languages_.insert(*iter); |
293 } | 287 } |
OLD | NEW |