DrmInfo.cpp revision 27ed8ad2db653f6ac07dcf8bcc05e2409c8bb024
127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi/* 227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * Copyright (C) 2010 The Android Open Source Project 327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * 427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * Licensed under the Apache License, Version 2.0 (the "License"); 527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * you may not use this file except in compliance with the License. 627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * You may obtain a copy of the License at 727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * 827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * http://www.apache.org/licenses/LICENSE-2.0 927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * 1027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * Unless required by applicable law or agreed to in writing, software 1127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * distributed under the License is distributed on an "AS IS" BASIS, 1227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * See the License for the specific language governing permissions and 1427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * limitations under the License. 1527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi */ 1627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 1727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#include <drm/DrmInfo.h> 1827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 1927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiusing namespace android; 2027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 2127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmInfo::DrmInfo(int infoType, const DrmBuffer& drmBuffer, const String8& mimeType) : 2227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi mInfoType(infoType), 2327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi mData(drmBuffer), 2427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi mMimeType(mimeType) { 2527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 2627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 2727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 2827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiint DrmInfo::getInfoType(void) const { 2927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mInfoType; 3027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 3127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 3227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiString8 DrmInfo::getMimeType(void) const { 3327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mMimeType; 3427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 3527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 3627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiconst DrmBuffer& DrmInfo::getData(void) const { 3727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mData; 3827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 3927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 4027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiint DrmInfo::getCount(void) const { 4127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mAttributes.size(); 4227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 4327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 4427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshistatus_t DrmInfo::put(const String8& key, const String8& value) { 4527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi mAttributes.add(key, value); 4627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return DRM_NO_ERROR; 4727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 4827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 4927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiString8 DrmInfo::get(const String8& key) const { 5027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi if (NAME_NOT_FOUND != mAttributes.indexOfKey(key)) { 5127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mAttributes.valueFor(key); 5227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi } 5327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return String8(""); 5427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 5527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 5627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiint DrmInfo::indexOfKey(const String8& key) const { 5727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mAttributes.indexOfKey(key); 5827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 5927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 6027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmInfo::KeyIterator DrmInfo::keyIterator() const { 6127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return KeyIterator(this); 6227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 6327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 6427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmInfo::Iterator DrmInfo::iterator() const { 6527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return Iterator(this); 6627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 6727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 6827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// KeyIterator implementation 6927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmInfo::KeyIterator::KeyIterator(const DrmInfo::KeyIterator& keyIterator) : 7027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi mDrmInfo(keyIterator.mDrmInfo), mIndex(keyIterator.mIndex) { 7127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 7227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 7327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 7427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshibool DrmInfo::KeyIterator::hasNext() { 7527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return (mIndex < mDrmInfo->mAttributes.size()); 7627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 7727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 7827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiconst String8& DrmInfo::KeyIterator::next() { 7927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi const String8& key = mDrmInfo->mAttributes.keyAt(mIndex); 8027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi mIndex++; 8127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return key; 8227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 8327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 8427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmInfo::KeyIterator& DrmInfo::KeyIterator::operator=(const DrmInfo::KeyIterator& keyIterator) { 8527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi mDrmInfo = keyIterator.mDrmInfo; 8627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi mIndex = keyIterator.mIndex; 8727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return *this; 8827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 8927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 9027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi// Iterator implementation 9127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmInfo::Iterator::Iterator(const DrmInfo::Iterator& iterator) 9227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi : mDrmInfo(iterator.mDrmInfo), mIndex(iterator.mIndex) { 9327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 9427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 9527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 9627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmInfo::Iterator& DrmInfo::Iterator::operator=(const DrmInfo::Iterator& iterator) { 9727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi mDrmInfo = iterator.mDrmInfo; 9827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi mIndex = iterator.mIndex; 9927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return *this; 10027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 10127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 10227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshibool DrmInfo::Iterator::hasNext() { 10327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mIndex < mDrmInfo->mAttributes.size(); 10427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 10527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 10627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiString8& DrmInfo::Iterator::next() { 10727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi String8& value = mDrmInfo->mAttributes.editValueAt(mIndex); 10827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi mIndex++; 10927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return value; 11027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 11127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 112