summaryrefslogtreecommitdiffstats
path: root/core/java/android/webkit
diff options
context:
space:
mode:
authorDerek Sollenberger <djsollen@google.com>2009-07-02 10:05:21 -0400
committerDerek Sollenberger <djsollen@google.com>2009-07-02 10:27:08 -0400
commit945f3b43a05cefc7138f1aeab252b43b2d6cea96 (patch)
treed5315249a23e26ac9b1fbae152554b5c9fcdb102 /core/java/android/webkit
parentc2b9d63953c1261b12a99f295366d43ed90bae7f (diff)
downloadframeworks_base-945f3b43a05cefc7138f1aeab252b43b2d6cea96.zip
frameworks_base-945f3b43a05cefc7138f1aeab252b43b2d6cea96.tar.gz
frameworks_base-945f3b43a05cefc7138f1aeab252b43b2d6cea96.tar.bz2
recognize when plugin is eligable for user events and then notify the plugin.
Diffstat (limited to 'core/java/android/webkit')
-rw-r--r--core/java/android/webkit/WebView.java9
-rw-r--r--core/java/android/webkit/WebViewCore.java16
2 files changed, 24 insertions, 1 deletions
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index e061a4c..8cc7989 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -4504,6 +4504,15 @@ public class WebView extends AbsoluteLayout
mCallbackProxy.uiOverrideUrlLoading(url);
}
+ // called by JNI
+ private void sendPluginState(int state) {
+ WebViewCore.PluginStateData psd = new WebViewCore.PluginStateData();
+ psd.mFrame = nativeCursorFramePointer();
+ psd.mNode = nativeCursorNodePointer();
+ psd.mState = state;
+ mWebViewCore.sendMessage(EventHub.PLUGIN_STATE, psd);
+ }
+
@Override
public boolean requestFocus(int direction, Rect previouslyFocusedRect) {
boolean result = false;
diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java
index d8d9808..44d8b7e 100644
--- a/core/java/android/webkit/WebViewCore.java
+++ b/core/java/android/webkit/WebViewCore.java
@@ -440,6 +440,8 @@ final class WebViewCore {
*/
private native void nativeSetDatabaseQuota(long quota);
+ private native void nativeUpdatePluginState(int framePtr, int nodePtr, int state);
+
// EventHub for processing messages
private final EventHub mEventHub;
// WebCore thread handler
@@ -570,6 +572,12 @@ final class WebViewCore {
int mY;
}
+ static class PluginStateData {
+ int mFrame;
+ int mNode;
+ int mState;
+ }
+
static final String[] HandlerDebugString = {
"LOAD_URL", // = 100;
"STOP_LOADING", // = 101;
@@ -598,7 +606,7 @@ final class WebViewCore {
"SINGLE_LISTBOX_CHOICE", // = 124;
"MESSAGE_RELAY", // = 125;
"SET_BACKGROUND_COLOR", // = 126;
- "127", // = 127;
+ "PLUGIN_STATE", // = 127;
"SAVE_DOCUMENT_STATE", // = 128;
"GET_SELECTION", // = 129;
"WEBKIT_DRAW", // = 130;
@@ -648,6 +656,7 @@ final class WebViewCore {
static final int SINGLE_LISTBOX_CHOICE = 124;
static final int MESSAGE_RELAY = 125;
static final int SET_BACKGROUND_COLOR = 126;
+ static final int PLUGIN_STATE = 127; // plugin notifications
static final int SAVE_DOCUMENT_STATE = 128;
static final int GET_SELECTION = 129;
static final int WEBKIT_DRAW = 130;
@@ -885,6 +894,11 @@ final class WebViewCore {
nativeFreeMemory();
break;
+ case PLUGIN_STATE:
+ PluginStateData psd = (PluginStateData) msg.obj;
+ nativeUpdatePluginState(psd.mFrame, psd.mNode, psd.mState);
+ break;
+
case SET_NETWORK_STATE:
if (BrowserFrame.sJavaBridge == null) {
throw new IllegalStateException("No WebView " +