Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / api / messaging / message_service.h
index a8ca323..6dcde00 100644 (file)
@@ -14,9 +14,9 @@
 #include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "chrome/browser/extensions/api/messaging/message_property_provider.h"
-#include "chrome/browser/extensions/api/messaging/native_message_process_host.h"
 #include "content/public/browser/notification_observer.h"
 #include "content/public/browser/notification_registrar.h"
+#include "extensions/browser/api/messaging/native_message_host.h"
 #include "extensions/browser/browser_context_keyed_api_factory.h"
 #include "extensions/common/api/messaging/message.h"
 
@@ -60,8 +60,7 @@ class LazyBackgroundTaskQueue;
 // case that the port is a tab).  The Process is usually either a
 // RenderProcessHost or a RenderViewHost.
 class MessageService : public BrowserContextKeyedAPI,
-                       public content::NotificationObserver,
-                       public NativeMessageProcessHost::Client {
+                       public content::NotificationObserver {
  public:
   // A messaging channel. Note that the opening port can be the same as the
   // receiver, if an extension background page wants to talk to its tab (for
@@ -105,12 +104,22 @@ class MessageService : public BrowserContextKeyedAPI,
     DISALLOW_COPY_AND_ASSIGN(MessagePort);
   };
 
+  enum PolicyPermission {
+    DISALLOW,           // The host is not allowed.
+    ALLOW_SYSTEM_ONLY,  // Allowed only when installed on system level.
+    ALLOW_ALL,          // Allowed when installed on system or user level.
+  };
+
+  static PolicyPermission IsNativeMessagingHostAllowed(
+      const PrefService* pref_service,
+      const std::string& native_host_name);
+
   // Allocates a pair of port ids.
   // NOTE: this can be called from any thread.
   static void AllocatePortIdPair(int* port1, int* port2);
 
   explicit MessageService(content::BrowserContext* context);
-  virtual ~MessageService();
+  ~MessageService() override;
 
   // BrowserContextKeyedAPI implementation.
   static BrowserContextKeyedAPIFactory<MessageService>* GetFactoryInstance();
@@ -146,18 +155,12 @@ class MessageService : public BrowserContextKeyedAPI,
 
   // Closes the message channel associated with the given port, and notifies
   // the other side.
-  virtual void CloseChannel(int port_id,
-                            const std::string& error_message) OVERRIDE;
+  void CloseChannel(int port_id, const std::string& error_message);
 
   // Enqueues a message on a pending channel, or sends a message to the given
   // port if the channel isn't pending.
   void PostMessage(int port_id, const Message& message);
 
-  // NativeMessageProcessHost::Client
-  virtual void PostMessageFromNativeProcess(
-      int port_id,
-      const std::string& message) OVERRIDE;
-
  private:
   friend class MockMessageService;
   friend class BrowserContextKeyedAPIFactory<MessageService>;
@@ -193,9 +196,9 @@ class MessageService : public BrowserContextKeyedAPI,
   void AddChannel(MessageChannel* channel, int receiver_port_id);
 
   // content::NotificationObserver interface.
-  virtual void Observe(int type,
-                       const content::NotificationSource& source,
-                       const content::NotificationDetails& details) OVERRIDE;
+  void Observe(int type,
+               const content::NotificationSource& source,
+               const content::NotificationDetails& details) override;
 
   // A process that might be in our list of channels has closed.
   void OnProcessClosed(content::RenderProcessHost* process);