summaryrefslogtreecommitdiff
path: root/core/java/android/webkit/HTML5VideoViewProxy.java
diff options
context:
space:
mode:
authorTeng-Hui Zhu <ztenghui@google.com>2012-09-06 14:14:49 -0700
committerTeng-Hui Zhu <ztenghui@google.com>2012-09-06 16:20:14 -0700
commit5558eacfbfb1294912c5dde2179793ccfe2b7324 (patch)
tree08eeb0873381a6c9085bc53ecc534f5642547531 /core/java/android/webkit/HTML5VideoViewProxy.java
parent5b3652ccc89e3f94080d810aa1149f09d221f413 (diff)
Back key to dismiss full screen video
Also cleanup some warnings. bug:6722752 Change-Id: Ib612cf79e9546d40a048c5f09a1be6ca37ce51f8
Diffstat (limited to 'core/java/android/webkit/HTML5VideoViewProxy.java')
-rw-r--r--core/java/android/webkit/HTML5VideoViewProxy.java33
1 files changed, 28 insertions, 5 deletions
diff --git a/core/java/android/webkit/HTML5VideoViewProxy.java b/core/java/android/webkit/HTML5VideoViewProxy.java
index 701ef3594671..a3d62ae91129 100644
--- a/core/java/android/webkit/HTML5VideoViewProxy.java
+++ b/core/java/android/webkit/HTML5VideoViewProxy.java
@@ -31,6 +31,8 @@ import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
+import android.view.KeyEvent;
+import android.view.View;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -47,7 +49,8 @@ class HTML5VideoViewProxy extends Handler
MediaPlayer.OnCompletionListener,
MediaPlayer.OnErrorListener,
MediaPlayer.OnInfoListener,
- SurfaceTexture.OnFrameAvailableListener {
+ SurfaceTexture.OnFrameAvailableListener,
+ View.OnKeyListener {
// Logging tag.
private static final String LOGTAG = "HTML5VideoViewProxy";
@@ -94,9 +97,6 @@ class HTML5VideoViewProxy extends Handler
private static HTML5VideoView mHTML5VideoView;
private static boolean isVideoSelfEnded = false;
- // By using the baseLayer and the current video Layer ID, we can
- // identify the exact layer on the UI thread to use the SurfaceTexture.
- private static int mBaseLayer = 0;
private static void setPlayerBuffering(boolean playerBuffering) {
mHTML5VideoView.setPlayerBuffering(playerBuffering);
@@ -106,7 +106,6 @@ class HTML5VideoViewProxy extends Handler
// When we found the Video layer, then we set the Surface Texture to it.
// Otherwise, we may want to delete the Surface Texture to save memory.
public static void setBaseLayer(int layer) {
- mBaseLayer = layer;
// Don't do this for full screen mode.
if (mHTML5VideoView != null
&& !mHTML5VideoView.isFullScreenMode()
@@ -303,6 +302,7 @@ class HTML5VideoViewProxy extends Handler
// A bunch event listeners for our VideoView
// MediaPlayer.OnPreparedListener
+ @Override
public void onPrepared(MediaPlayer mp) {
VideoPlayer.onPrepared();
Message msg = Message.obtain(mWebCoreHandler, PREPARED);
@@ -315,6 +315,7 @@ class HTML5VideoViewProxy extends Handler
}
// MediaPlayer.OnCompletionListener;
+ @Override
public void onCompletion(MediaPlayer mp) {
// The video ended by itself, so we need to
// send a message to the UI thread to dismiss
@@ -324,6 +325,7 @@ class HTML5VideoViewProxy extends Handler
}
// MediaPlayer.OnErrorListener
+ @Override
public boolean onError(MediaPlayer mp, int what, int extra) {
sendMessage(obtainMessage(ERROR));
return false;
@@ -489,6 +491,7 @@ class HTML5VideoViewProxy extends Handler
releaseQueue();
}
// EventHandler methods. Executed on the network thread.
+ @Override
public void status(int major_version,
int minor_version,
int code,
@@ -496,10 +499,12 @@ class HTML5VideoViewProxy extends Handler
mStatusCode = code;
}
+ @Override
public void headers(Headers headers) {
mHeaders = headers;
}
+ @Override
public void data(byte[] data, int len) {
if (mPosterBytes == null) {
mPosterBytes = new ByteArrayOutputStream();
@@ -507,6 +512,7 @@ class HTML5VideoViewProxy extends Handler
mPosterBytes.write(data, 0, len);
}
+ @Override
public void endData() {
if (mStatusCode == 200) {
if (mPosterBytes.size() > 0) {
@@ -524,6 +530,7 @@ class HTML5VideoViewProxy extends Handler
}
if (mUrl != null) {
mHandler.post(new Runnable() {
+ @Override
public void run() {
if (mRequestHandle != null) {
mRequestHandle.setupRedirect(mUrl.toString(), mStatusCode,
@@ -535,14 +542,17 @@ class HTML5VideoViewProxy extends Handler
}
}
+ @Override
public void certificate(SslCertificate certificate) {
// Don't care.
}
+ @Override
public void error(int id, String description) {
cleanup();
}
+ @Override
public boolean handleSslErrorRequest(SslError error) {
// Don't care. If this happens, data() will never be called so
// mPosterBytes will never be created, so no need to call cleanup.
@@ -794,4 +804,17 @@ class HTML5VideoViewProxy extends Handler
}
return false;
}
+
+ @Override
+ public boolean onKey(View v, int keyCode, KeyEvent event) {
+ if (keyCode == KeyEvent.KEYCODE_BACK) {
+ if (event.getAction() == KeyEvent.ACTION_DOWN) {
+ return true;
+ } else if (event.getAction() == KeyEvent.ACTION_UP && !event.isCanceled()) {
+ VideoPlayer.exitFullScreenVideo(this, mWebView);
+ return true;
+ }
+ }
+ return false;
+ }
}