/* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.drm; import java.io.File; import java.io.IOException; /** * An entity class that wraps the license information retrieved from the online DRM server. *

* A caller can instantiate a {@link DrmRights} object by first invoking the * {@link DrmManagerClient#processDrmInfo(DrmInfo)} method and then using the resulting * {@link ProcessedData} object to invoke the {@link DrmRights#DrmRights(ProcessedData, String)} * constructor. *

* A caller can also instantiate a {@link DrmRights} object by using the * {@link DrmRights#DrmRights(String, String)} constructor, which takes a path to a file * containing rights information instead of a ProcessedData. *

* Please note that the account id and subscription id is not mandatory by all DRM agents * or plugins. When account id or subscription id is not required by the specific DRM * agent or plugin, they can be either null, or an empty string, or any other don't-care * string value. * */ public class DrmRights { private byte[] mData; private String mMimeType; private String mAccountId; private String mSubscriptionId; /** * Creates a DrmRights object with the given parameters. * * @param rightsFilePath Path to the file containing rights information. * @param mimeType MIME type. Must not be null or an empty string. */ public DrmRights(String rightsFilePath, String mimeType) { File file = new File(rightsFilePath); instantiate(file, mimeType); } /** * Creates a DrmRights object with the given parameters. * * @param rightsFilePath Path to the file containing rights information. * @param mimeType MIME type. Must not be null or an empty string. * @param accountId Account ID of the user. */ public DrmRights(String rightsFilePath, String mimeType, String accountId) { this(rightsFilePath, mimeType); mAccountId = accountId; } /** * Creates a DrmRights object with the given parameters. * * @param rightsFilePath Path to the file containing rights information. * @param mimeType MIME type. Must not be null or an empty string. * @param accountId Account ID of the user. * @param subscriptionId Subscription ID of the user. */ public DrmRights( String rightsFilePath, String mimeType, String accountId, String subscriptionId) { this(rightsFilePath, mimeType); mAccountId = accountId; mSubscriptionId = subscriptionId; } /** * Creates a DrmRights object with the given parameters. * * @param rightsFile File containing rights information. * @param mimeType MIME type. Must not be null or an empty string. */ public DrmRights(File rightsFile, String mimeType) { instantiate(rightsFile, mimeType); } private void instantiate(File rightsFile, String mimeType) { try { mData = DrmUtils.readBytes(rightsFile); } catch (IOException e) { e.printStackTrace(); } mMimeType = mimeType; if (!isValid()) { final String msg = "mimeType: " + mMimeType + "," + "data: " + mData; throw new IllegalArgumentException(msg); } } /** * Creates a DrmRights object with the given parameters. * * @param data A {@link ProcessedData} object containing rights information. * Must not be null. * @param mimeType The MIME type. It must not be null or an empty string. */ public DrmRights(ProcessedData data, String mimeType) { if (data == null) { throw new IllegalArgumentException("data is null"); } mData = data.getData(); mAccountId = data.getAccountId(); mSubscriptionId = data.getSubscriptionId(); mMimeType = mimeType; if (!isValid()) { final String msg = "mimeType: " + mMimeType + "," + "data: " + mData; throw new IllegalArgumentException(msg); } } /** * Retrieves the rights data associated with this DrmRights object. * * @return A byte array representing the rights data. */ public byte[] getData() { return mData; } /** * Retrieves the MIME type associated with this DrmRights object. * * @return The MIME type. */ public String getMimeType() { return mMimeType; } /** * Retrieves the account ID associated with this DrmRights object. * * @return The account ID. */ public String getAccountId() { return mAccountId; } /** * Retrieves the subscription ID associated with this DrmRights object. * * @return The subscription ID. */ public String getSubscriptionId() { return mSubscriptionId; } /** * Determines whether this instance is valid or not. * * @return True if valid; false if invalid. */ /*package*/ boolean isValid() { return (null != mMimeType && !mMimeType.equals("") && null != mData && mData.length > 0); } }