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