| /* | 
 |  * Copyright (C) 2010 The Android Open Source Project | 
 |  * | 
 |  * Licensed under the Apache License, Version 2.0 (the "License"); | 
 |  * you may not use this file except in compliance with the License. | 
 |  * You may obtain a copy of the License at | 
 |  * | 
 |  *      http://www.apache.org/licenses/LICENSE-2.0 | 
 |  * | 
 |  * Unless required by applicable law or agreed to in writing, software | 
 |  * distributed under the License is distributed on an "AS IS" BASIS, | 
 |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 |  * See the License for the specific language governing permissions and | 
 |  * limitations under the License. | 
 |  */ | 
 |  | 
 | #include <drm/DrmSupportInfo.h> | 
 | #include <strings.h> | 
 |  | 
 | using namespace android; | 
 |  | 
 | DrmSupportInfo::DrmSupportInfo() { | 
 |  | 
 | } | 
 |  | 
 | DrmSupportInfo::DrmSupportInfo(const DrmSupportInfo& drmSupportInfo): | 
 |     mMimeTypeVector(drmSupportInfo.mMimeTypeVector), | 
 |     mFileSuffixVector(drmSupportInfo.mFileSuffixVector), | 
 |     mDescription(drmSupportInfo.mDescription) { | 
 |  | 
 | } | 
 |  | 
 | bool DrmSupportInfo::operator<(const DrmSupportInfo& drmSupportInfo) const { | 
 |     // Do we need to check mMimeTypeVector & mFileSuffixVector ? | 
 |     // Note Vector doesn't overrides "<" operator | 
 |     return mDescription < drmSupportInfo.mDescription; | 
 | } | 
 |  | 
 | bool DrmSupportInfo::operator==(const DrmSupportInfo& drmSupportInfo) const { | 
 |     // Do we need to check mMimeTypeVector & mFileSuffixVector ? | 
 |     // Note Vector doesn't overrides "==" operator | 
 |     return (mDescription == drmSupportInfo.mDescription); | 
 | } | 
 |  | 
 | bool DrmSupportInfo::isSupportedMimeType(const String8& mimeType) const { | 
 |     if (String8("") == mimeType) { | 
 |         return false; | 
 |     } | 
 |  | 
 |     for (unsigned int i = 0; i < mMimeTypeVector.size(); i++) { | 
 |         const String8 item = mMimeTypeVector.itemAt(i); | 
 |  | 
 |         if (!strcasecmp(item.string(), mimeType.string())) { | 
 |             return true; | 
 |         } | 
 |     } | 
 |     return false; | 
 | } | 
 |  | 
 | bool DrmSupportInfo::isSupportedFileSuffix(const String8& fileType) const { | 
 |     for (unsigned int i = 0; i < mFileSuffixVector.size(); i++) { | 
 |         const String8 item = mFileSuffixVector.itemAt(i); | 
 |  | 
 |         if (!strcasecmp(item.string(), fileType.string())) { | 
 |             return true; | 
 |         } | 
 |     } | 
 |     return false; | 
 | } | 
 |  | 
 | DrmSupportInfo& DrmSupportInfo::operator=(const DrmSupportInfo& drmSupportInfo) { | 
 |     mMimeTypeVector = drmSupportInfo.mMimeTypeVector; | 
 |     mFileSuffixVector = drmSupportInfo.mFileSuffixVector; | 
 |     mDescription = drmSupportInfo.mDescription; | 
 |     return *this; | 
 | } | 
 |  | 
 | int DrmSupportInfo::getMimeTypeCount(void) const { | 
 |     return mMimeTypeVector.size(); | 
 | } | 
 |  | 
 | int DrmSupportInfo::getFileSuffixCount(void) const { | 
 |     return mFileSuffixVector.size(); | 
 | } | 
 |  | 
 | status_t DrmSupportInfo::addMimeType(const String8& mimeType) { | 
 |     mMimeTypeVector.push(mimeType); | 
 |     return DRM_NO_ERROR; | 
 | } | 
 |  | 
 | status_t DrmSupportInfo::addFileSuffix(const String8& fileSuffix) { | 
 |     mFileSuffixVector.push(fileSuffix); | 
 |     return DRM_NO_ERROR; | 
 | } | 
 |  | 
 | status_t DrmSupportInfo::setDescription(const String8& description) { | 
 |     mDescription = description; | 
 |     return DRM_NO_ERROR; | 
 | } | 
 |  | 
 | String8 DrmSupportInfo::getDescription() const { | 
 |     return mDescription; | 
 | } | 
 |  | 
 | DrmSupportInfo::FileSuffixIterator DrmSupportInfo::getFileSuffixIterator() { | 
 |     return FileSuffixIterator(this); | 
 | } | 
 |  | 
 | DrmSupportInfo::MimeTypeIterator DrmSupportInfo::getMimeTypeIterator() { | 
 |     return MimeTypeIterator(this); | 
 | } | 
 |  | 
 | DrmSupportInfo::FileSuffixIterator::FileSuffixIterator( | 
 |     const DrmSupportInfo::FileSuffixIterator& iterator) : | 
 |     mDrmSupportInfo(iterator.mDrmSupportInfo), | 
 |     mIndex(iterator.mIndex) { | 
 |  | 
 | } | 
 |  | 
 | DrmSupportInfo::FileSuffixIterator& DrmSupportInfo::FileSuffixIterator::operator=( | 
 |     const DrmSupportInfo::FileSuffixIterator& iterator) { | 
 |     mDrmSupportInfo = iterator.mDrmSupportInfo; | 
 |     mIndex = iterator.mIndex; | 
 |     return *this; | 
 | } | 
 |  | 
 | bool DrmSupportInfo::FileSuffixIterator::hasNext() { | 
 |     return mIndex < mDrmSupportInfo->mFileSuffixVector.size(); | 
 | } | 
 |  | 
 | String8& DrmSupportInfo::FileSuffixIterator::next() { | 
 |     String8& value = mDrmSupportInfo->mFileSuffixVector.editItemAt(mIndex); | 
 |     mIndex++; | 
 |     return value; | 
 | } | 
 |  | 
 | DrmSupportInfo::MimeTypeIterator::MimeTypeIterator( | 
 |     const DrmSupportInfo::MimeTypeIterator& iterator) : | 
 |     mDrmSupportInfo(iterator.mDrmSupportInfo), | 
 |     mIndex(iterator.mIndex) { | 
 |  | 
 | } | 
 |  | 
 | DrmSupportInfo::MimeTypeIterator& DrmSupportInfo::MimeTypeIterator::operator=( | 
 |     const DrmSupportInfo::MimeTypeIterator& iterator) { | 
 |     mDrmSupportInfo = iterator.mDrmSupportInfo; | 
 |     mIndex = iterator.mIndex; | 
 |     return *this; | 
 | } | 
 |  | 
 | bool DrmSupportInfo::MimeTypeIterator::hasNext() { | 
 |     return mIndex < mDrmSupportInfo->mMimeTypeVector.size(); | 
 | } | 
 |  | 
 | String8& DrmSupportInfo::MimeTypeIterator::next() { | 
 |     String8& value = mDrmSupportInfo->mMimeTypeVector.editItemAt(mIndex); | 
 |     mIndex++; | 
 |     return value; | 
 | } |