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

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

Issue 292513002: Remove dependency of TranslateInfobarDelegate on chrome/ and content/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review comments Created 6 years, 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 "base/i18n/string_compare.h" 9 #include "base/i18n/string_compare.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
11 #include "base/prefs/pref_service.h"
12 #include "chrome/browser/infobars/infobar_service.h"
13 #include "components/infobars/core/infobar.h" 11 #include "components/infobars/core/infobar.h"
12 #include "components/infobars/core/infobar_manager.h"
14 #include "components/translate/core/browser/language_state.h" 13 #include "components/translate/core/browser/language_state.h"
15 #include "components/translate/core/browser/translate_accept_languages.h" 14 #include "components/translate/core/browser/translate_accept_languages.h"
16 #include "components/translate/core/browser/translate_client.h" 15 #include "components/translate/core/browser/translate_client.h"
17 #include "components/translate/core/browser/translate_download_manager.h" 16 #include "components/translate/core/browser/translate_download_manager.h"
18 #include "components/translate/core/browser/translate_driver.h" 17 #include "components/translate/core/browser/translate_driver.h"
19 #include "components/translate/core/browser/translate_manager.h" 18 #include "components/translate/core/browser/translate_manager.h"
20 #include "components/translate/core/common/translate_constants.h" 19 #include "components/translate/core/common/translate_constants.h"
21 #include "content/public/browser/web_contents.h"
22 #include "grit/component_strings.h" 20 #include "grit/component_strings.h"
23 #include "grit/theme_resources.h" 21 #include "grit/theme_resources.h"
24 #include "third_party/icu/source/i18n/unicode/coll.h" 22 #include "third_party/icu/source/i18n/unicode/coll.h"
25 #include "ui/base/l10n/l10n_util.h" 23 #include "ui/base/l10n/l10n_util.h"
26 24
27 namespace { 25 namespace {
28 26
29 // Counts used to decide whether infobars should be shown. 27 // Counts used to decide whether infobars should be shown.
30 // Android and iOS implementations do not offer a drop down (for space reasons), 28 // Android and iOS implementations do not offer a drop down (for space reasons),
31 // so we are more aggressive about showing the shortcut to never translate. 29 // so we are more aggressive about showing the shortcut to never translate.
(...skipping 16 matching lines...) Expand all
48 46
49 const size_t TranslateInfoBarDelegate::kNoIndex = TranslateUIDelegate::NO_INDEX; 47 const size_t TranslateInfoBarDelegate::kNoIndex = TranslateUIDelegate::NO_INDEX;
50 48
51 TranslateInfoBarDelegate::~TranslateInfoBarDelegate() { 49 TranslateInfoBarDelegate::~TranslateInfoBarDelegate() {
52 } 50 }
53 51
54 // static 52 // static
55 void TranslateInfoBarDelegate::Create( 53 void TranslateInfoBarDelegate::Create(
56 bool replace_existing_infobar, 54 bool replace_existing_infobar,
57 const base::WeakPtr<TranslateManager>& translate_manager, 55 const base::WeakPtr<TranslateManager>& translate_manager,
58 InfoBarService* infobar_service, 56 infobars::InfoBarManager* infobar_manager,
59 bool is_off_the_record, 57 bool is_off_the_record,
60 translate::TranslateStep step, 58 translate::TranslateStep step,
61 const std::string& original_language, 59 const std::string& original_language,
62 const std::string& target_language, 60 const std::string& target_language,
63 TranslateErrors::Type error_type, 61 TranslateErrors::Type error_type,
64 PrefService* prefs,
65 bool triggered_from_menu) { 62 bool triggered_from_menu) {
66 DCHECK(translate_manager); 63 DCHECK(translate_manager);
67 DCHECK(infobar_service); 64 DCHECK(infobar_manager);
68 65
69 // Check preconditions. 66 // Check preconditions.
70 if (step != translate::TRANSLATE_STEP_TRANSLATE_ERROR) { 67 if (step != translate::TRANSLATE_STEP_TRANSLATE_ERROR) {
71 DCHECK(TranslateDownloadManager::IsSupportedLanguage(target_language)); 68 DCHECK(TranslateDownloadManager::IsSupportedLanguage(target_language));
72 if (!TranslateDownloadManager::IsSupportedLanguage(original_language)) { 69 if (!TranslateDownloadManager::IsSupportedLanguage(original_language)) {
73 // The original language can only be "unknown" for the "translating" 70 // The original language can only be "unknown" for the "translating"
74 // infobar, which is the case when the user started a translation from the 71 // infobar, which is the case when the user started a translation from the
75 // context menu. 72 // context menu.
76 DCHECK(step == translate::TRANSLATE_STEP_TRANSLATING || 73 DCHECK(step == translate::TRANSLATE_STEP_TRANSLATING ||
77 step == translate::TRANSLATE_STEP_AFTER_TRANSLATE); 74 step == translate::TRANSLATE_STEP_AFTER_TRANSLATE);
78 DCHECK_EQ(translate::kUnknownLanguageCode, original_language); 75 DCHECK_EQ(translate::kUnknownLanguageCode, original_language);
79 } 76 }
80 } 77 }
81 78
82 // Do not create the after translate infobar if we are auto translating. 79 // Do not create the after translate infobar if we are auto translating.
83 if (((step == translate::TRANSLATE_STEP_AFTER_TRANSLATE) || 80 if (((step == translate::TRANSLATE_STEP_AFTER_TRANSLATE) ||
84 (step == translate::TRANSLATE_STEP_TRANSLATING)) && 81 (step == translate::TRANSLATE_STEP_TRANSLATING)) &&
85 translate_manager->translate_client()->GetTranslateDriver() 82 translate_manager->translate_client()->GetTranslateDriver()
86 ->GetLanguageState().InTranslateNavigation()) { 83 ->GetLanguageState().InTranslateNavigation()) {
87 return; 84 return;
88 } 85 }
89 86
90 // Find any existing translate infobar delegate. 87 // Find any existing translate infobar delegate.
91 infobars::InfoBar* old_infobar = NULL; 88 infobars::InfoBar* old_infobar = NULL;
92 TranslateInfoBarDelegate* old_delegate = NULL; 89 TranslateInfoBarDelegate* old_delegate = NULL;
93 for (size_t i = 0; i < infobar_service->infobar_count(); ++i) { 90 for (size_t i = 0; i < infobar_manager->infobar_count(); ++i) {
94 old_infobar = infobar_service->infobar_at(i); 91 old_infobar = infobar_manager->infobar_at(i);
95 old_delegate = old_infobar->delegate()->AsTranslateInfoBarDelegate(); 92 old_delegate = old_infobar->delegate()->AsTranslateInfoBarDelegate();
96 if (old_delegate) { 93 if (old_delegate) {
97 if (!replace_existing_infobar) 94 if (!replace_existing_infobar)
98 return; 95 return;
99 break; 96 break;
100 } 97 }
101 } 98 }
102 99
103 // Add the new delegate. 100 // Add the new delegate.
104 scoped_ptr<infobars::InfoBar> infobar(CreateInfoBar( 101 scoped_ptr<infobars::InfoBar> infobar(CreateInfoBar(
105 scoped_ptr<TranslateInfoBarDelegate>(new TranslateInfoBarDelegate( 102 scoped_ptr<TranslateInfoBarDelegate>(new TranslateInfoBarDelegate(
106 translate_manager, is_off_the_record, step, old_delegate, 103 translate_manager, is_off_the_record, step, old_delegate,
107 original_language, target_language, error_type, prefs, 104 original_language, target_language, error_type,
108 triggered_from_menu)))); 105 triggered_from_menu))));
109 if (old_delegate) 106 if (old_delegate)
110 infobar_service->ReplaceInfoBar(old_infobar, infobar.Pass()); 107 infobar_manager->ReplaceInfoBar(old_infobar, infobar.Pass());
111 else 108 else
112 infobar_service->AddInfoBar(infobar.Pass()); 109 infobar_manager->AddInfoBar(infobar.Pass());
113 } 110 }
114 111
115 112
116 void TranslateInfoBarDelegate::UpdateOriginalLanguageIndex( 113 void TranslateInfoBarDelegate::UpdateOriginalLanguageIndex(
117 size_t language_index) { 114 size_t language_index) {
118 ui_delegate_.UpdateOriginalLanguageIndex(language_index); 115 ui_delegate_.UpdateOriginalLanguageIndex(language_index);
119 } 116 }
120 117
121 void TranslateInfoBarDelegate::UpdateTargetLanguageIndex( 118 void TranslateInfoBarDelegate::UpdateTargetLanguageIndex(
122 size_t language_index) { 119 size_t language_index) {
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 kNeverTranslateMinCount); 262 kNeverTranslateMinCount);
266 } 263 }
267 264
268 bool TranslateInfoBarDelegate::ShouldShowAlwaysTranslateShortcut() { 265 bool TranslateInfoBarDelegate::ShouldShowAlwaysTranslateShortcut() {
269 DCHECK_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE, step_); 266 DCHECK_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE, step_);
270 return !is_off_the_record_ && 267 return !is_off_the_record_ &&
271 (prefs_->GetTranslationAcceptedCount(original_language_code()) >= 268 (prefs_->GetTranslationAcceptedCount(original_language_code()) >=
272 kAlwaysTranslateMinCount); 269 kAlwaysTranslateMinCount);
273 } 270 }
274 271
275 content::WebContents* TranslateInfoBarDelegate::GetWebContents() {
276 return InfoBarService::WebContentsFromInfoBar(infobar());
277 }
278
279 // static 272 // static
280 void TranslateInfoBarDelegate::GetAfterTranslateStrings( 273 void TranslateInfoBarDelegate::GetAfterTranslateStrings(
281 std::vector<base::string16>* strings, 274 std::vector<base::string16>* strings,
282 bool* swap_languages, 275 bool* swap_languages,
283 bool autodetermined_source_language) { 276 bool autodetermined_source_language) {
284 DCHECK(strings); 277 DCHECK(strings);
285 278
286 if (autodetermined_source_language) { 279 if (autodetermined_source_language) {
287 size_t offset; 280 size_t offset;
288 base::string16 text = l10n_util::GetStringFUTF16( 281 base::string16 text = l10n_util::GetStringFUTF16(
(...skipping 15 matching lines...) Expand all
304 297
305 *swap_languages = (offsets[0] > offsets[1]); 298 *swap_languages = (offsets[0] > offsets[1]);
306 if (*swap_languages) 299 if (*swap_languages)
307 std::swap(offsets[0], offsets[1]); 300 std::swap(offsets[0], offsets[1]);
308 301
309 strings->push_back(text.substr(0, offsets[0])); 302 strings->push_back(text.substr(0, offsets[0]));
310 strings->push_back(text.substr(offsets[0], offsets[1] - offsets[0])); 303 strings->push_back(text.substr(offsets[0], offsets[1] - offsets[0]));
311 strings->push_back(text.substr(offsets[1])); 304 strings->push_back(text.substr(offsets[1]));
312 } 305 }
313 306
307 TranslateDriver* TranslateInfoBarDelegate::GetTranslateDriver() {
308 if (!translate_manager_)
309 return NULL;
310
311 return translate_manager_->translate_client()->GetTranslateDriver();
312 }
313
314 TranslateInfoBarDelegate::TranslateInfoBarDelegate( 314 TranslateInfoBarDelegate::TranslateInfoBarDelegate(
315 const base::WeakPtr<TranslateManager>& translate_manager, 315 const base::WeakPtr<TranslateManager>& translate_manager,
316 bool is_off_the_record, 316 bool is_off_the_record,
317 translate::TranslateStep step, 317 translate::TranslateStep step,
318 TranslateInfoBarDelegate* old_delegate, 318 TranslateInfoBarDelegate* old_delegate,
319 const std::string& original_language, 319 const std::string& original_language,
320 const std::string& target_language, 320 const std::string& target_language,
321 TranslateErrors::Type error_type, 321 TranslateErrors::Type error_type,
322 PrefService* prefs,
323 bool triggered_from_menu) 322 bool triggered_from_menu)
324 : infobars::InfoBarDelegate(), 323 : infobars::InfoBarDelegate(),
325 is_off_the_record_(is_off_the_record), 324 is_off_the_record_(is_off_the_record),
326 step_(step), 325 step_(step),
327 background_animation_(NONE), 326 background_animation_(NONE),
328 ui_delegate_(translate_manager->translate_client(), 327 ui_delegate_(translate_manager->translate_client(),
329 translate_manager.get(), 328 translate_manager.get(),
330 original_language, 329 original_language,
331 target_language), 330 target_language),
332 translate_manager_(translate_manager), 331 translate_manager_(translate_manager),
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 if (!details.is_navigation_to_different_page && !details.is_main_frame) 375 if (!details.is_navigation_to_different_page && !details.is_main_frame)
377 return false; 376 return false;
378 377
379 return infobars::InfoBarDelegate::ShouldExpireInternal(details); 378 return infobars::InfoBarDelegate::ShouldExpireInternal(details);
380 } 379 }
381 380
382 TranslateInfoBarDelegate* 381 TranslateInfoBarDelegate*
383 TranslateInfoBarDelegate::AsTranslateInfoBarDelegate() { 382 TranslateInfoBarDelegate::AsTranslateInfoBarDelegate() {
384 return this; 383 return this;
385 } 384 }
OLDNEW
« no previous file with comments | « chrome/browser/translate/translate_infobar_delegate.h ('k') | chrome/browser/translate/translate_tab_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698