Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Side by Side Diff: components/translate/core/browser/translate_manager.cc

Issue 1525203003: [Translate] Factor out access to Accept-Languages (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@translate-manager-unit
Patch Set: Fix CrOS build Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/translate/core/browser/translate_manager.h" 5 #include "components/translate/core/browser/translate_manager.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/metrics/field_trial.h" 9 #include "base/metrics/field_trial.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 136
137 // Don't translate any Chrome specific page, e.g., New Tab Page, Download, 137 // Don't translate any Chrome specific page, e.g., New Tab Page, Download,
138 // History, and so on. 138 // History, and so on.
139 const GURL& page_url = translate_driver_->GetVisibleURL(); 139 const GURL& page_url = translate_driver_->GetVisibleURL();
140 if (!translate_client_->IsTranslatableURL(page_url)) { 140 if (!translate_client_->IsTranslatableURL(page_url)) {
141 TranslateBrowserMetrics::ReportInitiationStatus( 141 TranslateBrowserMetrics::ReportInitiationStatus(
142 TranslateBrowserMetrics::INITIATION_STATUS_URL_IS_NOT_SUPPORTED); 142 TranslateBrowserMetrics::INITIATION_STATUS_URL_IS_NOT_SUPPORTED);
143 return; 143 return;
144 } 144 }
145 145
146 // Get the accepted languages list. 146 scoped_ptr<TranslatePrefs> translate_prefs(
147 std::vector<std::string> accept_languages_list = base::SplitString( 147 translate_client_->GetTranslatePrefs());
148 prefs->GetString(accept_languages_pref_name_), ",",
149 base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
150 148
151 std::string target_lang = GetTargetLanguage(accept_languages_list); 149 std::string target_lang = GetTargetLanguage(translate_prefs.get());
152 std::string language_code = 150 std::string language_code =
153 TranslateDownloadManager::GetLanguageCode(page_lang); 151 TranslateDownloadManager::GetLanguageCode(page_lang);
154 152
155 // Don't translate similar languages (ex: en-US to en). 153 // Don't translate similar languages (ex: en-US to en).
156 if (language_code == target_lang) { 154 if (language_code == target_lang) {
157 TranslateBrowserMetrics::ReportInitiationStatus( 155 TranslateBrowserMetrics::ReportInitiationStatus(
158 TranslateBrowserMetrics::INITIATION_STATUS_SIMILAR_LANGUAGES); 156 TranslateBrowserMetrics::INITIATION_STATUS_SIMILAR_LANGUAGES);
159 return; 157 return;
160 } 158 }
161 159
162 // Nothing to do if either the language Chrome is in or the language of the 160 // Nothing to do if either the language Chrome is in or the language of the
163 // page is not supported by the translation server. 161 // page is not supported by the translation server.
164 if (target_lang.empty() || 162 if (target_lang.empty() ||
165 !TranslateDownloadManager::IsSupportedLanguage(language_code)) { 163 !TranslateDownloadManager::IsSupportedLanguage(language_code)) {
166 TranslateBrowserMetrics::ReportInitiationStatus( 164 TranslateBrowserMetrics::ReportInitiationStatus(
167 TranslateBrowserMetrics::INITIATION_STATUS_LANGUAGE_IS_NOT_SUPPORTED); 165 TranslateBrowserMetrics::INITIATION_STATUS_LANGUAGE_IS_NOT_SUPPORTED);
168 TranslateBrowserMetrics::ReportUnsupportedLanguageAtInitiation( 166 TranslateBrowserMetrics::ReportUnsupportedLanguageAtInitiation(
169 language_code); 167 language_code);
170 return; 168 return;
171 } 169 }
172 170
173 scoped_ptr<TranslatePrefs> translate_prefs(
174 translate_client_->GetTranslatePrefs());
175
176 TranslateAcceptLanguages* accept_languages = 171 TranslateAcceptLanguages* accept_languages =
177 translate_client_->GetTranslateAcceptLanguages(); 172 translate_client_->GetTranslateAcceptLanguages();
178 // Don't translate any user black-listed languages. 173 // Don't translate any user black-listed languages.
179 if (!translate_prefs->CanTranslateLanguage(accept_languages, 174 if (!translate_prefs->CanTranslateLanguage(accept_languages,
180 language_code)) { 175 language_code)) {
181 TranslateBrowserMetrics::ReportInitiationStatus( 176 TranslateBrowserMetrics::ReportInitiationStatus(
182 TranslateBrowserMetrics::INITIATION_STATUS_DISABLED_BY_CONFIG); 177 TranslateBrowserMetrics::INITIATION_STATUS_DISABLED_BY_CONFIG);
183 return; 178 return;
184 } 179 }
185 180
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 TranslateErrorDetails error_details; 348 TranslateErrorDetails error_details;
354 error_details.time = base::Time::Now(); 349 error_details.time = base::Time::Now();
355 error_details.url = translate_driver_->GetLastCommittedURL(); 350 error_details.url = translate_driver_->GetLastCommittedURL();
356 error_details.error = TranslateErrors::NETWORK; 351 error_details.error = TranslateErrors::NETWORK;
357 NotifyTranslateError(error_details); 352 NotifyTranslateError(error_details);
358 } 353 }
359 } 354 }
360 } 355 }
361 356
362 // static 357 // static
363 std::string TranslateManager::GetTargetLanguage( 358 std::string TranslateManager::GetTargetLanguage(const TranslatePrefs* prefs) {
364 const std::vector<std::string>& accept_languages_list) {
365 std::string ui_lang = TranslateDownloadManager::GetLanguageCode( 359 std::string ui_lang = TranslateDownloadManager::GetLanguageCode(
366 TranslateDownloadManager::GetInstance()->application_locale()); 360 TranslateDownloadManager::GetInstance()->application_locale());
367 translate::ToTranslateLanguageSynonym(&ui_lang); 361 translate::ToTranslateLanguageSynonym(&ui_lang);
368 362
369 if (TranslateDownloadManager::IsSupportedLanguage(ui_lang)) 363 if (TranslateDownloadManager::IsSupportedLanguage(ui_lang))
370 return ui_lang; 364 return ui_lang;
371 365
372 // Will translate to the first supported language on the Accepted Language 366 // Will translate to the first supported language on the Accepted Language
373 // list or not at all if no such candidate exists 367 // list or not at all if no such candidate exists.
374 std::vector<std::string>::const_iterator iter; 368 std::vector<std::string> accept_languages_list;
375 for (iter = accept_languages_list.begin(); 369 prefs->GetLanguageList(&accept_languages_list);
376 iter != accept_languages_list.end(); ++iter) { 370 for (const auto& lang : accept_languages_list) {
377 std::string lang_code = TranslateDownloadManager::GetLanguageCode(*iter); 371 std::string lang_code = TranslateDownloadManager::GetLanguageCode(lang);
378 if (TranslateDownloadManager::IsSupportedLanguage(lang_code)) 372 if (TranslateDownloadManager::IsSupportedLanguage(lang_code))
379 return lang_code; 373 return lang_code;
380 } 374 }
381 return std::string(); 375 return std::string();
382 } 376 }
383 377
384 // static 378 // static
385 std::string TranslateManager::GetAutoTargetLanguage( 379 std::string TranslateManager::GetAutoTargetLanguage(
386 const std::string& original_language, 380 const std::string& original_language,
387 TranslatePrefs* translate_prefs) { 381 TranslatePrefs* translate_prefs) {
(...skipping 15 matching lines...) Expand all
403 } 397 }
404 398
405 bool TranslateManager::ignore_missing_key_for_testing_ = false; 399 bool TranslateManager::ignore_missing_key_for_testing_ = false;
406 400
407 // static 401 // static
408 void TranslateManager::SetIgnoreMissingKeyForTesting(bool ignore) { 402 void TranslateManager::SetIgnoreMissingKeyForTesting(bool ignore) {
409 ignore_missing_key_for_testing_ = ignore; 403 ignore_missing_key_for_testing_ = ignore;
410 } 404 }
411 405
412 } // namespace translate 406 } // namespace translate
OLDNEW
« no previous file with comments | « components/translate/core/browser/translate_manager.h ('k') | components/translate/core/browser/translate_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698