diff options
| author | Patrick Scott <phanna@android.com> | 2011-01-25 14:42:12 -0500 |
|---|---|---|
| committer | Patrick Scott <phanna@android.com> | 2011-03-08 08:35:54 -0500 |
| commit | 85a50ff48b2331913cc87f483eafba9f231c8c8c (patch) | |
| tree | a75bba4c918282176649159c3aac039e3990582f /core/java/android/webkit | |
| parent | 102930a0deaf8280a65321de0d6c120a638da9e2 (diff) | |
Pass the auto login header information to the app.
Add a new callback to handle auto login requests.
Bug: 3367381
Change-Id: I2ee8038cdf8a4ff9d1d3de0c871a0c60f1769655
Diffstat (limited to 'core/java/android/webkit')
| -rw-r--r-- | core/java/android/webkit/BrowserFrame.java | 8 | ||||
| -rw-r--r-- | core/java/android/webkit/CallbackProxy.java | 29 | ||||
| -rw-r--r-- | core/java/android/webkit/WebViewClient.java | 14 |
3 files changed, 49 insertions, 2 deletions
diff --git a/core/java/android/webkit/BrowserFrame.java b/core/java/android/webkit/BrowserFrame.java index ab4bfe19f3f9..c7a7374375a1 100644 --- a/core/java/android/webkit/BrowserFrame.java +++ b/core/java/android/webkit/BrowserFrame.java @@ -1237,11 +1237,17 @@ class BrowserFrame extends Handler { } } - /*package*/ SearchBox getSearchBox() { return mSearchBox; } + /** + * Called by JNI when processing the X-Auto-Login header. + */ + private void autoLogin(String realm, String account, String args) { + mCallbackProxy.onReceivedLoginRequest(realm, account, args); + } + //========================================================================== // native functions //========================================================================== diff --git a/core/java/android/webkit/CallbackProxy.java b/core/java/android/webkit/CallbackProxy.java index c66d70162adc..23fd12d99f0e 100644 --- a/core/java/android/webkit/CallbackProxy.java +++ b/core/java/android/webkit/CallbackProxy.java @@ -117,6 +117,7 @@ class CallbackProxy extends Handler { private static final int AUTH_CREDENTIALS = 137; private static final int SET_INSTALLABLE_WEBAPP = 138; private static final int NOTIFY_SEARCHBOX_LISTENERS = 139; + private static final int AUTO_LOGIN = 140; // Message triggered by the client to resume execution private static final int NOTIFY = 200; @@ -770,7 +771,7 @@ class CallbackProxy extends Handler { (WebHistoryItem) msg.obj, msg.arg1); } break; - case AUTH_CREDENTIALS: + case AUTH_CREDENTIALS: { String host = msg.getData().getString("host"); String realm = msg.getData().getString("realm"); username = msg.getData().getString("username"); @@ -778,6 +779,7 @@ class CallbackProxy extends Handler { mWebView.setHttpAuthUsernamePassword( host, realm, username, password); break; + } case SET_INSTALLABLE_WEBAPP: if (mWebChromeClient != null) { mWebChromeClient.setInstallableWebApp(); @@ -789,6 +791,17 @@ class CallbackProxy extends Handler { @SuppressWarnings("unchecked") List<String> suggestions = (List<String>) msg.obj; searchBox.handleSuggestions(msg.getData().getString("query"), suggestions); + break; + case AUTO_LOGIN: { + if (mWebViewClient != null) { + String realm = msg.getData().getString("realm"); + String account = msg.getData().getString("account"); + String args = msg.getData().getString("args"); + mWebViewClient.onReceivedLoginRequest(mWebView, realm, + account, args); + } + break; + } } } @@ -1051,6 +1064,20 @@ class CallbackProxy extends Handler { sendMessage(msg); } + void onReceivedLoginRequest(String realm, String account, String args) { + // Do an unsynchronized quick check to avoid posting if no callback has + // been set. + if (mWebViewClient == null) { + return; + } + Message msg = obtainMessage(AUTO_LOGIN); + Bundle bundle = msg.getData(); + bundle.putString("realm", realm); + bundle.putString("account", account); + bundle.putString("args", args); + sendMessage(msg); + } + //-------------------------------------------------------------------------- // DownloadListener functions. //-------------------------------------------------------------------------- diff --git a/core/java/android/webkit/WebViewClient.java b/core/java/android/webkit/WebViewClient.java index db605de6dc77..65026a5d02ac 100644 --- a/core/java/android/webkit/WebViewClient.java +++ b/core/java/android/webkit/WebViewClient.java @@ -256,4 +256,18 @@ public class WebViewClient { */ public void onScaleChanged(WebView view, float oldScale, float newScale) { } + + /** + * Notify the host application that a request to automatically log in the + * user has been processed. + * @param view The WebView requesting the login. + * @param realm The account realm used to look up accounts. + * @param account An optional account. If not null, the account should be + * checked against accounts on the device. If it is a valid + * account, it should be used to log in the user. + * @param args Authenticator specific arguments used to log in the user. + */ + public void onReceivedLoginRequest(WebView view, String realm, + String account, String args) { + } } |
