Chromium Code Reviews| Index: components/translate/core/browser/translate_ui_delegate.cc |
| diff --git a/chrome/browser/translate/translate_ui_delegate.cc b/components/translate/core/browser/translate_ui_delegate.cc |
| similarity index 79% |
| rename from chrome/browser/translate/translate_ui_delegate.cc |
| rename to components/translate/core/browser/translate_ui_delegate.cc |
| index bd1641bed916f3ad9ec256d45727c2fdaa1ef169..a1b9105c51ea505a79859db7c4f5940842720fed 100644 |
| --- a/chrome/browser/translate/translate_ui_delegate.cc |
| +++ b/components/translate/core/browser/translate_ui_delegate.cc |
| @@ -2,20 +2,17 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -#include "chrome/browser/translate/translate_ui_delegate.h" |
| +#include "components/translate/core/browser/translate_ui_delegate.h" |
| #include "base/i18n/string_compare.h" |
| #include "base/metrics/histogram.h" |
| -#include "chrome/browser/browser_process.h" |
| -#include "chrome/browser/profiles/profile.h" |
| -#include "chrome/browser/translate/translate_tab_helper.h" |
| +#include "components/translate/core/browser/language_state.h" |
| +#include "components/translate/core/browser/translate_client.h" |
| #include "components/translate/core/browser/translate_download_manager.h" |
| +#include "components/translate/core/browser/translate_driver.h" |
| #include "components/translate/core/browser/translate_manager.h" |
| #include "components/translate/core/browser/translate_prefs.h" |
| #include "components/translate/core/common/translate_constants.h" |
| -#include "content/public/browser/browser_context.h" |
| -#include "content/public/browser/navigation_entry.h" |
| -#include "content/public/browser/web_contents.h" |
| #include "third_party/icu/source/i18n/unicode/coll.h" |
| #include "ui/base/l10n/l10n_util.h" |
| @@ -34,21 +31,27 @@ const char kShowErrorUI[] = "Translate.ShowErrorUI"; |
| } // namespace |
| -TranslateUIDelegate::TranslateUIDelegate(content::WebContents* web_contents, |
| +TranslateUIDelegate::TranslateUIDelegate(TranslateClient* translate_client, |
| + TranslateManager* translate_manager, |
| const std::string& original_language, |
| const std::string& target_language) |
| - : web_contents_(web_contents), |
| + : translate_client_(translate_client), |
| + translate_driver_(translate_client->GetTranslateDriver()), |
| + translate_manager_(translate_manager), |
| original_language_index_(NO_INDEX), |
| initial_original_language_index_(NO_INDEX), |
| target_language_index_(NO_INDEX) { |
| - DCHECK(web_contents_); |
| + DCHECK(translate_client_); |
| + DCHECK(translate_driver_); |
| + DCHECK(translate_manager_); |
| std::vector<std::string> language_codes; |
| TranslateDownloadManager::GetSupportedLanguages(&language_codes); |
| // Preparing for the alphabetical order in the locale. |
| UErrorCode error = U_ZERO_ERROR; |
| - std::string locale = g_browser_process->GetApplicationLocale(); |
| + std::string locale = |
| + TranslateDownloadManager::GetInstance()->application_locale(); |
| icu::Locale loc(locale.c_str()); |
| scoped_ptr<icu::Collator> collator(icu::Collator::createInstance(loc, error)); |
| collator->setStrength(icu::Collator::PRIMARY); |
| @@ -58,8 +61,8 @@ TranslateUIDelegate::TranslateUIDelegate(content::WebContents* web_contents, |
| iter != language_codes.end(); ++iter) { |
| std::string language_code = *iter; |
| - base::string16 language_name = l10n_util::GetDisplayNameForLocale( |
| - language_code, g_browser_process->GetApplicationLocale(), true); |
| + base::string16 language_name = |
| + l10n_util::GetDisplayNameForLocale(language_code, locale, true); |
| // Insert the language in languages_ in alphabetical order. |
| std::vector<LanguageNamePair>::iterator iter2; |
| for (iter2 = languages_.begin(); iter2 != languages_.end(); ++iter2) { |
| @@ -81,9 +84,7 @@ TranslateUIDelegate::TranslateUIDelegate(content::WebContents* web_contents, |
| target_language_index_ = iter - languages_.begin(); |
| } |
| - Profile* profile = |
| - Profile::FromBrowserContext(web_contents_->GetBrowserContext()); |
| - prefs_ = TranslateTabHelper::CreateTranslatePrefs(profile->GetPrefs()); |
| + prefs_ = translate_client_->GetTranslatePrefs(); |
| } |
| TranslateUIDelegate::~TranslateUIDelegate() { |
| @@ -100,6 +101,10 @@ void TranslateUIDelegate::OnErrorShown(TranslateErrors::Type error_type) { |
| TranslateErrors::TRANSLATE_ERROR_MAX); |
| } |
| +const LanguageState& TranslateUIDelegate::GetLanguageState() { |
| + return translate_driver_->GetLanguageState(); |
| +} |
| + |
| size_t TranslateUIDelegate::GetNumberOfLanguages() const { |
| return languages_.size(); |
| } |
| @@ -153,30 +158,24 @@ std::string TranslateUIDelegate::GetTargetLanguageCode() const { |
| } |
| void TranslateUIDelegate::Translate() { |
| - if (!web_contents()->GetBrowserContext()->IsOffTheRecord()) { |
| + if (!translate_driver_->IsOffTheRecord()) { |
| prefs_->ResetTranslationDeniedCount(GetOriginalLanguageCode()); |
| prefs_->IncrementTranslationAcceptedCount(GetOriginalLanguageCode()); |
| } |
| - TranslateManager* manager = |
| - TranslateTabHelper::GetManagerFromWebContents(web_contents()); |
| - DCHECK(manager); |
| - manager->TranslatePage( |
| + translate_manager_->TranslatePage( |
| GetOriginalLanguageCode(), GetTargetLanguageCode(), false); |
| UMA_HISTOGRAM_BOOLEAN(kPerformTranslate, true); |
| } |
| void TranslateUIDelegate::RevertTranslation() { |
| - TranslateManager* manager = |
| - TranslateTabHelper::GetManagerFromWebContents(web_contents()); |
| - DCHECK(manager); |
| - manager->RevertTranslation(); |
| + translate_manager_->RevertTranslation(); |
| UMA_HISTOGRAM_BOOLEAN(kRevertTranslation, true); |
| } |
| void TranslateUIDelegate::TranslationDeclined(bool explicitly_closed) { |
| - if (!web_contents()->GetBrowserContext()->IsOffTheRecord()) { |
| + if (!translate_driver_->IsOffTheRecord()) { |
| prefs_->ResetTranslationAcceptedCount(GetOriginalLanguageCode()); |
| prefs_->IncrementTranslationDeniedCount(GetOriginalLanguageCode()); |
| } |
| @@ -186,8 +185,7 @@ void TranslateUIDelegate::TranslationDeclined(bool explicitly_closed) { |
| // translations when getting a LANGUAGE_DETERMINED from the page, which |
| // happens when a load stops. That could happen multiple times, including |
| // after the user already declined the translation.) |
| - TranslateTabHelper::FromWebContents(web_contents())-> |
| - GetLanguageState().set_translation_declined(true); |
| + translate_driver_->GetLanguageState().set_translation_declined(true); |
| UMA_HISTOGRAM_BOOLEAN(kDeclineTranslate, true); |
| @@ -202,10 +200,7 @@ bool TranslateUIDelegate::IsLanguageBlocked() { |
| void TranslateUIDelegate::SetLanguageBlocked(bool value) { |
| if (value) { |
| prefs_->BlockLanguage(GetOriginalLanguageCode()); |
| - TranslateTabHelper* translate_tab_helper = |
| - TranslateTabHelper::FromWebContents(web_contents()); |
| - DCHECK(translate_tab_helper); |
| - translate_tab_helper->GetLanguageState().SetTranslateEnabled(false); |
| + translate_driver_->GetLanguageState().SetTranslateEnabled(false); |
| } else { |
| prefs_->UnblockLanguage(GetOriginalLanguageCode()); |
| } |
| @@ -225,10 +220,7 @@ void TranslateUIDelegate::SetSiteBlacklist(bool value) { |
| if (value) { |
| prefs_->BlacklistSite(host); |
| - TranslateTabHelper* translate_tab_helper = |
| - TranslateTabHelper::FromWebContents(web_contents()); |
| - DCHECK(translate_tab_helper); |
| - translate_tab_helper->GetLanguageState().SetTranslateEnabled(false); |
| + translate_driver_->GetLanguageState().SetTranslateEnabled(false); |
| } else { |
| prefs_->RemoveSiteFromBlacklist(host); |
| } |
| @@ -253,7 +245,8 @@ void TranslateUIDelegate::SetAlwaysTranslate(bool value) { |
| } |
| std::string TranslateUIDelegate::GetPageHost() { |
| - content::NavigationEntry* entry = |
| - web_contents()->GetController().GetActiveEntry(); |
| - return entry ? entry->GetURL().HostNoBrackets() : std::string(); |
| + const GURL& active_url = translate_driver_->GetActiveURL(); |
|
droger
2014/04/09 08:31:24
Optionnal: Should this use translate_driver_->HasC
blundell
2014/04/09 08:49:27
Done.
|
| + if (active_url.is_empty()) |
| + return std::string(); |
| + return active_url.HostNoBrackets(); |
| } |