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

#ifndef MEDIA_MOJO_SERVICES_MOJO_CDM_PROMISE_H_
#define MEDIA_MOJO_SERVICES_MOJO_CDM_PROMISE_H_

#include <stdint.h>

#include "base/callback.h"
#include "base/macros.h"
#include "media/base/cdm_promise.h"

namespace media {

// media::CdmPromiseTemplate implementations backed by base::Callbacks.
// TODO(xhwang): We need a new type F to solve the issue where parameters in the
// callback can be passed in by value or as const-refs. Find a better solution
// to handle this.
template <typename F, typename... T>
class MojoCdmPromise final : public CdmPromiseTemplate<T...> {
 public:
  using CallbackType = base::OnceCallback<F>;

  explicit MojoCdmPromise(CallbackType callback);
  ~MojoCdmPromise() final;

  // CdmPromiseTemplate<> implementation.

  void resolve(const T&... result) final;
  void reject(CdmPromise::Exception exception,
              uint32_t system_code,
              const std::string& error_message) final;

 private:
  using CdmPromiseTemplate<T...>::IsPromiseSettled;
  using CdmPromiseTemplate<T...>::MarkPromiseSettled;
  using CdmPromiseTemplate<T...>::RejectPromiseOnDestruction;

  CallbackType callback_;
};

}  // namespace media

#endif  // MEDIA_MOJO_SERVICES_MOJO_CDM_PROMISE_H_
