diff options
author | Narayan Kamath <narayan@google.com> | 2011-02-22 12:05:34 +0000 |
---|---|---|
committer | Narayan Kamath <narayan@google.com> | 2011-03-01 11:11:00 +0000 |
commit | 9497c5f8c4bc7c47789e5ccde01179abc31ffeb2 (patch) | |
tree | 3f5080139a3fd6809df6b7ce077e885def2d7e36 /core/java/android/webkit/BrowserFrame.java | |
parent | 43cdf9b4191e18b5a4d646d23b06438c0e10b8dd (diff) | |
download | frameworks_base-9497c5f8c4bc7c47789e5ccde01179abc31ffeb2.zip frameworks_base-9497c5f8c4bc7c47789e5ccde01179abc31ffeb2.tar.gz frameworks_base-9497c5f8c4bc7c47789e5ccde01179abc31ffeb2.tar.bz2 |
A Java implementation of the SearchBox API.
Implemented as a Java bridge object and a JS adapter.
Works on both V8 and JSC.
Change-Id: I8a4268fb3c6688b5ece9e27c11724c0776017255
Diffstat (limited to 'core/java/android/webkit/BrowserFrame.java')
-rw-r--r-- | core/java/android/webkit/BrowserFrame.java | 40 |
1 files changed, 24 insertions, 16 deletions
diff --git a/core/java/android/webkit/BrowserFrame.java b/core/java/android/webkit/BrowserFrame.java index fc1240f..ab4bfe1 100644 --- a/core/java/android/webkit/BrowserFrame.java +++ b/core/java/android/webkit/BrowserFrame.java @@ -46,7 +46,6 @@ import java.lang.ref.WeakReference; import java.net.URLEncoder; import java.security.cert.X509Certificate; import java.util.ArrayList; -import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.Iterator; @@ -89,6 +88,9 @@ class BrowserFrame extends Handler { // Key store handler when Chromium HTTP stack is used. private KeyStoreHandler mKeyStoreHandler = null; + // Implementation of the searchbox API. + private final SearchBoxImpl mSearchBox; + // message ids // a message posted when a frame loading is completed static final int FRAME_COMPLETED = 1001; @@ -225,6 +227,9 @@ class BrowserFrame extends Handler { sConfigCallback.addHandler(this); mJSInterfaceMap = javascriptInterfaces; + if (mJSInterfaceMap == null) { + mJSInterfaceMap = new HashMap<String, Object>(); + } mSettings = settings; mContext = context; @@ -232,6 +237,9 @@ class BrowserFrame extends Handler { mDatabase = WebViewDatabase.getInstance(appContext); mWebViewCore = w; + mSearchBox = new SearchBoxImpl(mWebViewCore, mCallbackProxy); + mJSInterfaceMap.put(SearchBoxImpl.JS_INTERFACE_NAME, mSearchBox); + AssetManager am = context.getAssets(); nativeCreateFrame(w, am, proxy.getBackForwardList()); @@ -587,17 +595,17 @@ class BrowserFrame extends Handler { * We should re-attach any attached js interfaces. */ private void windowObjectCleared(int nativeFramePointer) { - if (mJSInterfaceMap != null) { - Iterator iter = mJSInterfaceMap.keySet().iterator(); - while (iter.hasNext()) { - String interfaceName = (String) iter.next(); - Object object = mJSInterfaceMap.get(interfaceName); - if (object != null) { - nativeAddJavascriptInterface(nativeFramePointer, - mJSInterfaceMap.get(interfaceName), interfaceName); - } + Iterator<String> iter = mJSInterfaceMap.keySet().iterator(); + while (iter.hasNext()) { + String interfaceName = iter.next(); + Object object = mJSInterfaceMap.get(interfaceName); + if (object != null) { + nativeAddJavascriptInterface(nativeFramePointer, + mJSInterfaceMap.get(interfaceName), interfaceName); } } + + stringByEvaluatingJavaScriptFromString(SearchBoxImpl.JS_BRIDGE); } /** @@ -620,16 +628,11 @@ class BrowserFrame extends Handler { public void addJavascriptInterface(Object obj, String interfaceName) { assert obj != null; removeJavascriptInterface(interfaceName); - if (mJSInterfaceMap == null) { - mJSInterfaceMap = new HashMap<String, Object>(); - } + mJSInterfaceMap.put(interfaceName, obj); } public void removeJavascriptInterface(String interfaceName) { - if (mJSInterfaceMap == null) { - return; - } if (mJSInterfaceMap.containsKey(interfaceName)) { mJSInterfaceMap.remove(interfaceName); } @@ -1234,6 +1237,11 @@ class BrowserFrame extends Handler { } } + + /*package*/ SearchBox getSearchBox() { + return mSearchBox; + } + //========================================================================== // native functions //========================================================================== |