xref: /aosp_15_r20/frameworks/av/include/drm/DrmInfoRequest.h (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 #ifndef __DRM_INFO_REQUEST_H__
18*ec779b8eSAndroid Build Coastguard Worker #define __DRM_INFO_REQUEST_H__
19*ec779b8eSAndroid Build Coastguard Worker 
20*ec779b8eSAndroid Build Coastguard Worker #include "drm_framework_common.h"
21*ec779b8eSAndroid Build Coastguard Worker 
22*ec779b8eSAndroid Build Coastguard Worker namespace android {
23*ec779b8eSAndroid Build Coastguard Worker 
24*ec779b8eSAndroid Build Coastguard Worker /**
25*ec779b8eSAndroid Build Coastguard Worker  * This is an utility class used to pass required parameters to get
26*ec779b8eSAndroid Build Coastguard Worker  * the necessary information to communicate with online DRM server
27*ec779b8eSAndroid Build Coastguard Worker  *
28*ec779b8eSAndroid Build Coastguard Worker  * An instance of this class is passed to
29*ec779b8eSAndroid Build Coastguard Worker  * DrmManagerClient::acquireDrmInfo(const DrmInfoRequest*) to get the
30*ec779b8eSAndroid Build Coastguard Worker  * instance of DrmInfo.
31*ec779b8eSAndroid Build Coastguard Worker  *
32*ec779b8eSAndroid Build Coastguard Worker  */
33*ec779b8eSAndroid Build Coastguard Worker class DrmInfoRequest {
34*ec779b8eSAndroid Build Coastguard Worker public:
35*ec779b8eSAndroid Build Coastguard Worker     // Changes in following constants should be in sync with DrmInfoRequest.java
36*ec779b8eSAndroid Build Coastguard Worker     static const int TYPE_REGISTRATION_INFO = 1;
37*ec779b8eSAndroid Build Coastguard Worker     static const int TYPE_UNREGISTRATION_INFO = 2;
38*ec779b8eSAndroid Build Coastguard Worker     static const int TYPE_RIGHTS_ACQUISITION_INFO = 3;
39*ec779b8eSAndroid Build Coastguard Worker     static const int TYPE_RIGHTS_ACQUISITION_PROGRESS_INFO = 4;
40*ec779b8eSAndroid Build Coastguard Worker 
41*ec779b8eSAndroid Build Coastguard Worker     /**
42*ec779b8eSAndroid Build Coastguard Worker      * Key to pass the unique id for the account or the user
43*ec779b8eSAndroid Build Coastguard Worker      */
44*ec779b8eSAndroid Build Coastguard Worker     static const String8 ACCOUNT_ID;
45*ec779b8eSAndroid Build Coastguard Worker     /**
46*ec779b8eSAndroid Build Coastguard Worker      * Key to pass the subscription id
47*ec779b8eSAndroid Build Coastguard Worker      */
48*ec779b8eSAndroid Build Coastguard Worker     static const String8 SUBSCRIPTION_ID;
49*ec779b8eSAndroid Build Coastguard Worker 
50*ec779b8eSAndroid Build Coastguard Worker public:
51*ec779b8eSAndroid Build Coastguard Worker     /**
52*ec779b8eSAndroid Build Coastguard Worker      * Constructor for DrmInfoRequest
53*ec779b8eSAndroid Build Coastguard Worker      *
54*ec779b8eSAndroid Build Coastguard Worker      * @param[in] infoType Type of information
55*ec779b8eSAndroid Build Coastguard Worker      * @param[in] mimeType MIME type
56*ec779b8eSAndroid Build Coastguard Worker      */
57*ec779b8eSAndroid Build Coastguard Worker     DrmInfoRequest(int infoType, const String8& mimeType);
58*ec779b8eSAndroid Build Coastguard Worker 
59*ec779b8eSAndroid Build Coastguard Worker     /**
60*ec779b8eSAndroid Build Coastguard Worker      * Destructor for DrmInfoRequest
61*ec779b8eSAndroid Build Coastguard Worker      */
~DrmInfoRequest()62*ec779b8eSAndroid Build Coastguard Worker     virtual ~DrmInfoRequest() {}
63*ec779b8eSAndroid Build Coastguard Worker 
64*ec779b8eSAndroid Build Coastguard Worker public:
65*ec779b8eSAndroid Build Coastguard Worker     /**
66*ec779b8eSAndroid Build Coastguard Worker      * Iterator for key
67*ec779b8eSAndroid Build Coastguard Worker      */
68*ec779b8eSAndroid Build Coastguard Worker     class KeyIterator {
69*ec779b8eSAndroid Build Coastguard Worker         friend class DrmInfoRequest;
70*ec779b8eSAndroid Build Coastguard Worker 
71*ec779b8eSAndroid Build Coastguard Worker     private:
KeyIterator(const DrmInfoRequest * drmInfoRequest)72*ec779b8eSAndroid Build Coastguard Worker         explicit KeyIterator(const DrmInfoRequest* drmInfoRequest)
73*ec779b8eSAndroid Build Coastguard Worker             : mDrmInfoRequest(const_cast <DrmInfoRequest*> (drmInfoRequest)), mIndex(0) {}
74*ec779b8eSAndroid Build Coastguard Worker 
75*ec779b8eSAndroid Build Coastguard Worker     public:
76*ec779b8eSAndroid Build Coastguard Worker         KeyIterator(const KeyIterator& keyIterator);
77*ec779b8eSAndroid Build Coastguard Worker         KeyIterator& operator=(const KeyIterator& keyIterator);
~KeyIterator()78*ec779b8eSAndroid Build Coastguard Worker         virtual ~KeyIterator() {}
79*ec779b8eSAndroid Build Coastguard Worker 
80*ec779b8eSAndroid Build Coastguard Worker     public:
81*ec779b8eSAndroid Build Coastguard Worker         bool hasNext();
82*ec779b8eSAndroid Build Coastguard Worker         const String8& next();
83*ec779b8eSAndroid Build Coastguard Worker 
84*ec779b8eSAndroid Build Coastguard Worker     private:
85*ec779b8eSAndroid Build Coastguard Worker         DrmInfoRequest* mDrmInfoRequest;
86*ec779b8eSAndroid Build Coastguard Worker         unsigned int mIndex;
87*ec779b8eSAndroid Build Coastguard Worker     };
88*ec779b8eSAndroid Build Coastguard Worker 
89*ec779b8eSAndroid Build Coastguard Worker     /**
90*ec779b8eSAndroid Build Coastguard Worker      * Iterator
91*ec779b8eSAndroid Build Coastguard Worker      */
92*ec779b8eSAndroid Build Coastguard Worker     class Iterator {
93*ec779b8eSAndroid Build Coastguard Worker         friend class DrmInfoRequest;
94*ec779b8eSAndroid Build Coastguard Worker 
95*ec779b8eSAndroid Build Coastguard Worker     private:
Iterator(const DrmInfoRequest * drmInfoRequest)96*ec779b8eSAndroid Build Coastguard Worker         explicit Iterator(const DrmInfoRequest* drmInfoRequest)
97*ec779b8eSAndroid Build Coastguard Worker             : mDrmInfoRequest(const_cast <DrmInfoRequest*> (drmInfoRequest)), mIndex(0) {}
98*ec779b8eSAndroid Build Coastguard Worker 
99*ec779b8eSAndroid Build Coastguard Worker     public:
100*ec779b8eSAndroid Build Coastguard Worker         Iterator(const Iterator& iterator);
101*ec779b8eSAndroid Build Coastguard Worker         Iterator& operator=(const Iterator& iterator);
~Iterator()102*ec779b8eSAndroid Build Coastguard Worker         virtual ~Iterator() {}
103*ec779b8eSAndroid Build Coastguard Worker 
104*ec779b8eSAndroid Build Coastguard Worker     public:
105*ec779b8eSAndroid Build Coastguard Worker         bool hasNext();
106*ec779b8eSAndroid Build Coastguard Worker         String8& next();
107*ec779b8eSAndroid Build Coastguard Worker 
108*ec779b8eSAndroid Build Coastguard Worker     private:
109*ec779b8eSAndroid Build Coastguard Worker         DrmInfoRequest* mDrmInfoRequest;
110*ec779b8eSAndroid Build Coastguard Worker         unsigned int mIndex;
111*ec779b8eSAndroid Build Coastguard Worker     };
112*ec779b8eSAndroid Build Coastguard Worker 
113*ec779b8eSAndroid Build Coastguard Worker public:
114*ec779b8eSAndroid Build Coastguard Worker     /**
115*ec779b8eSAndroid Build Coastguard Worker      * Returns information type associated with this instance
116*ec779b8eSAndroid Build Coastguard Worker      *
117*ec779b8eSAndroid Build Coastguard Worker      * @return Information type
118*ec779b8eSAndroid Build Coastguard Worker      */
119*ec779b8eSAndroid Build Coastguard Worker     int getInfoType(void) const;
120*ec779b8eSAndroid Build Coastguard Worker 
121*ec779b8eSAndroid Build Coastguard Worker     /**
122*ec779b8eSAndroid Build Coastguard Worker      * Returns MIME type associated with this instance
123*ec779b8eSAndroid Build Coastguard Worker      *
124*ec779b8eSAndroid Build Coastguard Worker      * @return MIME type
125*ec779b8eSAndroid Build Coastguard Worker      */
126*ec779b8eSAndroid Build Coastguard Worker     String8 getMimeType(void) const;
127*ec779b8eSAndroid Build Coastguard Worker 
128*ec779b8eSAndroid Build Coastguard Worker     /**
129*ec779b8eSAndroid Build Coastguard Worker      * Returns the number of entries in DrmRequestInfoMap
130*ec779b8eSAndroid Build Coastguard Worker      *
131*ec779b8eSAndroid Build Coastguard Worker      * @return Number of entries
132*ec779b8eSAndroid Build Coastguard Worker      */
133*ec779b8eSAndroid Build Coastguard Worker     int getCount(void) const;
134*ec779b8eSAndroid Build Coastguard Worker 
135*ec779b8eSAndroid Build Coastguard Worker     /**
136*ec779b8eSAndroid Build Coastguard Worker      * Adds optional information as <key, value> pair to this instance
137*ec779b8eSAndroid Build Coastguard Worker      *
138*ec779b8eSAndroid Build Coastguard Worker      * @param[in] key Key to add
139*ec779b8eSAndroid Build Coastguard Worker      * @param[in] value Value to add
140*ec779b8eSAndroid Build Coastguard Worker      * @return Returns the error code
141*ec779b8eSAndroid Build Coastguard Worker      */
142*ec779b8eSAndroid Build Coastguard Worker     status_t put(const String8& key, const String8& value);
143*ec779b8eSAndroid Build Coastguard Worker 
144*ec779b8eSAndroid Build Coastguard Worker     /**
145*ec779b8eSAndroid Build Coastguard Worker      * Retrieves the value of given key
146*ec779b8eSAndroid Build Coastguard Worker      *
147*ec779b8eSAndroid Build Coastguard Worker      * @param key Key whose value to be retrieved
148*ec779b8eSAndroid Build Coastguard Worker      * @return The value
149*ec779b8eSAndroid Build Coastguard Worker      */
150*ec779b8eSAndroid Build Coastguard Worker     String8 get(const String8& key) const;
151*ec779b8eSAndroid Build Coastguard Worker 
152*ec779b8eSAndroid Build Coastguard Worker     /**
153*ec779b8eSAndroid Build Coastguard Worker      * Returns KeyIterator object to walk through the keys associated with this instance
154*ec779b8eSAndroid Build Coastguard Worker      *
155*ec779b8eSAndroid Build Coastguard Worker      * @return KeyIterator object
156*ec779b8eSAndroid Build Coastguard Worker      */
157*ec779b8eSAndroid Build Coastguard Worker     KeyIterator keyIterator() const;
158*ec779b8eSAndroid Build Coastguard Worker 
159*ec779b8eSAndroid Build Coastguard Worker     /**
160*ec779b8eSAndroid Build Coastguard Worker      * Returns Iterator object to walk through the values associated with this instance
161*ec779b8eSAndroid Build Coastguard Worker      *
162*ec779b8eSAndroid Build Coastguard Worker      * @return Iterator object
163*ec779b8eSAndroid Build Coastguard Worker      */
164*ec779b8eSAndroid Build Coastguard Worker     Iterator iterator() const;
165*ec779b8eSAndroid Build Coastguard Worker 
166*ec779b8eSAndroid Build Coastguard Worker private:
167*ec779b8eSAndroid Build Coastguard Worker     int mInfoType;
168*ec779b8eSAndroid Build Coastguard Worker     String8 mMimeType;
169*ec779b8eSAndroid Build Coastguard Worker 
170*ec779b8eSAndroid Build Coastguard Worker     typedef KeyedVector<String8, String8> DrmRequestInfoMap;
171*ec779b8eSAndroid Build Coastguard Worker     DrmRequestInfoMap mRequestInformationMap;
172*ec779b8eSAndroid Build Coastguard Worker };
173*ec779b8eSAndroid Build Coastguard Worker 
174*ec779b8eSAndroid Build Coastguard Worker };
175*ec779b8eSAndroid Build Coastguard Worker 
176*ec779b8eSAndroid Build Coastguard Worker #endif /* __DRM_INFO_REQUEST_H__ */
177*ec779b8eSAndroid Build Coastguard Worker 
178