diff options
author | naiem.shaik@gmail.com <naiem.shaik@gmail.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-22 17:32:09 +0000 |
---|---|---|
committer | naiem.shaik@gmail.com <naiem.shaik@gmail.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-22 17:32:09 +0000 |
commit | 061e35ea3643e7b6828a583422a73bdd00dc3197 (patch) | |
tree | 732325e406f1f37dd6db800d06539a11dd7e83ae /components/translate | |
parent | 00b73a2e56010ca6f97441fb3351e2cca9705af6 (diff) | |
download | chromium_src-061e35ea3643e7b6828a583422a73bdd00dc3197.zip chromium_src-061e35ea3643e7b6828a583422a73bdd00dc3197.tar.gz chromium_src-061e35ea3643e7b6828a583422a73bdd00dc3197.tar.bz2 |
LanguageState should be owned by TranslateManager
LanguageState is currently owned by ContentTranslateManager,
but it should be moved under TranslateManager
BUG=345690
TEST=unittests --gtest_filter=Translate*
TBR=thakis@chromium.org
Review URL: https://codereview.chromium.org/290573013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@272217 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'components/translate')
7 files changed, 27 insertions, 47 deletions
diff --git a/components/translate/content/browser/content_translate_driver.cc b/components/translate/content/browser/content_translate_driver.cc index ffebdc7..60757db 100644 --- a/components/translate/content/browser/content_translate_driver.cc +++ b/components/translate/content/browser/content_translate_driver.cc @@ -8,7 +8,6 @@ #include "components/translate/content/common/translate_messages.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/navigation_controller.h" -#include "content/public/browser/navigation_details.h" #include "content/public/browser/navigation_entry.h" #include "content/public/browser/page_navigator.h" #include "content/public/browser/render_view_host.h" @@ -19,22 +18,12 @@ ContentTranslateDriver::ContentTranslateDriver( content::NavigationController* nav_controller) : navigation_controller_(nav_controller), - language_state_(this), observer_(NULL) { DCHECK(navigation_controller_); } ContentTranslateDriver::~ContentTranslateDriver() {} -void ContentTranslateDriver::DidNavigate( - const content::LoadCommittedDetails& details) { - const bool reload = - details.entry->GetTransitionType() == content::PAGE_TRANSITION_RELOAD || - details.type == content::NAVIGATION_TYPE_SAME_PAGE; - language_state_.DidNavigate( - details.is_in_page, details.is_main_frame, reload); -} - // TranslateDriver methods bool ContentTranslateDriver::IsLinkNavigation() { @@ -59,10 +48,6 @@ void ContentTranslateDriver::OnIsPageTranslatedChanged() { } } -LanguageState& ContentTranslateDriver::GetLanguageState() { - return language_state_; -} - void ContentTranslateDriver::TranslatePage(const std::string& translate_script, const std::string& source_lang, const std::string& target_lang) { diff --git a/components/translate/content/browser/content_translate_driver.h b/components/translate/content/browser/content_translate_driver.h index 1d3112d..7f686f3 100644 --- a/components/translate/content/browser/content_translate_driver.h +++ b/components/translate/content/browser/content_translate_driver.h @@ -5,12 +5,10 @@ #ifndef COMPONENTS_TRANSLATE_CONTENT_BROWSER_CONTENT_TRANSLATE_DRIVER_H_ #define COMPONENTS_TRANSLATE_CONTENT_BROWSER_CONTENT_TRANSLATE_DRIVER_H_ +#include "base/basictypes.h" #include "components/translate/core/browser/translate_driver.h" -#include "components/translate/core/browser/language_state.h" - namespace content { -struct LoadCommittedDetails; class NavigationController; class WebContents; } @@ -38,14 +36,10 @@ class ContentTranslateDriver : public TranslateDriver { // Sets the Observer. Calling this method is optional. void set_observer(Observer* observer) { observer_ = observer; } - // Must be called on navigations. - void DidNavigate(const content::LoadCommittedDetails& details); - // TranslateDriver methods. virtual void OnIsPageTranslatedChanged() OVERRIDE; virtual void OnTranslateEnabledChanged() OVERRIDE; virtual bool IsLinkNavigation() OVERRIDE; - virtual LanguageState& GetLanguageState() OVERRIDE; virtual void TranslatePage(const std::string& translate_script, const std::string& source_lang, const std::string& target_lang) OVERRIDE; @@ -63,7 +57,6 @@ class ContentTranslateDriver : public TranslateDriver { // The navigation controller of the tab we are associated with. content::NavigationController* navigation_controller_; - LanguageState language_state_; Observer* observer_; DISALLOW_COPY_AND_ASSIGN(ContentTranslateDriver); diff --git a/components/translate/core/browser/language_state_unittest.cc b/components/translate/core/browser/language_state_unittest.cc index 9f7d84a..32a0ed3 100644 --- a/components/translate/core/browser/language_state_unittest.cc +++ b/components/translate/core/browser/language_state_unittest.cc @@ -41,10 +41,6 @@ class MockTranslateDriver : public TranslateDriver { return false; } - virtual LanguageState& GetLanguageState() OVERRIDE { - return language_state_; - } - virtual void TranslatePage(const std::string& translate_script, const std::string& source_lang, const std::string& target_lang) OVERRIDE {} diff --git a/components/translate/core/browser/translate_driver.h b/components/translate/core/browser/translate_driver.h index 788a267..805db05 100644 --- a/components/translate/core/browser/translate_driver.h +++ b/components/translate/core/browser/translate_driver.h @@ -8,7 +8,6 @@ #include <string> class GURL; -class LanguageState; // Interface that allows Translate core code to interact with its driver (i.e., // obtain information from it and give information to it). A concrete @@ -24,9 +23,6 @@ class TranslateDriver { // Called when the page is "translated" state of the page changed. virtual void OnIsPageTranslatedChanged() = 0; - // Gets the LanguageState associated with the driver. - virtual LanguageState& GetLanguageState() = 0; - // Translates the page contents from |source_lang| to |target_lang|. virtual void TranslatePage(const std::string& translate_script, const std::string& source_lang, diff --git a/components/translate/core/browser/translate_manager.cc b/components/translate/core/browser/translate_manager.cc index dcc8c30..63ada40 100644 --- a/components/translate/core/browser/translate_manager.cc +++ b/components/translate/core/browser/translate_manager.cc @@ -73,6 +73,7 @@ TranslateManager::TranslateManager( : accept_languages_pref_name_(accept_languages_pref_name), translate_client_(translate_client), translate_driver_(translate_client_->GetTranslateDriver()), + language_state_(translate_driver_), weak_method_factory_(this) {} base::WeakPtr<TranslateManager> TranslateManager::GetWeakPtr() { @@ -82,11 +83,10 @@ base::WeakPtr<TranslateManager> TranslateManager::GetWeakPtr() { void TranslateManager::InitiateTranslation(const std::string& page_lang) { // Short-circuit out if not in a state where initiating translation makes // sense (this method may be called muhtiple times for a given page). - LanguageState& language_state = translate_driver_->GetLanguageState(); - if (!language_state.page_needs_translation() || - language_state.translation_pending() || - language_state.translation_declined() || - language_state.IsPageTranslated()) { + if (!language_state_.page_needs_translation() || + language_state_.translation_pending() || + language_state_.translation_declined() || + language_state_.IsPageTranslated()) { return; } @@ -190,7 +190,7 @@ void TranslateManager::InitiateTranslation(const std::string& page_lang) { } } - std::string auto_translate_to = language_state.AutoTranslateTo(); + std::string auto_translate_to = language_state_.AutoTranslateTo(); if (!auto_translate_to.empty()) { // This page was navigated through a click from a translated page. TranslateBrowserMetrics::ReportInitiationStatus( @@ -252,8 +252,8 @@ void TranslateManager::TranslatePage(const std::string& original_source_lang, void TranslateManager::RevertTranslation() { translate_driver_->RevertTranslation(); - translate_driver_->GetLanguageState().SetCurrentLanguage( - translate_driver_->GetLanguageState().original_language()); + language_state_.SetCurrentLanguage( + language_state_.original_language()); } void TranslateManager::ReportLanguageDetectionError() { @@ -269,7 +269,7 @@ void TranslateManager::ReportLanguageDetectionError() { report_error_url = net::AppendQueryParameter( report_error_url, kSourceLanguageQueryName, - translate_driver_->GetLanguageState().original_language()); + language_state_.original_language()); report_error_url = TranslateURLUtil::AddHostLocaleToUrl(report_error_url); report_error_url = TranslateURLUtil::AddApiKeyToUrl(report_error_url); @@ -280,15 +280,15 @@ void TranslateManager::ReportLanguageDetectionError() { void TranslateManager::DoTranslatePage(const std::string& translate_script, const std::string& source_lang, const std::string& target_lang) { - translate_driver_->GetLanguageState().set_translation_pending(true); + language_state_.set_translation_pending(true); translate_driver_->TranslatePage(translate_script, source_lang, target_lang); } void TranslateManager::PageTranslated(const std::string& source_lang, const std::string& target_lang, TranslateErrors::Type error_type) { - translate_driver_->GetLanguageState().SetCurrentLanguage(target_lang); - translate_driver_->GetLanguageState().set_translation_pending(false); + language_state_.SetCurrentLanguage(target_lang); + language_state_.set_translation_pending(false); if ((error_type == TranslateErrors::NONE) && source_lang != translate::kUnknownLanguageCode && @@ -385,3 +385,7 @@ std::string TranslateManager::GetAutoTargetLanguage( } return std::string(); } + +LanguageState& TranslateManager::GetLanguageState() { + return language_state_; +} diff --git a/components/translate/core/browser/translate_manager.h b/components/translate/core/browser/translate_manager.h index c29b167..d02eec7 100644 --- a/components/translate/core/browser/translate_manager.h +++ b/components/translate/core/browser/translate_manager.h @@ -13,6 +13,7 @@ #include "base/gtest_prod_util.h" #include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" +#include "components/translate/core/browser/language_state.h" #include "components/translate/core/common/translate_errors.h" class GURL; @@ -88,6 +89,9 @@ class TranslateManager { static scoped_ptr<TranslateErrorCallbackList::Subscription> RegisterTranslateErrorCallback(const TranslateErrorCallback& callback); + // Gets the LanguageState associated with the TranslateManager + LanguageState& GetLanguageState(); + private: // Sends a translation request to the TranslateDriver. void DoTranslatePage(const std::string& translate_script, @@ -108,6 +112,8 @@ class TranslateManager { TranslateClient* translate_client_; // Weak. TranslateDriver* translate_driver_; // Weak. + LanguageState language_state_; + base::WeakPtrFactory<TranslateManager> weak_method_factory_; DISALLOW_COPY_AND_ASSIGN(TranslateManager); diff --git a/components/translate/core/browser/translate_ui_delegate.cc b/components/translate/core/browser/translate_ui_delegate.cc index 30448f0..b9bbe19 100644 --- a/components/translate/core/browser/translate_ui_delegate.cc +++ b/components/translate/core/browser/translate_ui_delegate.cc @@ -103,7 +103,7 @@ void TranslateUIDelegate::OnErrorShown(TranslateErrors::Type error_type) { } const LanguageState& TranslateUIDelegate::GetLanguageState() { - return translate_driver_->GetLanguageState(); + return translate_manager_->GetLanguageState(); } size_t TranslateUIDelegate::GetNumberOfLanguages() const { @@ -185,7 +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.) - translate_driver_->GetLanguageState().set_translation_declined(true); + translate_manager_->GetLanguageState().set_translation_declined(true); UMA_HISTOGRAM_BOOLEAN(kDeclineTranslate, true); @@ -200,7 +200,7 @@ bool TranslateUIDelegate::IsLanguageBlocked() { void TranslateUIDelegate::SetLanguageBlocked(bool value) { if (value) { prefs_->BlockLanguage(GetOriginalLanguageCode()); - translate_driver_->GetLanguageState().SetTranslateEnabled(false); + translate_manager_->GetLanguageState().SetTranslateEnabled(false); } else { prefs_->UnblockLanguage(GetOriginalLanguageCode()); } @@ -220,7 +220,7 @@ void TranslateUIDelegate::SetSiteBlacklist(bool value) { if (value) { prefs_->BlacklistSite(host); - translate_driver_->GetLanguageState().SetTranslateEnabled(false); + translate_manager_->GetLanguageState().SetTranslateEnabled(false); } else { prefs_->RemoveSiteFromBlacklist(host); } |