Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2272ee27 authored by Takeshi Aimi's avatar Takeshi Aimi
Browse files

Update of DRM framework.

  - Change "void" type of return value to "int" for returning status.
  - Add some of overloaded Java APIs which accept database Uri as input.
  - Add asynchronous APIs
  - Add OnEventListener and OnErrorListener for asynchronous APIs
  - Disable debug log
  - Change decrypt() API to accept an optional buffer needed by some of DRM schemes

Changes are incorporated by Sony Corporation.

Change-Id: I414a165e22cc79be6ea7cd28041788aa2b6b8f7c
parent 0335b70c
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -75,12 +75,10 @@ DrmConstraints::KeyIterator DrmConstraints::keyIterator() {
DrmConstraints::KeyIterator::KeyIterator(const DrmConstraints::KeyIterator& keyIterator)
    : mDrmConstraints(keyIterator.mDrmConstraints),
      mIndex(keyIterator.mIndex) {
    LOGV("DrmConstraints::KeyIterator::KeyIterator");
}

DrmConstraints::KeyIterator& DrmConstraints::KeyIterator::operator=(
    const DrmConstraints::KeyIterator& keyIterator) {
    LOGV("DrmConstraints::KeyIterator::operator=");
    mDrmConstraints = keyIterator.mDrmConstraints;
    mIndex = keyIterator.mIndex;
    return *this;
@@ -94,12 +92,10 @@ DrmConstraints::Iterator DrmConstraints::iterator() {
DrmConstraints::Iterator::Iterator(const DrmConstraints::Iterator& iterator) :
    mDrmConstraints(iterator.mDrmConstraints),
    mIndex(iterator.mIndex) {
    LOGV("DrmConstraints::Iterator::Iterator");
}

DrmConstraints::Iterator& DrmConstraints::Iterator::operator=(
    const DrmConstraints::Iterator& iterator) {
    LOGV("DrmConstraints::Iterator::operator=");
    mDrmConstraints = iterator.mDrmConstraints;
    mIndex = iterator.mIndex;
    return *this;
+19 −19
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@ DrmInfoStatus* DrmEngineBase::processDrmInfo(int uniqueId, const DrmInfo* drmInf
    return onProcessDrmInfo(uniqueId, drmInfo);
}

void DrmEngineBase::saveRights(
status_t DrmEngineBase::saveRights(
            int uniqueId, const DrmRights& drmRights,
            const String8& rightsPath, const String8& contentPath) {
    return onSaveRights(uniqueId, drmRights, rightsPath, contentPath);
@@ -74,14 +74,14 @@ int DrmEngineBase::checkRightsStatus(int uniqueId, const String8& path, int acti
    return onCheckRightsStatus(uniqueId, path, action);
}

void DrmEngineBase::consumeRights(
status_t DrmEngineBase::consumeRights(
    int uniqueId, DecryptHandle* decryptHandle, int action, bool reserve) {
    onConsumeRights(uniqueId, decryptHandle, action, reserve);
    return onConsumeRights(uniqueId, decryptHandle, action, reserve);
}

void DrmEngineBase::setPlaybackStatus(
status_t DrmEngineBase::setPlaybackStatus(
    int uniqueId, DecryptHandle* decryptHandle, int playbackStatus, int position) {
    onSetPlaybackStatus(uniqueId, decryptHandle, playbackStatus, position);
    return onSetPlaybackStatus(uniqueId, decryptHandle, playbackStatus, position);
}

bool DrmEngineBase::validateAction(
@@ -90,16 +90,16 @@ bool DrmEngineBase::validateAction(
    return onValidateAction(uniqueId, path, action, description);
}

void DrmEngineBase::removeRights(int uniqueId, const String8& path) {
    onRemoveRights(uniqueId, path);
status_t DrmEngineBase::removeRights(int uniqueId, const String8& path) {
    return onRemoveRights(uniqueId, path);
}

void DrmEngineBase::removeAllRights(int uniqueId) {
    onRemoveAllRights(uniqueId);
status_t DrmEngineBase::removeAllRights(int uniqueId) {
    return onRemoveAllRights(uniqueId);
}

void DrmEngineBase::openConvertSession(int uniqueId, int convertId) {
    onOpenConvertSession(uniqueId, convertId);
status_t DrmEngineBase::openConvertSession(int uniqueId, int convertId) {
    return onOpenConvertSession(uniqueId, convertId);
}

DrmConvertedStatus* DrmEngineBase::convertData(
@@ -120,24 +120,24 @@ status_t DrmEngineBase::openDecryptSession(
    return onOpenDecryptSession(uniqueId, decryptHandle, fd, offset, length);
}

void DrmEngineBase::closeDecryptSession(int uniqueId, DecryptHandle* decryptHandle) {
    onCloseDecryptSession(uniqueId, decryptHandle);
status_t DrmEngineBase::closeDecryptSession(int uniqueId, DecryptHandle* decryptHandle) {
    return onCloseDecryptSession(uniqueId, decryptHandle);
}

void DrmEngineBase::initializeDecryptUnit(
status_t DrmEngineBase::initializeDecryptUnit(
    int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId, const DrmBuffer* headerInfo) {
    onInitializeDecryptUnit(uniqueId, decryptHandle, decryptUnitId, headerInfo);
    return onInitializeDecryptUnit(uniqueId, decryptHandle, decryptUnitId, headerInfo);
}

status_t DrmEngineBase::decrypt(
    int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId,
    const DrmBuffer* encBuffer, DrmBuffer** decBuffer) {
    return onDecrypt(uniqueId, decryptHandle, decryptUnitId, encBuffer, decBuffer);
    const DrmBuffer* encBuffer, DrmBuffer** decBuffer, DrmBuffer* IV) {
    return onDecrypt(uniqueId, decryptHandle, decryptUnitId, encBuffer, decBuffer, IV);
}

void DrmEngineBase::finalizeDecryptUnit(
status_t DrmEngineBase::finalizeDecryptUnit(
    int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId) {
    onFinalizeDecryptUnit(uniqueId, decryptHandle, decryptUnitId);
    return onFinalizeDecryptUnit(uniqueId, decryptHandle, decryptUnitId);
}

ssize_t DrmEngineBase::pread(
+0 −4
Original line number Diff line number Diff line
@@ -14,10 +14,6 @@
 * limitations under the License.
 */

#define LOG_NDEBUG 0
#define LOG_TAG "DrmInfoEvent"
#include "utils/Log.h"

#include <utils/String8.h>
#include <drm/DrmInfoEvent.h>

+17 −5
Original line number Diff line number Diff line
@@ -15,14 +15,21 @@
 */

#include <drm/DrmRights.h>
#include <ReadWriteUtils.h>

using namespace android;

DrmRights::DrmRights(const String8& rightsFilePath, const String8& mimeType,
            const String8& accountId, const String8& subscriptionId) {
    /**
     * TODO Read DrmRights from rights file
     */
            const String8& accountId, const String8& subscriptionId) :
    mMimeType(mimeType),
    mAccountId(accountId),
    mSubscriptionId(subscriptionId),
    mRightsFromFile(NULL) {
    int rightsLength = 0;
    if (String8("") != rightsFilePath) {
        rightsLength = ReadWriteUtils::readBytes(rightsFilePath, &mRightsFromFile);
    }
    mData = DrmBuffer(mRightsFromFile, rightsLength);
}

DrmRights::DrmRights(const DrmBuffer& rightsData, const String8& mimeType,
@@ -30,7 +37,12 @@ DrmRights::DrmRights(const DrmBuffer& rightsData, const String8& mimeType,
    mData(rightsData),
    mMimeType(mimeType),
    mAccountId(accountId),
    mSubscriptionId(subscriptionId) {
    mSubscriptionId(subscriptionId),
    mRightsFromFile(NULL) {
}

DrmRights::~DrmRights() {
    delete[] mRightsFromFile; mRightsFromFile = NULL;
}

const DrmBuffer& DrmRights::getData(void) const {
+2 −2
Original line number Diff line number Diff line
@@ -42,7 +42,7 @@ bool DrmSupportInfo::operator==(const DrmSupportInfo& drmSupportInfo) const {
}

bool DrmSupportInfo::isSupportedMimeType(const String8& mimeType) const {
    for (int i = 0; i < mMimeTypeVector.size(); i++) {
    for (unsigned int i = 0; i < mMimeTypeVector.size(); i++) {
        const String8 item = mMimeTypeVector.itemAt(i);

        if (String8("") != mimeType && item.find(mimeType) != -1) {
@@ -53,7 +53,7 @@ bool DrmSupportInfo::isSupportedMimeType(const String8& mimeType) const {
}

bool DrmSupportInfo::isSupportedFileSuffix(const String8& fileType) const {
    for (int i = 0; i < mFileSuffixVector.size(); i++) {
    for (unsigned int i = 0; i < mFileSuffixVector.size(); i++) {
        const String8 item = mFileSuffixVector.itemAt(i);

        if (String8("") != fileType && item.find(fileType) != -1) {
Loading