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 b3f7605e6f9c1428b3808b79f40a50ad9cd42d94..65711ae43389a430b154bbafb2facfeb8344edea 100644 |
--- a/chrome/browser/extensions/api/messaging/native_message_port.h |
+++ b/chrome/browser/extensions/api/messaging/native_message_port.h |
@@ -5,22 +5,36 @@ |
#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. |
+// All methods must be called on the UI Thread of the browser process. |
class NativeMessagePort : public MessageService::MessagePort { |
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; |
- |
private: |
- NativeMessageProcessHost* native_process_; |
+ class Core; |
+ void PostMessageFromNativeHost(const std::string& message); |
+ void CloseChannel(const std::string& error_message); |
+ |
+ base::ThreadChecker thread_checker_; |
+ base::WeakPtr<MessageService> weak_message_service_; |
+ scoped_refptr<base::SingleThreadTaskRunner> host_task_runner_; |
+ int port_id_; |
+ scoped_ptr<Core> core_; |
+ |
+ base::WeakPtrFactory<NativeMessagePort> weak_factory_; |
}; |
} // namespace extensions |