diff options
17 files changed, 56 insertions, 48 deletions
diff --git a/chrome/browser/extensions/api/tabs/tabs_api.cc b/chrome/browser/extensions/api/tabs/tabs_api.cc index d78286f..8821fca 100644 --- a/chrome/browser/extensions/api/tabs/tabs_api.cc +++ b/chrome/browser/extensions/api/tabs/tabs_api.cc @@ -53,7 +53,6 @@ #include "chrome/common/pref_names.h" #include "chrome/common/url_constants.h" #include "components/pref_registry/pref_registry_syncable.h" -#include "components/translate/core/browser/language_state.h" #include "components/translate/core/common/language_detection_details.h" #include "content/public/browser/navigation_controller.h" #include "content/public/browser/navigation_entry.h" diff --git a/chrome/browser/policy/policy_browsertest.cc b/chrome/browser/policy/policy_browsertest.cc index 0067d34..8bea775 100644 --- a/chrome/browser/policy/policy_browsertest.cc +++ b/chrome/browser/policy/policy_browsertest.cc @@ -89,7 +89,6 @@ #include "components/policy/core/common/policy_pref_names.h" #include "components/policy/core/common/policy_service.h" #include "components/policy/core/common/policy_service_impl.h" -#include "components/translate/core/browser/language_state.h" #include "content/public/browser/browser_child_process_host_iterator.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/browser_thread.h" diff --git a/chrome/browser/translate/translate_infobar_delegate.cc b/chrome/browser/translate/translate_infobar_delegate.cc index 405a071..ccb0641 100644 --- a/chrome/browser/translate/translate_infobar_delegate.cc +++ b/chrome/browser/translate/translate_infobar_delegate.cc @@ -79,7 +79,8 @@ void TranslateInfoBarDelegate::Create( // Do not create the after translate infobar if we are auto translating. if (((step == translate::TRANSLATE_STEP_AFTER_TRANSLATE) || (step == translate::TRANSLATE_STEP_TRANSLATING)) && - translate_manager->GetLanguageState().InTranslateNavigation()) { + translate_manager->translate_client()->GetTranslateDriver() + ->GetLanguageState().InTranslateNavigation()) { return; } diff --git a/chrome/browser/translate/translate_tab_helper.cc b/chrome/browser/translate/translate_tab_helper.cc index f59c41c..668e7f1 100644 --- a/chrome/browser/translate/translate_tab_helper.cc +++ b/chrome/browser/translate/translate_tab_helper.cc @@ -23,7 +23,6 @@ #include "chrome/browser/ui/translate/translate_bubble_factory.h" #include "chrome/common/pref_names.h" #include "components/translate/content/common/translate_messages.h" -#include "components/translate/core/browser/language_state.h" #include "components/translate/core/browser/page_translated_details.h" #include "components/translate/core/browser/translate_accept_languages.h" #include "components/translate/core/browser/translate_download_manager.h" @@ -81,7 +80,7 @@ TranslateTabHelper::~TranslateTabHelper() { } LanguageState& TranslateTabHelper::GetLanguageState() { - return translate_manager_->GetLanguageState(); + return translate_driver_.GetLanguageState(); } // static @@ -268,7 +267,7 @@ void TranslateTabHelper::NavigationEntryCommitted( } if (!load_details.is_main_frame && - GetLanguageState().translation_declined()) { + translate_driver_.GetLanguageState().translation_declined()) { // Some sites (such as Google map) may trigger sub-frame navigations // when the user interacts with the page. We don't want to show a new // infobar if the user already dismissed one in that case. @@ -281,7 +280,7 @@ void TranslateTabHelper::NavigationEntryCommitted( return; } - if (!GetLanguageState().page_needs_translation()) + if (!translate_driver_.GetLanguageState().page_needs_translation()) return; // Note that we delay it as the ordering of the processing of this callback @@ -292,7 +291,7 @@ void TranslateTabHelper::NavigationEntryCommitted( FROM_HERE, base::Bind(&TranslateTabHelper::InitiateTranslation, weak_pointer_factory_.GetWeakPtr(), - GetLanguageState().original_language(), + translate_driver_.GetLanguageState().original_language(), 0)); } @@ -300,11 +299,7 @@ void TranslateTabHelper::DidNavigateAnyFrame( const content::LoadCommittedDetails& details, const content::FrameNavigateParams& params) { // Let the LanguageState clear its state. - const bool reload = - details.entry->GetTransitionType() == content::PAGE_TRANSITION_RELOAD || - details.type == content::NAVIGATION_TYPE_SAME_PAGE; - GetLanguageState().DidNavigate( - details.is_in_page, details.is_main_frame, reload); + translate_driver_.DidNavigate(details); } void TranslateTabHelper::WebContentsDestroyed() { @@ -450,7 +445,7 @@ void TranslateTabHelper::HandleCLDDataRequest() { void TranslateTabHelper::InitiateTranslation(const std::string& page_lang, int attempt) { - if (GetLanguageState().translation_pending()) + if (translate_driver_.GetLanguageState().translation_pending()) return; // During a reload we need web content to be available before the @@ -476,7 +471,7 @@ void TranslateTabHelper::InitiateTranslation(const std::string& page_lang, void TranslateTabHelper::OnLanguageDetermined( const LanguageDetectionDetails& details, bool page_needs_translation) { - GetLanguageState().LanguageDetermined( + translate_driver_.GetLanguageState().LanguageDetermined( details.adopted_language, page_needs_translation); if (web_contents()) diff --git a/chrome/browser/translate/translate_tab_helper.h b/chrome/browser/translate/translate_tab_helper.h index 08c70f0..d497cbd 100644 --- a/chrome/browser/translate/translate_tab_helper.h +++ b/chrome/browser/translate/translate_tab_helper.h @@ -38,7 +38,6 @@ class ScopedCLDDynamicDataHarness; } // namespace test struct LanguageDetectionDetails; -class LanguageState; class PrefService; class TranslateAcceptLanguages; class TranslatePrefs; diff --git a/chrome/browser/ui/browser_browsertest.cc b/chrome/browser/ui/browser_browsertest.cc index 493268e..d0dff8f 100644 --- a/chrome/browser/ui/browser_browsertest.cc +++ b/chrome/browser/ui/browser_browsertest.cc @@ -57,7 +57,6 @@ #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/test_switches.h" #include "chrome/test/base/ui_test_utils.h" -#include "components/translate/core/browser/language_state.h" #include "components/translate/core/common/language_detection_details.h" #include "content/public/browser/favicon_status.h" #include "content/public/browser/host_zoom_map.h" diff --git a/chrome/browser/ui/browser_commands.cc b/chrome/browser/ui/browser_commands.cc index 5c86932..d138558 100644 --- a/chrome/browser/ui/browser_commands.cc +++ b/chrome/browser/ui/browser_commands.cc @@ -61,7 +61,6 @@ #include "chrome/common/pref_names.h" #include "components/bookmarks/browser/bookmark_model.h" #include "components/bookmarks/browser/bookmark_utils.h" -#include "components/translate/core/browser/language_state.h" #include "components/web_modal/web_contents_modal_dialog_manager.h" #include "content/public/browser/devtools_agent_host.h" #include "content/public/browser/navigation_controller.h" diff --git a/chrome/browser/ui/cocoa/browser_window_cocoa.mm b/chrome/browser/ui/cocoa/browser_window_cocoa.mm index 07b60bf..f9ee6e7 100644 --- a/chrome/browser/ui/cocoa/browser_window_cocoa.mm +++ b/chrome/browser/ui/cocoa/browser_window_cocoa.mm @@ -50,7 +50,6 @@ #include "chrome/common/chrome_switches.h" #include "chrome/common/pref_names.h" #include "components/autofill/core/common/password_form.h" -#include "components/translate/core/browser/language_state.h" #include "content/public/browser/native_web_keyboard_event.h" #include "content/public/browser/notification_details.h" #include "content/public/browser/notification_source.h" diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc index 88d70a4..a520597 100644 --- a/chrome/browser/ui/views/frame/browser_view.cc +++ b/chrome/browser/ui/views/frame/browser_view.cc @@ -100,7 +100,6 @@ #include "chrome/common/url_constants.h" #include "components/password_manager/core/browser/password_manager.h" #include "components/signin/core/common/profile_management_switches.h" -#include "components/translate/core/browser/language_state.h" #include "content/public/browser/download_manager.h" #include "content/public/browser/native_web_keyboard_event.h" #include "content/public/browser/notification_service.h" diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.cc b/chrome/browser/ui/views/location_bar/location_bar_view.cc index 256c57a..b6e2cb0 100644 --- a/chrome/browser/ui/views/location_bar/location_bar_view.cc +++ b/chrome/browser/ui/views/location_bar/location_bar_view.cc @@ -64,7 +64,6 @@ #include "chrome/browser/ui/zoom/zoom_controller.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/pref_names.h" -#include "components/translate/core/browser/language_state.h" #include "content/public/browser/notification_service.h" #include "content/public/browser/render_widget_host_view.h" #include "content/public/browser/web_contents.h" diff --git a/components/translate/content/browser/content_translate_driver.cc b/components/translate/content/browser/content_translate_driver.cc index 60757db..ffebdc7 100644 --- a/components/translate/content/browser/content_translate_driver.cc +++ b/components/translate/content/browser/content_translate_driver.cc @@ -8,6 +8,7 @@ #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" @@ -18,12 +19,22 @@ 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() { @@ -48,6 +59,10 @@ 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 7f686f3..1d3112d 100644 --- a/components/translate/content/browser/content_translate_driver.h +++ b/components/translate/content/browser/content_translate_driver.h @@ -5,10 +5,12 @@ #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; } @@ -36,10 +38,14 @@ 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; @@ -57,6 +63,7 @@ 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 32a0ed3..9f7d84a 100644 --- a/components/translate/core/browser/language_state_unittest.cc +++ b/components/translate/core/browser/language_state_unittest.cc @@ -41,6 +41,10 @@ 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 805db05..788a267 100644 --- a/components/translate/core/browser/translate_driver.h +++ b/components/translate/core/browser/translate_driver.h @@ -8,6 +8,7 @@ #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 @@ -23,6 +24,9 @@ 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 63ada40..dcc8c30 100644 --- a/components/translate/core/browser/translate_manager.cc +++ b/components/translate/core/browser/translate_manager.cc @@ -73,7 +73,6 @@ 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() { @@ -83,10 +82,11 @@ 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). - if (!language_state_.page_needs_translation() || - language_state_.translation_pending() || - language_state_.translation_declined() || - language_state_.IsPageTranslated()) { + LanguageState& language_state = translate_driver_->GetLanguageState(); + 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(); - language_state_.SetCurrentLanguage( - language_state_.original_language()); + translate_driver_->GetLanguageState().SetCurrentLanguage( + translate_driver_->GetLanguageState().original_language()); } void TranslateManager::ReportLanguageDetectionError() { @@ -269,7 +269,7 @@ void TranslateManager::ReportLanguageDetectionError() { report_error_url = net::AppendQueryParameter( report_error_url, kSourceLanguageQueryName, - language_state_.original_language()); + translate_driver_->GetLanguageState().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) { - language_state_.set_translation_pending(true); + translate_driver_->GetLanguageState().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) { - language_state_.SetCurrentLanguage(target_lang); - language_state_.set_translation_pending(false); + translate_driver_->GetLanguageState().SetCurrentLanguage(target_lang); + translate_driver_->GetLanguageState().set_translation_pending(false); if ((error_type == TranslateErrors::NONE) && source_lang != translate::kUnknownLanguageCode && @@ -385,7 +385,3 @@ 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 d02eec7..c29b167 100644 --- a/components/translate/core/browser/translate_manager.h +++ b/components/translate/core/browser/translate_manager.h @@ -13,7 +13,6 @@ #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; @@ -89,9 +88,6 @@ 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, @@ -112,8 +108,6 @@ 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 b9bbe19..30448f0 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_manager_->GetLanguageState(); + return translate_driver_->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_manager_->GetLanguageState().set_translation_declined(true); + translate_driver_->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_manager_->GetLanguageState().SetTranslateEnabled(false); + translate_driver_->GetLanguageState().SetTranslateEnabled(false); } else { prefs_->UnblockLanguage(GetOriginalLanguageCode()); } @@ -220,7 +220,7 @@ void TranslateUIDelegate::SetSiteBlacklist(bool value) { if (value) { prefs_->BlacklistSite(host); - translate_manager_->GetLanguageState().SetTranslateEnabled(false); + translate_driver_->GetLanguageState().SetTranslateEnabled(false); } else { prefs_->RemoveSiteFromBlacklist(host); } |