// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chrome/browser/sharing/ack_message_handler.h"

#include "base/memory/ptr_util.h"
#include "chrome/browser/sharing/proto/sharing_message.pb.h"
#include "chrome/browser/sharing/sharing_message_sender.h"

AckMessageHandler::AckMessageHandler(
    SharingMessageSender* sharing_message_sender)
    : sharing_message_sender_(sharing_message_sender) {}

AckMessageHandler::~AckMessageHandler() = default;

void AckMessageHandler::OnMessage(
    chrome_browser_sharing::SharingMessage message,
    SharingMessageHandler::DoneCallback done_callback) {
  DCHECK(message.has_ack_message());
  chrome_browser_sharing::AckMessage* ack_message =
      message.mutable_ack_message();
  std::unique_ptr<chrome_browser_sharing::ResponseMessage> response;
  if (ack_message->has_response_message())
    response = base::WrapUnique(ack_message->release_response_message());

  sharing_message_sender_->OnAckReceived(ack_message->original_message_id(),
                                         std::move(response));

  std::move(done_callback).Run(/*response=*/nullptr);
}
