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

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

Issue 290573013: LanguageState should be owned by TranslateManager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Adding TBR for CL Created 6 years, 6 months 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
« no previous file with comments | « components/translate/core/browser/translate_ui_delegate.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_ui_delegate.h" 5 #include "components/translate/core/browser/translate_ui_delegate.h"
6 6
7 #include "base/i18n/string_compare.h" 7 #include "base/i18n/string_compare.h"
8 #include "base/metrics/histogram.h" 8 #include "base/metrics/histogram.h"
9 #include "components/translate/core/browser/language_state.h" 9 #include "components/translate/core/browser/language_state.h"
10 #include "components/translate/core/browser/translate_client.h" 10 #include "components/translate/core/browser/translate_client.h"
(...skipping 13 matching lines...) Expand all
24 const char kNeverTranslateLang[] = "Translate.NeverTranslateLang"; 24 const char kNeverTranslateLang[] = "Translate.NeverTranslateLang";
25 const char kNeverTranslateSite[] = "Translate.NeverTranslateSite"; 25 const char kNeverTranslateSite[] = "Translate.NeverTranslateSite";
26 const char kAlwaysTranslateLang[] = "Translate.AlwaysTranslateLang"; 26 const char kAlwaysTranslateLang[] = "Translate.AlwaysTranslateLang";
27 const char kModifyOriginalLang[] = "Translate.ModifyOriginalLang"; 27 const char kModifyOriginalLang[] = "Translate.ModifyOriginalLang";
28 const char kModifyTargetLang[] = "Translate.ModifyTargetLang"; 28 const char kModifyTargetLang[] = "Translate.ModifyTargetLang";
29 const char kDeclineTranslateDismissUI[] = "Translate.DeclineTranslateDismissUI"; 29 const char kDeclineTranslateDismissUI[] = "Translate.DeclineTranslateDismissUI";
30 const char kShowErrorUI[] = "Translate.ShowErrorUI"; 30 const char kShowErrorUI[] = "Translate.ShowErrorUI";
31 31
32 } // namespace 32 } // namespace
33 33
34 TranslateUIDelegate::TranslateUIDelegate(TranslateClient* translate_client, 34 TranslateUIDelegate::TranslateUIDelegate(
35 TranslateManager* translate_manager, 35 const base::WeakPtr<TranslateManager>& translate_manager,
36 const std::string& original_language, 36 const std::string& original_language,
37 const std::string& target_language) 37 const std::string& target_language)
38 : translate_client_(translate_client), 38 : translate_driver_(
39 translate_driver_(translate_client->GetTranslateDriver()), 39 translate_manager->translate_client()->GetTranslateDriver()),
40 translate_manager_(translate_manager), 40 translate_manager_(translate_manager),
41 original_language_index_(NO_INDEX), 41 original_language_index_(NO_INDEX),
42 initial_original_language_index_(NO_INDEX), 42 initial_original_language_index_(NO_INDEX),
43 target_language_index_(NO_INDEX) { 43 target_language_index_(NO_INDEX) {
44 DCHECK(translate_client_);
45 DCHECK(translate_driver_); 44 DCHECK(translate_driver_);
46 DCHECK(translate_manager_); 45 DCHECK(translate_manager_);
47 46
48 std::vector<std::string> language_codes; 47 std::vector<std::string> language_codes;
49 TranslateDownloadManager::GetSupportedLanguages(&language_codes); 48 TranslateDownloadManager::GetSupportedLanguages(&language_codes);
50 49
51 // Preparing for the alphabetical order in the locale. 50 // Preparing for the alphabetical order in the locale.
52 UErrorCode error = U_ZERO_ERROR; 51 UErrorCode error = U_ZERO_ERROR;
53 std::string locale = 52 std::string locale =
54 TranslateDownloadManager::GetInstance()->application_locale(); 53 TranslateDownloadManager::GetInstance()->application_locale();
(...skipping 24 matching lines...) Expand all
79 ++iter) { 78 ++iter) {
80 std::string language_code = iter->first; 79 std::string language_code = iter->first;
81 if (language_code == original_language) { 80 if (language_code == original_language) {
82 original_language_index_ = iter - languages_.begin(); 81 original_language_index_ = iter - languages_.begin();
83 initial_original_language_index_ = original_language_index_; 82 initial_original_language_index_ = original_language_index_;
84 } 83 }
85 if (language_code == target_language) 84 if (language_code == target_language)
86 target_language_index_ = iter - languages_.begin(); 85 target_language_index_ = iter - languages_.begin();
87 } 86 }
88 87
89 prefs_ = translate_client_->GetTranslatePrefs(); 88 prefs_ = translate_manager_->translate_client()->GetTranslatePrefs();
90 } 89 }
91 90
92 TranslateUIDelegate::~TranslateUIDelegate() {} 91 TranslateUIDelegate::~TranslateUIDelegate() {}
93 92
94 void TranslateUIDelegate::OnErrorShown(TranslateErrors::Type error_type) { 93 void TranslateUIDelegate::OnErrorShown(TranslateErrors::Type error_type) {
95 DCHECK_LE(TranslateErrors::NONE, error_type); 94 DCHECK_LE(TranslateErrors::NONE, error_type);
96 DCHECK_LT(error_type, TranslateErrors::TRANSLATE_ERROR_MAX); 95 DCHECK_LT(error_type, TranslateErrors::TRANSLATE_ERROR_MAX);
97 96
98 if (error_type == TranslateErrors::NONE) 97 if (error_type == TranslateErrors::NONE)
99 return; 98 return;
100 99
101 UMA_HISTOGRAM_ENUMERATION( 100 UMA_HISTOGRAM_ENUMERATION(
102 kShowErrorUI, error_type, TranslateErrors::TRANSLATE_ERROR_MAX); 101 kShowErrorUI, error_type, TranslateErrors::TRANSLATE_ERROR_MAX);
103 } 102 }
104 103
105 const LanguageState& TranslateUIDelegate::GetLanguageState() { 104 const LanguageState& TranslateUIDelegate::GetLanguageState() {
106 return translate_driver_->GetLanguageState(); 105 return translate_manager_->GetLanguageState();
107 } 106 }
108 107
109 size_t TranslateUIDelegate::GetNumberOfLanguages() const { 108 size_t TranslateUIDelegate::GetNumberOfLanguages() const {
110 return languages_.size(); 109 return languages_.size();
111 } 110 }
112 111
113 size_t TranslateUIDelegate::GetOriginalLanguageIndex() const { 112 size_t TranslateUIDelegate::GetOriginalLanguageIndex() const {
114 return original_language_index_; 113 return original_language_index_;
115 } 114 }
116 115
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 154
156 std::string TranslateUIDelegate::GetTargetLanguageCode() const { 155 std::string TranslateUIDelegate::GetTargetLanguageCode() const {
157 return GetLanguageCodeAt(GetTargetLanguageIndex()); 156 return GetLanguageCodeAt(GetTargetLanguageIndex());
158 } 157 }
159 158
160 void TranslateUIDelegate::Translate() { 159 void TranslateUIDelegate::Translate() {
161 if (!translate_driver_->IsOffTheRecord()) { 160 if (!translate_driver_->IsOffTheRecord()) {
162 prefs_->ResetTranslationDeniedCount(GetOriginalLanguageCode()); 161 prefs_->ResetTranslationDeniedCount(GetOriginalLanguageCode());
163 prefs_->IncrementTranslationAcceptedCount(GetOriginalLanguageCode()); 162 prefs_->IncrementTranslationAcceptedCount(GetOriginalLanguageCode());
164 } 163 }
165 translate_manager_->TranslatePage(
166 GetOriginalLanguageCode(), GetTargetLanguageCode(), false);
167 164
168 UMA_HISTOGRAM_BOOLEAN(kPerformTranslate, true); 165 if (translate_manager_) {
166 translate_manager_->TranslatePage(
167 GetOriginalLanguageCode(), GetTargetLanguageCode(), false);
168 UMA_HISTOGRAM_BOOLEAN(kPerformTranslate, true);
169 }
169 } 170 }
170 171
171 void TranslateUIDelegate::RevertTranslation() { 172 void TranslateUIDelegate::RevertTranslation() {
172 translate_manager_->RevertTranslation(); 173 if (translate_manager_) {
173 174 translate_manager_->RevertTranslation();
174 UMA_HISTOGRAM_BOOLEAN(kRevertTranslation, true); 175 UMA_HISTOGRAM_BOOLEAN(kRevertTranslation, true);
176 }
175 } 177 }
176 178
177 void TranslateUIDelegate::TranslationDeclined(bool explicitly_closed) { 179 void TranslateUIDelegate::TranslationDeclined(bool explicitly_closed) {
178 if (!translate_driver_->IsOffTheRecord()) { 180 if (!translate_driver_->IsOffTheRecord()) {
179 prefs_->ResetTranslationAcceptedCount(GetOriginalLanguageCode()); 181 prefs_->ResetTranslationAcceptedCount(GetOriginalLanguageCode());
180 prefs_->IncrementTranslationDeniedCount(GetOriginalLanguageCode()); 182 prefs_->IncrementTranslationDeniedCount(GetOriginalLanguageCode());
181 } 183 }
182 184
183 // Remember that the user declined the translation so as to prevent showing a 185 // Remember that the user declined the translation so as to prevent showing a
184 // translate infobar for that page again. (TranslateManager initiates 186 // translate infobar for that page again. (TranslateManager initiates
185 // translations when getting a LANGUAGE_DETERMINED from the page, which 187 // translations when getting a LANGUAGE_DETERMINED from the page, which
186 // happens when a load stops. That could happen multiple times, including 188 // happens when a load stops. That could happen multiple times, including
187 // after the user already declined the translation.) 189 // after the user already declined the translation.)
188 translate_driver_->GetLanguageState().set_translation_declined(true); 190 if (translate_manager_) {
189 191 translate_manager_->GetLanguageState().set_translation_declined(true);
190 UMA_HISTOGRAM_BOOLEAN(kDeclineTranslate, true); 192 UMA_HISTOGRAM_BOOLEAN(kDeclineTranslate, true);
193 }
191 194
192 if (!explicitly_closed) 195 if (!explicitly_closed)
193 UMA_HISTOGRAM_BOOLEAN(kDeclineTranslateDismissUI, true); 196 UMA_HISTOGRAM_BOOLEAN(kDeclineTranslateDismissUI, true);
194 } 197 }
195 198
196 bool TranslateUIDelegate::IsLanguageBlocked() { 199 bool TranslateUIDelegate::IsLanguageBlocked() {
197 return prefs_->IsBlockedLanguage(GetOriginalLanguageCode()); 200 return prefs_->IsBlockedLanguage(GetOriginalLanguageCode());
198 } 201 }
199 202
200 void TranslateUIDelegate::SetLanguageBlocked(bool value) { 203 void TranslateUIDelegate::SetLanguageBlocked(bool value) {
201 if (value) { 204 if (value) {
202 prefs_->BlockLanguage(GetOriginalLanguageCode()); 205 prefs_->BlockLanguage(GetOriginalLanguageCode());
203 translate_driver_->GetLanguageState().SetTranslateEnabled(false); 206 if (translate_manager_) {
207 translate_manager_->GetLanguageState().SetTranslateEnabled(false);
208 }
204 } else { 209 } else {
205 prefs_->UnblockLanguage(GetOriginalLanguageCode()); 210 prefs_->UnblockLanguage(GetOriginalLanguageCode());
206 } 211 }
207 212
208 UMA_HISTOGRAM_BOOLEAN(kNeverTranslateLang, true); 213 UMA_HISTOGRAM_BOOLEAN(kNeverTranslateLang, true);
209 } 214 }
210 215
211 bool TranslateUIDelegate::IsSiteBlacklisted() { 216 bool TranslateUIDelegate::IsSiteBlacklisted() {
212 std::string host = GetPageHost(); 217 std::string host = GetPageHost();
213 return !host.empty() && prefs_->IsSiteBlacklisted(host); 218 return !host.empty() && prefs_->IsSiteBlacklisted(host);
214 } 219 }
215 220
216 void TranslateUIDelegate::SetSiteBlacklist(bool value) { 221 void TranslateUIDelegate::SetSiteBlacklist(bool value) {
217 std::string host = GetPageHost(); 222 std::string host = GetPageHost();
218 if (host.empty()) 223 if (host.empty())
219 return; 224 return;
220 225
221 if (value) { 226 if (value) {
222 prefs_->BlacklistSite(host); 227 prefs_->BlacklistSite(host);
223 translate_driver_->GetLanguageState().SetTranslateEnabled(false); 228 if (translate_manager_) {
229 translate_manager_->GetLanguageState().SetTranslateEnabled(false);
230 }
224 } else { 231 } else {
225 prefs_->RemoveSiteFromBlacklist(host); 232 prefs_->RemoveSiteFromBlacklist(host);
226 } 233 }
227 234
228 UMA_HISTOGRAM_BOOLEAN(kNeverTranslateSite, true); 235 UMA_HISTOGRAM_BOOLEAN(kNeverTranslateSite, true);
229 } 236 }
230 237
231 bool TranslateUIDelegate::ShouldAlwaysTranslate() { 238 bool TranslateUIDelegate::ShouldAlwaysTranslate() {
232 return prefs_->IsLanguagePairWhitelisted(GetOriginalLanguageCode(), 239 return prefs_->IsLanguagePairWhitelisted(GetOriginalLanguageCode(),
233 GetTargetLanguageCode()); 240 GetTargetLanguageCode());
234 } 241 }
235 242
236 void TranslateUIDelegate::SetAlwaysTranslate(bool value) { 243 void TranslateUIDelegate::SetAlwaysTranslate(bool value) {
237 const std::string& original_lang = GetOriginalLanguageCode(); 244 const std::string& original_lang = GetOriginalLanguageCode();
238 const std::string& target_lang = GetTargetLanguageCode(); 245 const std::string& target_lang = GetTargetLanguageCode();
239 if (value) 246 if (value)
240 prefs_->WhitelistLanguagePair(original_lang, target_lang); 247 prefs_->WhitelistLanguagePair(original_lang, target_lang);
241 else 248 else
242 prefs_->RemoveLanguagePairFromWhitelist(original_lang, target_lang); 249 prefs_->RemoveLanguagePairFromWhitelist(original_lang, target_lang);
243 250
244 UMA_HISTOGRAM_BOOLEAN(kAlwaysTranslateLang, true); 251 UMA_HISTOGRAM_BOOLEAN(kAlwaysTranslateLang, true);
245 } 252 }
246 253
247 std::string TranslateUIDelegate::GetPageHost() { 254 std::string TranslateUIDelegate::GetPageHost() {
248 if (!translate_driver_->HasCurrentPage()) 255 if (!translate_driver_->HasCurrentPage())
249 return std::string(); 256 return std::string();
250 return translate_driver_->GetActiveURL().HostNoBrackets(); 257 return translate_driver_->GetActiveURL().HostNoBrackets();
251 } 258 }
OLDNEW
« no previous file with comments | « components/translate/core/browser/translate_ui_delegate.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698