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