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 * An entity class that is passed to the 230e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * {@link DrmManagerClient.OnInfoListener#onInfo onInfo()} callback. 24d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 25d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 26d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshipublic class DrmInfoEvent extends DrmEvent { 27e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong 28e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong // Please add newly defined type constants to the end of the list, 29e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong // and modify checkTypeValidity() accordingly. 30e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong 31d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 320e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The registration has already been done by another account ID. 33d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 34dc549d60f98d809f626c99de614960409a847054Takeshi Aimi public static final int TYPE_ALREADY_REGISTERED_BY_ANOTHER_ACCOUNT = 1; 35d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 360e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The rights need to be removed completely. 37d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 38dc549d60f98d809f626c99de614960409a847054Takeshi Aimi public static final int TYPE_REMOVE_RIGHTS = 2; 39d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 400e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The rights have been successfully downloaded and installed. 41d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 42dc549d60f98d809f626c99de614960409a847054Takeshi Aimi public static final int TYPE_RIGHTS_INSTALLED = 3; 43d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 440e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The rights object is being delivered to the device. You must wait before 450e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * calling {@link DrmManagerClient#acquireRights acquireRights()} again. 46d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 47dc549d60f98d809f626c99de614960409a847054Takeshi Aimi public static final int TYPE_WAIT_FOR_RIGHTS = 4; 48d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 490e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The registration has already been done for the given account. 50d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 51dc549d60f98d809f626c99de614960409a847054Takeshi Aimi public static final int TYPE_ACCOUNT_ALREADY_REGISTERED = 5; 5227b277779c89251f2aafcc7a56db95d264900c9dGloria Wang /** 530e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The rights have been removed. 5427b277779c89251f2aafcc7a56db95d264900c9dGloria Wang */ 5527b277779c89251f2aafcc7a56db95d264900c9dGloria Wang public static final int TYPE_RIGHTS_REMOVED = 6; 56d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 57e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong // Add more type constants here... 58e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong 59e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong // FIXME: 60e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong // We may want to add a user-defined type constant, such as 61e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong // TYPE_VENDOR_SPECIFIC, to take care vendor specific use 62e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong // cases. 63e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong 64d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 650e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Creates a <code>DrmInfoEvent</code> object with the specified parameters. 66d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 670e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * @param uniqueId Unique session identifier. 68e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong * @param type Type of the event. Must be any of the event types defined above, 69e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong * or the constants defined in {@link DrmEvent}. 70e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong * @param message Message description. It can be null. 71d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 72d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public DrmInfoEvent(int uniqueId, int type, String message) { 73d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi super(uniqueId, type, message); 74e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong checkTypeValidity(type); 75d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 76f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang 77f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang /** 780e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Creates a <code>DrmInfoEvent</code> object with the specified parameters. 79f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang * 800e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * @param uniqueId Unique session identifier. 81e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong * @param type Type of the event. Must be any of the event types defined above, 82e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong * or the constants defined in {@link DrmEvent} 83e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong * @param message Message description. It can be null. 84f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang * @param attributes Attributes for extensible information. Could be any 850e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * information provided by the plug-in. 86f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang */ 87f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang public DrmInfoEvent(int uniqueId, int type, String message, 88f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang HashMap<String, Object> attributes) { 89f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang super(uniqueId, type, message, attributes); 90e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong checkTypeValidity(type); 91e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong } 92e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong 93e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong /* 94e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong * Check the validity of the given type. 95e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong * To overcome a design flaw, we need also accept the type constants 96e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong * defined in super class, DrmEvent. 97e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong */ 98e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong private void checkTypeValidity(int type) { 99e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong if (type < TYPE_ALREADY_REGISTERED_BY_ANOTHER_ACCOUNT || 100e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong type > TYPE_RIGHTS_REMOVED) { 101e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong 102e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong if (type != TYPE_ALL_RIGHTS_REMOVED && 103e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong type != TYPE_DRM_INFO_PROCESSED) { 104e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong final String msg = "Unsupported type: " + type; 105e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong throw new IllegalArgumentException(msg); 106e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong } 107e82f055e3eb1b0b3daf87bc14258fa65568b4f8aJames Dong } 108f8bf3c46f524b1252bf466a351daaef61afdcecbGloria Wang } 109d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi} 110d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 111