OLD | NEW |
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 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
68 } | 68 } |
69 | 69 |
70 TranslateManager::TranslateManager( | 70 TranslateManager::TranslateManager( |
71 TranslateClient* translate_client, | 71 TranslateClient* translate_client, |
72 const std::string& accept_languages_pref_name) | 72 const std::string& accept_languages_pref_name) |
73 : accept_languages_pref_name_(accept_languages_pref_name), | 73 : accept_languages_pref_name_(accept_languages_pref_name), |
74 translate_client_(translate_client), | 74 translate_client_(translate_client), |
75 translate_driver_(translate_client_->GetTranslateDriver()), | 75 translate_driver_(translate_client_->GetTranslateDriver()), |
76 weak_method_factory_(this) {} | 76 weak_method_factory_(this) {} |
77 | 77 |
| 78 base::WeakPtr<TranslateManager> TranslateManager::GetWeakPtr() { |
| 79 return weak_method_factory_.GetWeakPtr(); |
| 80 } |
| 81 |
78 void TranslateManager::InitiateTranslation(const std::string& page_lang) { | 82 void TranslateManager::InitiateTranslation(const std::string& page_lang) { |
79 // Short-circuit out if not in a state where initiating translation makes | 83 // Short-circuit out if not in a state where initiating translation makes |
80 // sense (this method may be called muhtiple times for a given page). | 84 // sense (this method may be called muhtiple times for a given page). |
81 LanguageState& language_state = translate_driver_->GetLanguageState(); | 85 LanguageState& language_state = translate_driver_->GetLanguageState(); |
82 if (!language_state.page_needs_translation() || | 86 if (!language_state.page_needs_translation() || |
83 language_state.translation_pending() || | 87 language_state.translation_pending() || |
84 language_state.translation_declined() || | 88 language_state.translation_declined() || |
85 language_state.IsPageTranslated()) { | 89 language_state.IsPageTranslated()) { |
86 return; | 90 return; |
87 } | 91 } |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
232 DCHECK(script != NULL); | 236 DCHECK(script != NULL); |
233 | 237 |
234 const std::string& script_data = script->data(); | 238 const std::string& script_data = script->data(); |
235 if (!script_data.empty()) { | 239 if (!script_data.empty()) { |
236 DoTranslatePage(script_data, source_lang, target_lang); | 240 DoTranslatePage(script_data, source_lang, target_lang); |
237 return; | 241 return; |
238 } | 242 } |
239 | 243 |
240 // The script is not available yet. Queue that request and query for the | 244 // The script is not available yet. Queue that request and query for the |
241 // script. Once it is downloaded we'll do the translate. | 245 // script. Once it is downloaded we'll do the translate. |
242 TranslateScript::RequestCallback callback = | 246 TranslateScript::RequestCallback callback = base::Bind( |
243 base::Bind(&TranslateManager::OnTranslateScriptFetchComplete, | 247 &TranslateManager::OnTranslateScriptFetchComplete, GetWeakPtr(), |
244 weak_method_factory_.GetWeakPtr(), | 248 translate_driver_->GetCurrentPageID(), source_lang, target_lang); |
245 translate_driver_->GetCurrentPageID(), | |
246 source_lang, | |
247 target_lang); | |
248 | 249 |
249 script->Request(callback); | 250 script->Request(callback); |
250 } | 251 } |
251 | 252 |
252 void TranslateManager::RevertTranslation() { | 253 void TranslateManager::RevertTranslation() { |
253 translate_driver_->RevertTranslation(); | 254 translate_driver_->RevertTranslation(); |
254 translate_driver_->GetLanguageState().SetCurrentLanguage( | 255 translate_driver_->GetLanguageState().SetCurrentLanguage( |
255 translate_driver_->GetLanguageState().original_language()); | 256 translate_driver_->GetLanguageState().original_language()); |
256 } | 257 } |
257 | 258 |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
377 &auto_target_lang)) { | 378 &auto_target_lang)) { |
378 // We need to confirm that the saved target language is still supported. | 379 // We need to confirm that the saved target language is still supported. |
379 // Also, GetLanguageCode will take care of removing country code if any. | 380 // Also, GetLanguageCode will take care of removing country code if any. |
380 auto_target_lang = | 381 auto_target_lang = |
381 TranslateDownloadManager::GetLanguageCode(auto_target_lang); | 382 TranslateDownloadManager::GetLanguageCode(auto_target_lang); |
382 if (TranslateDownloadManager::IsSupportedLanguage(auto_target_lang)) | 383 if (TranslateDownloadManager::IsSupportedLanguage(auto_target_lang)) |
383 return auto_target_lang; | 384 return auto_target_lang; |
384 } | 385 } |
385 return std::string(); | 386 return std::string(); |
386 } | 387 } |
OLD | NEW |