| Index: chrome/browser/translate/translate_manager.cc
|
| diff --git a/chrome/browser/translate/translate_manager.cc b/chrome/browser/translate/translate_manager.cc
|
| index f9e3e72bd31768944df1a9eb9e882d91799c8459..9c27198427da451985dbdc2fbcbcc1a8ec455413 100644
|
| --- a/chrome/browser/translate/translate_manager.cc
|
| +++ b/chrome/browser/translate/translate_manager.cc
|
| @@ -15,6 +15,7 @@
|
| #include "base/string_util.h"
|
| #include "base/stringprintf.h"
|
| #include "base/strings/string_split.h"
|
| +#include "base/time.h"
|
| #include "base/values.h"
|
| #include "chrome/browser/browser_process.h"
|
| #include "chrome/browser/infobars/infobar_service.h"
|
| @@ -31,6 +32,7 @@
|
| #include "chrome/browser/ui/tabs/tab_strip_model.h"
|
| #include "chrome/common/chrome_notification_types.h"
|
| #include "chrome/common/chrome_switches.h"
|
| +#include "chrome/common/language_detection_details.h"
|
| #include "chrome/common/pref_names.h"
|
| #include "chrome/common/render_messages.h"
|
| #include "chrome/common/translate_errors.h"
|
| @@ -362,6 +364,10 @@ void TranslateManager::Observe(int type,
|
| break;
|
| }
|
| case chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED: {
|
| + const LanguageDetectionDetails* lang_det_details =
|
| + content::Details<const LanguageDetectionDetails>(details).ptr();
|
| + NotifyLanguageDetection(*lang_det_details);
|
| +
|
| WebContents* tab = content::Source<WebContents>(source).ptr();
|
| // We may get this notifications multiple times. Make sure to translate
|
| // only once.
|
| @@ -375,7 +381,7 @@ void TranslateManager::Observe(int type,
|
| !language_state.translation_pending() &&
|
| !language_state.translation_declined() &&
|
| !language_state.IsPageTranslated()) {
|
| - std::string language = *(content::Details<std::string>(details).ptr());
|
| + std::string language = lang_det_details->adopted_language;
|
| InitiateTranslation(tab, language);
|
| }
|
| break;
|
| @@ -497,6 +503,20 @@ void TranslateManager::OnURLFetchComplete(const net::URLFetcher* source) {
|
| }
|
| }
|
|
|
| +void TranslateManager::AddObserver(Observer* obs) {
|
| + observer_list_.AddObserver(obs);
|
| +}
|
| +
|
| +void TranslateManager::RemoveObserver(Observer* obs) {
|
| + observer_list_.RemoveObserver(obs);
|
| +}
|
| +
|
| +void TranslateManager::NotifyLanguageDetection(
|
| + const LanguageDetectionDetails& details) {
|
| + FOR_EACH_OBSERVER(Observer, observer_list_, OnLanguageDetection(details));
|
| +}
|
| +
|
| +
|
| TranslateManager::TranslateManager()
|
| : weak_method_factory_(this),
|
| translate_script_expiration_delay_(
|
| @@ -710,6 +730,7 @@ void TranslateManager::PageTranslated(WebContents* web_contents,
|
| UMA_HISTOGRAM_COUNTS("Translate.ServerReportedUnsupportedLanguage", 1);
|
| details->error_type = TranslateErrors::UNSUPPORTED_LANGUAGE;
|
| }
|
| +
|
| Profile* profile =
|
| Profile::FromBrowserContext(web_contents->GetBrowserContext());
|
| PrefService* prefs = profile->GetPrefs();
|
|
|