1*ec779b8eSAndroid Build Coastguard Worker /*
2*ec779b8eSAndroid Build Coastguard Worker * Copyright (C) 2010 The Android Open Source Project
3*ec779b8eSAndroid Build Coastguard Worker *
4*ec779b8eSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
5*ec779b8eSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
6*ec779b8eSAndroid Build Coastguard Worker * You may obtain a copy of the License at
7*ec779b8eSAndroid Build Coastguard Worker *
8*ec779b8eSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0
9*ec779b8eSAndroid Build Coastguard Worker *
10*ec779b8eSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
11*ec779b8eSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
12*ec779b8eSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*ec779b8eSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
14*ec779b8eSAndroid Build Coastguard Worker * limitations under the License.
15*ec779b8eSAndroid Build Coastguard Worker */
16*ec779b8eSAndroid Build Coastguard Worker
17*ec779b8eSAndroid Build Coastguard Worker #include <drm/DrmSupportInfo.h>
18*ec779b8eSAndroid Build Coastguard Worker #include <strings.h>
19*ec779b8eSAndroid Build Coastguard Worker
20*ec779b8eSAndroid Build Coastguard Worker using namespace android;
21*ec779b8eSAndroid Build Coastguard Worker
DrmSupportInfo()22*ec779b8eSAndroid Build Coastguard Worker DrmSupportInfo::DrmSupportInfo() {
23*ec779b8eSAndroid Build Coastguard Worker
24*ec779b8eSAndroid Build Coastguard Worker }
25*ec779b8eSAndroid Build Coastguard Worker
DrmSupportInfo(const DrmSupportInfo & drmSupportInfo)26*ec779b8eSAndroid Build Coastguard Worker DrmSupportInfo::DrmSupportInfo(const DrmSupportInfo& drmSupportInfo):
27*ec779b8eSAndroid Build Coastguard Worker mMimeTypeVector(drmSupportInfo.mMimeTypeVector),
28*ec779b8eSAndroid Build Coastguard Worker mFileSuffixVector(drmSupportInfo.mFileSuffixVector),
29*ec779b8eSAndroid Build Coastguard Worker mDescription(drmSupportInfo.mDescription) {
30*ec779b8eSAndroid Build Coastguard Worker
31*ec779b8eSAndroid Build Coastguard Worker }
32*ec779b8eSAndroid Build Coastguard Worker
operator <(const DrmSupportInfo & drmSupportInfo) const33*ec779b8eSAndroid Build Coastguard Worker bool DrmSupportInfo::operator<(const DrmSupportInfo& drmSupportInfo) const {
34*ec779b8eSAndroid Build Coastguard Worker // Do we need to check mMimeTypeVector & mFileSuffixVector ?
35*ec779b8eSAndroid Build Coastguard Worker // Note Vector doesn't overrides "<" operator
36*ec779b8eSAndroid Build Coastguard Worker return mDescription < drmSupportInfo.mDescription;
37*ec779b8eSAndroid Build Coastguard Worker }
38*ec779b8eSAndroid Build Coastguard Worker
operator ==(const DrmSupportInfo & drmSupportInfo) const39*ec779b8eSAndroid Build Coastguard Worker bool DrmSupportInfo::operator==(const DrmSupportInfo& drmSupportInfo) const {
40*ec779b8eSAndroid Build Coastguard Worker // Do we need to check mMimeTypeVector & mFileSuffixVector ?
41*ec779b8eSAndroid Build Coastguard Worker // Note Vector doesn't overrides "==" operator
42*ec779b8eSAndroid Build Coastguard Worker return (mDescription == drmSupportInfo.mDescription);
43*ec779b8eSAndroid Build Coastguard Worker }
44*ec779b8eSAndroid Build Coastguard Worker
isSupportedMimeType(const String8 & mimeType) const45*ec779b8eSAndroid Build Coastguard Worker bool DrmSupportInfo::isSupportedMimeType(const String8& mimeType) const {
46*ec779b8eSAndroid Build Coastguard Worker if (String8("") == mimeType) {
47*ec779b8eSAndroid Build Coastguard Worker return false;
48*ec779b8eSAndroid Build Coastguard Worker }
49*ec779b8eSAndroid Build Coastguard Worker
50*ec779b8eSAndroid Build Coastguard Worker for (size_t i = 0; i < mMimeTypeVector.size(); i++) {
51*ec779b8eSAndroid Build Coastguard Worker const String8 item = mMimeTypeVector.itemAt(i);
52*ec779b8eSAndroid Build Coastguard Worker
53*ec779b8eSAndroid Build Coastguard Worker if (!strcasecmp(item.c_str(), mimeType.c_str())) {
54*ec779b8eSAndroid Build Coastguard Worker return true;
55*ec779b8eSAndroid Build Coastguard Worker }
56*ec779b8eSAndroid Build Coastguard Worker }
57*ec779b8eSAndroid Build Coastguard Worker return false;
58*ec779b8eSAndroid Build Coastguard Worker }
59*ec779b8eSAndroid Build Coastguard Worker
isSupportedFileSuffix(const String8 & fileType) const60*ec779b8eSAndroid Build Coastguard Worker bool DrmSupportInfo::isSupportedFileSuffix(const String8& fileType) const {
61*ec779b8eSAndroid Build Coastguard Worker for (size_t i = 0; i < mFileSuffixVector.size(); i++) {
62*ec779b8eSAndroid Build Coastguard Worker const String8 item = mFileSuffixVector.itemAt(i);
63*ec779b8eSAndroid Build Coastguard Worker
64*ec779b8eSAndroid Build Coastguard Worker if (!strcasecmp(item.c_str(), fileType.c_str())) {
65*ec779b8eSAndroid Build Coastguard Worker return true;
66*ec779b8eSAndroid Build Coastguard Worker }
67*ec779b8eSAndroid Build Coastguard Worker }
68*ec779b8eSAndroid Build Coastguard Worker return false;
69*ec779b8eSAndroid Build Coastguard Worker }
70*ec779b8eSAndroid Build Coastguard Worker
operator =(const DrmSupportInfo & drmSupportInfo)71*ec779b8eSAndroid Build Coastguard Worker DrmSupportInfo& DrmSupportInfo::operator=(const DrmSupportInfo& drmSupportInfo) {
72*ec779b8eSAndroid Build Coastguard Worker mMimeTypeVector = drmSupportInfo.mMimeTypeVector;
73*ec779b8eSAndroid Build Coastguard Worker mFileSuffixVector = drmSupportInfo.mFileSuffixVector;
74*ec779b8eSAndroid Build Coastguard Worker mDescription = drmSupportInfo.mDescription;
75*ec779b8eSAndroid Build Coastguard Worker return *this;
76*ec779b8eSAndroid Build Coastguard Worker }
77*ec779b8eSAndroid Build Coastguard Worker
getMimeTypeCount(void) const78*ec779b8eSAndroid Build Coastguard Worker int DrmSupportInfo::getMimeTypeCount(void) const {
79*ec779b8eSAndroid Build Coastguard Worker return mMimeTypeVector.size();
80*ec779b8eSAndroid Build Coastguard Worker }
81*ec779b8eSAndroid Build Coastguard Worker
getFileSuffixCount(void) const82*ec779b8eSAndroid Build Coastguard Worker int DrmSupportInfo::getFileSuffixCount(void) const {
83*ec779b8eSAndroid Build Coastguard Worker return mFileSuffixVector.size();
84*ec779b8eSAndroid Build Coastguard Worker }
85*ec779b8eSAndroid Build Coastguard Worker
addMimeType(const String8 & mimeType)86*ec779b8eSAndroid Build Coastguard Worker status_t DrmSupportInfo::addMimeType(const String8& mimeType) {
87*ec779b8eSAndroid Build Coastguard Worker mMimeTypeVector.push(mimeType);
88*ec779b8eSAndroid Build Coastguard Worker return DRM_NO_ERROR;
89*ec779b8eSAndroid Build Coastguard Worker }
90*ec779b8eSAndroid Build Coastguard Worker
addFileSuffix(const String8 & fileSuffix)91*ec779b8eSAndroid Build Coastguard Worker status_t DrmSupportInfo::addFileSuffix(const String8& fileSuffix) {
92*ec779b8eSAndroid Build Coastguard Worker mFileSuffixVector.push(fileSuffix);
93*ec779b8eSAndroid Build Coastguard Worker return DRM_NO_ERROR;
94*ec779b8eSAndroid Build Coastguard Worker }
95*ec779b8eSAndroid Build Coastguard Worker
setDescription(const String8 & description)96*ec779b8eSAndroid Build Coastguard Worker status_t DrmSupportInfo::setDescription(const String8& description) {
97*ec779b8eSAndroid Build Coastguard Worker mDescription = description;
98*ec779b8eSAndroid Build Coastguard Worker return DRM_NO_ERROR;
99*ec779b8eSAndroid Build Coastguard Worker }
100*ec779b8eSAndroid Build Coastguard Worker
getDescription() const101*ec779b8eSAndroid Build Coastguard Worker String8 DrmSupportInfo::getDescription() const {
102*ec779b8eSAndroid Build Coastguard Worker return mDescription;
103*ec779b8eSAndroid Build Coastguard Worker }
104*ec779b8eSAndroid Build Coastguard Worker
getFileSuffixIterator()105*ec779b8eSAndroid Build Coastguard Worker DrmSupportInfo::FileSuffixIterator DrmSupportInfo::getFileSuffixIterator() {
106*ec779b8eSAndroid Build Coastguard Worker return FileSuffixIterator(this);
107*ec779b8eSAndroid Build Coastguard Worker }
108*ec779b8eSAndroid Build Coastguard Worker
getMimeTypeIterator()109*ec779b8eSAndroid Build Coastguard Worker DrmSupportInfo::MimeTypeIterator DrmSupportInfo::getMimeTypeIterator() {
110*ec779b8eSAndroid Build Coastguard Worker return MimeTypeIterator(this);
111*ec779b8eSAndroid Build Coastguard Worker }
112*ec779b8eSAndroid Build Coastguard Worker
FileSuffixIterator(const DrmSupportInfo::FileSuffixIterator & iterator)113*ec779b8eSAndroid Build Coastguard Worker DrmSupportInfo::FileSuffixIterator::FileSuffixIterator(
114*ec779b8eSAndroid Build Coastguard Worker const DrmSupportInfo::FileSuffixIterator& iterator) :
115*ec779b8eSAndroid Build Coastguard Worker mDrmSupportInfo(iterator.mDrmSupportInfo),
116*ec779b8eSAndroid Build Coastguard Worker mIndex(iterator.mIndex) {
117*ec779b8eSAndroid Build Coastguard Worker
118*ec779b8eSAndroid Build Coastguard Worker }
119*ec779b8eSAndroid Build Coastguard Worker
operator =(const DrmSupportInfo::FileSuffixIterator & iterator)120*ec779b8eSAndroid Build Coastguard Worker DrmSupportInfo::FileSuffixIterator& DrmSupportInfo::FileSuffixIterator::operator=(
121*ec779b8eSAndroid Build Coastguard Worker const DrmSupportInfo::FileSuffixIterator& iterator) {
122*ec779b8eSAndroid Build Coastguard Worker mDrmSupportInfo = iterator.mDrmSupportInfo;
123*ec779b8eSAndroid Build Coastguard Worker mIndex = iterator.mIndex;
124*ec779b8eSAndroid Build Coastguard Worker return *this;
125*ec779b8eSAndroid Build Coastguard Worker }
126*ec779b8eSAndroid Build Coastguard Worker
hasNext()127*ec779b8eSAndroid Build Coastguard Worker bool DrmSupportInfo::FileSuffixIterator::hasNext() {
128*ec779b8eSAndroid Build Coastguard Worker return mIndex < mDrmSupportInfo->mFileSuffixVector.size();
129*ec779b8eSAndroid Build Coastguard Worker }
130*ec779b8eSAndroid Build Coastguard Worker
next()131*ec779b8eSAndroid Build Coastguard Worker String8& DrmSupportInfo::FileSuffixIterator::next() {
132*ec779b8eSAndroid Build Coastguard Worker String8& value = mDrmSupportInfo->mFileSuffixVector.editItemAt(mIndex);
133*ec779b8eSAndroid Build Coastguard Worker mIndex++;
134*ec779b8eSAndroid Build Coastguard Worker return value;
135*ec779b8eSAndroid Build Coastguard Worker }
136*ec779b8eSAndroid Build Coastguard Worker
MimeTypeIterator(const DrmSupportInfo::MimeTypeIterator & iterator)137*ec779b8eSAndroid Build Coastguard Worker DrmSupportInfo::MimeTypeIterator::MimeTypeIterator(
138*ec779b8eSAndroid Build Coastguard Worker const DrmSupportInfo::MimeTypeIterator& iterator) :
139*ec779b8eSAndroid Build Coastguard Worker mDrmSupportInfo(iterator.mDrmSupportInfo),
140*ec779b8eSAndroid Build Coastguard Worker mIndex(iterator.mIndex) {
141*ec779b8eSAndroid Build Coastguard Worker
142*ec779b8eSAndroid Build Coastguard Worker }
143*ec779b8eSAndroid Build Coastguard Worker
operator =(const DrmSupportInfo::MimeTypeIterator & iterator)144*ec779b8eSAndroid Build Coastguard Worker DrmSupportInfo::MimeTypeIterator& DrmSupportInfo::MimeTypeIterator::operator=(
145*ec779b8eSAndroid Build Coastguard Worker const DrmSupportInfo::MimeTypeIterator& iterator) {
146*ec779b8eSAndroid Build Coastguard Worker mDrmSupportInfo = iterator.mDrmSupportInfo;
147*ec779b8eSAndroid Build Coastguard Worker mIndex = iterator.mIndex;
148*ec779b8eSAndroid Build Coastguard Worker return *this;
149*ec779b8eSAndroid Build Coastguard Worker }
150*ec779b8eSAndroid Build Coastguard Worker
hasNext()151*ec779b8eSAndroid Build Coastguard Worker bool DrmSupportInfo::MimeTypeIterator::hasNext() {
152*ec779b8eSAndroid Build Coastguard Worker return mIndex < mDrmSupportInfo->mMimeTypeVector.size();
153*ec779b8eSAndroid Build Coastguard Worker }
154*ec779b8eSAndroid Build Coastguard Worker
next()155*ec779b8eSAndroid Build Coastguard Worker String8& DrmSupportInfo::MimeTypeIterator::next() {
156*ec779b8eSAndroid Build Coastguard Worker String8& value = mDrmSupportInfo->mMimeTypeVector.editItemAt(mIndex);
157*ec779b8eSAndroid Build Coastguard Worker mIndex++;
158*ec779b8eSAndroid Build Coastguard Worker return value;
159*ec779b8eSAndroid Build Coastguard Worker }
160