diff options
author | Torne (Richard Coles) <torne@google.com> | 2013-10-11 15:01:41 +0100 |
---|---|---|
committer | Torne (Richard Coles) <torne@google.com> | 2013-10-11 15:44:59 +0100 |
commit | 6138d17c5fd136a215078b4a9ae818d73cfa8b9a (patch) | |
tree | 8934a49daa5c90eb55cb4535e92d928ddcf1effe /chromium/java/com/android/webview | |
parent | 58ca6d4c0f3ea5d35d313ac13915a5a6b5c1ce9e (diff) | |
download | webview-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.java | 27 |
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; |