DrmInfoRequest.java revision 5c96c65f692f8c2297d213c88450dd601d2b5c1f
1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* 2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Copyright (C) 2010 The Android Open Source Project 3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Licensed under the Apache License, Version 2.0 (the "License"); 5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * you may not use this file except in compliance with the License. 6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * You may obtain a copy of the License at 7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * http://www.apache.org/licenses/LICENSE-2.0 9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Unless required by applicable law or agreed to in writing, software 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * distributed under the License is distributed on an "AS IS" BASIS, 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * See the License for the specific language governing permissions and 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * limitations under the License. 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgpackage android.drm; 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgimport java.util.HashMap; 20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgimport java.util.Iterator; 21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/** 23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * This is an entity class used to pass required parameters to get 24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * the necessary information to communicate with online DRM server 25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * An instance of this class is passed to {@link DrmManagerClient#acquireDrmInfo(DrmInfoRequest)} 27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * to get the instance of {@link DrmInfo} 28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgpublic class DrmInfoRequest { 31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org // Changes in following constants should be in sync with DrmInfoRequest.h 32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** 33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Constants defines the type of {@link DrmInfoRequest} 34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public static final int TYPE_REGISTRATION_INFO = 1; 36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public static final int TYPE_UNREGISTRATION_INFO = 2; 37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public static final int TYPE_RIGHTS_ACQUISITION_INFO = 3; 38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public static final int TYPE_RIGHTS_ACQUISITION_PROGRESS_INFO = 4; 39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** 41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Key to pass the unique id for the account or the user 42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public static final String ACCOUNT_ID = "account_id"; 44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** 46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Key to pass the unique id used for subscription 47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public static final String SUBSCRIPTION_ID = "subscription_id"; 49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org private final int mInfoType; 51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org private final String mMimeType; 52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org private final HashMap<String, Object> mRequestInformation = new HashMap<String, Object>(); 53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** 55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * constructor to create DrmInfoRequest object with type and mimetype 56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * @param infoType Type of information 58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * @param mimeType MIME type 59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public DrmInfoRequest(int infoType, String mimeType) { 61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org mInfoType = infoType; 62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org mMimeType = mimeType; 63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** 66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Returns the mimetype associated with this object 67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * @return MIME type 69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public String getMimeType() { 71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return mMimeType; 72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** 75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Returns Information type associated with this instance 76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * @return Information type 78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public int getInfoType() { 80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return mInfoType; 81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** 84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Adds optional information as <key, value> pair to this object. 85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * @param key Key to add 87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * @param value Value to add 88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public void put(String key, Object value) { 90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org mRequestInformation.put(key, value); 91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** 94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Retrieves the value of given key, if not found returns null 95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 96f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * @param key Key whose value to be retrieved 97f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * @return The value or null 98f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 99f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public Object get(String key) { 100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return mRequestInformation.get(key); 101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** 104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Returns Iterator object to walk through the keys associated with this instance 105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * @return Iterator object 107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public Iterator<String> keyIterator() { 109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return mRequestInformation.keySet().iterator(); 110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** 113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Returns Iterator object to walk through the values associated with this instance 114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * @return Iterator object 116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public Iterator<Object> iterator() { 118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return mRequestInformation.values().iterator(); 119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /** 122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Returns whether this instance is valid or not 123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * @return 125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * true if valid 126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * false if invalid 127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org boolean isValid() { 129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return (null != mMimeType && !mMimeType.equals("") 130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org && null != mRequestInformation && isValidType(mInfoType)); 131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* package */ static boolean isValidType(int infoType) { 134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org boolean isValid = false; 135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (infoType) { 137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case TYPE_REGISTRATION_INFO: 138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case TYPE_UNREGISTRATION_INFO: 139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case TYPE_RIGHTS_ACQUISITION_INFO: 140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case TYPE_RIGHTS_ACQUISITION_PROGRESS_INFO: 141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org isValid = true; 142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return isValid; 145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org