Index: remoting/host/setup/me2me_native_messaging_host.h |
diff --git a/remoting/host/setup/me2me_native_messaging_host.h b/remoting/host/setup/me2me_native_messaging_host.h |
index e4a6748aba8c0354d088115b079a2331b10ff368..5c938726c3f5f2fabd2f528e5899d204dd9d4e21 100644 |
--- a/remoting/host/setup/me2me_native_messaging_host.h |
+++ b/remoting/host/setup/me2me_native_messaging_host.h |
@@ -10,7 +10,7 @@ |
#include "base/memory/weak_ptr.h" |
#include "base/threading/thread_checker.h" |
#include "base/timer/timer.h" |
-#include "remoting/host/native_messaging/native_messaging_channel.h" |
+#include "extensions/browser/api/messaging/native_messaging_channel.h" |
#include "remoting/host/setup/daemon_controller.h" |
#include "remoting/host/setup/oauth_client.h" |
@@ -34,14 +34,13 @@ class PairingRegistry; |
} // namespace protocol |
// Implementation of the me2me native messaging host. |
-class Me2MeNativeMessagingHost { |
+class Me2MeNativeMessagingHost |
+ : public extensions::NativeMessagingChannel::EventHandler { |
public: |
- typedef NativeMessagingChannel::SendMessageCallback SendMessageCallback; |
- |
Me2MeNativeMessagingHost( |
bool needs_elevation, |
intptr_t parent_window_handle, |
- scoped_ptr<NativeMessagingChannel> channel, |
+ scoped_ptr<extensions::NativeMessagingChannel> channel, |
scoped_refptr<DaemonController> daemon_controller, |
scoped_refptr<protocol::PairingRegistry> pairing_registry, |
scoped_ptr<OAuthClient> oauth_client); |
@@ -49,11 +48,11 @@ class Me2MeNativeMessagingHost { |
void Start(const base::Closure& quit_closure); |
- private: |
- // Callback to process messages from the native messaging client through |
- // |channel_|. |
- void ProcessRequest(scoped_ptr<base::DictionaryValue> message); |
+ // extensions::NativeMessagingChannel::EventHandler implementation |
+ virtual void OnMessage(scoped_ptr<base::Value> message) OVERRIDE; |
+ virtual void OnDisconnect() OVERRIDE; |
+ private: |
// These "Process.." methods handle specific request types. The |response| |
// dictionary is pre-filled by ProcessMessage() with the parts of the |
// response already known ("id" and "type" fields). |
@@ -131,20 +130,31 @@ class Me2MeNativeMessagingHost { |
bool DelegateToElevatedHost(scoped_ptr<base::DictionaryValue> message); |
#if defined(OS_WIN) |
+ class ElevatedChannelEventHandler |
+ : public extensions::NativeMessagingChannel::EventHandler { |
+ public: |
+ ElevatedChannelEventHandler(Me2MeNativeMessagingHost* host); |
+ |
+ virtual void OnMessage(scoped_ptr<base::Value> message) OVERRIDE; |
+ virtual void OnDisconnect() OVERRIDE; |
+ private: |
+ Me2MeNativeMessagingHost* parent_; |
+ }; |
+ |
// Create and connect to an elevated host process if necessary. |
// |elevated_channel_| will contain the native messaging channel to the |
// elevated host if the function succeeds. |
void Me2MeNativeMessagingHost::EnsureElevatedHostCreated(); |
- // Callback to process messages from the elevated host through |
- // |elevated_channel_|. |
- void ProcessDelegateResponse(scoped_ptr<base::DictionaryValue> message); |
- |
// Disconnect and shut down the elevated host. |
void DisconnectElevatedHost(); |
// Native messaging channel used to communicate with the elevated host. |
- scoped_ptr<NativeMessagingChannel> elevated_channel_; |
+ scoped_ptr<extensions::NativeMessagingChannel> elevated_channel_; |
+ |
+ // Native messaging event handler used to process responses from the elevated |
+ // host. |
+ scoped_ptr<ElevatedChannelEventHandler> elevated_channel_event_handler_; |
// Timer to control the lifetime of the elevated host. |
base::OneShotTimer<Me2MeNativeMessagingHost> elevated_host_timer_; |
@@ -159,7 +169,7 @@ class Me2MeNativeMessagingHost { |
// Native messaging channel used to communicate with the native message |
// client. |
- scoped_ptr<NativeMessagingChannel> channel_; |
+ scoped_ptr<extensions::NativeMessagingChannel> channel_; |
scoped_refptr<DaemonController> daemon_controller_; |
// Used to load and update the paired clients for this host. |