summaryrefslogtreecommitdiffstats
path: root/WebKit/android/jni/WebViewCore.cpp
diff options
context:
space:
mode:
authorDerek Sollenberger <djsollen@google.com>2009-10-13 11:40:13 -0400
committerDerek Sollenberger <djsollen@google.com>2009-10-13 14:19:49 -0400
commit1cad91756cbfe2f7d224345e615f14639a9b6499 (patch)
tree0ab55f8abaf2ecd5d11aa62cafd49812519f1819 /WebKit/android/jni/WebViewCore.cpp
parent49e856e5d5e86855d12326294cb6b57235a2e9a1 (diff)
downloadexternal_webkit-1cad91756cbfe2f7d224345e615f14639a9b6499.zip
external_webkit-1cad91756cbfe2f7d224345e615f14639a9b6499.tar.gz
external_webkit-1cad91756cbfe2f7d224345e615f14639a9b6499.tar.bz2
Enabling plugins to stay in sync with UI when the DOM changes.
Diffstat (limited to 'WebKit/android/jni/WebViewCore.cpp')
-rw-r--r--WebKit/android/jni/WebViewCore.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/WebKit/android/jni/WebViewCore.cpp b/WebKit/android/jni/WebViewCore.cpp
index 2340f99..2a86e56 100644
--- a/WebKit/android/jni/WebViewCore.cpp
+++ b/WebKit/android/jni/WebViewCore.cpp
@@ -188,6 +188,7 @@ struct WebViewCore::JavaGlue {
jmethodID m_addMessageToConsole;
jmethodID m_startFullScreenPluginActivity;
jmethodID m_createSurface;
+ jmethodID m_updateSurface;
jmethodID m_destroySurface;
AutoJObject object(JNIEnv* env) {
return getRealObject(env, m_obj);
@@ -265,6 +266,7 @@ WebViewCore::WebViewCore(JNIEnv* env, jobject javaWebViewCore, WebCore::Frame* m
m_javaGlue->m_addMessageToConsole = GetJMethod(env, clazz, "addMessageToConsole", "(Ljava/lang/String;ILjava/lang/String;)V");
m_javaGlue->m_startFullScreenPluginActivity = GetJMethod(env, clazz, "startFullScreenPluginActivity", "(Ljava/lang/String;Ljava/lang/String;I)V");
m_javaGlue->m_createSurface = GetJMethod(env, clazz, "createSurface", "(Ljava/lang/String;Ljava/lang/String;IIIII)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");
env->SetIntField(javaWebViewCore, gWebViewCoreFields.m_nativeClass, (jint)this);
@@ -2441,6 +2443,20 @@ jobject WebViewCore::createSurface(const char* libName, const char* className,
}
+void WebViewCore::updateSurface(jobject childView, int x, int y, int width, int height)
+{
+ JNIEnv* env = JSC::Bindings::getJNIEnv();
+ AutoJObject obj = m_javaGlue->object(env);
+ // if it is called during DESTROY is handled, the real object of WebViewCore
+ // can be gone. Check before using it.
+ if (!obj.get())
+ return;
+
+ env->CallVoidMethod(obj.get(), m_javaGlue->m_updateSurface, childView, x,
+ y, width, height);
+ checkException(env);
+}
+
void WebViewCore::destroySurface(jobject childView)
{
JNIEnv* env = JSC::Bindings::getJNIEnv();