blob: 4359ca7316769b0c2dbfd35254f4c22399bb2234 [file] [log] [blame]
// Copyright 2014 The Chromium Authors
// 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_MESSAGING_CHANNEL_H_
#define EXTENSIONS_BROWSER_API_MESSAGING_NATIVE_MESSAGING_CHANNEL_H_
#include <optional>
#include "base/functional/callback.h"
#include "base/values.h"
namespace extensions {
// An interface to receive and send messages between a native component and
// chrome.
class NativeMessagingChannel {
public:
// Callback interface for the channel. EventHandler must outlive
// NativeMessagingChannel.
class EventHandler {
public:
// Called when a message is received from the other endpoint.
virtual void OnMessage(const base::Value& message) = 0;
// Called when the channel is disconnected.
// EventHandler is guaranteed not to be called after OnDisconnect().
virtual void OnDisconnect() = 0;
virtual ~EventHandler() {}
};
virtual ~NativeMessagingChannel() {}
// Starts reading and processing messages.
virtual void Start(EventHandler* event_handler) = 0;
// Sends a message to the other endpoint.
virtual void SendMessage(std::optional<base::ValueView> message) = 0;
};
} // namespace extensions
#endif // EXTENSIONS_BROWSER_API_MESSAGING_NATIVE_MESSAGING_CHANNEL_H_