DrmConstraints.cpp revision 27ed8ad2db653f6ac07dcf8bcc05e2409c8bb024
1/* 2 * Copyright (C) 2010 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17#include <drm/DrmConstraints.h> 18 19using namespace android; 20 21const String8 DrmConstraints::MAX_REPEAT_COUNT("max_repeat_count"); 22const String8 DrmConstraints::REMAINING_REPEAT_COUNT("remaining_repeat_count"); 23const String8 DrmConstraints::LICENSE_START_TIME("license_start_time"); 24const String8 DrmConstraints::LICENSE_EXPIRY_TIME("license_expiry_time"); 25const String8 DrmConstraints::LICENSE_AVAILABLE_TIME("license_available_time"); 26const String8 DrmConstraints::EXTENDED_METADATA("extended_metadata"); 27 28int DrmConstraints::getCount(void) const { 29 return mConstraintMap.size(); 30} 31 32status_t DrmConstraints::put(const String8* key, const char* value) { 33 int length = strlen(value); 34 char* charValue = new char[length + 1]; 35 if (NULL != charValue) { 36 strncpy(charValue, value, length); 37 charValue[length] = '\0'; 38 mConstraintMap.add(*key, charValue); 39 } 40 return DRM_NO_ERROR; 41} 42 43String8 DrmConstraints::get(const String8& key) const { 44 if (NULL != getValue(&key)) { 45 return String8(getValue(&key)); 46 } 47 return String8(""); 48} 49 50const char* DrmConstraints::getValue(const String8* key) const { 51 if (NAME_NOT_FOUND != mConstraintMap.indexOfKey(*key)) { 52 return mConstraintMap.valueFor(*key); 53 } 54 return NULL; 55} 56 57const char* DrmConstraints::getAsByteArray(const String8* key) const { 58 return getValue(key); 59} 60 61bool DrmConstraints::KeyIterator::hasNext() { 62 return mIndex < mDrmConstraints->mConstraintMap.size(); 63} 64 65const String8& DrmConstraints::KeyIterator::next() { 66 const String8& key = mDrmConstraints->mConstraintMap.keyAt(mIndex); 67 mIndex++; 68 return key; 69} 70 71DrmConstraints::KeyIterator DrmConstraints::keyIterator() { 72 return KeyIterator(this); 73} 74 75DrmConstraints::KeyIterator::KeyIterator(const DrmConstraints::KeyIterator& keyIterator) 76 : mDrmConstraints(keyIterator.mDrmConstraints), 77 mIndex(keyIterator.mIndex) { 78 LOGV("DrmConstraints::KeyIterator::KeyIterator"); 79} 80 81DrmConstraints::KeyIterator& DrmConstraints::KeyIterator::operator=( 82 const DrmConstraints::KeyIterator& keyIterator) { 83 LOGV("DrmConstraints::KeyIterator::operator="); 84 mDrmConstraints = keyIterator.mDrmConstraints; 85 mIndex = keyIterator.mIndex; 86 return *this; 87} 88 89 90DrmConstraints::Iterator DrmConstraints::iterator() { 91 return Iterator(this); 92} 93 94DrmConstraints::Iterator::Iterator(const DrmConstraints::Iterator& iterator) : 95 mDrmConstraints(iterator.mDrmConstraints), 96 mIndex(iterator.mIndex) { 97 LOGV("DrmConstraints::Iterator::Iterator"); 98} 99 100DrmConstraints::Iterator& DrmConstraints::Iterator::operator=( 101 const DrmConstraints::Iterator& iterator) { 102 LOGV("DrmConstraints::Iterator::operator="); 103 mDrmConstraints = iterator.mDrmConstraints; 104 mIndex = iterator.mIndex; 105 return *this; 106} 107 108bool DrmConstraints::Iterator::hasNext() { 109 return mIndex < mDrmConstraints->mConstraintMap.size(); 110} 111 112String8 DrmConstraints::Iterator::next() { 113 String8 value = String8(mDrmConstraints->mConstraintMap.editValueAt(mIndex)); 114 mIndex++; 115 return value; 116} 117 118