summaryrefslogtreecommitdiff
path: root/chromium/java/com/android/webview
diff options
context:
space:
mode:
authorTorne (Richard Coles) <torne@google.com>2013-10-11 15:01:41 +0100
committerTorne (Richard Coles) <torne@google.com>2013-10-11 15:44:59 +0100
commit6138d17c5fd136a215078b4a9ae818d73cfa8b9a (patch)
tree8934a49daa5c90eb55cb4535e92d928ddcf1effe /chromium/java/com/android/webview
parent58ca6d4c0f3ea5d35d313ac13915a5a6b5c1ce9e (diff)
downloadwebview-6138d17c5fd136a215078b4a9ae818d73cfa8b9a.tar.gz
Provide a video poster even if the client doesn't.
To match the behaviour of the old webview, use the framework resource ic_media_video_poster as the default video poster if the WebChromeClient provided by the client doesn't give us one. Bug: 11158656 Change-Id: Id8c5b4e546081ed765356c38308cf1b6f198109d
Diffstat (limited to 'chromium/java/com/android/webview')
-rw-r--r--chromium/java/com/android/webview/chromium/WebViewContentsClientAdapter.java27
1 files changed, 24 insertions, 3 deletions
diff --git a/chromium/java/com/android/webview/chromium/WebViewContentsClientAdapter.java b/chromium/java/com/android/webview/chromium/WebViewContentsClientAdapter.java
index 95d8ac2..566c99a 100644
--- a/chromium/java/com/android/webview/chromium/WebViewContentsClientAdapter.java
+++ b/chromium/java/com/android/webview/chromium/WebViewContentsClientAdapter.java
@@ -20,6 +20,9 @@ import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.graphics.Color;
import android.graphics.Picture;
import android.net.http.ErrorStrings;
import android.net.http.SslError;
@@ -54,6 +57,7 @@ import org.chromium.content.browser.ContentView;
import org.chromium.content.browser.ContentViewClient;
import org.chromium.content.common.TraceEvent;
+import java.lang.ref.SoftReference;
import java.net.URISyntaxException;
/**
@@ -93,6 +97,8 @@ public class WebViewContentsClientAdapter extends AwContentsClient {
private Handler mUiThreadHandler;
+ private SoftReference<Bitmap> mCachedDefaultVideoPoster;
+
private static final int NEW_WEBVIEW_CREATED = 100;
/**
@@ -773,12 +779,27 @@ public class WebViewContentsClientAdapter extends AwContentsClient {
@Override
public Bitmap getDefaultVideoPoster() {
TraceEvent.begin();
- Bitmap result;
+ Bitmap result = null;
if (mWebChromeClient != null) {
if (TRACE) Log.d(TAG, "getDefaultVideoPoster");
result = mWebChromeClient.getDefaultVideoPoster();
- } else {
- result = null;
+ }
+ if (result == null) {
+ if (mCachedDefaultVideoPoster != null) {
+ result = mCachedDefaultVideoPoster.get();
+ }
+ if (result == null) {
+ Bitmap poster = BitmapFactory.decodeResource(
+ mWebView.getContext().getResources(),
+ com.android.internal.R.drawable.ic_media_video_poster);
+ result = Bitmap.createBitmap(poster.getWidth(),
+ poster.getHeight(),
+ poster.getConfig());
+ result.eraseColor(Color.GRAY);
+ Canvas canvas = new Canvas(result);
+ canvas.drawBitmap(poster, 0f, 0f, null);
+ mCachedDefaultVideoPoster = new SoftReference<Bitmap>(result);
+ }
}
TraceEvent.end();
return result;