// 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.

#include "media/cdm/simple_cdm_buffer.h"

#include <limits>

#include "base/logging.h"
#include "base/numerics/safe_conversions.h"

namespace media {

// static
SimpleCdmBuffer* SimpleCdmBuffer::Create(size_t capacity) {
  DCHECK(capacity);

  // cdm::Buffer interface limits capacity to uint32.
  DCHECK_LE(capacity, std::numeric_limits<uint32_t>::max());
  return new SimpleCdmBuffer(base::checked_cast<uint32_t>(capacity));
}

SimpleCdmBuffer::SimpleCdmBuffer(uint32_t capacity)
    : buffer_(capacity), size_(0) {}

SimpleCdmBuffer::~SimpleCdmBuffer() {}

void SimpleCdmBuffer::Destroy() {
  delete this;
}

uint32_t SimpleCdmBuffer::Capacity() const {
  return buffer_.size();
}

uint8_t* SimpleCdmBuffer::Data() {
  return buffer_.data();
}

void SimpleCdmBuffer::SetSize(uint32_t size) {
  DCHECK(size <= Capacity());
  size_ = size > Capacity() ? 0 : size;
}

uint32_t SimpleCdmBuffer::Size() const {
  return size_;
}

}  // namespace media
