1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef EXTENSIONS_BROWSER_API_MESSAGING_NATIVE_MESSAGING_CHANNEL_H_
6 #define EXTENSIONS_BROWSER_API_MESSAGING_NATIVE_MESSAGING_CHANNEL_H_
8 #include "base/callback.h"
14 namespace extensions
{
16 // An interface to receive and send messages between a native component and
18 class NativeMessagingChannel
{
20 // Callback interface for the channel. EventHandler must outlive
21 // NativeMessagingChannel.
24 // Called when a message is received from the other endpoint.
25 virtual void OnMessage(scoped_ptr
<base::Value
> message
) = 0;
27 // Called when the channel is disconnected.
28 // EventHandler is guaranteed not to be called after OnDisconnect().
29 virtual void OnDisconnect() = 0;
31 virtual ~EventHandler() {}
34 virtual ~NativeMessagingChannel() {}
36 // Starts reading and processing messages.
37 virtual void Start(EventHandler
* event_handler
) = 0;
39 // Sends a message to the other endpoint.
40 virtual void SendMessage(scoped_ptr
<base::Value
> message
) = 0;
43 } // namespace extensions
45 #endif // EXTENSIONS_BROWSER_API_MESSAGING_NATIVE_MESSAGING_CHANNEL_H_