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

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

Issue 10917042: Revert 154453 - Remove the translate pyauto test to chrome tests and all the supporting automation … (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 4 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: chrome/browser/automation/automation_provider_observers.cc
===================================================================
--- chrome/browser/automation/automation_provider_observers.cc (revision 154462)
+++ chrome/browser/automation/automation_provider_observers.cc (working copy)
@@ -53,6 +53,9 @@
#include "chrome/browser/sessions/tab_restore_service.h"
#include "chrome/browser/sessions/tab_restore_service_factory.h"
#include "chrome/browser/tab_contents/thumbnail_generator.h"
+#include "chrome/browser/translate/page_translated_details.h"
+#include "chrome/browser/translate/translate_infobar_delegate.h"
+#include "chrome/browser/translate/translate_tab_helper.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/browser_tabstrip.h"
@@ -1258,6 +1261,104 @@
metric_event_duration->duration_ms;
}
+PageTranslatedObserver::PageTranslatedObserver(AutomationProvider* automation,
+ IPC::Message* reply_message,
+ WebContents* web_contents)
+ : automation_(automation->AsWeakPtr()),
+ reply_message_(reply_message) {
+ registrar_.Add(this, chrome::NOTIFICATION_PAGE_TRANSLATED,
+ content::Source<WebContents>(web_contents));
+}
+
+PageTranslatedObserver::~PageTranslatedObserver() {}
+
+void PageTranslatedObserver::Observe(
+ int type,
+ const content::NotificationSource& source,
+ const content::NotificationDetails& details) {
+ if (!automation_) {
+ delete this;
+ return;
+ }
+
+ DCHECK(type == chrome::NOTIFICATION_PAGE_TRANSLATED);
+ AutomationJSONReply reply(automation_, reply_message_.release());
+
+ PageTranslatedDetails* translated_details =
+ content::Details<PageTranslatedDetails>(details).ptr();
+ scoped_ptr<DictionaryValue> return_value(new DictionaryValue);
+ return_value->SetBoolean(
+ "translation_success",
+ translated_details->error_type == TranslateErrors::NONE);
+ reply.SendSuccess(return_value.get());
+ delete this;
+}
+
+TabLanguageDeterminedObserver::TabLanguageDeterminedObserver(
+ AutomationProvider* automation, IPC::Message* reply_message,
+ WebContents* web_contents, TranslateInfoBarDelegate* translate_bar)
+ : automation_(automation->AsWeakPtr()),
+ reply_message_(reply_message),
+ web_contents_(web_contents),
+ translate_bar_(translate_bar) {
+ registrar_.Add(this, chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED,
+ content::Source<WebContents>(web_contents_));
+}
+
+TabLanguageDeterminedObserver::~TabLanguageDeterminedObserver() {}
+
+void TabLanguageDeterminedObserver::Observe(
+ int type, const content::NotificationSource& source,
+ const content::NotificationDetails& details) {
+ DCHECK(type == chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED);
+
+ if (!automation_) {
+ delete this;
+ return;
+ }
+
+ TranslateTabHelper* helper =
+ TabContents::FromWebContents(web_contents_)->translate_tab_helper();
+ scoped_ptr<DictionaryValue> return_value(new DictionaryValue);
+ return_value->SetBoolean("page_translated",
+ helper->language_state().IsPageTranslated());
+ return_value->SetBoolean(
+ "can_translate_page", TranslatePrefs::CanTranslate(
+ automation_->profile()->GetPrefs(),
+ helper->language_state().original_language(),
+ web_contents_->GetURL()));
+ return_value->SetString("original_language",
+ helper->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";
+
+ if (translate_bar_->type() == TranslateInfoBarDelegate::BEFORE_TRANSLATE) {
+ bar_info->SetBoolean("always_translate_lang_button_showing",
+ translate_bar_->ShouldShowAlwaysTranslateButton());
+ bar_info->SetBoolean("never_translate_lang_button_showing",
+ translate_bar_->ShouldShowNeverTranslateButton());
+ }
+ bar_info->SetString("bar_state", type_to_string[translate_bar_->type()]);
+ bar_info->SetString("target_lang_code",
+ translate_bar_->GetTargetLanguageCode());
+ bar_info->SetString("original_lang_code",
+ translate_bar_->GetOriginalLanguageCode());
+ return_value->Set("translate_bar", bar_info);
+ }
+ AutomationJSONReply(automation_, reply_message_.release())
+ .SendSuccess(return_value.get());
+ delete this;
+}
+
InfoBarCountObserver::InfoBarCountObserver(AutomationProvider* automation,
IPC::Message* reply_message,
TabContents* tab_contents,
« no previous file with comments | « chrome/browser/automation/automation_provider_observers.h ('k') | chrome/browser/automation/testing_automation_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698