summaryrefslogtreecommitdiff
path: root/core/java/android/webkit/SearchBoxImpl.java
diff options
context:
space:
mode:
authorMathew Inwood <mathewi@google.com>2011-07-04 15:15:27 +0100
committerMathew Inwood <mathewi@google.com>2011-07-07 12:56:39 +0100
commitbdaa1aafd590aa88e16cee166f8e78404d8023a4 (patch)
tree072d66d3b9ab26f2af4aceac04e28c341e151073 /core/java/android/webkit/SearchBoxImpl.java
parent2c742c2aebf20a0534c822eb8a36da99d9df79fe (diff)
SearchBox API to determine if it's supported by the current page.
Change-Id: I0119243ed0e19e237c1f51de887af5c954f96693
Diffstat (limited to 'core/java/android/webkit/SearchBoxImpl.java')
-rw-r--r--core/java/android/webkit/SearchBoxImpl.java29
1 files changed, 29 insertions, 0 deletions
diff --git a/core/java/android/webkit/SearchBoxImpl.java b/core/java/android/webkit/SearchBoxImpl.java
index 480f5d7a5b44..61fb2ce9f160 100644
--- a/core/java/android/webkit/SearchBoxImpl.java
+++ b/core/java/android/webkit/SearchBoxImpl.java
@@ -92,9 +92,19 @@ final class SearchBoxImpl implements SearchBox {
= "if (window.chrome && window.chrome.searchBox &&"
+ " window.chrome.searchBox.on%1$s) { window.chrome.searchBox.on%1$s(); }";
+ private static final String IS_SUPPORTED_SCRIPT
+ = "if (window.searchBoxJavaBridge_) {"
+ + " if (window.chrome && window.chrome.searchBox && "
+ + " window.chrome.searchBox.onsubmit) {"
+ + " window.searchBoxJavaBridge_.isSupportedCallback(true);"
+ + " } else {"
+ + " window.searchBoxJavaBridge_.isSupportedCallback(false);"
+ + " }}";
+
private final List<SearchBoxListener> mListeners;
private final WebViewCore mWebViewCore;
private final CallbackProxy mCallbackProxy;
+ private IsSupportedCallback mSupportedCallback;
SearchBoxImpl(WebViewCore webViewCore, CallbackProxy callbackProxy) {
mListeners = new ArrayList<SearchBoxListener>();
@@ -173,6 +183,25 @@ final class SearchBoxImpl implements SearchBox {
}
}
+ @Override
+ public void isSupported(IsSupportedCallback callback) {
+ mSupportedCallback = callback;
+ dispatchJs(IS_SUPPORTED_SCRIPT);
+ }
+
+ // Called by Javascript through the Java bridge.
+ public void isSupportedCallback(boolean isSupported) {
+ mCallbackProxy.onIsSupportedCallback(isSupported);
+ }
+
+ public void handleIsSupportedCallback(boolean isSupported) {
+ IsSupportedCallback callback = mSupportedCallback;
+ mSupportedCallback = null;
+ if (callback != null) {
+ callback.searchBoxIsSupported(isSupported);
+ }
+ }
+
// This is used as a hackish alternative to javascript escaping.
// There appears to be no such functionality in the core framework.
private String jsonSerialize(String query) {