Roll src/third_party/WebKit a3b4a2e:7441784 (svn 202551:202552)
[chromium-blink-merge.git] / extensions / browser / api / messaging / native_messaging_channel.h
blob90425ba5099a86dac2cbfe2173d1a8d3b64fe2e4
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"
10 namespace base {
11 class Value;
12 } // namespace base
14 namespace extensions {
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;
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_