Updating samplePlugin to use java surface views.

Change-Id: I1b925ce3a6aeb0bd5464a7d5711449029944d7de
diff --git a/samples/BrowserPlugin/jni/jni-bridge.cpp b/samples/BrowserPlugin/jni/jni-bridge.cpp
new file mode 100644
index 0000000..45ecd54
--- /dev/null
+++ b/samples/BrowserPlugin/jni/jni-bridge.cpp
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+#include <string.h>
+#include <jni.h>
+#include <JNIHelp.h>
+#include <utils/Log.h>
+
+#include "PluginObject.h"
+
+#define EXPORT __attribute__((visibility("default")))
+
+static SurfaceSubPlugin* getPluginObject(int npp) {
+    NPP instance = (NPP)npp;
+    PluginObject* obj = static_cast<PluginObject*>(instance->pdata);
+    if (obj && obj->activePlugin
+            && obj->activePlugin->supportsDrawingModel(kSurface_ANPDrawingModel)) {
+        return static_cast<SurfaceSubPlugin*>(obj->activePlugin);
+    }
+    return NULL;
+}
+
+static void surfaceCreated(JNIEnv* env, jobject thiz, jint npp, jobject surface) {
+    SurfaceSubPlugin* obj = getPluginObject(npp);
+
+    //TODO why is this VM different from the one in NP_INIT...
+    JavaVM* vm = NULL;
+    env->GetJavaVM(&vm);
+
+    obj->surfaceCreated(env, surface);
+}
+
+static void surfaceChanged(JNIEnv* env, jobject thiz, jint npp, jint format, jint width, jint height) {
+    SurfaceSubPlugin* obj = getPluginObject(npp);
+    obj->surfaceChanged(format, width, height);
+}
+
+static void surfaceDestroyed(JNIEnv* env, jobject thiz, jint npp) {
+    SurfaceSubPlugin* obj = getPluginObject(npp);
+    if (obj) {
+        obj->surfaceDestroyed();
+    }
+}
+
+static jboolean isFixedSurface(JNIEnv* env, jobject thiz, jint npp) {
+    SurfaceSubPlugin* obj = getPluginObject(npp);
+    return obj->isFixedSurface();
+}
+
+/*
+ * JNI registration.
+ */
+static JNINativeMethod gJavaSamplePluginStubMethods[] = {
+    { "nativeSurfaceCreated", "(ILandroid/view/View;)V", (void*) surfaceCreated },
+    { "nativeSurfaceChanged", "(IIII)V", (void*) surfaceChanged },
+    { "nativeSurfaceDestroyed", "(I)V", (void*) surfaceDestroyed },
+    { "nativeIsFixedSurface", "(I)Z", (void*) isFixedSurface },
+};
+
+EXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) {
+
+    JNIEnv* env = NULL;
+
+    if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) {
+        return -1;
+    }
+
+    jniRegisterNativeMethods(env, "com/android/sampleplugin/SamplePluginStub",
+                             gJavaSamplePluginStubMethods, NELEM(gJavaSamplePluginStubMethods));
+
+    return JNI_VERSION_1_4;
+}