diff options
Diffstat (limited to 'drm/drmserver/DrmManagerService.cpp')
-rw-r--r-- | drm/drmserver/DrmManagerService.cpp | 308 |
1 files changed, 0 insertions, 308 deletions
diff --git a/drm/drmserver/DrmManagerService.cpp b/drm/drmserver/DrmManagerService.cpp deleted file mode 100644 index 8ba0203..0000000 --- a/drm/drmserver/DrmManagerService.cpp +++ /dev/null @@ -1,308 +0,0 @@ -/* - * 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. - */ - -//#define LOG_NDEBUG 0 -#define LOG_TAG "DrmManagerService(Native)" -#include <utils/Log.h> - -#include <private/android_filesystem_config.h> -#include <media/MemoryLeakTrackUtil.h> - -#include <errno.h> -#include <utils/threads.h> -#include <binder/IServiceManager.h> -#include <binder/IPCThreadState.h> -#include <sys/stat.h> -#include "DrmManagerService.h" -#include "DrmManager.h" - -using namespace android; - -static Vector<uid_t> trustedUids; - -static bool isProtectedCallAllowed() { - // TODO - // Following implementation is just for reference. - // Each OEM manufacturer should implement/replace with their own solutions. - bool result = false; - - IPCThreadState* ipcState = IPCThreadState::self(); - uid_t uid = ipcState->getCallingUid(); - - for (unsigned int i = 0; i < trustedUids.size(); ++i) { - if (trustedUids[i] == uid) { - result = true; - break; - } - } - return result; -} - -void DrmManagerService::instantiate() { - ALOGV("instantiate"); - defaultServiceManager()->addService(String16("drm.drmManager"), new DrmManagerService()); - - if (0 >= trustedUids.size()) { - // TODO - // Following implementation is just for reference. - // Each OEM manufacturer should implement/replace with their own solutions. - - // Add trusted uids here - trustedUids.push(AID_MEDIA); - } -} - -DrmManagerService::DrmManagerService() : - mDrmManager(NULL) { - ALOGV("created"); - mDrmManager = new DrmManager(); - mDrmManager->loadPlugIns(); -} - -DrmManagerService::~DrmManagerService() { - ALOGV("Destroyed"); - mDrmManager->unloadPlugIns(); - delete mDrmManager; mDrmManager = NULL; -} - -int DrmManagerService::addUniqueId(bool isNative) { - return mDrmManager->addUniqueId(isNative); -} - -void DrmManagerService::removeUniqueId(int uniqueId) { - mDrmManager->removeUniqueId(uniqueId); -} - -void DrmManagerService::addClient(int uniqueId) { - mDrmManager->addClient(uniqueId); -} - -void DrmManagerService::removeClient(int uniqueId) { - mDrmManager->removeClient(uniqueId); -} - -status_t DrmManagerService::setDrmServiceListener( - int uniqueId, const sp<IDrmServiceListener>& drmServiceListener) { - ALOGV("Entering setDrmServiceListener"); - mDrmManager->setDrmServiceListener(uniqueId, drmServiceListener); - return DRM_NO_ERROR; -} - -status_t DrmManagerService::installDrmEngine(int uniqueId, const String8& drmEngineFile) { - ALOGV("Entering installDrmEngine"); - return mDrmManager->installDrmEngine(uniqueId, drmEngineFile); -} - -DrmConstraints* DrmManagerService::getConstraints( - int uniqueId, const String8* path, const int action) { - ALOGV("Entering getConstraints from content"); - return mDrmManager->getConstraints(uniqueId, path, action); -} - -DrmMetadata* DrmManagerService::getMetadata(int uniqueId, const String8* path) { - ALOGV("Entering getMetadata from content"); - return mDrmManager->getMetadata(uniqueId, path); -} - -bool DrmManagerService::canHandle(int uniqueId, const String8& path, const String8& mimeType) { - ALOGV("Entering canHandle"); - return mDrmManager->canHandle(uniqueId, path, mimeType); -} - -DrmInfoStatus* DrmManagerService::processDrmInfo(int uniqueId, const DrmInfo* drmInfo) { - ALOGV("Entering processDrmInfo"); - return mDrmManager->processDrmInfo(uniqueId, drmInfo); -} - -DrmInfo* DrmManagerService::acquireDrmInfo(int uniqueId, const DrmInfoRequest* drmInfoRequest) { - ALOGV("Entering acquireDrmInfo"); - return mDrmManager->acquireDrmInfo(uniqueId, drmInfoRequest); -} - -status_t DrmManagerService::saveRights( - int uniqueId, const DrmRights& drmRights, - const String8& rightsPath, const String8& contentPath) { - ALOGV("Entering saveRights"); - return mDrmManager->saveRights(uniqueId, drmRights, rightsPath, contentPath); -} - -String8 DrmManagerService::getOriginalMimeType(int uniqueId, const String8& path) { - ALOGV("Entering getOriginalMimeType"); - return mDrmManager->getOriginalMimeType(uniqueId, path); -} - -int DrmManagerService::getDrmObjectType( - int uniqueId, const String8& path, const String8& mimeType) { - ALOGV("Entering getDrmObjectType"); - return mDrmManager->getDrmObjectType(uniqueId, path, mimeType); -} - -int DrmManagerService::checkRightsStatus( - int uniqueId, const String8& path, int action) { - ALOGV("Entering checkRightsStatus"); - return mDrmManager->checkRightsStatus(uniqueId, path, action); -} - -status_t DrmManagerService::consumeRights( - int uniqueId, DecryptHandle* decryptHandle, int action, bool reserve) { - ALOGV("Entering consumeRights"); - if (!isProtectedCallAllowed()) { - return DRM_ERROR_NO_PERMISSION; - } - return mDrmManager->consumeRights(uniqueId, decryptHandle, action, reserve); -} - -status_t DrmManagerService::setPlaybackStatus( - int uniqueId, DecryptHandle* decryptHandle, int playbackStatus, int64_t position) { - ALOGV("Entering setPlaybackStatus"); - if (!isProtectedCallAllowed()) { - return DRM_ERROR_NO_PERMISSION; - } - return mDrmManager->setPlaybackStatus(uniqueId, decryptHandle, playbackStatus, position); -} - -bool DrmManagerService::validateAction( - int uniqueId, const String8& path, - int action, const ActionDescription& description) { - ALOGV("Entering validateAction"); - return mDrmManager->validateAction(uniqueId, path, action, description); -} - -status_t DrmManagerService::removeRights(int uniqueId, const String8& path) { - ALOGV("Entering removeRights"); - return mDrmManager->removeRights(uniqueId, path); -} - -status_t DrmManagerService::removeAllRights(int uniqueId) { - ALOGV("Entering removeAllRights"); - return mDrmManager->removeAllRights(uniqueId); -} - -int DrmManagerService::openConvertSession(int uniqueId, const String8& mimeType) { - ALOGV("Entering openConvertSession"); - return mDrmManager->openConvertSession(uniqueId, mimeType); -} - -DrmConvertedStatus* DrmManagerService::convertData( - int uniqueId, int convertId, const DrmBuffer* inputData) { - ALOGV("Entering convertData"); - return mDrmManager->convertData(uniqueId, convertId, inputData); -} - -DrmConvertedStatus* DrmManagerService::closeConvertSession(int uniqueId, int convertId) { - ALOGV("Entering closeConvertSession"); - return mDrmManager->closeConvertSession(uniqueId, convertId); -} - -status_t DrmManagerService::getAllSupportInfo( - int uniqueId, int* length, DrmSupportInfo** drmSupportInfoArray) { - ALOGV("Entering getAllSupportInfo"); - return mDrmManager->getAllSupportInfo(uniqueId, length, drmSupportInfoArray); -} - -DecryptHandle* DrmManagerService::openDecryptSession( - int uniqueId, int fd, off64_t offset, off64_t length, const char* mime) { - ALOGV("Entering DrmManagerService::openDecryptSession"); - if (isProtectedCallAllowed()) { - return mDrmManager->openDecryptSession(uniqueId, fd, offset, length, mime); - } - - return NULL; -} - -DecryptHandle* DrmManagerService::openDecryptSession( - int uniqueId, const char* uri, const char* mime) { - ALOGV("Entering DrmManagerService::openDecryptSession with uri"); - if (isProtectedCallAllowed()) { - return mDrmManager->openDecryptSession(uniqueId, uri, mime); - } - - return NULL; -} - -status_t DrmManagerService::closeDecryptSession(int uniqueId, DecryptHandle* decryptHandle) { - ALOGV("Entering closeDecryptSession"); - if (!isProtectedCallAllowed()) { - return DRM_ERROR_NO_PERMISSION; - } - return mDrmManager->closeDecryptSession(uniqueId, decryptHandle); -} - -status_t DrmManagerService::initializeDecryptUnit(int uniqueId, DecryptHandle* decryptHandle, - int decryptUnitId, const DrmBuffer* headerInfo) { - ALOGV("Entering initializeDecryptUnit"); - if (!isProtectedCallAllowed()) { - return DRM_ERROR_NO_PERMISSION; - } - return mDrmManager->initializeDecryptUnit(uniqueId,decryptHandle, decryptUnitId, headerInfo); -} - -status_t DrmManagerService::decrypt( - int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId, - const DrmBuffer* encBuffer, DrmBuffer** decBuffer, DrmBuffer* IV) { - ALOGV("Entering decrypt"); - if (!isProtectedCallAllowed()) { - return DRM_ERROR_NO_PERMISSION; - } - return mDrmManager->decrypt(uniqueId, decryptHandle, decryptUnitId, encBuffer, decBuffer, IV); -} - -status_t DrmManagerService::finalizeDecryptUnit( - int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId) { - ALOGV("Entering finalizeDecryptUnit"); - if (!isProtectedCallAllowed()) { - return DRM_ERROR_NO_PERMISSION; - } - return mDrmManager->finalizeDecryptUnit(uniqueId, decryptHandle, decryptUnitId); -} - -ssize_t DrmManagerService::pread(int uniqueId, DecryptHandle* decryptHandle, - void* buffer, ssize_t numBytes, off64_t offset) { - ALOGV("Entering pread"); - if (!isProtectedCallAllowed()) { - return DRM_ERROR_NO_PERMISSION; - } - return mDrmManager->pread(uniqueId, decryptHandle, buffer, numBytes, offset); -} - -status_t DrmManagerService::dump(int fd, const Vector<String16>& args) -{ - const size_t SIZE = 256; - char buffer[SIZE]; - String8 result; - if (checkCallingPermission(String16("android.permission.DUMP")) == false) { - snprintf(buffer, SIZE, "Permission Denial: " - "can't dump DrmManagerService from pid=%d, uid=%d\n", - IPCThreadState::self()->getCallingPid(), - IPCThreadState::self()->getCallingUid()); - result.append(buffer); - } else { -#if DRM_MEMORY_LEAK_TRACK - bool dumpMem = false; - for (size_t i = 0; i < args.size(); i++) { - if (args[i] == String16("-m")) { - dumpMem = true; - } - } - if (dumpMem) { - dumpMemoryAddresses(fd); - } -#endif - } - write(fd, result.string(), result.size()); - return NO_ERROR; -} - |