merge in klp-release history after reset to klp-dev
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.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.ContentViewClient;
 import org.chromium.content.common.TraceEvent;
 
+import java.lang.ref.SoftReference;
 import java.net.URISyntaxException;
 
 /**
@@ -93,6 +97,8 @@
 
     private Handler mUiThreadHandler;
 
+    private SoftReference<Bitmap> mCachedDefaultVideoPoster;
+
     private static final int NEW_WEBVIEW_CREATED = 100;
 
     /**
@@ -773,12 +779,27 @@
     @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;