172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project/* 272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Copyright (C) 2008 Esmertec AG. 372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * you may not use this file except in compliance with the License. 772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * You may obtain a copy of the License at 872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 1072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 1172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * See the License for the specific language governing permissions and 1572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * limitations under the License. 1672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 1772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 1872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectpackage com.android.mms.drm; 1972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 20d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport android.drm.DrmManagerClient; 21d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport android.drm.DrmStore; 2272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.net.Uri; 2372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.util.Log; 2472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 25ab845dee6565a8dfc384186bc8f2e801a2b087e1Ye Wenimport com.android.mms.LogTag; 260ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylorimport com.android.mms.MmsApp; 2772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 2872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectpublic class DrmUtils { 29ab845dee6565a8dfc384186bc8f2e801a2b087e1Ye Wen private static final String TAG = LogTag.TAG; 300ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor 310ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor /** The MIME type of special DRM files */ 320ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor private static final String EXTENSION_ANDROID_FWDL = ".fl"; 3372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 3472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private DrmUtils() { 3572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 3672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 370ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor public static String getConvertExtension(String mimetype) { 380ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor return EXTENSION_ANDROID_FWDL; 390ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor } 400ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor 410ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor public static boolean isDrmType(String mimeType) { 420ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor boolean result = false; 430ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor DrmManagerClient drmManagerClient = MmsApp.getApplication().getDrmManagerClient(); 440ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor if (drmManagerClient != null) { 450ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor try { 460ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor if (drmManagerClient.canHandle("", mimeType)) { 470ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor result = true; 480ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor } 490ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor } catch (IllegalArgumentException ex) { 500ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor Log.w(TAG, "canHandle called with wrong parameters"); 510ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor } catch (IllegalStateException ex) { 520ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor Log.w(TAG, "DrmManagerClient didn't initialize properly"); 530ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor } 5453b5dd8f1ac1e8378af8487a0fe2ebc234bb6dd5Todor Kalaydjiev } 550ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor return result; 5672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 5772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 580ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor /** 590ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor * Check if content may be forwarded according to DRM 600ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor * 610ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor * @param uri Uri to content 620ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor * @return true if the content may be forwarded 630ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor */ 640ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor public static boolean haveRightsForAction(Uri uri, int action) { 650ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor DrmManagerClient drmManagerClient = MmsApp.getApplication().getDrmManagerClient(); 660ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor 6772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project try { 680ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor // first check if the URI is registered as DRM in DRM-framework 690ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor if (drmManagerClient.canHandle(uri.toString(), null)) { 700ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor int check = drmManagerClient.checkRightsStatus(uri.toString(), action); 710ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor return (check == DrmStore.RightsStatus.RIGHTS_VALID); 7272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 730ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor } catch (Exception e) { 740ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor // Ignore exception and assume it is OK to forward file. 7572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } finally { 7672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 770ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor return true; 7872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 7972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project} 80