diff options
| author | Mathew Inwood <mathewi@google.com> | 2011-07-04 15:15:27 +0100 |
|---|---|---|
| committer | Mathew Inwood <mathewi@google.com> | 2011-07-07 12:56:39 +0100 |
| commit | bdaa1aafd590aa88e16cee166f8e78404d8023a4 (patch) | |
| tree | 072d66d3b9ab26f2af4aceac04e28c341e151073 /core/java/android/webkit/SearchBoxImpl.java | |
| parent | 2c742c2aebf20a0534c822eb8a36da99d9df79fe (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.java | 29 |
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) { |
