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

Unified Diff: chrome/browser/automation/automation_provider_observers.cc

Issue 3026016: New pyauto hook for the translate feature. (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: Small changes Created 10 years, 5 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
« no previous file with comments | « chrome/browser/automation/automation_provider_observers.h ('k') | chrome/test/functional/PYAUTO_TESTS » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/automation/automation_provider_observers.cc
diff --git a/chrome/browser/automation/automation_provider_observers.cc b/chrome/browser/automation/automation_provider_observers.cc
index 6725ae1bb715d3938456cf2bedcd8a13be9c846f..ad368c0f50d1f58f1cb6afa8b4b7f23caf29484e 100644
--- a/chrome/browser/automation/automation_provider_observers.cc
+++ b/chrome/browser/automation/automation_provider_observers.cc
@@ -23,6 +23,8 @@
#include "chrome/browser/profile.h"
#include "chrome/browser/tab_contents/navigation_controller.h"
#include "chrome/browser/tab_contents/tab_contents.h"
+#include "chrome/browser/translate/page_translated_details.h"
+#include "chrome/browser/translate/translate_infobar_delegate.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/notification_service.h"
#include "chrome/test/automation/automation_constants.h"
@@ -929,6 +931,82 @@ void MetricEventDurationObserver::Observe(NotificationType type,
metric_event_duration->duration_ms;
}
+PageTranslatedObserver::PageTranslatedObserver(AutomationProvider* automation,
+ IPC::Message* reply_message,
+ TabContents* tab_contents)
+ : automation_(automation),
+ reply_message_(reply_message) {
+ registrar_.Add(this, NotificationType::PAGE_TRANSLATED,
+ Source<TabContents>(tab_contents));
+}
+
+void PageTranslatedObserver::Observe(NotificationType type,
+ const NotificationSource& source,
+ const NotificationDetails& details) {
+ DCHECK(type == NotificationType::PAGE_TRANSLATED);
+ AutomationJSONReply reply(automation_, reply_message_);
+
+ PageTranslatedDetails* translated_details =
+ Details<PageTranslatedDetails>(details).ptr();
+ scoped_ptr<DictionaryValue> return_value(new DictionaryValue);
+ return_value->SetBoolean(
+ L"translation_success",
+ translated_details->error_type == TranslateErrors::NONE);
+ reply.SendSuccess(return_value.get());
+ delete this;
+}
+
+TabLanguageDeterminedObserver::TabLanguageDeterminedObserver(
+ AutomationProvider* automation, IPC::Message* reply_message,
+ TabContents* tab_contents, TranslateInfoBarDelegate* translate_bar)
+ : automation_(automation),
+ reply_message_(reply_message),
+ tab_contents_(tab_contents),
+ translate_bar_(translate_bar) {
+ registrar_.Add(this, NotificationType::TAB_LANGUAGE_DETERMINED,
+ Source<TabContents>(tab_contents));
+}
+
+void TabLanguageDeterminedObserver::Observe(
+ NotificationType type, const NotificationSource& source,
+ const NotificationDetails& details) {
+ DCHECK(type == NotificationType::TAB_LANGUAGE_DETERMINED);
+
+ scoped_ptr<DictionaryValue> return_value(new DictionaryValue);
+ return_value->SetBoolean(L"page_translated",
+ tab_contents_->language_state().IsPageTranslated());
+ return_value->SetBoolean(
+ L"can_translate_page", TranslatePrefs::CanTranslate(
+ automation_->profile()->GetPrefs(),
+ tab_contents_->language_state().original_language(),
+ tab_contents_->GetURL()));
+ return_value->SetString(
+ L"original_language",
+ tab_contents_->language_state().original_language());
+ if (translate_bar_) {
+ DictionaryValue* bar_info = new DictionaryValue;
+ std::map<TranslateInfoBarDelegate::Type, std::string> type_to_string;
+ type_to_string[TranslateInfoBarDelegate::BEFORE_TRANSLATE] =
+ "BEFORE_TRANSLATE";
+ type_to_string[TranslateInfoBarDelegate::TRANSLATING] =
+ "TRANSLATING";
+ type_to_string[TranslateInfoBarDelegate::AFTER_TRANSLATE] =
+ "AFTER_TRANSLATE";
+ type_to_string[TranslateInfoBarDelegate::TRANSLATION_ERROR] =
+ "TRANSLATION_ERROR";
+
+ bar_info->SetString(L"bar_state", type_to_string[translate_bar_->type()]);
+ bar_info->SetString(L"target_lang_code",
+ translate_bar_->GetTargetLanguageCode());
+ bar_info->SetString(L"original_lang_code",
+ translate_bar_->GetOriginalLanguageCode());
+ return_value->Set(L"translate_bar", bar_info);
+ }
+ AutomationJSONReply(automation_, reply_message_)
+ .SendSuccess(return_value.get());
+ delete this;
+}
+
#if defined(OS_CHROMEOS)
LoginManagerObserver::LoginManagerObserver(
AutomationProvider* automation,
« no previous file with comments | « chrome/browser/automation/automation_provider_observers.h ('k') | chrome/test/functional/PYAUTO_TESTS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698