Cleanup how a plugin requests to go full-screen.
diff --git a/WebKit/Android.mk b/WebKit/Android.mk
index 07d030b..ac43360 100644
--- a/WebKit/Android.mk
+++ b/WebKit/Android.mk
@@ -42,6 +42,7 @@
android/jni/JavaSharedClient.cpp \
android/jni/MockGeolocation.cpp \
android/jni/PictureSet.cpp \
+ android/jni/PluginActivity.cpp \
android/jni/WebCoreFrameBridge.cpp \
android/jni/WebCoreJni.cpp \
android/jni/WebCoreResourceLoader.cpp \
diff --git a/WebKit/android/jni/WebCoreJniOnLoad.cpp b/WebKit/android/jni/WebCoreJniOnLoad.cpp
index 616526b..6711e6b 100644
--- a/WebKit/android/jni/WebCoreJniOnLoad.cpp
+++ b/WebKit/android/jni/WebCoreJniOnLoad.cpp
@@ -88,6 +88,7 @@
#if ENABLE(VIDEO)
extern int register_mediaplayer(JNIEnv*);
#endif
+extern int register_plugin_activity(JNIEnv*);
}
@@ -114,6 +115,7 @@
#if ENABLE(VIDEO)
{ "HTML5VideoViewProxy", android::register_mediaplayer },
#endif
+ { "PluginActivity", android::register_plugin_activity },
};
EXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved)
diff --git a/WebKit/android/jni/WebViewCore.cpp b/WebKit/android/jni/WebViewCore.cpp
index 2684c52..bc650ad 100644
--- a/WebKit/android/jni/WebViewCore.cpp
+++ b/WebKit/android/jni/WebViewCore.cpp
@@ -271,7 +271,7 @@
m_javaGlue->m_addMessageToConsole = GetJMethod(env, clazz, "addMessageToConsole", "(Ljava/lang/String;ILjava/lang/String;)V");
m_javaGlue->m_getPluginClass = GetJMethod(env, clazz, "getPluginClass", "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Class;");
m_javaGlue->m_createPluginJavaInstance = GetJMethod(env, clazz, "createPluginJavaInstance", "(Ljava/lang/String;I)Landroid/webkit/plugin/WebkitPlugin;");
- m_javaGlue->m_startFullScreenPluginActivity = GetJMethod(env, clazz, "startFullScreenPluginActivity", "(Ljava/lang/String;I)V");
+ m_javaGlue->m_startFullScreenPluginActivity = GetJMethod(env, clazz, "startFullScreenPluginActivity", "(I)V");
m_javaGlue->m_createSurface = GetJMethod(env, clazz, "createSurface", "(Landroid/webkit/plugin/WebkitPlugin;IIII)Landroid/webkit/ViewManager$ChildView;");
m_javaGlue->m_updateSurface = GetJMethod(env, clazz, "updateSurface", "(Landroid/webkit/ViewManager$ChildView;IIII)V");
m_javaGlue->m_destroySurface = GetJMethod(env, clazz, "destroySurface", "(Landroid/webkit/ViewManager$ChildView;)V");
@@ -2480,7 +2480,7 @@
return result;
}
-void WebViewCore::startFullScreenPluginActivity(const char* libName, NPP npp)
+void WebViewCore::startFullScreenPluginActivity(NPP npp)
{
JNIEnv* env = JSC::Bindings::getJNIEnv();
AutoJObject obj = m_javaGlue->object(env);
@@ -2489,10 +2489,8 @@
if (!obj.get())
return;
- jstring libString = env->NewStringUTF(libName);
env->CallVoidMethod(obj.get(),
- m_javaGlue->m_startFullScreenPluginActivity,
- libString, (int) npp);
+ m_javaGlue->m_startFullScreenPluginActivity, (int) npp);
checkException(env);
}
diff --git a/WebKit/android/jni/WebViewCore.h b/WebKit/android/jni/WebViewCore.h
index 19bca96..8a0df23 100644
--- a/WebKit/android/jni/WebViewCore.h
+++ b/WebKit/android/jni/WebViewCore.h
@@ -377,7 +377,7 @@
jobject createPluginJavaInstance(const WebCore::String& libName, NPP npp);
// Creates a full screen surface (i.e. View on an Activity) for a plugin
- void startFullScreenPluginActivity(const char* libName, NPP npp);
+ void startFullScreenPluginActivity(NPP npp);
// Creates a Surface (i.e. View) for a plugin
jobject createSurface(jobject webkitPlugin, int x, int y, int width, int height);
diff --git a/WebKit/android/plugins/ANPWindowInterface.cpp b/WebKit/android/plugins/ANPWindowInterface.cpp
index b35dfd3..543332d 100644
--- a/WebKit/android/plugins/ANPWindowInterface.cpp
+++ b/WebKit/android/plugins/ANPWindowInterface.cpp
@@ -54,7 +54,8 @@
static void anp_requestFullScreen(NPP instance) {
PluginView* pluginView = pluginViewForInstance(instance);
- pluginView->platformPluginWidget()->requestFullScreenMode();
+ PluginWidgetAndroid* pluginWidget = pluginView->platformPluginWidget();
+ pluginWidget->webViewCore()->startFullScreenPluginActivity(instance);
}
///////////////////////////////////////////////////////////////////////////////
diff --git a/WebKit/android/plugins/PluginWidgetAndroid.cpp b/WebKit/android/plugins/PluginWidgetAndroid.cpp
index 9c8d25d..36d7420 100644
--- a/WebKit/android/plugins/PluginWidgetAndroid.cpp
+++ b/WebKit/android/plugins/PluginWidgetAndroid.cpp
@@ -141,16 +141,6 @@
}
}
-void PluginWidgetAndroid::requestFullScreenMode() {
-
- const String& libName = m_pluginView->plugin()->path();
- SkString skLibName;
- skLibName.setUTF16(libName.characters(), libName.length());
-
- m_core->startFullScreenPluginActivity(skLibName.c_str(),
- m_pluginView->instance());
-}
-
bool PluginWidgetAndroid::setDrawingModel(ANPDrawingModel model) {
m_drawingModel = model;
return true;
diff --git a/WebKit/android/plugins/PluginWidgetAndroid.h b/WebKit/android/plugins/PluginWidgetAndroid.h
index da2291f..24ef69b 100644
--- a/WebKit/android/plugins/PluginWidgetAndroid.h
+++ b/WebKit/android/plugins/PluginWidgetAndroid.h
@@ -125,17 +125,17 @@
*/
void setVisibleRects(const ANPRectI rects[], int32_t count);
- /** Called when a plugin wishes to enter into full screen mode. The plugin's
- Java class (set using setPluginStubJavaClassName(...)) will be called
- asynchronously to provide a View to be displayed in full screen.
+ /** Returns a java object that implements the WebkitPlugin interface. The
+ implementation is located in the plugin's apk and is described in the
+ apk's manifest file. For each plugin instance in webkit there is at
+ most one instance of the java object associated with that plugin.
*/
- void requestFullScreenMode();
+ jobject getJavaPluginInstance();
private:
WebCore::IntPoint frameToDocumentCoords(int frameX, int frameY) const;
void computeVisibleFrameRect();
void scrollToVisibleFrameRect();
- jobject getJavaPluginInstance();
WebCore::PluginView* m_pluginView;
android::WebViewCore* m_core;