Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5233)

Unified Diff: chrome/browser/extensions/api/messaging/native_message_port.h

Issue 591463003: Remote Assistance on Chrome OS Part III - NativeMessageHost (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@native_messaging
Patch Set: Fix NativeMessagingBasic test on Release builds Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698