Index: chrome/android/java/src/org/chromium/chrome/browser/LoginPrompt.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LoginPrompt.java b/chrome/android/java/src/org/chromium/chrome/browser/LoginPrompt.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..478c0280cf08d495c62dd4fd6e44a48c804a6052 |
--- /dev/null |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/LoginPrompt.java |
@@ -0,0 +1,114 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+package org.chromium.chrome.browser; |
+ |
+import android.app.AlertDialog; |
+import android.content.Context; |
+import android.content.DialogInterface; |
+import android.view.KeyEvent; |
+import android.view.LayoutInflater; |
+import android.view.View; |
+import android.view.WindowManager; |
+import android.view.inputmethod.EditorInfo; |
+import android.widget.EditText; |
+import android.widget.TextView; |
+import android.widget.TextView.OnEditorActionListener; |
+ |
+import org.chromium.chrome.R; |
+ |
+/** |
+ * HTTP Authentication Dialog |
+ * |
+ * This borrows liberally from android.browser.HttpAuthenticationDialog. |
+ */ |
+public class LoginPrompt implements ChromeHttpAuthHandler.AutofillObserver { |
+ private final Context mContext; |
+ private final ChromeHttpAuthHandler mAuthHandler; |
+ |
+ private AlertDialog mDialog; |
+ private EditText mUsernameView; |
+ private EditText mPasswordView; |
+ |
+ public LoginPrompt(Context context, ChromeHttpAuthHandler authHandler) { |
+ mContext = context; |
+ mAuthHandler = authHandler; |
+ createDialog(); |
+ } |
+ |
+ private void createDialog() { |
+ View v = LayoutInflater.from(mContext).inflate(R.layout.http_auth_dialog, null); |
+ mUsernameView = (EditText) v.findViewById(R.id.username); |
+ mPasswordView = (EditText) v.findViewById(R.id.password); |
+ mPasswordView.setOnEditorActionListener(new OnEditorActionListener() { |
+ @Override |
+ public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { |
+ if (actionId == EditorInfo.IME_ACTION_DONE) { |
+ mDialog.getButton(AlertDialog.BUTTON_POSITIVE).performClick(); |
+ return true; |
+ } |
+ return false; |
+ } |
+ }); |
+ |
+ TextView explanationView = (TextView) v.findViewById(R.id.explanation); |
+ TextView usernameLabelView = (TextView) v.findViewById(R.id.username_label); |
+ TextView passwordLabelView = (TextView) v.findViewById(R.id.password_label); |
+ explanationView.setText(mAuthHandler.getMessageBody()); |
+ usernameLabelView.setText(mAuthHandler.getUsernameLabelText()); |
+ passwordLabelView.setText(mAuthHandler.getPasswordLabelText()); |
+ |
+ String okButtonText = mAuthHandler.getOkButtonText(); |
+ String cancelButtonText = mAuthHandler.getCancelButtonText(); |
+ |
+ mDialog = new AlertDialog.Builder(mContext) |
+ .setTitle(mAuthHandler.getMessageTitle()) |
+ .setView(v) |
+ .setPositiveButton(okButtonText, new DialogInterface.OnClickListener() { |
+ @Override |
+ public void onClick(DialogInterface dialog, int whichButton) { |
+ mAuthHandler.proceed(getUsername(), getPassword()); |
+ } |
+ }) |
+ .setNegativeButton(cancelButtonText, new DialogInterface.OnClickListener() { |
+ @Override |
+ public void onClick(DialogInterface dialog, int whichButton) { |
+ mAuthHandler.cancel(); |
+ } |
+ }) |
+ .setOnCancelListener(new DialogInterface.OnCancelListener() { |
+ @Override |
+ public void onCancel(DialogInterface dialog) { |
+ mAuthHandler.cancel(); |
+ } |
+ }) |
+ .create(); |
+ |
+ // Make the IME appear when the dialog is displayed if applicable. |
+ mDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); |
+ } |
+ |
+ /** |
+ * Shows the dialog. |
+ */ |
+ public void show() { |
+ mDialog.show(); |
+ mUsernameView.requestFocus(); |
+ } |
+ |
+ private String getUsername() { |
+ return mUsernameView.getText().toString(); |
+ } |
+ |
+ private String getPassword() { |
+ return mPasswordView.getText().toString(); |
+ } |
+ |
+ @Override |
+ public void onAutofillDataAvailable(String username, String password) { |
+ mUsernameView.setText(username); |
+ mPasswordView.setText(password); |
+ mUsernameView.selectAll(); |
+ } |
+} |