 Chromium Code Reviews
 Chromium Code Reviews Issue 591463003:
  Remote Assistance on Chrome OS Part III - NativeMessageHost  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@native_messaging
    
  
    Issue 591463003:
  Remote Assistance on Chrome OS Part III - NativeMessageHost  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@native_messaging| Index: extensions/browser/api/messaging/native_message_host.h | 
| diff --git a/extensions/browser/api/messaging/native_message_host.h b/extensions/browser/api/messaging/native_message_host.h | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..7c747460026335f03c74947d0ba7598231ebd27c | 
| --- /dev/null | 
| +++ b/extensions/browser/api/messaging/native_message_host.h | 
| @@ -0,0 +1,64 @@ | 
| +// Copyright 2014 The Chromium Authors. All rights reserved. | 
| +// Use of this source code is governed by a BSD-style license that can be | 
| +// found in the LICENSE file. | 
| + | 
| +#ifndef EXTENSIONS_BROWSER_API_MESSAGING_NATIVE_MESSAGE_HOST_H_ | 
| +#define EXTENSIONS_BROWSER_API_MESSAGING_NATIVE_MESSAGE_HOST_H_ | 
| + | 
| +#include <string> | 
| +#include "base/memory/scoped_ptr.h" | 
| 
Sergey Ulanov
2014/09/22 23:42:59
Empty line above this one.
 
kelvinp
2014/09/23 20:16:42
Done.
 | 
| +#include "base/memory/weak_ptr.h" | 
| +#include "ui/gfx/native_widget_types.h" | 
| + | 
| +class PrefService; | 
| + | 
| +namespace extensions { | 
| + | 
| +// An interface for receiving messages from MessageService (Chrome) using the | 
| +// Native Messaging API. A NativeMessageHost object hosts a native component, | 
| +// which can run in the browser-process or in a separate process (SEe | 
| +// NativeMessageProcessHost). | 
| +class NativeMessageHost { | 
| + public: | 
| + // Result returned from IsHostAllowed(). | 
| + 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. | 
| + }; | 
| + | 
| + // Callback interface for receiving messages from the native component. It is | 
| + // implemented by MessageService. | 
| + class Client { | 
| + public: | 
| + virtual ~Client() {} | 
| + | 
| + // Called on the UI thread. | 
| + virtual void PostMessageFromNative(int port_id, | 
| 
Sergey Ulanov
2014/09/22 23:42:59
Maybe PostMessageFromNativeHost()?
 
kelvinp
2014/09/23 20:16:42
Done.
 | 
| + const std::string& message) = 0; | 
| + virtual void CloseChannel(int port_id, | 
| + const std::string& error_message) = 0; | 
| + }; | 
| + | 
| + // Creates the NativeMessageHost based on the |native_host_name|. | 
| + static scoped_ptr<NativeMessageHost> Create( | 
| + gfx::NativeView native_view, | 
| + base::WeakPtr<Client> weak_client_ui, | 
| 
Sergey Ulanov
2014/09/22 23:42:59
I think this should be called |client|. It has not
 
kelvinp
2014/09/23 20:16:42
Done.  Copy and paste from existing code does not
 | 
| + const std::string& source_extension_id, | 
| + const std::string& native_host_name, | 
| + int destination_port, | 
| + bool allow_user_level); | 
| + | 
| + // Returns policy permissions for the host with the specified name. | 
| + static PolicyPermission IsHostAllowed(const PrefService* pref_service, | 
| + const std::string& native_host_name); | 
| + | 
| + // Sends a message to the native component with the specified payload. | 
| + virtual void Send(const std::string& json) = 0; | 
| + | 
| + virtual ~NativeMessageHost() {} | 
| +}; | 
| + | 
| +} // namespace extensions | 
| + | 
| +#endif // EXTENSIONS_BROWSER_API_MESSAGING_NATIVE_MESSAGE_HOST_H_ |