DrmManagerService.cpp revision 2272ee27d9022d173b6eab45c409b3c3f57f30ec
127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi/* 227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * Copyright (C) 2010 The Android Open Source Project 327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * 427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * Licensed under the Apache License, Version 2.0 (the "License"); 527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * you may not use this file except in compliance with the License. 627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * You may obtain a copy of the License at 727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * 827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * http://www.apache.org/licenses/LICENSE-2.0 927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * 1027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * Unless required by applicable law or agreed to in writing, software 1127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * distributed under the License is distributed on an "AS IS" BASIS, 1227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * See the License for the specific language governing permissions and 1427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * limitations under the License. 1527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi */ 1627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 172272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi//#define LOG_NDEBUG 0 1827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#define LOG_TAG "DrmManagerService(Native)" 1927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#include <utils/Log.h> 2027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 2127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#include <errno.h> 2227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#include <utils/threads.h> 2327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#include <binder/IServiceManager.h> 2427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#include <sys/stat.h> 2527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#include "DrmManagerService.h" 2627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#include "DrmManager.h" 2727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 2827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiusing namespace android; 2927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 3027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#define SUCCESS 0 3127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#define DRM_DIRECTORY_PERMISSION 0700 322272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi#define DRM_PLUGINS_ROOT "/data/drm/plugins" 332272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi#define DRM_PLUGINS_NATIVE "/data/drm/plugins/native" 342272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi#define DRM_PLUGINS_NATIVE_DATABASES "/data/drm/plugins/native/databases" 3527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 3627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshivoid DrmManagerService::instantiate() { 3727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("instantiate"); 3827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 392272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi int res = mkdir(DRM_PLUGINS_ROOT, DRM_DIRECTORY_PERMISSION); 402272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi if (SUCCESS == res || EEXIST == errno) { 412272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi res = mkdir(DRM_PLUGINS_NATIVE, DRM_DIRECTORY_PERMISSION); 422272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi if (SUCCESS == res || EEXIST == errno) { 432272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi res = mkdir(DRM_PLUGINS_NATIVE_DATABASES, DRM_DIRECTORY_PERMISSION); 442272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi if (SUCCESS == res || EEXIST == errno) { 452272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi defaultServiceManager() 462272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi ->addService(String16("drm.drmManager"), new DrmManagerService()); 472272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi } 482272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi } 4927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi } 5027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 5127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 5227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmManagerService::DrmManagerService() { 5327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("created"); 5427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi mDrmManager = NULL; 5527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi mDrmManager = new DrmManager(); 5627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 5727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 5827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmManagerService::~DrmManagerService() { 5927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Destroyed"); 6027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi delete mDrmManager; mDrmManager = NULL; 6127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 6227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 632272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimiint DrmManagerService::addUniqueId(int uniqueId) { 642272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi return mDrmManager->addUniqueId(uniqueId); 652272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi} 662272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi 672272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimivoid DrmManagerService::removeUniqueId(int uniqueId) { 682272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi mDrmManager->removeUniqueId(uniqueId); 692272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi} 702272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi 7127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshistatus_t DrmManagerService::loadPlugIns(int uniqueId) { 7227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering load plugins"); 7327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->loadPlugIns(uniqueId); 7427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 7527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 7627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshistatus_t DrmManagerService::loadPlugIns(int uniqueId, const String8& plugInDirPath) { 7727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering load plugins from path"); 7827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->loadPlugIns(uniqueId, plugInDirPath); 7927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 8027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 8127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshistatus_t DrmManagerService::setDrmServiceListener( 8227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int uniqueId, const sp<IDrmServiceListener>& drmServiceListener) { 8327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering setDrmServiceListener"); 8427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi mDrmManager->setDrmServiceListener(uniqueId, drmServiceListener); 8527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return DRM_NO_ERROR; 8627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 8727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 8827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshistatus_t DrmManagerService::unloadPlugIns(int uniqueId) { 8927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering unload plugins"); 9027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->unloadPlugIns(uniqueId); 9127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 9227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 9327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshistatus_t DrmManagerService::installDrmEngine(int uniqueId, const String8& drmEngineFile) { 9427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering installDrmEngine"); 9527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->installDrmEngine(uniqueId, drmEngineFile); 9627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 9727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 9827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmConstraints* DrmManagerService::getConstraints( 9927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int uniqueId, const String8* path, const int action) { 10027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering getConstraints from content"); 10127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->getConstraints(uniqueId, path, action); 10227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 10327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 10427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshibool DrmManagerService::canHandle(int uniqueId, const String8& path, const String8& mimeType) { 10527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering canHandle"); 10627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->canHandle(uniqueId, path, mimeType); 10727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 10827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 10927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmInfoStatus* DrmManagerService::processDrmInfo(int uniqueId, const DrmInfo* drmInfo) { 11027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering processDrmInfo"); 11127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->processDrmInfo(uniqueId, drmInfo); 11227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 11327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 11427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmInfo* DrmManagerService::acquireDrmInfo(int uniqueId, const DrmInfoRequest* drmInfoRequest) { 11527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering acquireDrmInfo"); 11627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->acquireDrmInfo(uniqueId, drmInfoRequest); 11727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 11827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 1192272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmManagerService::saveRights( 12027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int uniqueId, const DrmRights& drmRights, 12127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi const String8& rightsPath, const String8& contentPath) { 12227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering saveRights"); 12327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->saveRights(uniqueId, drmRights, rightsPath, contentPath); 12427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 12527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 12627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiString8 DrmManagerService::getOriginalMimeType(int uniqueId, const String8& path) { 12727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering getOriginalMimeType"); 12827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->getOriginalMimeType(uniqueId, path); 12927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 13027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 13127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiint DrmManagerService::getDrmObjectType( 13227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int uniqueId, const String8& path, const String8& mimeType) { 13327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering getDrmObjectType"); 13427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->getDrmObjectType(uniqueId, path, mimeType); 13527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 13627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 13727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiint DrmManagerService::checkRightsStatus( 13827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int uniqueId, const String8& path, int action) { 13927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering checkRightsStatus"); 14027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->checkRightsStatus(uniqueId, path, action); 14127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 14227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 1432272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmManagerService::consumeRights( 14427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int uniqueId, DecryptHandle* decryptHandle, int action, bool reserve) { 14527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering consumeRights"); 1462272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi return mDrmManager->consumeRights(uniqueId, decryptHandle, action, reserve); 14727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 14827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 1492272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmManagerService::setPlaybackStatus( 15027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int uniqueId, DecryptHandle* decryptHandle, int playbackStatus, int position) { 15127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering setPlaybackStatus"); 1522272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi return mDrmManager->setPlaybackStatus(uniqueId, decryptHandle, playbackStatus, position); 15327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 15427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 15527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshibool DrmManagerService::validateAction( 15627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int uniqueId, const String8& path, 15727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int action, const ActionDescription& description) { 15827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering validateAction"); 15927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->validateAction(uniqueId, path, action, description); 16027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 16127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 1622272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmManagerService::removeRights(int uniqueId, const String8& path) { 16327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering removeRights"); 1642272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi return mDrmManager->removeRights(uniqueId, path); 16527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 16627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 1672272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmManagerService::removeAllRights(int uniqueId) { 16827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering removeAllRights"); 1692272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi return mDrmManager->removeAllRights(uniqueId); 17027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 17127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 17227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiint DrmManagerService::openConvertSession(int uniqueId, const String8& mimeType) { 17327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering openConvertSession"); 17427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->openConvertSession(uniqueId, mimeType); 17527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 17627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 17727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmConvertedStatus* DrmManagerService::convertData( 17827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int uniqueId, int convertId, const DrmBuffer* inputData) { 17927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering convertData"); 18027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->convertData(uniqueId, convertId, inputData); 18127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 18227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 18327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmConvertedStatus* DrmManagerService::closeConvertSession(int uniqueId, int convertId) { 18427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering closeConvertSession"); 18527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->closeConvertSession(uniqueId, convertId); 18627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 18727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 18827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshistatus_t DrmManagerService::getAllSupportInfo( 18927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int uniqueId, int* length, DrmSupportInfo** drmSupportInfoArray) { 19027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering getAllSupportInfo"); 19127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->getAllSupportInfo(uniqueId, length, drmSupportInfoArray); 19227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 19327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 19427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDecryptHandle* DrmManagerService::openDecryptSession( 19527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int uniqueId, int fd, int offset, int length) { 19627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering DrmManagerService::openDecryptSession"); 19727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->openDecryptSession(uniqueId, fd, offset, length); 19827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 19927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 2002272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmManagerService::closeDecryptSession(int uniqueId, DecryptHandle* decryptHandle) { 20127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering closeDecryptSession"); 2022272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi return mDrmManager->closeDecryptSession(uniqueId, decryptHandle); 20327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 20427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 2052272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmManagerService::initializeDecryptUnit(int uniqueId, DecryptHandle* decryptHandle, 20627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int decryptUnitId, const DrmBuffer* headerInfo) { 20727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering initializeDecryptUnit"); 2082272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi return mDrmManager->initializeDecryptUnit(uniqueId,decryptHandle, decryptUnitId, headerInfo); 20927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 21027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 21127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshistatus_t DrmManagerService::decrypt( 2122272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId, 2132272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi const DrmBuffer* encBuffer, DrmBuffer** decBuffer, DrmBuffer* IV) { 21427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering decrypt"); 2152272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi return mDrmManager->decrypt(uniqueId, decryptHandle, decryptUnitId, encBuffer, decBuffer, IV); 21627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 21727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 2182272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmManagerService::finalizeDecryptUnit( 21927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId) { 22027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering finalizeDecryptUnit"); 2212272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi return mDrmManager->finalizeDecryptUnit(uniqueId, decryptHandle, decryptUnitId); 22227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 22327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 22427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshissize_t DrmManagerService::pread(int uniqueId, DecryptHandle* decryptHandle, 22527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi void* buffer, ssize_t numBytes, off_t offset) { 22627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering pread"); 22727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->pread(uniqueId, decryptHandle, buffer, numBytes, offset); 22827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 22927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 230