// Copyright 2015 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_BASE_ANDROID_MEDIA_DRM_BRIDGE_DELEGATE_H_
#define MEDIA_BASE_ANDROID_MEDIA_DRM_BRIDGE_DELEGATE_H_

#include <stdint.h>

#include <string>
#include <vector>

#include "base/macros.h"
#include "media/base/android/media_drm_bridge_client.h"
#include "media/base/eme_constants.h"
#include "media/base/media_export.h"

namespace media {

// Allows embedders to modify the Android MediaDrm flow. Delegates are
// registered to a specific key system.
class MEDIA_EXPORT MediaDrmBridgeDelegate {
 public:
  MediaDrmBridgeDelegate();

  MediaDrmBridgeDelegate(const MediaDrmBridgeDelegate&) = delete;
  MediaDrmBridgeDelegate& operator=(const MediaDrmBridgeDelegate&) = delete;

  virtual ~MediaDrmBridgeDelegate();

  // Returns the UUID of the DRM scheme that this delegate applies to.
  virtual const UUID GetUUID() const = 0;

  // Invoked from CreateSession.
  // If |init_data_out| is filled, it replaces |init_data| to send to the
  // MediaDrm instance.
  // If |optional_parameters_out| is filled, it is expected to be an
  // even-length list of (key, value) pairs to send to the MediaDrm instance.
  // Returns false if the request should be rejected.
  virtual bool OnCreateSession(
      const EmeInitDataType init_data_type,
      const std::vector<uint8_t>& init_data,
      std::vector<uint8_t>* init_data_out,
      std::vector<std::string>* optional_parameters_out);
};

}  // namespace media

#endif  // MEDIA_BASE_ANDROID_MEDIA_DRM_BRIDGE_DELEGATE_H_
