OSDN Git Service

fixing the surface size if the plugin elects to not handle zoomEvents.
authorDerek Sollenberger <djsollen@google.com>
Thu, 6 Aug 2009 14:43:25 +0000 (10:43 -0400)
committerDerek Sollenberger <djsollen@google.com>
Thu, 6 Aug 2009 14:43:25 +0000 (10:43 -0400)
WebKit/android/jni/WebViewCore.cpp
WebKit/android/jni/WebViewCore.h
WebKit/android/plugins/PluginSurface.cpp
WebKit/android/plugins/PluginSurface.h
WebKit/android/plugins/PluginWidgetAndroid.cpp

index 35aeedb..e743eff 100644 (file)
@@ -254,7 +254,7 @@ WebViewCore::WebViewCore(JNIEnv* env, jobject javaWebViewCore, WebCore::Frame* m
     m_javaGlue->m_geolocationPermissionsShowPrompt = GetJMethod(env, clazz, "geolocationPermissionsShowPrompt", "(Ljava/lang/String;)V");
     m_javaGlue->m_geolocationPermissionsHidePrompt = GetJMethod(env, clazz, "geolocationPermissionsHidePrompt", "()V");
     m_javaGlue->m_addMessageToConsole = GetJMethod(env, clazz, "addMessageToConsole", "(Ljava/lang/String;ILjava/lang/String;)V");
-    m_javaGlue->m_createSurface = GetJMethod(env, clazz, "createSurface", "(I)Landroid/view/SurfaceView;");
+    m_javaGlue->m_createSurface = GetJMethod(env, clazz, "createSurface", "(IZ)Landroid/view/SurfaceView;");
     m_javaGlue->m_destroySurface = GetJMethod(env, clazz, "destroySurface", "(Landroid/view/SurfaceView;)V");
     m_javaGlue->m_attachSurface = GetJMethod(env, clazz, "attachSurface", "(Landroid/view/SurfaceView;IIII)V");
 
@@ -2095,11 +2095,11 @@ void WebViewCore::setBackgroundColor(SkColor c)
     view->setBaseBackgroundColor(bcolor);
 }
 
-jobject WebViewCore::createSurface(SurfaceCallback* cb)
+jobject WebViewCore::createSurface(SurfaceCallback* cb, bool isFixedSize)
 {
     JNIEnv* env = JSC::Bindings::getJNIEnv();
     jobject surface = env->CallObjectMethod(m_javaGlue->object(env).get(),
-            m_javaGlue->m_createSurface, (int) cb);
+            m_javaGlue->m_createSurface, (int) cb, isFixedSize);
     checkException(env);
     return surface;
 }
index a2737c8..f763ee5 100644 (file)
@@ -345,7 +345,7 @@ namespace android {
         void requestKeyboard(bool);
 
         // Creates a SurfaceView for a plugin
-        jobject createSurface(SurfaceCallback* cb);
+        jobject createSurface(SurfaceCallback* cb, bool isFixedSize);
 
         // Destroys the SurfaceView after removing from the view system.
         void destroySurface(jobject surface);
index aba0263..c5bd74a 100644 (file)
@@ -78,11 +78,11 @@ static inline SkBitmap::Config convertPixelFormat(PixelFormat format) {
     }
 }
 
-PluginSurface::PluginSurface(PluginWidgetAndroid* widget)
+PluginSurface::PluginSurface(PluginWidgetAndroid* widget, bool isFixedSize)
         : m_jSurfaceView(0)
         , m_widget(widget) {
     // Create our java SurfaceView.
-    jobject obj = widget->webViewCore()->createSurface(this);
+    jobject obj = widget->webViewCore()->createSurface(this, isFixedSize);
     if (obj) {
         JNIEnv* env = JSC::Bindings::getJNIEnv();
         m_jSurfaceView = env->NewGlobalRef(obj);
index b8cbac9..2b2b57a 100644 (file)
@@ -50,7 +50,7 @@ class Surface;
 
 class PluginSurface : public SurfaceCallback {
 public:
-    PluginSurface(PluginWidgetAndroid* widget);
+    PluginSurface(PluginWidgetAndroid* widget, bool isFixedSize);
     virtual ~PluginSurface() {
         destroy();
     }
index c947b3b..6e05360 100644 (file)
@@ -214,7 +214,7 @@ ANPSurface* PluginWidgetAndroid::createSurface(ANPSurfaceType ignored) {
     if (m_drawingModel != kSurface_ANPDrawingModel) {
         return NULL;
     }
-    m_surface.set(new android::PluginSurface(this));
+    m_surface.set(new android::PluginSurface(this, !isAcceptingEvent(kZoom_ANPEventFlag)));
     ANPSurface* surface = new ANPSurface;
     surface->data = m_surface.get();
     surface->type = ignored;