Keep local file open for DrmManagerService::acquireDrmInfo().

Bug: 7208979
Change-Id: I1b7798929f55b956e43bb9ed1a0f41dec9342be4
This commit is contained in:
Gene Morgan
2012-09-21 11:23:15 -07:00
parent 845e53e684
commit 4e3efb415b

View File

@@ -4,10 +4,9 @@
package com.widevine.demo;
import java.util.EventListener;
import java.io.FileDescriptor;
import java.io.FileInputStream;
//import java.util.HashMap;
import java.util.EventListener;
import java.util.Set;
import android.content.ContentValues;
@@ -122,20 +121,23 @@ public class WidevineDrm {
rightsAcquisitionInfo = new DrmInfoRequest(DrmInfoRequest.TYPE_RIGHTS_ACQUISITION_INFO,
Settings.WIDEVINE_MIME_TYPE);
if (assetUri.startsWith("/sdcard")) {
try {
FileInputStream fis = new FileInputStream(assetUri);
rightsAcquisitionInfo.put("FileDescriptorKey", fis.getFD().toString());
}
catch (java.io.IOException e) {
logMessage("Unable to get fd for '" + assetUri + "'\n");
}
}
rightsAcquisitionInfo.put("WVDRMServerKey", Settings.DRM_SERVER_URI);
rightsAcquisitionInfo.put("WVAssetURIKey", assetUri);
rightsAcquisitionInfo.put("WVDeviceIDKey", Settings.DEVICE_ID);
rightsAcquisitionInfo.put("WVPortalKey", Settings.PORTAL_NAME);
rightsAcquisitionInfo.put("WVCAUserDataKey", Settings.USER_DATA);
return rightsAcquisitionInfo;
}
public DrmInfoRequest getDrmInfoRequest(String assetUri, FileDescriptor fd) {
DrmInfoRequest rightsAcquisitionInfo = getDrmInfoRequest(assetUri);
if (fd.valid()) {
rightsAcquisitionInfo.put("FileDescriptorKey", fd.toString());
}
return rightsAcquisitionInfo;
}
@@ -175,7 +177,21 @@ public class WidevineDrm {
public int acquireRights(String assetUri) {
int rights = mDrmManager.acquireRights(getDrmInfoRequest(assetUri));
int rights = 0;
if (assetUri.startsWith("/sdcard")) {
try {
FileInputStream fis = new FileInputStream(assetUri);
FileDescriptor fd = fis.getFD();
rights = mDrmManager.acquireRights(getDrmInfoRequest(assetUri, fd));
fis.close();
}
catch (java.io.IOException e) {
logMessage("Unable to acquire rights for '" + assetUri + ": File I/O error'\n");
}
} else {
rights = mDrmManager.acquireRights(getDrmInfoRequest(assetUri));
}
logMessage("acquireRights = " + rights + "\n");
return rights;