Skip to content

Commit d78fc5b

Browse files
James DongAndroid (Google) Code Review
authored andcommitted
Merge "Let getOriginalMimeType() take a fd passed from drm java applications" into jb-mr1-dev
2 parents b9b5695 + 0889fda commit d78fc5b

File tree

2 files changed

+37
-7
lines changed

2 files changed

+37
-7
lines changed

drm/java/android/drm/DrmManagerClient.java

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@
2929
import android.provider.MediaStore;
3030
import android.util.Log;
3131

32+
import java.io.File;
33+
import java.io.FileDescriptor;
34+
import java.io.FileInputStream;
3235
import java.io.IOException;
3336
import java.lang.ref.WeakReference;
3437
import java.util.ArrayList;
@@ -582,7 +585,28 @@ public String getOriginalMimeType(String path) {
582585
if (null == path || path.equals("")) {
583586
throw new IllegalArgumentException("Given path should be non null");
584587
}
585-
return _getOriginalMimeType(mUniqueId, path);
588+
589+
String mime = null;
590+
591+
FileInputStream is = null;
592+
try {
593+
FileDescriptor fd = null;
594+
File file = new File(path);
595+
if (file.exists()) {
596+
is = new FileInputStream(file);
597+
fd = is.getFD();
598+
}
599+
mime = _getOriginalMimeType(mUniqueId, path, fd);
600+
} catch (IOException ioe) {
601+
} finally {
602+
if (is != null) {
603+
try {
604+
is.close();
605+
} catch(IOException e) {}
606+
}
607+
}
608+
609+
return mime;
586610
}
587611

588612
/**
@@ -848,7 +872,7 @@ private native int _saveRights(
848872

849873
private native int _getDrmObjectType(int uniqueId, String path, String mimeType);
850874

851-
private native String _getOriginalMimeType(int uniqueId, String path);
875+
private native String _getOriginalMimeType(int uniqueId, String path, FileDescriptor fd);
852876

853877
private native int _checkRightsStatus(int uniqueId, String path, int action);
854878

drm/jni/android_drm_DrmManagerClient.cpp

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -587,22 +587,28 @@ static jint android_drm_DrmManagerClient_getDrmObjectType(
587587
}
588588

589589
static jstring android_drm_DrmManagerClient_getOriginalMimeType(
590-
JNIEnv* env, jobject thiz, jint uniqueId, jstring path) {
590+
JNIEnv* env, jobject thiz, jint uniqueId, jstring path, jobject fileDescriptor) {
591591
ALOGV("getOriginalMimeType Enter");
592+
593+
int fd = (fileDescriptor == NULL)
594+
? -1
595+
: jniGetFDFromFileDescriptor(env, fileDescriptor);
596+
592597
String8 mimeType
593598
= getDrmManagerClientImpl(env, thiz)
594-
->getOriginalMimeType(uniqueId, Utility::getStringValue(env, path));
599+
->getOriginalMimeType(uniqueId,
600+
Utility::getStringValue(env, path), fd);
595601
ALOGV("getOriginalMimeType Exit");
596602
return env->NewStringUTF(mimeType.string());
597603
}
598604

599605
static jint android_drm_DrmManagerClient_checkRightsStatus(
600606
JNIEnv* env, jobject thiz, jint uniqueId, jstring path, int action) {
601-
ALOGV("getOriginalMimeType Enter");
607+
ALOGV("checkRightsStatus Enter");
602608
int rightsStatus
603609
= getDrmManagerClientImpl(env, thiz)
604610
->checkRightsStatus(uniqueId, Utility::getStringValue(env, path), action);
605-
ALOGV("getOriginalMimeType Exit");
611+
ALOGV("checkRightsStatus Exit");
606612
return rightsStatus;
607613
}
608614

@@ -730,7 +736,7 @@ static JNINativeMethod nativeMethods[] = {
730736
{"_getDrmObjectType", "(ILjava/lang/String;Ljava/lang/String;)I",
731737
(void*)android_drm_DrmManagerClient_getDrmObjectType},
732738

733-
{"_getOriginalMimeType", "(ILjava/lang/String;)Ljava/lang/String;",
739+
{"_getOriginalMimeType", "(ILjava/lang/String;Ljava/io/FileDescriptor;)Ljava/lang/String;",
734740
(void*)android_drm_DrmManagerClient_getOriginalMimeType},
735741

736742
{"_checkRightsStatus", "(ILjava/lang/String;I)I",

0 commit comments

Comments
 (0)