Index: chrome/browser/extensions/api/messaging/native_message_port.h |
diff --git a/chrome/browser/extensions/api/messaging/native_message_port.h b/chrome/browser/extensions/api/messaging/native_message_port.h |
index f94db96a8ad107afaa09850d9a6ad7da5d960714..a1a314e68ef349fb21ffc2878d31ca477cfadbec 100644 |
--- a/chrome/browser/extensions/api/messaging/native_message_port.h |
+++ b/chrome/browser/extensions/api/messaging/native_message_port.h |
@@ -5,22 +5,39 @@ |
#ifndef CHROME_BROWSER_EXTENSIONS_API_MESSAGING_NATIVE_MESSAGE_PORT_H_ |
#define CHROME_BROWSER_EXTENSIONS_API_MESSAGING_NATIVE_MESSAGE_PORT_H_ |
+#include "base/threading/thread_checker.h" |
#include "chrome/browser/extensions/api/messaging/message_service.h" |
namespace extensions { |
class NativeMessageProcessHost; |
// A port that manages communication with a native application. |
-class NativeMessagePort : public MessageService::MessagePort { |
+// All methods must be called on the UI Thread of the browser process. |
+class NativeMessagePort : public MessageService::MessagePort, |
+ public NativeMessageHost::Client { |
public: |
- // Takes ownership of |native_process|. |
- explicit NativeMessagePort(NativeMessageProcessHost* native_process); |
+ NativeMessagePort(base::WeakPtr<MessageService> message_service, |
+ int port_id, |
+ scoped_ptr<NativeMessageHost> native_message_host); |
virtual ~NativeMessagePort(); |
+ |
+ // MessageService::MessagePort implementation. |
virtual void DispatchOnMessage(const Message& message, |
int target_port_id) OVERRIDE; |
+ // NativeMessageHost::Client implementation. |
Sergey Ulanov
2014/10/01 23:23:59
This class doesn't really need to implement Native
kelvinp
2014/10/02 03:12:17
Done.
|
+ virtual void PostMessageFromNativeHost(const std::string& message) OVERRIDE; |
+ virtual void CloseChannel(const std::string& error_message) OVERRIDE; |
+ |
private: |
- NativeMessageProcessHost* native_process_; |
+ class Core; |
+ |
+ base::ThreadChecker thread_checker_; |
+ base::WeakPtr<MessageService> weak_message_service_; |
+ int port_id_; |
+ scoped_ptr<Core> core_; |
+ |
+ base::WeakPtrFactory<NativeMessagePort> weak_factory_; |
}; |
} // namespace extensions |