summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTony Mantler <nicoya@google.com>2014-06-05 13:05:42 -0700
committerTony Mantler <nicoya@google.com>2014-06-05 13:21:08 -0700
commitf765f9b976222a8a0e45d4b04883566ecf355937 (patch)
tree906d4ad21ebd442fdc841461a1404d1e6196340f
parent9909fabcc6cf69763f74ec4dd612d5d2aa80d324 (diff)
downloadandroid_packages_apps_Email-f765f9b976222a8a0e45d4b04883566ecf355937.tar.gz
android_packages_apps_Email-f765f9b976222a8a0e45d4b04883566ecf355937.tar.bz2
android_packages_apps_Email-f765f9b976222a8a0e45d4b04883566ecf355937.zip
Clean up cert activity handling
Fix re-displaying the dialog on orientation change b/5622284 Add host/port when available b/4988512 Disambiguate intent between AOSP and EmailGoogle Change-Id: Ideeda20dfd9bd0070998ccf42d8042765866ca0e
-rw-r--r--emailcommon/src/com/android/emailcommon/utility/CertificateRequestor.java19
-rw-r--r--res/values/strings.xml1
-rw-r--r--src/com/android/email/activity/setup/AccountSetupCredentialsFragment.java7
-rw-r--r--src/com/android/email/activity/setup/AccountSetupIncomingFragment.java12
4 files changed, 25 insertions, 14 deletions
diff --git a/emailcommon/src/com/android/emailcommon/utility/CertificateRequestor.java b/emailcommon/src/com/android/emailcommon/utility/CertificateRequestor.java
index b78895b3a..3217d0f0b 100644
--- a/emailcommon/src/com/android/emailcommon/utility/CertificateRequestor.java
+++ b/emailcommon/src/com/android/emailcommon/utility/CertificateRequestor.java
@@ -19,6 +19,7 @@ package com.android.emailcommon.utility;
import android.app.Activity;
import android.content.Intent;
+import android.net.Uri;
import android.os.Bundle;
import android.security.KeyChain;
import android.security.KeyChainAliasCallback;
@@ -28,14 +29,14 @@ import android.security.KeyChainAliasCallback;
* a certificate to use for establishing secure connections in the Email app.
*/
public class CertificateRequestor extends Activity implements KeyChainAliasCallback {
-
- public static final String ACTION_REQUEST_CERT = "com.android.emailcommon.REQUEST_CERT";
-
public static final String EXTRA_HOST = "CertificateRequestor.host";
public static final String EXTRA_PORT = "CertificateRequestor.port";
public static final String RESULT_ALIAS = "CertificateRequestor.alias";
+ public static final Uri CERTIFICATE_REQUEST_URI =
+ Uri.parse("eas://com.android.emailcommon/certrequest");
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -44,11 +45,13 @@ public class CertificateRequestor extends Activity implements KeyChainAliasCallb
String host = i.getStringExtra(EXTRA_HOST);
int port = i.getIntExtra(EXTRA_PORT, -1);
- KeyChain.choosePrivateKeyAlias(
- this, this,
- null /* keytypes */, null /* issuers */,
- host, port,
- null /* alias */);
+ if (savedInstanceState == null) {
+ KeyChain.choosePrivateKeyAlias(
+ this, this,
+ null /* keytypes */, null /* issuers */,
+ host, port,
+ null /* alias */);
+ }
}
/**
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 74c1c87c0..87742f878 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -839,6 +839,7 @@
<string name="account_manager_type_imap" translatable="false">com.android.email</string>
<string name="account_manager_type_legacy_imap" translatable="false">com.android.email</string>
<string name="intent_exchange_action" translatable="false">com.android.email.EXCHANGE_INTENT</string>
+ <string name="intent_exchange_cert_action" translatable="false">com.android.email.EXCHANGE_REQUEST_CERT</string>
<string name="intent_exchange_package" translatable="false">com.android.exchange</string>
<string name="intent_account_manager_entry" translatable="false">com.android.email.activity.setup.ACCOUNT_MANAGER_ENTRY</string>
<string name="intent_create_account" translatable="false">com.android.email.CREATE_ACCOUNT</string>
diff --git a/src/com/android/email/activity/setup/AccountSetupCredentialsFragment.java b/src/com/android/email/activity/setup/AccountSetupCredentialsFragment.java
index 9cfb9c89b..82106434f 100644
--- a/src/com/android/email/activity/setup/AccountSetupCredentialsFragment.java
+++ b/src/com/android/email/activity/setup/AccountSetupCredentialsFragment.java
@@ -18,7 +18,6 @@ package com.android.email.activity.setup;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
-import android.net.Uri;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
@@ -354,8 +353,10 @@ public class AccountSetupCredentialsFragment extends AccountSetupFragment
@Override
public void onCertificateRequested() {
- final Intent intent = new Intent(CertificateRequestor.ACTION_REQUEST_CERT);
- intent.setData(Uri.parse("eas://com.android.emailcommon/certrequest"));
+ final Intent intent = new Intent(getString(R.string.intent_exchange_cert_action));
+ intent.setData(CertificateRequestor.CERTIFICATE_REQUEST_URI);
+ // We don't set EXTRA_HOST or EXTRA_PORT here because we don't know the final host/port
+ // that we're connecting to yet, and autodiscover might point us somewhere else
startActivityForResult(intent, CERTIFICATE_REQUEST);
}
}
diff --git a/src/com/android/email/activity/setup/AccountSetupIncomingFragment.java b/src/com/android/email/activity/setup/AccountSetupIncomingFragment.java
index eb0a1a9ad..bfd647cba 100644
--- a/src/com/android/email/activity/setup/AccountSetupIncomingFragment.java
+++ b/src/com/android/email/activity/setup/AccountSetupIncomingFragment.java
@@ -20,7 +20,6 @@ import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.Loader;
-import android.net.Uri;
import android.os.Bundle;
import android.os.Parcel;
import android.text.Editable;
@@ -611,8 +610,15 @@ public class AccountSetupIncomingFragment extends AccountServerBaseFragment
@Override
public void onCertificateRequested() {
- final Intent intent = new Intent(CertificateRequestor.ACTION_REQUEST_CERT);
- intent.setData(Uri.parse("eas://com.android.emailcommon/certrequest"));
+ final Intent intent = new Intent(getString(R.string.intent_exchange_cert_action));
+ intent.setData(CertificateRequestor.CERTIFICATE_REQUEST_URI);
+ intent.putExtra(CertificateRequestor.EXTRA_HOST, mServerView.getText().toString().trim());
+ try {
+ intent.putExtra(CertificateRequestor.EXTRA_PORT,
+ Integer.parseInt(mPortView.getText().toString().trim()));
+ } catch (final NumberFormatException e) {
+ LogUtils.d(LogUtils.TAG, "Couldn't parse port %s", mPortView.getText());
+ }
startActivityForResult(intent, CERTIFICATE_REQUEST);
}