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/DrmInfoRequest.h> 18 19using namespace android; 20 21const String8 DrmInfoRequest::ACCOUNT_ID("account_id"); 22const String8 DrmInfoRequest::SUBSCRIPTION_ID("subscription_id"); 23 24DrmInfoRequest::DrmInfoRequest(int infoType, const String8& mimeType) : 25 mInfoType(infoType), mMimeType(mimeType) { 26 27} 28 29String8 DrmInfoRequest::getMimeType(void) const { 30 return mMimeType; 31} 32 33int DrmInfoRequest::getInfoType(void) const { 34 return mInfoType; 35} 36 37int DrmInfoRequest::getCount(void) const { 38 return mRequestInformationMap.size(); 39} 40 41status_t DrmInfoRequest::put(const String8& key, const String8& value) { 42 mRequestInformationMap.add(key, value); 43 return DRM_NO_ERROR; 44} 45 46String8 DrmInfoRequest::get(const String8& key) const { 47 if (NAME_NOT_FOUND != mRequestInformationMap.indexOfKey(key)) { 48 return mRequestInformationMap.valueFor(key); 49 } 50 return String8(""); 51} 52 53DrmInfoRequest::KeyIterator DrmInfoRequest::keyIterator() const { 54 return KeyIterator(this); 55} 56 57DrmInfoRequest::Iterator DrmInfoRequest::iterator() const { 58 return Iterator(this); 59} 60 61// KeyIterator implementation 62DrmInfoRequest::KeyIterator::KeyIterator(const DrmInfoRequest::KeyIterator& keyIterator) 63 : mDrmInfoRequest(keyIterator.mDrmInfoRequest), 64 mIndex(keyIterator.mIndex) { 65 66} 67 68bool DrmInfoRequest::KeyIterator::hasNext() { 69 return (mIndex < mDrmInfoRequest->mRequestInformationMap.size()); 70} 71 72const String8& DrmInfoRequest::KeyIterator::next() { 73 const String8& key = mDrmInfoRequest->mRequestInformationMap.keyAt(mIndex); 74 mIndex++; 75 return key; 76} 77 78DrmInfoRequest::KeyIterator& DrmInfoRequest::KeyIterator::operator=( 79 const DrmInfoRequest::KeyIterator& keyIterator) { 80 mDrmInfoRequest = keyIterator.mDrmInfoRequest; 81 mIndex = keyIterator.mIndex; 82 return *this; 83} 84 85// Iterator implementation 86DrmInfoRequest::Iterator::Iterator(const DrmInfoRequest::Iterator& iterator) : 87 mDrmInfoRequest(iterator.mDrmInfoRequest), mIndex(iterator.mIndex) { 88} 89 90DrmInfoRequest::Iterator& DrmInfoRequest::Iterator::operator=( 91 const DrmInfoRequest::Iterator& iterator) { 92 mDrmInfoRequest = iterator.mDrmInfoRequest; 93 mIndex = iterator.mIndex; 94 return *this; 95} 96 97bool DrmInfoRequest::Iterator::hasNext() { 98 return mIndex < mDrmInfoRequest->mRequestInformationMap.size(); 99} 100 101String8& DrmInfoRequest::Iterator::next() { 102 String8& value = mDrmInfoRequest->mRequestInformationMap.editValueAt(mIndex); 103 mIndex++; 104 return value; 105} 106 107