Delay sending Plugin Draw event until the surface is ready.

bug: 5436630
Change-Id: Ib66859b94b60fc5ea2a8db5e2e40690a084d5b0a
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index f46af51..7a803f9 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -7415,6 +7415,10 @@
         }
     }
 
+    void sendPluginDrawMsg() {
+        mWebViewCore.sendMessage(EventHub.PLUGIN_SURFACE_READY);
+    }
+
     /**
      * Returns plugin bounds if x/y in content coordinates corresponds to a
      * plugin. Otherwise a NULL rectangle is returned.
diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java
index 44688b8..1294a28 100644
--- a/core/java/android/webkit/WebViewCore.java
+++ b/core/java/android/webkit/WebViewCore.java
@@ -1032,6 +1032,8 @@
 
         static final int EXECUTE_JS = 194;
 
+        static final int PLUGIN_SURFACE_READY = 195;
+
         // private message ids
         private static final int DESTROY =     200;
 
@@ -1587,6 +1589,10 @@
                             nativeFullScreenPluginHidden(msg.arg1);
                             break;
 
+                        case PLUGIN_SURFACE_READY:
+                            nativePluginSurfaceReady();
+                            break;
+
                         case ADD_PACKAGE_NAMES:
                             if (BrowserFrame.sJavaBridge == null) {
                                 throw new IllegalStateException("No WebView " +
@@ -2826,6 +2832,7 @@
     private native void nativeResume();
     private native void nativeFreeMemory();
     private native void nativeFullScreenPluginHidden(int npp);
+    private native void nativePluginSurfaceReady();
     private native boolean nativeValidNodeAndBounds(int frame, int node,
             Rect bounds);