DrmInfoRequest.java revision 2980a213752d6e30edd4c689489cb4a2c3006252
1d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi/* 2d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * Copyright (C) 2010 The Android Open Source Project 3d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 4d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * Licensed under the Apache License, Version 2.0 (the "License"); 5d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * you may not use this file except in compliance with the License. 6d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * You may obtain a copy of the License at 7d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 8d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * http://www.apache.org/licenses/LICENSE-2.0 9d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 10d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * Unless required by applicable law or agreed to in writing, software 11d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * distributed under the License is distributed on an "AS IS" BASIS, 12d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * See the License for the specific language governing permissions and 14d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * limitations under the License. 15d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 16d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 17d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshipackage android.drm; 18d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 19d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshiimport java.util.HashMap; 20d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshiimport java.util.Iterator; 21d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 22d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi/** 230e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * An entity class that is used to pass information to an online DRM server. An instance of this 240e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * class is passed to the {@link DrmManagerClient#acquireDrmInfo acquireDrmInfo()} method to get an 250e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * instance of a {@link DrmInfo}. 26d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 27d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 28d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshipublic class DrmInfoRequest { 295c96c65f692f8c2297d213c88450dd601d2b5c1fGloria Wang // Changes in following constants should be in sync with DrmInfoRequest.h 30d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 310e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Acquires DRM server registration information. 32d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 33d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int TYPE_REGISTRATION_INFO = 1; 340e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber /** 352980a213752d6e30edd4c689489cb4a2c3006252Gloria Wang * Acquires information for unregistering the DRM server. 362980a213752d6e30edd4c689489cb4a2c3006252Gloria Wang */ 37d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int TYPE_UNREGISTRATION_INFO = 2; 380e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber /** 392980a213752d6e30edd4c689489cb4a2c3006252Gloria Wang * Acquires rights information. 402980a213752d6e30edd4c689489cb4a2c3006252Gloria Wang */ 41d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int TYPE_RIGHTS_ACQUISITION_INFO = 3; 420e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber /** 432980a213752d6e30edd4c689489cb4a2c3006252Gloria Wang * Acquires the progress of the rights acquisition. 442980a213752d6e30edd4c689489cb4a2c3006252Gloria Wang */ 45d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int TYPE_RIGHTS_ACQUISITION_PROGRESS_INFO = 4; 46d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 47d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 480e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Key that is used to pass the unique session ID for the account or the user. 49d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 50d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final String ACCOUNT_ID = "account_id"; 51d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 52d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 530e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Key that is used to pass the unique session ID for the subscription. 54d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 55d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final String SUBSCRIPTION_ID = "subscription_id"; 56d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 57d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi private final int mInfoType; 58d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi private final String mMimeType; 59d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi private final HashMap<String, Object> mRequestInformation = new HashMap<String, Object>(); 60d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 61d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 620e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Creates a <code>DrmInfoRequest</code> object with type and MIME type. 63d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 640e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * @param infoType Type of information. 650e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * @param mimeType MIME type. 66d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 67d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public DrmInfoRequest(int infoType, String mimeType) { 68d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi mInfoType = infoType; 69d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi mMimeType = mimeType; 70d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 71d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 72d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 730e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Retrieves the MIME type associated with this object. 74d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 750e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * @return The MIME type. 76d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 77d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public String getMimeType() { 78d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return mMimeType; 79d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 80d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 81d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 820e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Retrieves the information type associated with this object. 83d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 840e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * @return The information type. 85d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 86d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public int getInfoType() { 87d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return mInfoType; 88d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 89d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 90d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 910e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Adds optional information as key-value pairs to this object. 92d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 930e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * @param key The key to add. 940e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * @param value The value to add. 95d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 96d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public void put(String key, Object value) { 97d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi mRequestInformation.put(key, value); 98d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 99d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 100d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 1010e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Retrieves the value of a given key. 1020e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * 1030e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * @param key The key whose value is being retrieved. 104d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 1050e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * @return The value of the key that is being retrieved. Returns null if the key cannot be 1060e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * found. 107d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 108d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public Object get(String key) { 109d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return mRequestInformation.get(key); 110d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 111d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 112d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 1130e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Retrieves an iterator object that you can use to iterate over the keys associated with 1140e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * this <code>DrmInfoRequest</code> object. 115d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 1160e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * @return The iterator object. 117d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 118d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public Iterator<String> keyIterator() { 119d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return mRequestInformation.keySet().iterator(); 120d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 121d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 122d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 1230e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Retrieves an iterator object that you can use to iterate over the values associated with 1240e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * this <code>DrmInfoRequest</code> object. 125d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 1260e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * @return The iterator object. 127d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 128d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public Iterator<Object> iterator() { 129d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return mRequestInformation.values().iterator(); 130d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 131d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 132d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 133d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * Returns whether this instance is valid or not 134d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 135d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * @return 136d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * true if valid 137d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * false if invalid 138d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 139d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi boolean isValid() { 140d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return (null != mMimeType && !mMimeType.equals("") 141d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi && null != mRequestInformation && isValidType(mInfoType)); 142d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 143d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 144d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /* package */ static boolean isValidType(int infoType) { 145d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi boolean isValid = false; 146d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 147d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi switch (infoType) { 148d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi case TYPE_REGISTRATION_INFO: 149d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi case TYPE_UNREGISTRATION_INFO: 150d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi case TYPE_RIGHTS_ACQUISITION_INFO: 151d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi case TYPE_RIGHTS_ACQUISITION_PROGRESS_INFO: 152d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi isValid = true; 153d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi break; 154d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 155d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return isValid; 156d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 157d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi} 158d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 159