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

Unified Diff: components/translate/content/browser/content_translate_driver.cc

Issue 564743002: Move Translate browser-side IPC handling to the component. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: components/translate/content/browser/content_translate_driver.cc
diff --git a/components/translate/content/browser/content_translate_driver.cc b/components/translate/content/browser/content_translate_driver.cc
index d1357620d1a5df6fe7bfc86091139ec0819156e0..ffdd17d157d746047b138b1164692a1302469e78 100644
--- a/components/translate/content/browser/content_translate_driver.cc
+++ b/components/translate/content/browser/content_translate_driver.cc
@@ -35,7 +35,6 @@ ContentTranslateDriver::ContentTranslateDriver(
: content::WebContentsObserver(nav_controller->GetWebContents()),
navigation_controller_(nav_controller),
translate_manager_(NULL),
- observer_(NULL),
max_reload_check_attempts_(kMaxTranslateLoadCheckAttempts),
weak_pointer_factory_(this) {
DCHECK(navigation_controller_);
@@ -43,6 +42,14 @@ ContentTranslateDriver::ContentTranslateDriver(
ContentTranslateDriver::~ContentTranslateDriver() {}
+void ContentTranslateDriver::AddObserver(Observer* observer) {
+ observer_list_.AddObserver(observer);
+}
+
+void ContentTranslateDriver::RemoveObserver(Observer* observer) {
+ observer_list_.RemoveObserver(observer);
+}
+
void ContentTranslateDriver::InitiateTranslation(const std::string& page_lang,
int attempt) {
if (translate_manager_->GetLanguageState().translation_pending())
@@ -77,19 +84,16 @@ bool ContentTranslateDriver::IsLinkNavigation() {
}
void ContentTranslateDriver::OnTranslateEnabledChanged() {
- if (observer_) {
- content::WebContents* web_contents =
- navigation_controller_->GetWebContents();
- observer_->OnTranslateEnabledChanged(web_contents);
- }
+ content::WebContents* web_contents = navigation_controller_->GetWebContents();
+ FOR_EACH_OBSERVER(
+ Observer, observer_list_, OnTranslateEnabledChanged(web_contents));
}
void ContentTranslateDriver::OnIsPageTranslatedChanged() {
- if (observer_) {
content::WebContents* web_contents =
navigation_controller_->GetWebContents();
- observer_->OnIsPageTranslatedChanged(web_contents);
- }
+ FOR_EACH_OBSERVER(
+ Observer, observer_list_, OnIsPageTranslatedChanged(web_contents));
}
void ContentTranslateDriver::TranslatePage(int page_seq_no,
@@ -212,4 +216,46 @@ void ContentTranslateDriver::DidNavigateAnyFrame(
details.is_in_page, details.is_main_frame, reload);
}
+bool ContentTranslateDriver::OnMessageReceived(const IPC::Message& message) {
+ bool handled = true;
+ IPC_BEGIN_MESSAGE_MAP(ContentTranslateDriver, message)
+ IPC_MESSAGE_HANDLER(ChromeViewHostMsg_TranslateAssignedSequenceNumber,
+ OnTranslateAssignedSequenceNumber)
+ IPC_MESSAGE_HANDLER(ChromeViewHostMsg_TranslateLanguageDetermined,
+ OnLanguageDetermined)
+ IPC_MESSAGE_HANDLER(ChromeViewHostMsg_PageTranslated, OnPageTranslated)
+ IPC_MESSAGE_UNHANDLED(handled = false)
+ IPC_END_MESSAGE_MAP()
+ return handled;
+}
+
+void ContentTranslateDriver::OnTranslateAssignedSequenceNumber(
+ int page_seq_no) {
+ translate_manager_->set_current_seq_no(page_seq_no);
+}
+
+void ContentTranslateDriver::OnLanguageDetermined(
+ const LanguageDetectionDetails& details,
+ bool page_needs_translation) {
+ translate_manager_->GetLanguageState().LanguageDetermined(
+ details.adopted_language, page_needs_translation);
+
+ if (web_contents())
+ translate_manager_->InitiateTranslation(details.adopted_language);
+
+ FOR_EACH_OBSERVER(Observer, observer_list_, OnLanguageDetermined(details));
+}
+
+void ContentTranslateDriver::OnPageTranslated(
+ const std::string& original_lang,
+ const std::string& translated_lang,
+ TranslateErrors::Type error_type) {
+ translate_manager_->PageTranslated(
+ original_lang, translated_lang, error_type);
+ FOR_EACH_OBSERVER(
+ Observer,
+ observer_list_,
+ OnPageTranslated(original_lang, translated_lang, error_type));
+}
+
} // namespace translate

Powered by Google App Engine
This is Rietveld 408576698