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 19f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wangimport java.util.HashMap; 20f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang 21d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi/** 220e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * A base class that is used to send asynchronous event information from the DRM framework. 23d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 24d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 25d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshipublic class DrmEvent { 26e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong 27e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong // Please do not add type constants in this class. More event type constants 28e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong // should go to DrmInfoEvent or DrmErrorEvent classes. 29e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong 30dc549d60f98d809f626c99de614960409a847054Takeshi Aimi /** 310e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * All of the rights information associated with all DRM schemes have been successfully removed. 32dc549d60f98d809f626c99de614960409a847054Takeshi Aimi */ 33c7b3ccc564448cb4b918728421f9402bc18278c5Takeshi Aimi public static final int TYPE_ALL_RIGHTS_REMOVED = 1001; 34c7b3ccc564448cb4b918728421f9402bc18278c5Takeshi Aimi /** 350e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The given DRM information has been successfully processed. 36c7b3ccc564448cb4b918728421f9402bc18278c5Takeshi Aimi */ 37c7b3ccc564448cb4b918728421f9402bc18278c5Takeshi Aimi public static final int TYPE_DRM_INFO_PROCESSED = 1002; 380e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber /** 390e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The key that is used in the <code>attributes</code> HashMap to pass the return status. 400e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber */ 41dc549d60f98d809f626c99de614960409a847054Takeshi Aimi public static final String DRM_INFO_STATUS_OBJECT = "drm_info_status_object"; 420e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber /** 430e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The key that is used in the <code>attributes</code> HashMap to pass the 440e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * {@link DrmInfo} object. 450e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber */ 46f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang public static final String DRM_INFO_OBJECT = "drm_info_object"; 47dc549d60f98d809f626c99de614960409a847054Takeshi Aimi 48d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi private final int mUniqueId; 49d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi private final int mType; 50d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi private String mMessage = ""; 51d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 52f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang private HashMap<String, Object> mAttributes = new HashMap<String, Object>(); 53f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang 54f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang /** 550e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Creates a <code>DrmEvent</code> object with the specified parameters. 56f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang * 570e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * @param uniqueId Unique session identifier. 580e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * @param type Type of information. 590e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * @param message Message description. 600e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * @param attributes Attributes for extensible information. 61f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang */ 62f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang protected DrmEvent(int uniqueId, int type, String message, 63f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang HashMap<String, Object> attributes) { 64f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang mUniqueId = uniqueId; 65f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang mType = type; 66f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang 67f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang if (null != message) { 68f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang mMessage = message; 69f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang } 70f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang 71f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang if (null != attributes) { 72f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang mAttributes = attributes; 73f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang } 74f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang } 75f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang 76d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 770e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Creates a <code>DrmEvent</code> object with the specified parameters. 78d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 790e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * @param uniqueId Unique session identifier. 800e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * @param type Type of information. 810e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * @param message Message description. 82d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 83d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi protected DrmEvent(int uniqueId, int type, String message) { 84d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi mUniqueId = uniqueId; 85d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi mType = type; 86d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 87d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi if (null != message) { 88d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi mMessage = message; 89d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 90d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 91d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 92d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 930e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Retrieves the unique session identifier associated with this object. 94d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 950e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * @return The unique session identifier. 96d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 97d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public int getUniqueId() { 98d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return mUniqueId; 99d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 100d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 101d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 1020e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Retrieves the type of information that is associated with this object. 103d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 1040e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * @return The type of information. 105d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 106d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public int getType() { 107d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return mType; 108d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 109d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 110d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 1110e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Retrieves the message description associated with this object. 112d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 1130e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * @return The message description. 114d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 115d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public String getMessage() { 116d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return mMessage; 117d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 118f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang 119f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang /** 1200e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Retrieves the attribute associated with the specified key. 121f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang * 1220e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * @return One of the attributes or null if no mapping for 1230e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * the key is found. 124f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang */ 125f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang public Object getAttribute(String key) { 126f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang return mAttributes.get(key); 127f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang } 128d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi} 129