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 19d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi/** 2052cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong * An entity class that wraps the result of communication between a device 2152cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong * and an online DRM server. Specifically, when the 2252cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong * {@link DrmManagerClient#processDrmInfo DrmManagerClient.processDrmInfo()} 2352cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong * method is called, an instance of <code>DrmInfoStatus</code> is returned. 240e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber *<p> 2552cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong * This class contains the {@link ProcessedData} object, which can be used 2652cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong * to instantiate a {@link DrmRights} object during license acquisition. 27d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 28d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 29d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshipublic class DrmInfoStatus { 3052cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong // The following status code constants must be in sync with DrmInfoStatus.cpp 3152cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong // Please update isValidStatusCode() if more status codes are added. 3252cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong /** 3352cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong * Indicate successful communication. 3452cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong */ 35d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int STATUS_OK = 1; 3652cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong 3752cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong /** 3852cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong * Indicate failed communication. 3952cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong */ 40d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int STATUS_ERROR = 2; 41d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 420e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber /** 4352cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong * The status of the communication. Must be one of the defined status 4452cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong * constants above. 452980a213752d6e30edd4c689489cb4a2c3006252Gloria Wang */ 46d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public final int statusCode; 470e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber /** 4852cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong * The type of DRM information processed. Must be one of the valid type 4952cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong * constants defined in {@link DrmInfoRequest}. 502980a213752d6e30edd4c689489cb4a2c3006252Gloria Wang */ 51c7b3ccc564448cb4b918728421f9402bc18278c5Takeshi Aimi public final int infoType; 520e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber /** 5352cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong * The MIME type of the content. Must not be null or an empty string. 542980a213752d6e30edd4c689489cb4a2c3006252Gloria Wang */ 55d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public final String mimeType; 560e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber /** 5752cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong * The processed data. It is optional and thus could be null. When it 5852cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong * is null, it indicates that a particular call to 5952cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong * {@link DrmManagerClient#processDrmInfo DrmManagerClient.processDrmInfo()} 6052cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong * does not return any additional useful information except for the status code. 612980a213752d6e30edd4c689489cb4a2c3006252Gloria Wang */ 62d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public final ProcessedData data; 63d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 64d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 650e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Creates a <code>DrmInfoStatus</code> object with the specified parameters. 66d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 6752cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong * @param statusCode The status of the communication. Must be one of the defined 6852cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong * status constants above. 6952cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong * @param infoType The type of the DRM information processed. Must be a valid 7052cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong * type for {@link DrmInfoRequest}. 7152cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong * @param data The processed data. 7252cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong * @param mimeType The MIME type. 73d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 7452cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong public DrmInfoStatus(int statusCode, int infoType, ProcessedData data, String mimeType) { 7552cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong if (!DrmInfoRequest.isValidType(infoType)) { 7652cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong throw new IllegalArgumentException("infoType: " + infoType); 776c95d4ff1656007ab5cbf0a6406d80a33bf8b109James Dong } 786c95d4ff1656007ab5cbf0a6406d80a33bf8b109James Dong 7952cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong if (!isValidStatusCode(statusCode)) { 8052cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong throw new IllegalArgumentException("Unsupported status code: " + statusCode); 8152cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong } 8252cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong 8352cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong if (mimeType == null || mimeType == "") { 8452cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong throw new IllegalArgumentException("mimeType is null or an empty string"); 8552cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong } 8652cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong 8752cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong this.statusCode = statusCode; 8852cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong this.infoType = infoType; 8952cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong this.data = data; 9052cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong this.mimeType = mimeType; 9152cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong } 9252cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong 9352cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong private boolean isValidStatusCode(int statusCode) { 9452cb1e5988a8a97c668b935fb5d8d358cb3c635aJames Dong return statusCode == STATUS_OK || statusCode == STATUS_ERROR; 95d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 96d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi} 97d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 98