Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / webui / translate_internals / translate_internals_handler.h
index e6a3444..d12b642 100644 (file)
@@ -7,7 +7,12 @@
 
 #include <string>
 
+#include "base/callback_list.h"
+#include "base/memory/scoped_ptr.h"
 #include "chrome/browser/translate/translate_manager.h"
+#include "components/translate/core/browser/translate_language_list.h"
+#include "content/public/browser/notification_observer.h"
+#include "content/public/browser/notification_registrar.h"
 #include "content/public/browser/web_ui_message_handler.h"
 #include "content/public/common/webplugininfo.h"
 
@@ -21,9 +26,14 @@ class ListValue;
 class Value;
 }
 
+namespace content {
+class NotificationDetails;
+class NotificationSource;
+}
+
 // The handler class for TranslateInternals page operations.
 class TranslateInternalsHandler : public content::WebUIMessageHandler,
-                                  public TranslateManager::Observer {
+                                  public content::NotificationObserver {
  public:
   TranslateInternalsHandler();
   virtual ~TranslateInternalsHandler();
@@ -31,15 +41,18 @@ class TranslateInternalsHandler : public content::WebUIMessageHandler,
   // content::WebUIMessageHandler methods:
   virtual void RegisterMessages() OVERRIDE;
 
-  // TranslateManager::Observer methods:
-  virtual void OnLanguageDetection(
-      const LanguageDetectionDetails& details) OVERRIDE;
-  virtual void OnTranslateError(
-      const TranslateErrorDetails& details) OVERRIDE;
-  virtual void OnTranslateEvent(
-      const TranslateEventDetails& details) OVERRIDE;
-
  private:
+  // content::NotificationObserver implementation:
+  virtual void Observe(int type,
+                       const content::NotificationSource& source,
+                       const content::NotificationDetails& details) OVERRIDE;
+
+  // Callback for translate errors.
+  void OnTranslateError(const TranslateErrorDetails& details);
+
+  // Callback for translate events.
+  virtual void OnTranslateEvent(const TranslateEventDetails& details);
+
   // Handles the Javascript message 'removePrefItem'. This message is sent
   // when UI requests to remove an item in the preference.
   void OnRemovePrefItem(const base::ListValue* args);
@@ -59,6 +72,16 @@ class TranslateInternalsHandler : public content::WebUIMessageHandler,
   // Sends the languages currently supported by the server to JavaScript.
   void SendSupportedLanguagesToJs();
 
+  // Subscription for translate events coming from the translate language list.
+  scoped_ptr<TranslateLanguageList::EventCallbackList::Subscription>
+      event_subscription_;
+
+  // Subscription for translate errors coming from the translate manager.
+  scoped_ptr<TranslateManager::TranslateErrorCallbackList::Subscription>
+      error_subscription_;
+
+  content::NotificationRegistrar notification_registrar_;
+
   DISALLOW_COPY_AND_ASSIGN(TranslateInternalsHandler);
 };