Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(231)

Unified Diff: media/base/android/java/src/org/chromium/media/MediaPlayerBridge.java

Issue 12625005: remove call to get android MediaPlayer class (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressing comments Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/base/android/java/src/org/chromium/media/MediaPlayerBridge.java
diff --git a/media/base/android/java/src/org/chromium/media/MediaPlayerBridge.java b/media/base/android/java/src/org/chromium/media/MediaPlayerBridge.java
index 1bf800585ae85de7015d52b73ec06a4f44ace56e..41221a550c3444aa4a9414ed222c0837d60a6db2 100644
--- a/media/base/android/java/src/org/chromium/media/MediaPlayerBridge.java
+++ b/media/base/android/java/src/org/chromium/media/MediaPlayerBridge.java
@@ -8,14 +8,39 @@ import android.content.Context;
import android.media.MediaPlayer;
import android.net.Uri;
import android.text.TextUtils;
+import android.util.Log;
import org.chromium.base.CalledByNative;
import org.chromium.base.JNINamespace;
+import java.io.Serializable;
+import java.lang.reflect.Method;
import java.util.HashMap;
@JNINamespace("media")
class MediaPlayerBridge {
+ private static class AllowedOperations implements Serializable {
bulach 2013/03/14 09:59:07 is Serializable needed?
qinmin 2013/03/14 18:53:03 no, removed On 2013/03/14 09:59:07, bulach wrote:
+ private final boolean mCanPause;
+ private final boolean mCanSeekForward;
+ private final boolean mCanSeekBackward;
+
+ private AllowedOperations(boolean canPause, boolean canSeekForward,
+ boolean canSeekBackward) {
+ mCanPause = canPause;
+ mCanSeekForward = canSeekForward;
+ mCanSeekBackward = canSeekBackward;
+ }
+
+ @CalledByNative("AllowedOperations")
+ private boolean canPause() { return mCanPause; }
+
+ @CalledByNative("AllowedOperations")
+ private boolean canSeekForward() { return mCanSeekForward; }
+
+ @CalledByNative("AllowedOperations")
+ private boolean canSeekBackward() { return mCanSeekBackward; }
+ }
+
@CalledByNative
private static boolean setDataSource(MediaPlayer player, Context context, String url,
String cookies, boolean hideUrlLog) {
@@ -32,4 +57,43 @@ class MediaPlayerBridge {
return false;
}
}
+
+ /**
+ * Returns an AllowedOperations object to show all the operations that are
+ * allowed on the media player.
+ */
+ @CalledByNative
+ private static AllowedOperations getAllowedOperations(MediaPlayer player) {
+ boolean canPause = true;
+ boolean canSeekForward = true;
+ boolean canSeekBackward = true;
+ try {
+ Method getMetadata = player.getClass().getDeclaredMethod(
+ "getMetadata", boolean.class, boolean.class);
+ getMetadata.setAccessible(true);
+ Object data = getMetadata.invoke(player, false, false);
+ if (data != null) {
+ Class<?> metadataClass = data.getClass();
+ Method hasMethod = metadataClass.getDeclaredMethod("has", int.class);
+ Method getBooleanMethod = metadataClass.getDeclaredMethod("getBoolean", int.class);
+
+ int pause = (Integer) metadataClass.getField("PAUSE_AVAILABLE").get(null);
+ int seekForward =
+ (Integer) metadataClass.getField("SEEK_FORWARD_AVAILABLE").get(null);
+ int seekBackward =
+ (Integer) metadataClass.getField("SEEK_BACKWARD_AVAILABLE").get(null);
+ hasMethod.setAccessible(true);
+ getBooleanMethod.setAccessible(true);
+ canPause = !((Boolean) hasMethod.invoke(data, pause))
+ || ((Boolean) getBooleanMethod.invoke(data, pause));
+ canSeekForward = !((Boolean) hasMethod.invoke(data, seekForward))
+ || ((Boolean) getBooleanMethod.invoke(data, seekForward));
+ canSeekBackward = !((Boolean) hasMethod.invoke(data, seekBackward))
+ || ((Boolean) getBooleanMethod.invoke(data, seekBackward));
+ }
+ } catch (Exception e) {
+ Log.e("MediaPlayerBridge", "Cannot get metadata from the player: " + e);
+ }
+ return new AllowedOperations(canPause, canSeekForward, canSeekBackward);
+ }
}

Powered by Google App Engine
This is Rietveld 408576698