DrmInfoRequest.java revision 2980a213752d6e30edd4c689489cb4a2c3006252
1923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project/* 2443c360d0afdbab091994244f045f4756feaf2b4Jean-Baptiste Queru * Copyright (C) 2010 The Android Open Source Project 30fd625bcfdfac1c10e7bd7f9088bf425fec08989Jean Chalard * 4923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project * you may not use this file except in compliance with the License. 6923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project * You may obtain a copy of the License at 70fd625bcfdfac1c10e7bd7f9088bf425fec08989Jean Chalard * 8923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 90fd625bcfdfac1c10e7bd7f9088bf425fec08989Jean Chalard * 10923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project * See the License for the specific language governing permissions and 14923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project * limitations under the License. 15923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project */ 16923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project 17923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Projectpackage android.drm; 18923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project 196b1f500da451de56932a8b2a99c63857994ece85Jean Chalardimport java.util.HashMap; 20887f11ee43ad621aa6ad93d535ab7f48dec73fc7Tadashi G. Takaokaimport java.util.Iterator; 213708787fe91227083d2a1874fa41493d3bc9fe10Tadashi G. Takaoka 22ca7ec2097ca6af1505c1e6aa8b81b6068ba46daesatok/** 23887f11ee43ad621aa6ad93d535ab7f48dec73fc7Tadashi G. Takaoka * An entity class that is used to pass information to an online DRM server. An instance of this 24c83359f9746ca6f0269a1a7017b585c1a5cab9b8Jean Chalard * class is passed to the {@link DrmManagerClient#acquireDrmInfo acquireDrmInfo()} method to get an 25923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project * instance of a {@link DrmInfo}. 26923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project * 27923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project */ 28923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Projectpublic class DrmInfoRequest { 29923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project // Changes in following constants should be in sync with DrmInfoRequest.h 308fbd55229243cb66c03d5ea1f79dfb39f596590dsatok /** 31887f11ee43ad621aa6ad93d535ab7f48dec73fc7Tadashi G. Takaoka * Acquires DRM server registration information. 328fbd55229243cb66c03d5ea1f79dfb39f596590dsatok */ 33887f11ee43ad621aa6ad93d535ab7f48dec73fc7Tadashi G. Takaoka public static final int TYPE_REGISTRATION_INFO = 1; 3401ab7c8b59a7f12862fbd95fb252e56719f1757fsatok /** 358fbd55229243cb66c03d5ea1f79dfb39f596590dsatok * Acquires information for unregistering the DRM server. 3601ab7c8b59a7f12862fbd95fb252e56719f1757fsatok */ 37be79227dc99421ff7be62224c51c553b3fa73777Jean Chalard public static final int TYPE_UNREGISTRATION_INFO = 2; 38be79227dc99421ff7be62224c51c553b3fa73777Jean Chalard /** 39be79227dc99421ff7be62224c51c553b3fa73777Jean Chalard * Acquires rights information. 40be79227dc99421ff7be62224c51c553b3fa73777Jean Chalard */ 414a7ff90d513f8b6cbf39688c08be0828a57e311bAmith Yamasani public static final int TYPE_RIGHTS_ACQUISITION_INFO = 3; 42be79227dc99421ff7be62224c51c553b3fa73777Jean Chalard /** 434a7ff90d513f8b6cbf39688c08be0828a57e311bAmith Yamasani * Acquires the progress of the rights acquisition. 441c551251106e506c70fad7ba0cb8b1e2a7dff3a9Amith Yamasani */ 45117fc18ed46496c81596f8207bba30a09c7317d1Jean Chalard public static final int TYPE_RIGHTS_ACQUISITION_PROGRESS_INFO = 4; 4601ab7c8b59a7f12862fbd95fb252e56719f1757fsatok 47c83359f9746ca6f0269a1a7017b585c1a5cab9b8Jean Chalard /** 48923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project * Key that is used to pass the unique session ID for the account or the user. 490b4ae1f578e768eec4ada90aeb81d11acb10eb2eKen Wakasa */ 50923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project public static final String ACCOUNT_ID = "account_id"; 510b4ae1f578e768eec4ada90aeb81d11acb10eb2eKen Wakasa 52923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project /** 53979f8690967ff5409fe18f5085858ccdb8e0ccf1satok * Key that is used to pass the unique session ID for the subscription. 5401ab7c8b59a7f12862fbd95fb252e56719f1757fsatok */ 55be79227dc99421ff7be62224c51c553b3fa73777Jean Chalard public static final String SUBSCRIPTION_ID = "subscription_id"; 56be79227dc99421ff7be62224c51c553b3fa73777Jean Chalard 57be79227dc99421ff7be62224c51c553b3fa73777Jean Chalard private final int mInfoType; 58be79227dc99421ff7be62224c51c553b3fa73777Jean Chalard private final String mMimeType; 59117fc18ed46496c81596f8207bba30a09c7317d1Jean Chalard private final HashMap<String, Object> mRequestInformation = new HashMap<String, Object>(); 6001ab7c8b59a7f12862fbd95fb252e56719f1757fsatok 61923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project /** 62923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project * Creates a <code>DrmInfoRequest</code> object with type and MIME type. 63f733074aaecdfd6e89cfee2daff8a9c1233b60f1satok * 649fbfd5877305ed19a20663630b498b6b3fdae942satok * @param infoType Type of information. 659fbfd5877305ed19a20663630b498b6b3fdae942satok * @param mimeType MIME type. 669fbfd5877305ed19a20663630b498b6b3fdae942satok */ 679fbfd5877305ed19a20663630b498b6b3fdae942satok public DrmInfoRequest(int infoType, String mimeType) { 6801ab7c8b59a7f12862fbd95fb252e56719f1757fsatok mInfoType = infoType; 69be79227dc99421ff7be62224c51c553b3fa73777Jean Chalard mMimeType = mimeType; 70be79227dc99421ff7be62224c51c553b3fa73777Jean Chalard } 71be79227dc99421ff7be62224c51c553b3fa73777Jean Chalard 72ea843f2a2404f4bc04fda494e475520162cfca27Tadashi G. Takaoka /** 73ea843f2a2404f4bc04fda494e475520162cfca27Tadashi G. Takaoka * Retrieves the MIME type associated with this object. 74ea843f2a2404f4bc04fda494e475520162cfca27Tadashi G. Takaoka * 75117fc18ed46496c81596f8207bba30a09c7317d1Jean Chalard * @return The MIME type. 7601ab7c8b59a7f12862fbd95fb252e56719f1757fsatok */ 77979f8690967ff5409fe18f5085858ccdb8e0ccf1satok public String getMimeType() { 78979f8690967ff5409fe18f5085858ccdb8e0ccf1satok return mMimeType; 79923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project } 80923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project 81923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project /** 82923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project * Retrieves the information type associated with this object. 83be79227dc99421ff7be62224c51c553b3fa73777Jean Chalard * 84be79227dc99421ff7be62224c51c553b3fa73777Jean Chalard * @return The information type. 854a7ff90d513f8b6cbf39688c08be0828a57e311bAmith Yamasani */ 86ea843f2a2404f4bc04fda494e475520162cfca27Tadashi G. Takaoka public int getInfoType() { 87117fc18ed46496c81596f8207bba30a09c7317d1Jean Chalard return mInfoType; 8801ab7c8b59a7f12862fbd95fb252e56719f1757fsatok } 8901ab7c8b59a7f12862fbd95fb252e56719f1757fsatok 9001ab7c8b59a7f12862fbd95fb252e56719f1757fsatok /** 9101ab7c8b59a7f12862fbd95fb252e56719f1757fsatok * Adds optional information as key-value pairs to this object. 9201ab7c8b59a7f12862fbd95fb252e56719f1757fsatok * 93923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project * @param key The key to add. 94923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project * @param value The value to add. 95923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project */ 96923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project public void put(String key, Object value) { 97923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project mRequestInformation.put(key, value); 98923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project } 99ea843f2a2404f4bc04fda494e475520162cfca27Tadashi G. Takaoka 10001ab7c8b59a7f12862fbd95fb252e56719f1757fsatok /** 101923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project * Retrieves the value of a given key. 102923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project * 103196d82cdd740580ed79d801483dbc282be85d076Jean Chalard * @param key The key whose value is being retrieved. 10401ab7c8b59a7f12862fbd95fb252e56719f1757fsatok * 105196d82cdd740580ed79d801483dbc282be85d076Jean Chalard * @return The value of the key that is being retrieved. Returns null if the key cannot be 106196d82cdd740580ed79d801483dbc282be85d076Jean Chalard * found. 1079611b281e18ac71d825ff5bc771a111423772cb3satok */ 10801ab7c8b59a7f12862fbd95fb252e56719f1757fsatok public Object get(String key) { 1099611b281e18ac71d825ff5bc771a111423772cb3satok return mRequestInformation.get(key); 1109611b281e18ac71d825ff5bc771a111423772cb3satok } 1119611b281e18ac71d825ff5bc771a111423772cb3satok 11201ab7c8b59a7f12862fbd95fb252e56719f1757fsatok /** 113923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project * Retrieves an iterator object that you can use to iterate over the keys associated with 114923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project * this <code>DrmInfoRequest</code> object. 1158fbd55229243cb66c03d5ea1f79dfb39f596590dsatok * 116be79227dc99421ff7be62224c51c553b3fa73777Jean Chalard * @return The iterator object. 1178fbd55229243cb66c03d5ea1f79dfb39f596590dsatok */ 1188fbd55229243cb66c03d5ea1f79dfb39f596590dsatok public Iterator<String> keyIterator() { 1198fbd55229243cb66c03d5ea1f79dfb39f596590dsatok return mRequestInformation.keySet().iterator(); 120be79227dc99421ff7be62224c51c553b3fa73777Jean Chalard } 1218fbd55229243cb66c03d5ea1f79dfb39f596590dsatok 1228fbd55229243cb66c03d5ea1f79dfb39f596590dsatok /** 123ea843f2a2404f4bc04fda494e475520162cfca27Tadashi G. Takaoka * Retrieves an iterator object that you can use to iterate over the values associated with 124ea843f2a2404f4bc04fda494e475520162cfca27Tadashi G. Takaoka * this <code>DrmInfoRequest</code> object. 125436a645ea837d36f7e0f81948d343fa6e166f33aTadashi G. Takaoka * 126ea843f2a2404f4bc04fda494e475520162cfca27Tadashi G. Takaoka * @return The iterator object. 127ea843f2a2404f4bc04fda494e475520162cfca27Tadashi G. Takaoka */ 128ca7ec2097ca6af1505c1e6aa8b81b6068ba46daesatok public Iterator<Object> iterator() { 129691f1c174b660f3bcfe1823d16e55990b4c829dasatok return mRequestInformation.values().iterator(); 130691f1c174b660f3bcfe1823d16e55990b4c829dasatok } 131691f1c174b660f3bcfe1823d16e55990b4c829dasatok 132081616cd2f472295449268cecb570771b969cba3Jean Chalard /** 133081616cd2f472295449268cecb570771b969cba3Jean Chalard * Returns whether this instance is valid or not 134691f1c174b660f3bcfe1823d16e55990b4c829dasatok * 135691f1c174b660f3bcfe1823d16e55990b4c829dasatok * @return 136691f1c174b660f3bcfe1823d16e55990b4c829dasatok * true if valid 137691f1c174b660f3bcfe1823d16e55990b4c829dasatok * false if invalid 138691f1c174b660f3bcfe1823d16e55990b4c829dasatok */ 139ca7ec2097ca6af1505c1e6aa8b81b6068ba46daesatok boolean isValid() { 140691f1c174b660f3bcfe1823d16e55990b4c829dasatok return (null != mMimeType && !mMimeType.equals("") 141853d9020edb058e39c46a6af1215dfcfeb865ad8satok && null != mRequestInformation && isValidType(mInfoType)); 142ca7ec2097ca6af1505c1e6aa8b81b6068ba46daesatok } 1436ba8de2a608dfe4865b0b59a753f2d2abbedeeffsatok 144ca7ec2097ca6af1505c1e6aa8b81b6068ba46daesatok /* package */ static boolean isValidType(int infoType) { 145ca7ec2097ca6af1505c1e6aa8b81b6068ba46daesatok boolean isValid = false; 146923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project 147923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project switch (infoType) { 148923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project case TYPE_REGISTRATION_INFO: 149923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project case TYPE_UNREGISTRATION_INFO: 150923bf41f853a544fd0d71fbf7dc90359ec35981The Android Open Source Project case TYPE_RIGHTS_ACQUISITION_INFO: 1516ba8de2a608dfe4865b0b59a753f2d2abbedeeffsatok case TYPE_RIGHTS_ACQUISITION_PROGRESS_INFO: 15201ab7c8b59a7f12862fbd95fb252e56719f1757fsatok isValid = true; 1539159b9953d857de83ae2f90a121fcd259f5ee01dJean Chalard break; 15401ab7c8b59a7f12862fbd95fb252e56719f1757fsatok } 155ea843f2a2404f4bc04fda494e475520162cfca27Tadashi G. Takaoka return isValid; 15667094f5bdece00994f70c6f1fa9a6ff7b8f3c3c1satok } 15767094f5bdece00994f70c6f1fa9a6ff7b8f3c3c1satok} 158ca7ec2097ca6af1505c1e6aa8b81b6068ba46daesatok 159ca7ec2097ca6af1505c1e6aa8b81b6068ba46daesatok