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

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: Tested for asan issue on linux 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
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 TranslateClient* translate_client,
36 const std::string& original_language, 36 const base::WeakPtr<TranslateManager>& translate_manager,
37 const std::string& target_language) 37 const std::string& original_language,
38 const std::string& target_language)
38 : translate_client_(translate_client), 39 : translate_client_(translate_client),
39 translate_driver_(translate_client->GetTranslateDriver()), 40 translate_driver_(translate_client->GetTranslateDriver()),
40 translate_manager_(translate_manager), 41 translate_manager_(translate_manager),
41 original_language_index_(NO_INDEX), 42 original_language_index_(NO_INDEX),
42 initial_original_language_index_(NO_INDEX), 43 initial_original_language_index_(NO_INDEX),
43 target_language_index_(NO_INDEX) { 44 target_language_index_(NO_INDEX) {
44 DCHECK(translate_client_); 45 DCHECK(translate_client_);
45 DCHECK(translate_driver_); 46 DCHECK(translate_driver_);
46 DCHECK(translate_manager_); 47 DCHECK(translate_manager_);
47 48
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 DCHECK_LT(error_type, TranslateErrors::TRANSLATE_ERROR_MAX); 97 DCHECK_LT(error_type, TranslateErrors::TRANSLATE_ERROR_MAX);
97 98
98 if (error_type == TranslateErrors::NONE) 99 if (error_type == TranslateErrors::NONE)
99 return; 100 return;
100 101
101 UMA_HISTOGRAM_ENUMERATION( 102 UMA_HISTOGRAM_ENUMERATION(
102 kShowErrorUI, error_type, TranslateErrors::TRANSLATE_ERROR_MAX); 103 kShowErrorUI, error_type, TranslateErrors::TRANSLATE_ERROR_MAX);
103 } 104 }
104 105
105 const LanguageState& TranslateUIDelegate::GetLanguageState() { 106 const LanguageState& TranslateUIDelegate::GetLanguageState() {
106 return translate_driver_->GetLanguageState(); 107 return translate_manager_->GetLanguageState();
107 } 108 }
108 109
109 size_t TranslateUIDelegate::GetNumberOfLanguages() const { 110 size_t TranslateUIDelegate::GetNumberOfLanguages() const {
110 return languages_.size(); 111 return languages_.size();
111 } 112 }
112 113
113 size_t TranslateUIDelegate::GetOriginalLanguageIndex() const { 114 size_t TranslateUIDelegate::GetOriginalLanguageIndex() const {
114 return original_language_index_; 115 return original_language_index_;
115 } 116 }
116 117
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 156
156 std::string TranslateUIDelegate::GetTargetLanguageCode() const { 157 std::string TranslateUIDelegate::GetTargetLanguageCode() const {
157 return GetLanguageCodeAt(GetTargetLanguageIndex()); 158 return GetLanguageCodeAt(GetTargetLanguageIndex());
158 } 159 }
159 160
160 void TranslateUIDelegate::Translate() { 161 void TranslateUIDelegate::Translate() {
161 if (!translate_driver_->IsOffTheRecord()) { 162 if (!translate_driver_->IsOffTheRecord()) {
162 prefs_->ResetTranslationDeniedCount(GetOriginalLanguageCode()); 163 prefs_->ResetTranslationDeniedCount(GetOriginalLanguageCode());
163 prefs_->IncrementTranslationAcceptedCount(GetOriginalLanguageCode()); 164 prefs_->IncrementTranslationAcceptedCount(GetOriginalLanguageCode());
164 } 165 }
165 translate_manager_->TranslatePage( 166
166 GetOriginalLanguageCode(), GetTargetLanguageCode(), false); 167 if (translate_manager_) {
droger 2014/06/05 08:36:35 Note: if translate_manager_ is NULL here, we will
nshaik 2014/06/05 18:45:30 Done.
168 translate_manager_->TranslatePage(
169 GetOriginalLanguageCode(), GetTargetLanguageCode(), false);
170 }
167 171
168 UMA_HISTOGRAM_BOOLEAN(kPerformTranslate, true); 172 UMA_HISTOGRAM_BOOLEAN(kPerformTranslate, true);
169 } 173 }
170 174
171 void TranslateUIDelegate::RevertTranslation() { 175 void TranslateUIDelegate::RevertTranslation() {
172 translate_manager_->RevertTranslation(); 176 if (translate_manager_) {
177 translate_manager_->RevertTranslation();
178 }
173 179
174 UMA_HISTOGRAM_BOOLEAN(kRevertTranslation, true); 180 UMA_HISTOGRAM_BOOLEAN(kRevertTranslation, true);
175 } 181 }
176 182
177 void TranslateUIDelegate::TranslationDeclined(bool explicitly_closed) { 183 void TranslateUIDelegate::TranslationDeclined(bool explicitly_closed) {
178 if (!translate_driver_->IsOffTheRecord()) { 184 if (!translate_driver_->IsOffTheRecord()) {
179 prefs_->ResetTranslationAcceptedCount(GetOriginalLanguageCode()); 185 prefs_->ResetTranslationAcceptedCount(GetOriginalLanguageCode());
180 prefs_->IncrementTranslationDeniedCount(GetOriginalLanguageCode()); 186 prefs_->IncrementTranslationDeniedCount(GetOriginalLanguageCode());
181 } 187 }
182 188
183 // Remember that the user declined the translation so as to prevent showing a 189 // Remember that the user declined the translation so as to prevent showing a
184 // translate infobar for that page again. (TranslateManager initiates 190 // translate infobar for that page again. (TranslateManager initiates
185 // translations when getting a LANGUAGE_DETERMINED from the page, which 191 // translations when getting a LANGUAGE_DETERMINED from the page, which
186 // happens when a load stops. That could happen multiple times, including 192 // happens when a load stops. That could happen multiple times, including
187 // after the user already declined the translation.) 193 // after the user already declined the translation.)
188 translate_driver_->GetLanguageState().set_translation_declined(true); 194 if (translate_manager_) {
195 translate_manager_->GetLanguageState().set_translation_declined(true);
196 }
189 197
190 UMA_HISTOGRAM_BOOLEAN(kDeclineTranslate, true); 198 UMA_HISTOGRAM_BOOLEAN(kDeclineTranslate, true);
191 199
192 if (!explicitly_closed) 200 if (!explicitly_closed)
193 UMA_HISTOGRAM_BOOLEAN(kDeclineTranslateDismissUI, true); 201 UMA_HISTOGRAM_BOOLEAN(kDeclineTranslateDismissUI, true);
194 } 202 }
195 203
196 bool TranslateUIDelegate::IsLanguageBlocked() { 204 bool TranslateUIDelegate::IsLanguageBlocked() {
197 return prefs_->IsBlockedLanguage(GetOriginalLanguageCode()); 205 return prefs_->IsBlockedLanguage(GetOriginalLanguageCode());
198 } 206 }
199 207
200 void TranslateUIDelegate::SetLanguageBlocked(bool value) { 208 void TranslateUIDelegate::SetLanguageBlocked(bool value) {
201 if (value) { 209 if (value) {
202 prefs_->BlockLanguage(GetOriginalLanguageCode()); 210 prefs_->BlockLanguage(GetOriginalLanguageCode());
203 translate_driver_->GetLanguageState().SetTranslateEnabled(false); 211 if (translate_manager_) {
212 translate_manager_->GetLanguageState().SetTranslateEnabled(false);
213 }
204 } else { 214 } else {
205 prefs_->UnblockLanguage(GetOriginalLanguageCode()); 215 prefs_->UnblockLanguage(GetOriginalLanguageCode());
206 } 216 }
207 217
208 UMA_HISTOGRAM_BOOLEAN(kNeverTranslateLang, true); 218 UMA_HISTOGRAM_BOOLEAN(kNeverTranslateLang, true);
209 } 219 }
210 220
211 bool TranslateUIDelegate::IsSiteBlacklisted() { 221 bool TranslateUIDelegate::IsSiteBlacklisted() {
212 std::string host = GetPageHost(); 222 std::string host = GetPageHost();
213 return !host.empty() && prefs_->IsSiteBlacklisted(host); 223 return !host.empty() && prefs_->IsSiteBlacklisted(host);
214 } 224 }
215 225
216 void TranslateUIDelegate::SetSiteBlacklist(bool value) { 226 void TranslateUIDelegate::SetSiteBlacklist(bool value) {
217 std::string host = GetPageHost(); 227 std::string host = GetPageHost();
218 if (host.empty()) 228 if (host.empty())
219 return; 229 return;
220 230
221 if (value) { 231 if (value) {
222 prefs_->BlacklistSite(host); 232 prefs_->BlacklistSite(host);
223 translate_driver_->GetLanguageState().SetTranslateEnabled(false); 233 if (translate_manager_) {
234 translate_manager_->GetLanguageState().SetTranslateEnabled(false);
235 }
224 } else { 236 } else {
225 prefs_->RemoveSiteFromBlacklist(host); 237 prefs_->RemoveSiteFromBlacklist(host);
226 } 238 }
227 239
228 UMA_HISTOGRAM_BOOLEAN(kNeverTranslateSite, true); 240 UMA_HISTOGRAM_BOOLEAN(kNeverTranslateSite, true);
229 } 241 }
230 242
231 bool TranslateUIDelegate::ShouldAlwaysTranslate() { 243 bool TranslateUIDelegate::ShouldAlwaysTranslate() {
232 return prefs_->IsLanguagePairWhitelisted(GetOriginalLanguageCode(), 244 return prefs_->IsLanguagePairWhitelisted(GetOriginalLanguageCode(),
233 GetTargetLanguageCode()); 245 GetTargetLanguageCode());
234 } 246 }
235 247
236 void TranslateUIDelegate::SetAlwaysTranslate(bool value) { 248 void TranslateUIDelegate::SetAlwaysTranslate(bool value) {
237 const std::string& original_lang = GetOriginalLanguageCode(); 249 const std::string& original_lang = GetOriginalLanguageCode();
238 const std::string& target_lang = GetTargetLanguageCode(); 250 const std::string& target_lang = GetTargetLanguageCode();
239 if (value) 251 if (value)
240 prefs_->WhitelistLanguagePair(original_lang, target_lang); 252 prefs_->WhitelistLanguagePair(original_lang, target_lang);
241 else 253 else
242 prefs_->RemoveLanguagePairFromWhitelist(original_lang, target_lang); 254 prefs_->RemoveLanguagePairFromWhitelist(original_lang, target_lang);
243 255
244 UMA_HISTOGRAM_BOOLEAN(kAlwaysTranslateLang, true); 256 UMA_HISTOGRAM_BOOLEAN(kAlwaysTranslateLang, true);
245 } 257 }
246 258
247 std::string TranslateUIDelegate::GetPageHost() { 259 std::string TranslateUIDelegate::GetPageHost() {
248 if (!translate_driver_->HasCurrentPage()) 260 if (!translate_driver_->HasCurrentPage())
249 return std::string(); 261 return std::string();
250 return translate_driver_->GetActiveURL().HostNoBrackets(); 262 return translate_driver_->GetActiveURL().HostNoBrackets();
251 } 263 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698