// 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 "cobalt/media/base/encryption_scheme.h"

namespace cobalt {
namespace media {

EncryptionScheme::Pattern::Pattern() : encrypt_blocks_(0), skip_blocks_(0) {}

EncryptionScheme::Pattern::Pattern(uint32_t encrypt_blocks,
                                   uint32_t skip_blocks)
    : encrypt_blocks_(encrypt_blocks), skip_blocks_(skip_blocks) {}

EncryptionScheme::Pattern::~Pattern() {}

bool EncryptionScheme::Pattern::Matches(const Pattern& other) const {
  return encrypt_blocks_ == other.encrypt_blocks() &&
         skip_blocks_ == other.skip_blocks();
}

bool EncryptionScheme::Pattern::IsInEffect() const {
  return encrypt_blocks_ != 0 && skip_blocks_ != 0;
}

EncryptionScheme::EncryptionScheme() : mode_(CIPHER_MODE_UNENCRYPTED) {}

EncryptionScheme::EncryptionScheme(CipherMode mode, const Pattern& pattern)
    : mode_(mode), pattern_(pattern) {}

EncryptionScheme::~EncryptionScheme() {}

bool EncryptionScheme::Matches(const EncryptionScheme& other) const {
  return mode_ == other.mode_ && pattern_.Matches(other.pattern_);
}

}  // namespace media
}  // namespace cobalt
