Home | History | Annotate | Download | only in messaging
      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.
      4 
      5 #ifndef EXTENSIONS_BROWSER_API_MESSAGING_NATIVE_MESSAGING_CHANNEL_H_
      6 #define EXTENSIONS_BROWSER_API_MESSAGING_NATIVE_MESSAGING_CHANNEL_H_
      7 
      8 #include "base/callback.h"
      9 
     10 namespace base {
     11 class Value;
     12 }  // namespace base
     13 
     14 namespace extensions {
     15 
     16 // An interface to receive and send messages between a native component and
     17 // chrome.
     18 class NativeMessagingChannel {
     19  public:
     20   // Callback interface for the channel. EventHandler must outlive
     21   // NativeMessagingChannel.
     22   class EventHandler {
     23    public:
     24     // Called when a message is received from the other endpoint.
     25     virtual void OnMessage(scoped_ptr<base::Value> message) = 0;
     26 
     27     // Called when the channel is disconnected.
     28     // EventHandler is guaranteed not to be called after OnDisconnect().
     29     virtual void OnDisconnect() = 0;
     30 
     31     virtual ~EventHandler() {}
     32   };
     33 
     34   virtual ~NativeMessagingChannel() {}
     35 
     36   // Starts reading and processing messages.
     37   virtual void Start(EventHandler* event_handler) = 0;
     38 
     39   // Sends a message to the other endpoint.
     40   virtual void SendMessage(scoped_ptr<base::Value> message) = 0;
     41 };
     42 
     43 }  // namespace extensions
     44 
     45 #endif  // EXTENSIONS_BROWSER_API_MESSAGING_NATIVE_MESSAGING_CHANNEL_H_
     46