DrmInfoRequest.java revision 5c96c65f692f8c2297d213c88450dd601d2b5c1f
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/** 23d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * This is an entity class used to pass required parameters to get 24d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * the necessary information to communicate with online DRM server 25d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 26d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * An instance of this class is passed to {@link DrmManagerClient#acquireDrmInfo(DrmInfoRequest)} 27d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * to get the instance of {@link DrmInfo} 28d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 29d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 30d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshipublic class DrmInfoRequest { 315c96c65f692f8c2297d213c88450dd601d2b5c1fGloria Wang // Changes in following constants should be in sync with DrmInfoRequest.h 32d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 33d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * Constants defines the type of {@link DrmInfoRequest} 34d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 35d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int TYPE_REGISTRATION_INFO = 1; 36d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int TYPE_UNREGISTRATION_INFO = 2; 37d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int TYPE_RIGHTS_ACQUISITION_INFO = 3; 38d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int TYPE_RIGHTS_ACQUISITION_PROGRESS_INFO = 4; 39d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 40d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 41d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * Key to pass the unique id for the account or the user 42d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 43d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final String ACCOUNT_ID = "account_id"; 44d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 45d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 46d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * Key to pass the unique id used for subscription 47d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 48d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final String SUBSCRIPTION_ID = "subscription_id"; 49d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 50d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi private final int mInfoType; 51d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi private final String mMimeType; 52d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi private final HashMap<String, Object> mRequestInformation = new HashMap<String, Object>(); 53d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 54d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 55d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * constructor to create DrmInfoRequest object with type and mimetype 56d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 57d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * @param infoType Type of information 58d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * @param mimeType MIME type 59d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 60d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public DrmInfoRequest(int infoType, String mimeType) { 61d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi mInfoType = infoType; 62d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi mMimeType = mimeType; 63d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 64d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 65d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 66d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * Returns the mimetype associated with this object 67d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 68d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * @return MIME type 69d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 70d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public String getMimeType() { 71d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return mMimeType; 72d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 73d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 74d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 75d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * Returns Information type associated with this instance 76d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 77d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * @return Information type 78d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 79d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public int getInfoType() { 80d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return mInfoType; 81d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 82d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 83d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 84d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * Adds optional information as <key, value> pair to this object. 85d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 86d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * @param key Key to add 87d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * @param value Value to add 88d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 89d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public void put(String key, Object value) { 90d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi mRequestInformation.put(key, value); 91d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 92d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 93d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 94d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * Retrieves the value of given key, if not found returns null 95d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 96d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * @param key Key whose value to be retrieved 97d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * @return The value or null 98d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 99d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public Object get(String key) { 100d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return mRequestInformation.get(key); 101d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 102d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 103d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 104d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * Returns Iterator object to walk through the keys associated with this instance 105d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 106d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * @return Iterator object 107d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 108d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public Iterator<String> keyIterator() { 109d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return mRequestInformation.keySet().iterator(); 110d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 111d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 112d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 113d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * Returns Iterator object to walk through the values associated with this instance 114d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 115d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * @return Iterator object 116d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 117d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public Iterator<Object> iterator() { 118d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return mRequestInformation.values().iterator(); 119d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 120d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 121d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 122d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * Returns whether this instance is valid or not 123d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 124d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * @return 125d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * true if valid 126d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * false if invalid 127d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 128d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi boolean isValid() { 129d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return (null != mMimeType && !mMimeType.equals("") 130d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi && null != mRequestInformation && isValidType(mInfoType)); 131d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 132d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 133d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /* package */ static boolean isValidType(int infoType) { 134d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi boolean isValid = false; 135d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 136d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi switch (infoType) { 137d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi case TYPE_REGISTRATION_INFO: 138d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi case TYPE_UNREGISTRATION_INFO: 139d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi case TYPE_RIGHTS_ACQUISITION_INFO: 140d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi case TYPE_RIGHTS_ACQUISITION_PROGRESS_INFO: 141d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi isValid = true; 142d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi break; 143d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 144d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return isValid; 145d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 146d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi} 147d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 148