diff options
Diffstat (limited to 'drm')
-rw-r--r-- | drm/common/DrmSupportInfo.cpp | 4 | ||||
-rw-r--r-- | drm/drmserver/Android.mk | 4 | ||||
-rw-r--r-- | drm/drmserver/DrmManager.cpp | 4 | ||||
-rw-r--r-- | drm/drmserver/DrmManagerService.cpp | 29 | ||||
-rw-r--r-- | drm/drmserver/StringTokenizer.cpp | 66 | ||||
-rw-r--r-- | drm/libdrmframework/Android.mk | 2 | ||||
-rw-r--r-- | drm/libdrmframework/DrmManagerClient.cpp | 5 | ||||
-rw-r--r-- | drm/libdrmframework/include/DrmManager.h | 1 | ||||
-rw-r--r-- | drm/libdrmframework/include/DrmManagerService.h | 2 | ||||
-rw-r--r-- | drm/libdrmframework/include/PlugInManager.h | 8 | ||||
-rw-r--r-- | drm/libdrmframework/include/StringTokenizer.h | 87 | ||||
-rw-r--r-- | drm/libdrmframework/plugins/forward-lock/FwdLockEngine/Android.mk | 2 | ||||
-rw-r--r-- | drm/libdrmframework/plugins/passthru/Android.mk | 2 |
13 files changed, 44 insertions, 172 deletions
diff --git a/drm/common/DrmSupportInfo.cpp b/drm/common/DrmSupportInfo.cpp index 3e02093..c0bff0e 100644 --- a/drm/common/DrmSupportInfo.cpp +++ b/drm/common/DrmSupportInfo.cpp @@ -45,7 +45,7 @@ bool DrmSupportInfo::isSupportedMimeType(const String8& mimeType) const { for (unsigned int i = 0; i < mMimeTypeVector.size(); i++) { const String8 item = mMimeTypeVector.itemAt(i); - if (String8("") != mimeType && item.find(mimeType) != -1) { + if (!strcasecmp(item.string(), mimeType.string())) { return true; } } @@ -56,7 +56,7 @@ bool DrmSupportInfo::isSupportedFileSuffix(const String8& fileType) const { for (unsigned int i = 0; i < mFileSuffixVector.size(); i++) { const String8 item = mFileSuffixVector.itemAt(i); - if (item.find(fileType) != -1) { + if (!strcasecmp(item.string(), fileType.string())) { return true; } } diff --git a/drm/drmserver/Android.mk b/drm/drmserver/Android.mk index 5df2ff8..e3cd44f 100644 --- a/drm/drmserver/Android.mk +++ b/drm/drmserver/Android.mk @@ -19,10 +19,10 @@ include $(CLEAR_VARS) LOCAL_SRC_FILES:= \ main_drmserver.cpp \ DrmManager.cpp \ - DrmManagerService.cpp \ - StringTokenizer.cpp + DrmManagerService.cpp LOCAL_SHARED_LIBRARIES := \ + libmedia \ libutils \ libbinder diff --git a/drm/drmserver/DrmManager.cpp b/drm/drmserver/DrmManager.cpp index f44c06d..2fee59c 100644 --- a/drm/drmserver/DrmManager.cpp +++ b/drm/drmserver/DrmManager.cpp @@ -118,7 +118,7 @@ status_t DrmManager::unloadPlugIns() { status_t DrmManager::setDrmServiceListener( int uniqueId, const sp<IDrmServiceListener>& drmServiceListener) { - Mutex::Autolock _l(mLock); + Mutex::Autolock _l(mListenerLock); if (NULL != drmServiceListener.get()) { mServiceListeners.add(uniqueId, drmServiceListener); } else { @@ -572,7 +572,7 @@ String8 DrmManager::getSupportedPlugInIdFromPath(int uniqueId, const String8& pa } void DrmManager::onInfo(const DrmInfoEvent& event) { - Mutex::Autolock _l(mLock); + Mutex::Autolock _l(mListenerLock); for (unsigned int index = 0; index < mServiceListeners.size(); index++) { int uniqueId = mServiceListeners.keyAt(index); diff --git a/drm/drmserver/DrmManagerService.cpp b/drm/drmserver/DrmManagerService.cpp index 0901a44..583669e 100644 --- a/drm/drmserver/DrmManagerService.cpp +++ b/drm/drmserver/DrmManagerService.cpp @@ -19,6 +19,7 @@ #include <utils/Log.h> #include <private/android_filesystem_config.h> +#include <media/MemoryLeakTrackUtil.h> #include <errno.h> #include <utils/threads.h> @@ -256,3 +257,31 @@ ssize_t DrmManagerService::pread(int uniqueId, DecryptHandle* decryptHandle, 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; +} + diff --git a/drm/drmserver/StringTokenizer.cpp b/drm/drmserver/StringTokenizer.cpp deleted file mode 100644 index 2130a00..0000000 --- a/drm/drmserver/StringTokenizer.cpp +++ /dev/null @@ -1,66 +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. - */ - -#include "StringTokenizer.h" - -using namespace android; - -StringTokenizer::StringTokenizer(const String8& string, const String8& delimiter) { - splitString(string, delimiter); -} - -void StringTokenizer::splitString(const String8& string, const String8& delimiter) { - for (unsigned int i = 0; i < string.length(); i++) { - unsigned int position = string.find(delimiter.string(), i); - if (string.length() != position) { - String8 token(string.string()+i, position-i); - if (token.length()) { - mStringTokenizerVector.push(token); - i = position + delimiter.length() - 1; - } - } else { - mStringTokenizerVector.push(String8(string.string()+i, string.length()-i)); - break; - } - } -} - -StringTokenizer::Iterator StringTokenizer::iterator() { - return Iterator(this); -} - -StringTokenizer::Iterator::Iterator(const StringTokenizer::Iterator& iterator) : - mStringTokenizer(iterator.mStringTokenizer), - mIndex(iterator.mIndex) { -} - -StringTokenizer::Iterator& StringTokenizer::Iterator::operator=( - const StringTokenizer::Iterator& iterator) { - mStringTokenizer = iterator.mStringTokenizer; - mIndex = iterator.mIndex; - return *this; -} - -bool StringTokenizer::Iterator::hasNext() { - return mIndex < mStringTokenizer->mStringTokenizerVector.size(); -} - -String8& StringTokenizer::Iterator::next() { - String8& value = mStringTokenizer->mStringTokenizerVector.editItemAt(mIndex); - mIndex++; - return value; -} - diff --git a/drm/libdrmframework/Android.mk b/drm/libdrmframework/Android.mk index 99133ba..f1526a4 100644 --- a/drm/libdrmframework/Android.mk +++ b/drm/libdrmframework/Android.mk @@ -40,7 +40,7 @@ LOCAL_C_INCLUDES += \ $(TOP)/frameworks/base/drm/libdrmframework/include \ $(TOP)/frameworks/base/include -LOCAL_PRELINK_MODULE := false + LOCAL_MODULE_TAGS := optional diff --git a/drm/libdrmframework/DrmManagerClient.cpp b/drm/libdrmframework/DrmManagerClient.cpp index 3143d45..8b78132 100644 --- a/drm/libdrmframework/DrmManagerClient.cpp +++ b/drm/libdrmframework/DrmManagerClient.cpp @@ -79,7 +79,6 @@ int DrmManagerClient::checkRightsStatus(const String8& path, int action) { status_t DrmManagerClient::consumeRights( sp<DecryptHandle> &decryptHandle, int action, bool reserve) { - Mutex::Autolock _l(mDecryptLock); return mDrmManagerClientImpl->consumeRights(mUniqueId, decryptHandle, action, reserve); } @@ -132,7 +131,6 @@ status_t DrmManagerClient::closeDecryptSession(sp<DecryptHandle> &decryptHandle) status_t DrmManagerClient::initializeDecryptUnit( sp<DecryptHandle> &decryptHandle, int decryptUnitId, const DrmBuffer* headerInfo) { - Mutex::Autolock _l(mDecryptLock); return mDrmManagerClientImpl->initializeDecryptUnit( mUniqueId, decryptHandle, decryptUnitId, headerInfo); } @@ -140,21 +138,18 @@ status_t DrmManagerClient::initializeDecryptUnit( status_t DrmManagerClient::decrypt( sp<DecryptHandle> &decryptHandle, int decryptUnitId, const DrmBuffer* encBuffer, DrmBuffer** decBuffer, DrmBuffer* IV) { - Mutex::Autolock _l(mDecryptLock); return mDrmManagerClientImpl->decrypt( mUniqueId, decryptHandle, decryptUnitId, encBuffer, decBuffer, IV); } status_t DrmManagerClient::finalizeDecryptUnit( sp<DecryptHandle> &decryptHandle, int decryptUnitId) { - Mutex::Autolock _l(mDecryptLock); return mDrmManagerClientImpl->finalizeDecryptUnit(mUniqueId, decryptHandle, decryptUnitId); } ssize_t DrmManagerClient::pread( sp<DecryptHandle> &decryptHandle, void* buffer, ssize_t numBytes, off64_t offset) { - Mutex::Autolock _l(mDecryptLock); return mDrmManagerClientImpl->pread(mUniqueId, decryptHandle, buffer, numBytes, offset); } diff --git a/drm/libdrmframework/include/DrmManager.h b/drm/libdrmframework/include/DrmManager.h index 86a5ff4..af2c2a8 100644 --- a/drm/libdrmframework/include/DrmManager.h +++ b/drm/libdrmframework/include/DrmManager.h @@ -146,6 +146,7 @@ private: int mDecryptSessionId; int mConvertId; Mutex mLock; + Mutex mListenerLock; Mutex mDecryptLock; Mutex mConvertLock; TPlugInManager<IDrmEngine> mPlugInManager; diff --git a/drm/libdrmframework/include/DrmManagerService.h b/drm/libdrmframework/include/DrmManagerService.h index d0a0db7..227496a 100644 --- a/drm/libdrmframework/include/DrmManagerService.h +++ b/drm/libdrmframework/include/DrmManagerService.h @@ -115,6 +115,8 @@ public: ssize_t pread(int uniqueId, DecryptHandle* decryptHandle, void* buffer, ssize_t numBytes, off64_t offset); + virtual status_t dump(int fd, const Vector<String16>& args); + private: DrmManager* mDrmManager; }; diff --git a/drm/libdrmframework/include/PlugInManager.h b/drm/libdrmframework/include/PlugInManager.h index 9ad195f..8029138 100644 --- a/drm/libdrmframework/include/PlugInManager.h +++ b/drm/libdrmframework/include/PlugInManager.h @@ -230,11 +230,9 @@ private: */ bool isPlugIn(const struct dirent* pEntry) const { String8 sName(pEntry->d_name); - int extentionPos = sName.size() - String8(PLUGIN_EXTENSION).size(); - if (extentionPos < 0) { - return false; - } - return extentionPos == (int)sName.find(PLUGIN_EXTENSION); + String8 extension(sName.getPathExtension()); + // Note that the plug-in extension must exactly match case + return extension == String8(PLUGIN_EXTENSION); } /** diff --git a/drm/libdrmframework/include/StringTokenizer.h b/drm/libdrmframework/include/StringTokenizer.h deleted file mode 100644 index 70e7558..0000000 --- a/drm/libdrmframework/include/StringTokenizer.h +++ /dev/null @@ -1,87 +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. - */ - -#ifndef __STRING_TOKENIZER_H__ -#define __STRING_TOKENIZER_H__ - -#include <drm/drm_framework_common.h> - -namespace android { - -/** - * This is an utility class for String manipulation. - * - */ -class StringTokenizer { -public: - /** - * Iterator for string tokens - */ - class Iterator { - friend class StringTokenizer; - private: - Iterator(StringTokenizer* StringTokenizer) - : mStringTokenizer(StringTokenizer), mIndex(0) {} - - public: - Iterator(const Iterator& iterator); - Iterator& operator=(const Iterator& iterator); - virtual ~Iterator() {} - - public: - bool hasNext(); - String8& next(); - - private: - StringTokenizer* mStringTokenizer; - unsigned int mIndex; - }; - -public: - /** - * Constructor for StringTokenizer - * - * @param[in] string Complete string data - * @param[in] delimeter Delimeter used to split the string - */ - StringTokenizer(const String8& string, const String8& delimeter); - - /** - * Destructor for StringTokenizer - */ - ~StringTokenizer() {} - -private: - /** - * Splits the string according to the delimeter - */ - void splitString(const String8& string, const String8& delimeter); - -public: - /** - * Returns Iterator object to walk through the split string values - * - * @return Iterator object - */ - Iterator iterator(); - -private: - Vector<String8> mStringTokenizerVector; -}; - -}; -#endif /* __STRING_TOKENIZER_H__ */ - diff --git a/drm/libdrmframework/plugins/forward-lock/FwdLockEngine/Android.mk b/drm/libdrmframework/plugins/forward-lock/FwdLockEngine/Android.mk index af67aa3..9805a40 100644 --- a/drm/libdrmframework/plugins/forward-lock/FwdLockEngine/Android.mk +++ b/drm/libdrmframework/plugins/forward-lock/FwdLockEngine/Android.mk @@ -47,7 +47,7 @@ LOCAL_STATIC_LIBRARIES := \ libfwdlock-converter \ libfwdlock-decoder -LOCAL_PRELINK_MODULE := false + LOCAL_C_INCLUDES += \ $(JNI_H_INCLUDE) \ diff --git a/drm/libdrmframework/plugins/passthru/Android.mk b/drm/libdrmframework/plugins/passthru/Android.mk index 7856d37..be18b64 100644 --- a/drm/libdrmframework/plugins/passthru/Android.mk +++ b/drm/libdrmframework/plugins/passthru/Android.mk @@ -32,7 +32,7 @@ else LOCAL_SHARED_LIBRARIES += libdl endif -LOCAL_PRELINK_MODULE := false + LOCAL_C_INCLUDES += \ $(TOP)/frameworks/base/drm/libdrmframework/include \ |