xref: /aosp_15_r20/frameworks/av/drm/common/DrmSupportInfo.cpp (revision ec779b8e0859a360c3d303172224686826e6e0e1)
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