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

Side by Side Diff: chrome/browser/translate/translate_infobar_delegate.cc

Issue 3034013: Fetch the translate script regularly (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: Synced Created 10 years, 5 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 (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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_infobar_delegate.h" 5 #include "chrome/browser/translate/translate_infobar_delegate.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "app/l10n_util.h" 9 #include "app/l10n_util.h"
10 #include "app/resource_bundle.h" 10 #include "app/resource_bundle.h"
11 #include "base/histogram.h" 11 #include "base/histogram.h"
12 #include "chrome/browser/browser_process.h" 12 #include "chrome/browser/browser_process.h"
13 #include "chrome/browser/profile.h" 13 #include "chrome/browser/profile.h"
14 #include "chrome/browser/tab_contents/tab_contents.h" 14 #include "chrome/browser/tab_contents/tab_contents.h"
15 #include "chrome/browser/translate/translate_infobar_view.h" 15 #include "chrome/browser/translate/translate_infobar_view.h"
16 #include "chrome/browser/translate/translate_manager.h" 16 #include "chrome/browser/translate/translate_manager.h"
17 #include "grit/generated_resources.h" 17 #include "grit/generated_resources.h"
18 #include "grit/theme_resources.h" 18 #include "grit/theme_resources.h"
19 19
20 // static 20 // static
21 TranslateInfoBarDelegate* TranslateInfoBarDelegate::CreateDelegate( 21 TranslateInfoBarDelegate* TranslateInfoBarDelegate::CreateDelegate(
22 Type type, 22 Type type,
23 TabContents* tab_contents, 23 TabContents* tab_contents,
24 const std::string& original_language, 24 const std::string& original_language,
25 const std::string& target_language) { 25 const std::string& target_language) {
26 DCHECK(type != kTranslationError); 26 DCHECK(type != TRANSLATION_ERROR);
27 if (!TranslateManager::IsSupportedLanguage(original_language) || 27 if (!TranslateManager::IsSupportedLanguage(original_language) ||
28 !TranslateManager::IsSupportedLanguage(target_language)) { 28 !TranslateManager::IsSupportedLanguage(target_language)) {
29 return NULL; 29 return NULL;
30 } 30 }
31 TranslateInfoBarDelegate* delegate = 31 TranslateInfoBarDelegate* delegate =
32 new TranslateInfoBarDelegate(type, TranslateErrors::NONE, 32 new TranslateInfoBarDelegate(type, TranslateErrors::NONE,
33 tab_contents, 33 tab_contents,
34 original_language, target_language); 34 original_language, target_language);
35 DCHECK(delegate->original_language_index() != -1); 35 DCHECK(delegate->original_language_index() != -1);
36 DCHECK(delegate->target_language_index() != -1); 36 DCHECK(delegate->target_language_index() != -1);
37 return delegate; 37 return delegate;
38 } 38 }
39 39
40 TranslateInfoBarDelegate* TranslateInfoBarDelegate::CreateErrorDelegate( 40 TranslateInfoBarDelegate* TranslateInfoBarDelegate::CreateErrorDelegate(
41 TranslateErrors::Type error, 41 TranslateErrors::Type error,
42 TabContents* tab_contents, 42 TabContents* tab_contents,
43 const std::string& original_language, 43 const std::string& original_language,
44 const std::string& target_language) { 44 const std::string& target_language) {
45 return new TranslateInfoBarDelegate(kTranslationError, error, tab_contents, 45 return new TranslateInfoBarDelegate(TRANSLATION_ERROR, error, tab_contents,
46 original_language, target_language); 46 original_language, target_language);
47 } 47 }
48 48
49 TranslateInfoBarDelegate::TranslateInfoBarDelegate( 49 TranslateInfoBarDelegate::TranslateInfoBarDelegate(
50 Type type, 50 Type type,
51 TranslateErrors::Type error, 51 TranslateErrors::Type error,
52 TabContents* tab_contents, 52 TabContents* tab_contents,
53 const std::string& original_language, 53 const std::string& original_language,
54 const std::string& target_language) 54 const std::string& target_language)
55 : InfoBarDelegate(tab_contents), 55 : InfoBarDelegate(tab_contents),
56 type_(type), 56 type_(type),
57 background_animation_(kNone), 57 background_animation_(NONE),
58 tab_contents_(tab_contents), 58 tab_contents_(tab_contents),
59 original_language_index_(-1), 59 original_language_index_(-1),
60 initial_original_language_index_(-1), 60 initial_original_language_index_(-1),
61 target_language_index_(-1), 61 target_language_index_(-1),
62 error_(error), 62 error_(error),
63 infobar_view_(NULL), 63 infobar_view_(NULL),
64 prefs_(tab_contents_->profile()->GetPrefs()) { 64 prefs_(tab_contents_->profile()->GetPrefs()) {
65 DCHECK((type_ != kTranslationError && error == TranslateErrors::NONE) || 65 DCHECK((type_ != TRANSLATION_ERROR && error == TranslateErrors::NONE) ||
66 (type_ == kTranslationError && error != TranslateErrors::NONE)); 66 (type_ == TRANSLATION_ERROR && error != TranslateErrors::NONE));
67 67
68 std::vector<std::string> language_codes; 68 std::vector<std::string> language_codes;
69 TranslateManager::GetSupportedLanguages(&language_codes); 69 TranslateManager::GetSupportedLanguages(&language_codes);
70 70
71 languages_.reserve(language_codes.size()); 71 languages_.reserve(language_codes.size());
72 for (std::vector<std::string>::const_iterator iter = language_codes.begin(); 72 for (std::vector<std::string>::const_iterator iter = language_codes.begin();
73 iter != language_codes.end(); ++iter) { 73 iter != language_codes.end(); ++iter) {
74 std::string language_code = *iter; 74 std::string language_code = *iter;
75 75
76 string16 language_name = GetLanguageDisplayableName(language_code); 76 string16 language_name = GetLanguageDisplayableName(language_code);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 116
117 std::string TranslateInfoBarDelegate::GetTargetLanguageCode() const { 117 std::string TranslateInfoBarDelegate::GetTargetLanguageCode() const {
118 return GetLanguageCodeAt(target_language_index()); 118 return GetLanguageCodeAt(target_language_index());
119 } 119 }
120 120
121 void TranslateInfoBarDelegate::SetOriginalLanguage(int language_index) { 121 void TranslateInfoBarDelegate::SetOriginalLanguage(int language_index) {
122 DCHECK(language_index < static_cast<int>(languages_.size())); 122 DCHECK(language_index < static_cast<int>(languages_.size()));
123 original_language_index_ = language_index; 123 original_language_index_ = language_index;
124 if (infobar_view_) 124 if (infobar_view_)
125 infobar_view_->OriginalLanguageChanged(); 125 infobar_view_->OriginalLanguageChanged();
126 if (type_ == kAfterTranslate) 126 if (type_ == AFTER_TRANSLATE)
127 Translate(); 127 Translate();
128 } 128 }
129 129
130 void TranslateInfoBarDelegate::SetTargetLanguage(int language_index) { 130 void TranslateInfoBarDelegate::SetTargetLanguage(int language_index) {
131 DCHECK(language_index < static_cast<int>(languages_.size())); 131 DCHECK(language_index < static_cast<int>(languages_.size()));
132 target_language_index_ = language_index; 132 target_language_index_ = language_index;
133 if (infobar_view_) 133 if (infobar_view_)
134 infobar_view_->TargetLanguageChanged(); 134 infobar_view_->TargetLanguageChanged();
135 if (type_ == kAfterTranslate) 135 if (type_ == AFTER_TRANSLATE)
136 Translate(); 136 Translate();
137 } 137 }
138 138
139 bool TranslateInfoBarDelegate::IsError() { 139 bool TranslateInfoBarDelegate::IsError() {
140 return type_ == kTranslationError; 140 return type_ == TRANSLATION_ERROR;
141 } 141 }
142 142
143 void TranslateInfoBarDelegate::Translate() { 143 void TranslateInfoBarDelegate::Translate() {
144 const std::string& original_language_code = GetOriginalLanguageCode(); 144 const std::string& original_language_code = GetOriginalLanguageCode();
145 prefs_.ResetTranslationDeniedCount(original_language_code); 145 prefs_.ResetTranslationDeniedCount(original_language_code);
146 prefs_.IncrementTranslationAcceptedCount(original_language_code); 146 prefs_.IncrementTranslationAcceptedCount(original_language_code);
147 147
148 Singleton<TranslateManager>::get()->TranslatePage( 148 Singleton<TranslateManager>::get()->TranslatePage(
149 tab_contents_, 149 tab_contents_,
150 GetLanguageCodeAt(original_language_index()), 150 GetLanguageCodeAt(original_language_index()),
(...skipping 17 matching lines...) Expand all
168 168
169 // Remember that the user declined the translation so as to prevent showing a 169 // Remember that the user declined the translation so as to prevent showing a
170 // translate infobar for that page again. (TranslateManager initiates 170 // translate infobar for that page again. (TranslateManager initiates
171 // translations when getting a LANGUAGE_DETERMINED from the page, which 171 // translations when getting a LANGUAGE_DETERMINED from the page, which
172 // happens when a load stops. That could happen multiple times, including 172 // happens when a load stops. That could happen multiple times, including
173 // after the user already declined the translation.) 173 // after the user already declined the translation.)
174 tab_contents_->language_state().set_translation_declined(true); 174 tab_contents_->language_state().set_translation_declined(true);
175 } 175 }
176 176
177 void TranslateInfoBarDelegate::InfoBarDismissed() { 177 void TranslateInfoBarDelegate::InfoBarDismissed() {
178 if (type_ != kBeforeTranslate) 178 if (type_ != BEFORE_TRANSLATE)
179 return; 179 return;
180 180
181 // The user closed the infobar without clicking the translate button. 181 // The user closed the infobar without clicking the translate button.
182 TranslationDeclined(); 182 TranslationDeclined();
183 UMA_HISTOGRAM_COUNTS("Translate.DeclineTranslateCloseInfobar", 1); 183 UMA_HISTOGRAM_COUNTS("Translate.DeclineTranslateCloseInfobar", 1);
184 } 184 }
185 185
186 void TranslateInfoBarDelegate::InfoBarClosed() { 186 void TranslateInfoBarDelegate::InfoBarClosed() {
187 delete this; 187 delete this;
188 } 188 }
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 252
253 void TranslateInfoBarDelegate::NeverTranslatePageLanguage() { 253 void TranslateInfoBarDelegate::NeverTranslatePageLanguage() {
254 std::string original_lang = GetOriginalLanguageCode(); 254 std::string original_lang = GetOriginalLanguageCode();
255 DCHECK(!prefs_.IsLanguageBlacklisted(original_lang)); 255 DCHECK(!prefs_.IsLanguageBlacklisted(original_lang));
256 prefs_.BlacklistLanguage(original_lang); 256 prefs_.BlacklistLanguage(original_lang);
257 tab_contents_->RemoveInfoBar(this); 257 tab_contents_->RemoveInfoBar(this);
258 } 258 }
259 259
260 string16 TranslateInfoBarDelegate::GetMessageInfoBarText() { 260 string16 TranslateInfoBarDelegate::GetMessageInfoBarText() {
261 switch (type_) { 261 switch (type_) {
262 case kTranslating: 262 case TRANSLATING:
263 return l10n_util::GetStringFUTF16( 263 return l10n_util::GetStringFUTF16(
264 IDS_TRANSLATE_INFOBAR_TRANSLATING_TO, 264 IDS_TRANSLATE_INFOBAR_TRANSLATING_TO,
265 GetLanguageDisplayableNameAt(target_language_index_)); 265 GetLanguageDisplayableNameAt(target_language_index_));
266 case kTranslationError: 266 case TRANSLATION_ERROR:
267 switch (error_) { 267 switch (error_) {
268 case TranslateErrors::NETWORK: 268 case TranslateErrors::NETWORK:
269 return l10n_util::GetStringUTF16( 269 return l10n_util::GetStringUTF16(
270 IDS_TRANSLATE_INFOBAR_ERROR_CANT_CONNECT); 270 IDS_TRANSLATE_INFOBAR_ERROR_CANT_CONNECT);
271 case TranslateErrors::INITIALIZATION_ERROR: 271 case TranslateErrors::INITIALIZATION_ERROR:
272 case TranslateErrors::TRANSLATION_ERROR: 272 case TranslateErrors::TRANSLATION_ERROR:
273 return l10n_util::GetStringUTF16( 273 return l10n_util::GetStringUTF16(
274 IDS_TRANSLATE_INFOBAR_ERROR_CANT_TRANSLATE); 274 IDS_TRANSLATE_INFOBAR_ERROR_CANT_TRANSLATE);
275 case TranslateErrors::UNKNOWN_LANGUAGE: 275 case TranslateErrors::UNKNOWN_LANGUAGE:
276 return l10n_util::GetStringUTF16( 276 return l10n_util::GetStringUTF16(
(...skipping 11 matching lines...) Expand all
288 return string16(); 288 return string16();
289 } 289 }
290 default: 290 default:
291 NOTREACHED(); 291 NOTREACHED();
292 return string16(); 292 return string16();
293 } 293 }
294 } 294 }
295 295
296 string16 TranslateInfoBarDelegate::GetMessageInfoBarButtonText() { 296 string16 TranslateInfoBarDelegate::GetMessageInfoBarButtonText() {
297 switch (type_) { 297 switch (type_) {
298 case kTranslating: 298 case TRANSLATING:
299 return string16(); 299 return string16();
300 case kTranslationError: 300 case TRANSLATION_ERROR:
301 if (error_ == TranslateErrors::IDENTICAL_LANGUAGES || 301 if (error_ == TranslateErrors::IDENTICAL_LANGUAGES ||
302 error_ == TranslateErrors::UNKNOWN_LANGUAGE) { 302 error_ == TranslateErrors::UNKNOWN_LANGUAGE) {
303 // No retry button, we would fail again with the same error. 303 // No retry button, we would fail again with the same error.
304 return string16(); 304 return string16();
305 } 305 }
306 if (error_ == TranslateErrors::UNSUPPORTED_LANGUAGE) 306 if (error_ == TranslateErrors::UNSUPPORTED_LANGUAGE)
307 return l10n_util::GetStringUTF16(IDS_TRANSLATE_INFOBAR_REVERT); 307 return l10n_util::GetStringUTF16(IDS_TRANSLATE_INFOBAR_REVERT);
308 return l10n_util::GetStringUTF16(IDS_TRANSLATE_INFOBAR_RETRY); 308 return l10n_util::GetStringUTF16(IDS_TRANSLATE_INFOBAR_RETRY);
309 default: 309 default:
310 NOTREACHED(); 310 NOTREACHED();
311 return string16(); 311 return string16();
312 } 312 }
313 } 313 }
314 314
315 void TranslateInfoBarDelegate::MessageInfoBarButtonPressed() { 315 void TranslateInfoBarDelegate::MessageInfoBarButtonPressed() {
316 DCHECK(type_ == kTranslationError); 316 DCHECK(type_ == TRANSLATION_ERROR);
317 if (error_ == TranslateErrors::UNSUPPORTED_LANGUAGE) { 317 if (error_ == TranslateErrors::UNSUPPORTED_LANGUAGE) {
318 RevertTranslation(); 318 RevertTranslation();
319 return; 319 return;
320 } 320 }
321 // This is the "Try again..." case. 321 // This is the "Try again..." case.
322 Singleton<TranslateManager>::get()->TranslatePage( 322 Singleton<TranslateManager>::get()->TranslatePage(
323 tab_contents_, GetOriginalLanguageCode(), GetTargetLanguageCode()); 323 tab_contents_, GetOriginalLanguageCode(), GetTargetLanguageCode());
324 } 324 }
325 325
326 bool TranslateInfoBarDelegate::ShouldShowNeverTranslateButton() { 326 bool TranslateInfoBarDelegate::ShouldShowNeverTranslateButton() {
327 DCHECK(type_ == kBeforeTranslate); 327 DCHECK(type_ == BEFORE_TRANSLATE);
328 return prefs_.GetTranslationDeniedCount(GetOriginalLanguageCode()) >= 3; 328 return prefs_.GetTranslationDeniedCount(GetOriginalLanguageCode()) >= 3;
329 } 329 }
330 330
331 bool TranslateInfoBarDelegate::ShouldShowAlwaysTranslateButton() { 331 bool TranslateInfoBarDelegate::ShouldShowAlwaysTranslateButton() {
332 DCHECK(type_ == kBeforeTranslate); 332 DCHECK(type_ == BEFORE_TRANSLATE);
333 return prefs_.GetTranslationAcceptedCount(GetOriginalLanguageCode()) >= 3; 333 return prefs_.GetTranslationAcceptedCount(GetOriginalLanguageCode()) >= 3;
334 } 334 }
335 335
336 void TranslateInfoBarDelegate::UpdateBackgroundAnimation( 336 void TranslateInfoBarDelegate::UpdateBackgroundAnimation(
337 TranslateInfoBarDelegate* previous_infobar) { 337 TranslateInfoBarDelegate* previous_infobar) {
338 if (!previous_infobar || previous_infobar->IsError() == IsError()) { 338 if (!previous_infobar || previous_infobar->IsError() == IsError()) {
339 background_animation_ = kNone; 339 background_animation_ = NONE;
340 return; 340 return;
341 } 341 }
342 background_animation_ = IsError() ? kNormalToError: kErrorToNormal; 342 background_animation_ = IsError() ? NORMAL_TO_ERROR: ERROR_TO_NORMAL;
343 } 343 }
344 344
345 std::string TranslateInfoBarDelegate::GetPageHost() { 345 std::string TranslateInfoBarDelegate::GetPageHost() {
346 NavigationEntry* entry = tab_contents_->controller().GetActiveEntry(); 346 NavigationEntry* entry = tab_contents_->controller().GetActiveEntry();
347 return entry ? entry->url().HostNoBrackets() : std::string(); 347 return entry ? entry->url().HostNoBrackets() : std::string();
348 } 348 }
349 349
350 // static 350 // static
351 string16 TranslateInfoBarDelegate::GetLanguageDisplayableName( 351 string16 TranslateInfoBarDelegate::GetLanguageDisplayableName(
352 const std::string& language_code) { 352 const std::string& language_code) {
(...skipping 18 matching lines...) Expand all
371 std::swap(offsets[0], offsets[1]); 371 std::swap(offsets[0], offsets[1]);
372 *swap_languages = true; 372 *swap_languages = true;
373 } else { 373 } else {
374 *swap_languages = false; 374 *swap_languages = false;
375 } 375 }
376 376
377 strings->push_back(text.substr(0, offsets[0])); 377 strings->push_back(text.substr(0, offsets[0]));
378 strings->push_back(text.substr(offsets[0], offsets[1] - offsets[0])); 378 strings->push_back(text.substr(offsets[0], offsets[1] - offsets[0]));
379 strings->push_back(text.substr(offsets[1])); 379 strings->push_back(text.substr(offsets[1]));
380 } 380 }
OLDNEW
« no previous file with comments | « chrome/browser/translate/translate_infobar_delegate.h ('k') | chrome/browser/translate/translate_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698