// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_NEARBY_SHARING_WEBRTC_SIGNALING_MESSENGER_H_
#define CHROME_BROWSER_NEARBY_SHARING_WEBRTC_SIGNALING_MESSENGER_H_
#include <string>
#include "base/functional/callback.h"
#include "base/memory/raw_ptr.h"
#include "chrome/browser/nearby_sharing/instantmessaging/receive_messages_express.h"
#include "chrome/browser/nearby_sharing/instantmessaging/send_message_express.h"
#include "chrome/browser/nearby_sharing/instantmessaging/token_fetcher.h"
#include "chromeos/ash/services/nearby/public/mojom/webrtc_signaling_messenger.mojom.h"
#include "services/network/public/cpp/shared_url_loader_factory.h"
namespace signin {
class IdentityManager;
} // namespace signin
class WebRtcSignalingMessenger
: public ::sharing::mojom::WebRtcSignalingMessenger {
public:
WebRtcSignalingMessenger(
signin::IdentityManager* identity_manager,
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory);
~WebRtcSignalingMessenger() override;
// ::sharing::mojom::WebRtcSignalingMessenger:
void SendMessage(const std::string& self_id,
const std::string& peer_id,
::sharing::mojom::LocationHintPtr location_hint,
const std::string& message,
SendMessageCallback callback) override;
void StartReceivingMessages(
const std::string& self_id,
::sharing::mojom::LocationHintPtr location_hint,
mojo::PendingRemote<::sharing::mojom::IncomingMessagesListener>
incoming_messages_listener,
StartReceivingMessagesCallback callback) override;
private:
raw_ptr<signin::IdentityManager> identity_manager_ = nullptr;
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_;
};
#endif // CHROME_BROWSER_NEARBY_SHARING_WEBRTC_SIGNALING_MESSENGER_H_