Convert SetupData into a retained fragment
This will keep it from being recreated quite as much while off-thread tasks are possibly mutating it.
Change-Id: Ic9873489906339c33a76b8a600c0fc28016debc4
diff --git a/src/com/android/email/activity/setup/AccountCheckSettingsFragment.java b/src/com/android/email/activity/setup/AccountCheckSettingsFragment.java
index e7ea824..821a55c 100644
--- a/src/com/android/email/activity/setup/AccountCheckSettingsFragment.java
+++ b/src/com/android/email/activity/setup/AccountCheckSettingsFragment.java
@@ -69,7 +69,7 @@
private final static int STATE_AUTODISCOVER_AUTH_DIALOG = 7; // terminal
private final static int STATE_AUTODISCOVER_RESULT = 8; // terminal
private int mState = STATE_START;
- private SetupData mSetupData;
+ private SetupDataFragment mSetupData;
// Support for UI
private boolean mAttached;
@@ -106,13 +106,13 @@
* Called when CheckSettings completed
* @param result check settings result code - success is CHECK_SETTINGS_OK
*/
- public void onCheckSettingsComplete(int result, SetupData setupData);
+ public void onCheckSettingsComplete(int result, SetupDataFragment setupData);
/**
* Called when autodiscovery completes.
* @param result autodiscovery result code - success is AUTODISCOVER_OK
*/
- public void onAutoDiscoverComplete(int result, SetupData setupData);
+ public void onAutoDiscoverComplete(int result, SetupDataFragment setupData);
}
// Public no-args constructor needed for fragment re-instantiation
@@ -153,8 +153,8 @@
// If this is the first time, start the AsyncTask
if (mAccountCheckTask == null) {
final int checkMode = getTargetRequestCode();
- final SetupData.SetupDataContainer container =
- (SetupData.SetupDataContainer) getActivity();
+ final SetupDataFragment.SetupDataContainer container =
+ (SetupDataFragment.SetupDataContainer) getActivity();
mSetupData = container.getSetupData();
final Account checkAccount = mSetupData.getAccount();
mAccountCheckTask = (AccountCheckTask)
@@ -440,7 +440,7 @@
@Override
protected MessagingException doInBackground(Void... params) {
try {
- if ((mMode & SetupData.CHECK_AUTODISCOVER) != 0) {
+ if ((mMode & SetupDataFragment.CHECK_AUTODISCOVER) != 0) {
if (isCancelled()) return null;
publishProgress(STATE_CHECK_AUTODISCOVER);
LogUtils.d(Logging.LOG_TAG, "Begin auto-discover for " + mCheckEmail);
@@ -468,7 +468,7 @@
}
// Check Incoming Settings
- if ((mMode & SetupData.CHECK_INCOMING) != 0) {
+ if ((mMode & SetupDataFragment.CHECK_INCOMING) != 0) {
if (isCancelled()) return null;
LogUtils.d(Logging.LOG_TAG, "Begin check of incoming email settings");
publishProgress(STATE_CHECK_INCOMING);
@@ -513,7 +513,7 @@
final EmailServiceInfo info = EmailServiceUtils.getServiceInfo(mContext, protocol);
// Check Outgoing Settings
- if (info.usesSmtp && (mMode & SetupData.CHECK_OUTGOING) != 0) {
+ if (info.usesSmtp && (mMode & SetupDataFragment.CHECK_OUTGOING) != 0) {
if (isCancelled()) return null;
LogUtils.d(Logging.LOG_TAG, "Begin check of outgoing email settings");
publishProgress(STATE_CHECK_OUTGOING);
diff --git a/src/com/android/email/activity/setup/AccountServerBaseFragment.java b/src/com/android/email/activity/setup/AccountServerBaseFragment.java
index dad261a..29f505d 100644
--- a/src/com/android/email/activity/setup/AccountServerBaseFragment.java
+++ b/src/com/android/email/activity/setup/AccountServerBaseFragment.java
@@ -62,7 +62,7 @@
/*package*/ HostAuth mLoadedSendAuth;
/*package*/ HostAuth mLoadedRecvAuth;
- protected SetupData mSetupData;
+ protected SetupDataFragment mSetupData;
// This is null in the setup wizard screens, and non-null in AccountSettings mode
private Button mProceedButton;
@@ -82,7 +82,7 @@
/**
* Called when user clicks "next". Starts account checker.
- * @param checkMode values from {@link SetupData}
+ * @param checkMode values from {@link SetupDataFragment}
* @param target the fragment that requested the check
*/
public void onProceedNext(int checkMode, AccountServerBaseFragment target);
@@ -93,14 +93,14 @@
* @param result check settings result code - success is CHECK_SETTINGS_OK
* @param setupData possibly modified SetupData
*/
- public void onCheckSettingsComplete(int result, SetupData setupData);
+ public void onCheckSettingsComplete(int result, SetupDataFragment setupData);
}
private static class EmptyCallback implements Callback {
public static final Callback INSTANCE = new EmptyCallback();
@Override public void onEnableProceedButtons(boolean enable) { }
@Override public void onProceedNext(int checkMode, AccountServerBaseFragment target) { }
- @Override public void onCheckSettingsComplete(int result, SetupData setupData) { }
+ @Override public void onCheckSettingsComplete(int result, SetupDataFragment setupData) { }
}
/**
@@ -154,7 +154,8 @@
if (mSettingsMode && savedInstanceState != null) {
mContext.setTitle(savedInstanceState.getString(BUNDLE_KEY_ACTIVITY_TITLE));
}
- SetupData.SetupDataContainer container = (SetupData.SetupDataContainer) mContext;
+ SetupDataFragment.SetupDataContainer container =
+ (SetupDataFragment.SetupDataContainer) mContext;
mSetupData = container.getSetupData();
super.onActivityCreated(savedInstanceState);
@@ -302,13 +303,13 @@
* exit to previous fragment.
*/
@Override
- public void onCheckSettingsComplete(final int settingsResult, SetupData setupData) {
+ public void onCheckSettingsComplete(final int settingsResult, SetupDataFragment setupData) {
mSetupData = setupData;
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
if (settingsResult == AccountCheckSettingsFragment.CHECK_SETTINGS_OK) {
- if (mSetupData.getFlowMode() == SetupData.FLOW_MODE_EDIT) {
+ if (mSetupData.getFlowMode() == SetupDataFragment.FLOW_MODE_EDIT) {
saveSettingsAfterEdit();
} else {
saveSettingsAfterSetup();
@@ -330,7 +331,7 @@
* This is overridden only by AccountSetupExchange
*/
@Override
- public void onAutoDiscoverComplete(int result, SetupData setupData) {
+ public void onAutoDiscoverComplete(int result, SetupDataFragment setupData) {
throw new IllegalStateException();
}
diff --git a/src/com/android/email/activity/setup/AccountSettings.java b/src/com/android/email/activity/setup/AccountSettings.java
index ebd0508..a1f94f0 100644
--- a/src/com/android/email/activity/setup/AccountSettings.java
+++ b/src/com/android/email/activity/setup/AccountSettings.java
@@ -72,7 +72,7 @@
* dealing with accounts being added/deleted and triggering the header reload.
*/
public class AccountSettings extends PreferenceActivity implements FeedbackEnabledActivity,
- SetupData.SetupDataContainer {
+ SetupDataFragment.SetupDataContainer {
/*
* Intent to open account settings for account=1
adb shell am start -a android.intent.action.EDIT \
@@ -120,7 +120,7 @@
private Uri mFeedbackUri;
private MenuItem mFeedbackMenuItem;
- private SetupData mSetupData;
+ private SetupDataFragment mSetupData;
// Async Tasks
private LoadAccountListTask mLoadAccountListTask;
@@ -227,7 +227,7 @@
}
}
} else {
- mSetupData = savedInstanceState.getParcelable(SetupData.EXTRA_SETUP_DATA);
+ mSetupData = savedInstanceState.getParcelable(SetupDataFragment.EXTRA_SETUP_DATA);
}
mShowDebugMenu = i.getBooleanExtra(EXTRA_ENABLE_DEBUG, false);
@@ -253,7 +253,8 @@
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(
outState);
- outState.putParcelable(SetupData.EXTRA_SETUP_DATA, mSetupData);
+ // TODO: use the fragment manager to persist this
+ outState.putParcelable(SetupDataFragment.EXTRA_SETUP_DATA, mSetupData);
}
@Override
@@ -660,7 +661,7 @@
* simply does a "back" to exit the settings screen.
*/
@Override
- public void onCheckSettingsComplete(int result, SetupData setupData) {
+ public void onCheckSettingsComplete(int result, SetupDataFragment setupData) {
if (result == AccountCheckSettingsFragment.CHECK_SETTINGS_OK) {
// Settings checked & saved; clear current fragment
mCurrentFragment = null;
@@ -705,7 +706,7 @@
*/
public void onIncomingSettings(Account account) {
try {
- mSetupData = new SetupData(SetupData.FLOW_MODE_EDIT, account);
+ mSetupData = new SetupDataFragment(SetupDataFragment.FLOW_MODE_EDIT, account);
final Fragment f = new AccountSetupIncomingFragment();
f.setArguments(AccountSetupIncomingFragment.getArgs(true));
// Use startPreferenceFragment here because we need to keep this activity instance
@@ -722,7 +723,7 @@
*/
public void onOutgoingSettings(Account account) {
try {
- mSetupData = new SetupData(SetupData.FLOW_MODE_EDIT, account);
+ mSetupData = new SetupDataFragment(SetupDataFragment.FLOW_MODE_EDIT, account);
final Fragment f = new AccountSetupOutgoingFragment();
f.setArguments(AccountSetupOutgoingFragment.getArgs(true));
// Use startPreferenceFragment here because we need to keep this activity instance
@@ -926,12 +927,12 @@
}
@Override
- public SetupData getSetupData() {
+ public SetupDataFragment getSetupData() {
return mSetupData;
}
@Override
- public void setSetupData(SetupData setupData) {
+ public void setSetupData(SetupDataFragment setupData) {
mSetupData = setupData;
}
}
diff --git a/src/com/android/email/activity/setup/AccountSetupActivity.java b/src/com/android/email/activity/setup/AccountSetupActivity.java
index fb29581..fd6e63d 100644
--- a/src/com/android/email/activity/setup/AccountSetupActivity.java
+++ b/src/com/android/email/activity/setup/AccountSetupActivity.java
@@ -17,6 +17,7 @@
package com.android.email.activity.setup;
import android.app.Activity;
+import android.app.FragmentTransaction;
import android.os.Bundle;
import com.android.emailcommon.Logging;
@@ -26,25 +27,37 @@
* Superclass of all of the account setup activities; ensures that SetupData state is saved/restored
* automatically as required
*/
-public class AccountSetupActivity extends Activity implements SetupData.SetupDataContainer {
+public class AccountSetupActivity extends Activity implements SetupDataFragment.SetupDataContainer {
private static final boolean DEBUG_SETUP_FLOWS = false; // Don't check in set to true
- protected SetupData mSetupData;
+ protected SetupDataFragment mSetupData;
+ private static final String SETUP_DATA_FRAGMENT_TAG = "setupData";
@Override
public void onCreate(Bundle savedInstanceState) {
- if (savedInstanceState != null) {
- mSetupData = savedInstanceState.getParcelable(SetupData.EXTRA_SETUP_DATA);
- } else {
+ super.onCreate(savedInstanceState);
+
+ if (savedInstanceState == null) {
final Bundle b = getIntent().getExtras();
if (b != null) {
- mSetupData = b.getParcelable(SetupData.EXTRA_SETUP_DATA);
+ mSetupData = b.getParcelable(SetupDataFragment.EXTRA_SETUP_DATA);
+ if (mSetupData != null) {
+ final FragmentTransaction ft = getFragmentManager().beginTransaction();
+ ft.add(mSetupData, SETUP_DATA_FRAGMENT_TAG);
+ ft.commit();
+ }
}
- }
- if (mSetupData == null) {
- mSetupData = new SetupData();
+ } else {
+ mSetupData = (SetupDataFragment)getFragmentManager()
+ .findFragmentByTag(SETUP_DATA_FRAGMENT_TAG);
}
- super.onCreate(savedInstanceState);
+ if (mSetupData == null) {
+ mSetupData = new SetupDataFragment();
+ final FragmentTransaction ft = getFragmentManager().beginTransaction();
+ ft.add(mSetupData, SETUP_DATA_FRAGMENT_TAG);
+ ft.commit();
+ }
+
if (DEBUG_SETUP_FLOWS) {
LogUtils.d(Logging.LOG_TAG, "%s onCreate %s", getClass().getName(),
mSetupData.debugString());
@@ -52,18 +65,12 @@
}
@Override
- public void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- outState.putParcelable(SetupData.EXTRA_SETUP_DATA, mSetupData);
- }
-
- @Override
- public SetupData getSetupData() {
+ public SetupDataFragment getSetupData() {
return mSetupData;
}
@Override
- public void setSetupData(SetupData setupData) {
+ public void setSetupData(SetupDataFragment setupData) {
mSetupData = setupData;
}
}
diff --git a/src/com/android/email/activity/setup/AccountSetupBasics.java b/src/com/android/email/activity/setup/AccountSetupBasics.java
index 254f0d1..3ab2bea 100644
--- a/src/com/android/email/activity/setup/AccountSetupBasics.java
+++ b/src/com/android/email/activity/setup/AccountSetupBasics.java
@@ -126,13 +126,13 @@
public static void actionNewAccount(Activity fromActivity) {
final Intent i = new Intent(fromActivity, AccountSetupBasics.class);
- i.putExtra(EXTRA_FLOW_MODE, SetupData.FLOW_MODE_NORMAL);
+ i.putExtra(EXTRA_FLOW_MODE, SetupDataFragment.FLOW_MODE_NORMAL);
fromActivity.startActivity(i);
}
public static void actionNewAccountWithResult(Activity fromActivity) {
final Intent i = new ForwardingIntent(fromActivity, AccountSetupBasics.class);
- i.putExtra(EXTRA_FLOW_MODE, SetupData.FLOW_MODE_NO_ACCOUNTS);
+ i.putExtra(EXTRA_FLOW_MODE, SetupDataFragment.FLOW_MODE_NO_ACCOUNTS);
fromActivity.startActivity(i);
}
@@ -142,7 +142,7 @@
*/
public static Intent actionGetCreateAccountIntent(Context context, String accountManagerType) {
final Intent i = new Intent(context, AccountSetupBasics.class);
- i.putExtra(EXTRA_FLOW_MODE, SetupData.FLOW_MODE_ACCOUNT_MANAGER);
+ i.putExtra(EXTRA_FLOW_MODE, SetupDataFragment.FLOW_MODE_ACCOUNT_MANAGER);
i.putExtra(EXTRA_FLOW_ACCOUNT_TYPE, accountManagerType);
return i;
}
@@ -155,7 +155,8 @@
final Intent i= new ForwardingIntent(fromActivity, AccountSetupBasics.class);
// If we're in the "account flow" (from AccountManager), we want to return to the caller
// (in the settings app)
- i.putExtra(SetupData.EXTRA_SETUP_DATA, new SetupData(SetupData.FLOW_MODE_RETURN_TO_CALLER));
+ i.putExtra(SetupDataFragment.EXTRA_SETUP_DATA,
+ new SetupDataFragment(SetupDataFragment.FLOW_MODE_RETURN_TO_CALLER));
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
fromActivity.startActivity(i);
}
@@ -167,8 +168,8 @@
final Intent i= new ForwardingIntent(fromActivity, AccountSetupBasics.class);
// If we're in the "no accounts" flow, we want to return to the caller with a result
- i.putExtra(SetupData.EXTRA_SETUP_DATA,
- new SetupData(SetupData.FLOW_MODE_RETURN_NO_ACCOUNTS_RESULT));
+ i.putExtra(SetupDataFragment.EXTRA_SETUP_DATA,
+ new SetupDataFragment(SetupDataFragment.FLOW_MODE_RETURN_NO_ACCOUNTS_RESULT));
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
fromActivity.startActivity(i);
}
@@ -177,8 +178,8 @@
final Intent i = new Intent(fromActivity, AccountSetupBasics.class);
// If we're not in the "account flow" (from AccountManager), we want to show the
// message list for the new inbox
- i.putExtra(SetupData.EXTRA_SETUP_DATA,
- new SetupData(SetupData.FLOW_MODE_RETURN_TO_MESSAGE_LIST, account));
+ i.putExtra(SetupDataFragment.EXTRA_SETUP_DATA,
+ new SetupDataFragment(SetupDataFragment.FLOW_MODE_RETURN_TO_MESSAGE_LIST, account));
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
fromActivity.startActivity(i);
}
@@ -197,22 +198,22 @@
INTENT_CREATE_ACCOUNT = getString(R.string.intent_create_account);
}
if (INTENT_CREATE_ACCOUNT.equals(action)) {
- mSetupData = new SetupData(SetupData.FLOW_MODE_FORCE_CREATE);
+ mSetupData = new SetupDataFragment(SetupDataFragment.FLOW_MODE_FORCE_CREATE);
} else {
final int intentFlowMode =
- intent.getIntExtra(EXTRA_FLOW_MODE, SetupData.FLOW_MODE_UNSPECIFIED);
- if (intentFlowMode != SetupData.FLOW_MODE_UNSPECIFIED) {
- mSetupData = new SetupData(intentFlowMode,
+ intent.getIntExtra(EXTRA_FLOW_MODE, SetupDataFragment.FLOW_MODE_UNSPECIFIED);
+ if (intentFlowMode != SetupDataFragment.FLOW_MODE_UNSPECIFIED) {
+ mSetupData = new SetupDataFragment(intentFlowMode,
intent.getStringExtra(EXTRA_FLOW_ACCOUNT_TYPE));
}
}
final int flowMode = mSetupData.getFlowMode();
- if (flowMode == SetupData.FLOW_MODE_RETURN_TO_CALLER) {
+ if (flowMode == SetupDataFragment.FLOW_MODE_RETURN_TO_CALLER) {
// Return to the caller who initiated account creation
finish();
return;
- } else if (flowMode == SetupData.FLOW_MODE_RETURN_NO_ACCOUNTS_RESULT) {
+ } else if (flowMode == SetupDataFragment.FLOW_MODE_RETURN_NO_ACCOUNTS_RESULT) {
if (EmailContent.count(this, Account.CONTENT_URI) > 0) {
setResult(RESULT_OK);
} else {
@@ -220,7 +221,7 @@
}
finish();
return;
- } else if (flowMode == SetupData.FLOW_MODE_RETURN_TO_MESSAGE_LIST) {
+ } else if (flowMode == SetupDataFragment.FLOW_MODE_RETURN_TO_MESSAGE_LIST) {
final Account account = mSetupData.getAccount();
if (account != null && account.mId >= 0) {
// Show the message list for the new account
@@ -280,7 +281,7 @@
// Handle force account creation immediately (now that fragment is set up)
// This is never allowed in a normal user build and will exit immediately.
- if (mSetupData.getFlowMode() == SetupData.FLOW_MODE_FORCE_CREATE) {
+ if (mSetupData.getFlowMode() == SetupDataFragment.FLOW_MODE_FORCE_CREATE) {
if (!DEBUG_ALLOW_NON_TEST_HARNESS_CREATION &&
!ActivityManager.isRunningInTestHarness()) {
LogUtils.e(Logging.LOG_TAG,
@@ -540,7 +541,8 @@
if (mAutoSetup) {
final AccountCheckSettingsFragment checkerFragment =
AccountCheckSettingsFragment.newInstance(
- SetupData.CHECK_INCOMING | SetupData.CHECK_OUTGOING, null);
+ SetupDataFragment.CHECK_INCOMING | SetupDataFragment.CHECK_OUTGOING,
+ null);
final FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.add(checkerFragment, AccountCheckSettingsFragment.TAG);
transaction.addToBackStack("back");
@@ -681,7 +683,7 @@
* so we inhibit reporting any error back to the Account manager.
*/
@Override
- public void onCheckSettingsComplete(int result, SetupData setupData) {
+ public void onCheckSettingsComplete(int result, SetupDataFragment setupData) {
mSetupData = setupData;
if (result == AccountCheckSettingsFragment.CHECK_SETTINGS_OK) {
AccountSetupOptions.actionOptions(this, mSetupData);
@@ -695,7 +697,7 @@
* This is overridden only by AccountSetupIncoming
*/
@Override
- public void onAutoDiscoverComplete(int result, SetupData setupData) {
+ public void onAutoDiscoverComplete(int result, SetupDataFragment setupData) {
throw new IllegalStateException();
}
diff --git a/src/com/android/email/activity/setup/AccountSetupIncoming.java b/src/com/android/email/activity/setup/AccountSetupIncoming.java
index 36cad86..6b8c592 100644
--- a/src/com/android/email/activity/setup/AccountSetupIncoming.java
+++ b/src/com/android/email/activity/setup/AccountSetupIncoming.java
@@ -53,10 +53,10 @@
// Extras for AccountSetupIncoming intent
- public static void actionIncomingSettings(Activity fromActivity, SetupData setupData) {
+ public static void actionIncomingSettings(Activity fromActivity, SetupDataFragment setupData) {
final Intent intent = new Intent(fromActivity, AccountSetupIncoming.class);
// Add the additional information to the intent, in case the Email process is killed.
- intent.putExtra(SetupData.EXTRA_SETUP_DATA, setupData);
+ intent.putExtra(SetupDataFragment.EXTRA_SETUP_DATA, setupData);
fromActivity.startActivity(intent);
}
@@ -141,11 +141,11 @@
final String username = account.mHostAuthRecv.mLogin;
final String password = account.mHostAuthRecv.mPassword;
if (username != null && password != null) {
- onProceedNext(SetupData.CHECK_AUTODISCOVER, mFragment);
+ onProceedNext(SetupDataFragment.CHECK_AUTODISCOVER, mFragment);
}
}
- public void onAutoDiscoverComplete(int result, SetupData setupData) {
+ public void onAutoDiscoverComplete(int result, SetupDataFragment setupData) {
// If authentication failed, exit immediately (to re-enter credentials)
mSetupData = setupData;
if (result == AccountCheckSettingsFragment.AUTODISCOVER_AUTHENTICATION) {
@@ -190,7 +190,7 @@
* If the checked settings are OK, proceed to outgoing settings screen
*/
@Override
- public void onCheckSettingsComplete(int result, SetupData setupData) {
+ public void onCheckSettingsComplete(int result, SetupDataFragment setupData) {
mSetupData = setupData;
if (result == AccountCheckSettingsFragment.CHECK_SETTINGS_OK) {
if (mServiceInfo.usesSmtp) {
diff --git a/src/com/android/email/activity/setup/AccountSetupIncomingFragment.java b/src/com/android/email/activity/setup/AccountSetupIncomingFragment.java
index d14bb04..817f6d0 100644
--- a/src/com/android/email/activity/setup/AccountSetupIncomingFragment.java
+++ b/src/com/android/email/activity/setup/AccountSetupIncomingFragment.java
@@ -187,7 +187,8 @@
mClientCertificateSelector.setHostActivity(this);
final Context context = getActivity();
- final SetupData.SetupDataContainer container = (SetupData.SetupDataContainer) context;
+ final SetupDataFragment.SetupDataContainer container =
+ (SetupDataFragment.SetupDataContainer) context;
mSetupData = container.getSetupData();
final HostAuth recvAuth = mSetupData.getAccount().mHostAuthRecv;
@@ -566,7 +567,7 @@
}
recvAuth.mClientCertAlias = mClientCertificateSelector.getCertificate();
- mCallback.onProceedNext(SetupData.CHECK_INCOMING, this);
+ mCallback.onProceedNext(SetupDataFragment.CHECK_INCOMING, this);
clearButtonBounce();
}
@@ -590,7 +591,7 @@
* Implements AccountCheckSettingsFragment.Callbacks
*/
@Override
- public void onAutoDiscoverComplete(int result, SetupData setupData) {
+ public void onAutoDiscoverComplete(int result, SetupDataFragment setupData) {
mSetupData = setupData;
final AccountSetupIncoming activity = (AccountSetupIncoming) getActivity();
activity.onAutoDiscoverComplete(result, setupData);
diff --git a/src/com/android/email/activity/setup/AccountSetupNames.java b/src/com/android/email/activity/setup/AccountSetupNames.java
index b901fec..b7c6476 100644
--- a/src/com/android/email/activity/setup/AccountSetupNames.java
+++ b/src/com/android/email/activity/setup/AccountSetupNames.java
@@ -59,9 +59,9 @@
private boolean mRequiresName = true;
private boolean mIsCompleting = false;
- public static void actionSetNames(Activity fromActivity, SetupData setupData) {
+ public static void actionSetNames(Activity fromActivity, SetupDataFragment setupData) {
ForwardingIntent intent = new ForwardingIntent(fromActivity, AccountSetupNames.class);
- intent.putExtra(SetupData.EXTRA_SETUP_DATA, setupData);
+ intent.putExtra(SetupDataFragment.EXTRA_SETUP_DATA, setupData);
fromActivity.startActivity(intent);
}
@@ -108,8 +108,8 @@
final int flowMode = mSetupData.getFlowMode();
- if (flowMode != SetupData.FLOW_MODE_FORCE_CREATE
- && flowMode != SetupData.FLOW_MODE_EDIT) {
+ if (flowMode != SetupDataFragment.FLOW_MODE_FORCE_CREATE
+ && flowMode != SetupDataFragment.FLOW_MODE_EDIT) {
final String accountEmail = account.mEmailAddress;
mDescription.setText(accountEmail);
@@ -127,8 +127,8 @@
} else {
if (account.getSenderName() != null) {
mName.setText(account.getSenderName());
- } else if (flowMode != SetupData.FLOW_MODE_FORCE_CREATE
- && flowMode != SetupData.FLOW_MODE_EDIT) {
+ } else if (flowMode != SetupDataFragment.FLOW_MODE_FORCE_CREATE
+ && flowMode != SetupDataFragment.FLOW_MODE_EDIT) {
// Attempt to prefill the name field from the profile if we don't have it,
prefillNameFromProfile();
}
@@ -138,7 +138,7 @@
validateFields();
// Proceed immediately if in account creation mode
- if (flowMode == SetupData.FLOW_MODE_FORCE_CREATE) {
+ if (flowMode == SetupDataFragment.FLOW_MODE_FORCE_CREATE) {
onNext();
}
}
@@ -189,9 +189,9 @@
}
private void finishActivity() {
- if (mSetupData.getFlowMode() == SetupData.FLOW_MODE_NO_ACCOUNTS) {
+ if (mSetupData.getFlowMode() == SetupDataFragment.FLOW_MODE_NO_ACCOUNTS) {
AccountSetupBasics.actionAccountCreateFinishedWithResult(this);
- } else if (mSetupData.getFlowMode() != SetupData.FLOW_MODE_NORMAL) {
+ } else if (mSetupData.getFlowMode() != SetupDataFragment.FLOW_MODE_NORMAL) {
AccountSetupBasics.actionAccountCreateFinishedAccountFlow(this);
} else {
final Account account = mSetupData.getAccount();
diff --git a/src/com/android/email/activity/setup/AccountSetupOptions.java b/src/com/android/email/activity/setup/AccountSetupOptions.java
index faf63ce..5c26ad2 100644
--- a/src/com/android/email/activity/setup/AccountSetupOptions.java
+++ b/src/com/android/email/activity/setup/AccountSetupOptions.java
@@ -76,9 +76,9 @@
/** Default sync window for new EAS accounts */
private static final int SYNC_WINDOW_EAS_DEFAULT = SyncWindow.SYNC_WINDOW_1_WEEK;
- public static void actionOptions(Activity fromActivity, SetupData setupData) {
+ public static void actionOptions(Activity fromActivity, SetupDataFragment setupData) {
final Intent intent = new ForwardingIntent(fromActivity, AccountSetupOptions.class);
- intent.putExtra(SetupData.EXTRA_SETUP_DATA, setupData);
+ intent.putExtra(SetupDataFragment.EXTRA_SETUP_DATA, setupData);
fromActivity.startActivity(intent);
}
@@ -149,7 +149,7 @@
if (mIsProcessing) {
// We are already processing, so just show the dialog until we finish
showCreateAccountDialog();
- } else if (mSetupData.getFlowMode() == SetupData.FLOW_MODE_FORCE_CREATE) {
+ } else if (mSetupData.getFlowMode() == SetupDataFragment.FLOW_MODE_FORCE_CREATE) {
// If we are just visiting here to fill in details, exit immediately
onDone();
}
diff --git a/src/com/android/email/activity/setup/AccountSetupOutgoing.java b/src/com/android/email/activity/setup/AccountSetupOutgoing.java
index 52bfdf2..c7570cf 100644
--- a/src/com/android/email/activity/setup/AccountSetupOutgoing.java
+++ b/src/com/android/email/activity/setup/AccountSetupOutgoing.java
@@ -42,9 +42,9 @@
private Button mNextButton;
/* package */ boolean mNextButtonEnabled;
- public static void actionOutgoingSettings(Activity fromActivity, SetupData setupData) {
+ public static void actionOutgoingSettings(Activity fromActivity, SetupDataFragment setupData) {
Intent intent = new Intent(fromActivity, AccountSetupOutgoing.class);
- intent.putExtra(SetupData.EXTRA_SETUP_DATA, setupData);
+ intent.putExtra(SetupDataFragment.EXTRA_SETUP_DATA, setupData);
fromActivity.startActivity(intent);
}
@@ -110,7 +110,7 @@
* If the checked settings are OK, proceed to options screen
*/
@Override
- public void onCheckSettingsComplete(int result, SetupData setupData) {
+ public void onCheckSettingsComplete(int result, SetupDataFragment setupData) {
mSetupData = setupData;
if (result == AccountCheckSettingsFragment.CHECK_SETTINGS_OK) {
AccountSetupOptions.actionOptions(this, mSetupData);
diff --git a/src/com/android/email/activity/setup/AccountSetupOutgoingFragment.java b/src/com/android/email/activity/setup/AccountSetupOutgoingFragment.java
index a64f0ab..a8e7717 100644
--- a/src/com/android/email/activity/setup/AccountSetupOutgoingFragment.java
+++ b/src/com/android/email/activity/setup/AccountSetupOutgoingFragment.java
@@ -387,7 +387,7 @@
sendAuth.setConnection(mBaseScheme, serverAddress, serverPort, securityType);
sendAuth.mDomain = null;
- mCallback.onProceedNext(SetupData.CHECK_OUTGOING, this);
+ mCallback.onProceedNext(SetupDataFragment.CHECK_OUTGOING, this);
clearButtonBounce();
}
}
diff --git a/src/com/android/email/activity/setup/AccountSetupType.java b/src/com/android/email/activity/setup/AccountSetupType.java
index c40dcb5..1b2a7ad 100644
--- a/src/com/android/email/activity/setup/AccountSetupType.java
+++ b/src/com/android/email/activity/setup/AccountSetupType.java
@@ -47,9 +47,9 @@
private boolean mButtonPressed;
- public static void actionSelectAccountType(Activity fromActivity, SetupData setupData) {
+ public static void actionSelectAccountType(Activity fromActivity, SetupDataFragment setupData) {
final Intent i = new ForwardingIntent(fromActivity, AccountSetupType.class);
- i.putExtra(SetupData.EXTRA_SETUP_DATA, setupData);
+ i.putExtra(SetupDataFragment.EXTRA_SETUP_DATA, setupData);
fromActivity.startActivity(i);
}
@@ -60,7 +60,7 @@
final String accountType = mSetupData.getFlowAccountType();
// If we're in account setup flow mode, see if there's just one protocol that matches
- if (mSetupData.getFlowMode() == SetupData.FLOW_MODE_ACCOUNT_MANAGER) {
+ if (mSetupData.getFlowMode() == SetupDataFragment.FLOW_MODE_ACCOUNT_MANAGER) {
int matches = 0;
String protocol = null;
for (EmailServiceInfo info: EmailServiceUtils.getServiceInfoList(this)) {
@@ -126,10 +126,11 @@
final HostAuth recvAuth = account.getOrCreateHostAuthRecv(this);
final EmailServiceInfo info = EmailServiceUtils.getServiceInfo(this, recvAuth.mProtocol);
if (info.usesAutodiscover) {
- mSetupData.setCheckSettingsMode(SetupData.CHECK_AUTODISCOVER);
+ mSetupData.setCheckSettingsMode(SetupDataFragment.CHECK_AUTODISCOVER);
} else {
mSetupData.setCheckSettingsMode(
- SetupData.CHECK_INCOMING | (info.usesSmtp ? SetupData.CHECK_OUTGOING : 0));
+ SetupDataFragment.CHECK_INCOMING |
+ (info.usesSmtp ? SetupDataFragment.CHECK_OUTGOING : 0));
}
recvAuth.mLogin = recvAuth.mLogin + "@" + recvAuth.mAddress;
AccountSetupBasics.setDefaultsForProtocol(this, account);
diff --git a/src/com/android/email/activity/setup/SetupData.java b/src/com/android/email/activity/setup/SetupData.java
deleted file mode 100644
index fc680db..0000000
--- a/src/com/android/email/activity/setup/SetupData.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.email.activity.setup;
-
-import android.accounts.AccountAuthenticatorResponse;
-import android.os.Bundle;
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import com.android.emailcommon.provider.Account;
-import com.android.emailcommon.provider.Policy;
-
-public class SetupData implements Parcelable {
- // The "extra" name for the Bundle saved with SetupData
- public static final String EXTRA_SETUP_DATA = "com.android.email.setupdata";
-
- // NORMAL is the standard entry from the Email app; EAS and POP_IMAP are used when entering via
- // Settings -> Accounts
- public static final int FLOW_MODE_UNSPECIFIED = -1;
- public static final int FLOW_MODE_NORMAL = 0;
- public static final int FLOW_MODE_ACCOUNT_MANAGER = 1;
- public static final int FLOW_MODE_EDIT = 3;
- public static final int FLOW_MODE_FORCE_CREATE = 4;
- // The following two modes are used to "pop the stack" and return from the setup flow. We
- // either return to the caller (if we're in an account type flow) or go to the message list
- public static final int FLOW_MODE_RETURN_TO_CALLER = 5;
- public static final int FLOW_MODE_RETURN_TO_MESSAGE_LIST = 6;
- public static final int FLOW_MODE_RETURN_NO_ACCOUNTS_RESULT = 7;
- public static final int FLOW_MODE_NO_ACCOUNTS = 8;
-
- // Mode bits for AccountSetupCheckSettings, indicating the type of check requested
- public static final int CHECK_INCOMING = 1;
- public static final int CHECK_OUTGOING = 2;
- public static final int CHECK_AUTODISCOVER = 4;
-
- // All access will be through getters/setters
- private int mFlowMode = FLOW_MODE_NORMAL;
- private String mFlowAccountType;
- private Account mAccount;
- private String mUsername;
- private String mPassword;
- private int mCheckSettingsMode = 0;
- private boolean mAllowAutodiscover = true;
- private Policy mPolicy;
- private AccountAuthenticatorResponse mAccountAuthenticatorResponse = null;
-
- public interface SetupDataContainer {
- public SetupData getSetupData();
- public void setSetupData(SetupData setupData);
- }
-
- public SetupData() {
- mPolicy = null;
- mAllowAutodiscover = true;
- mCheckSettingsMode = 0;
- mAccount = new Account();
- mUsername = null;
- mPassword = null;
- mAccountAuthenticatorResponse = null;
- }
-
- public SetupData(int flowMode) {
- this();
- mFlowMode = flowMode;
- }
-
- public SetupData(int flowMode, String accountType) {
- this(flowMode);
- mFlowAccountType = accountType;
- }
-
- public SetupData(int flowMode, Account account) {
- this(flowMode);
- mAccount = account;
- }
-
- public int getFlowMode() {
- return mFlowMode;
- }
-
- public String getFlowAccountType() {
- return mFlowAccountType;
- }
-
- public void setFlowMode(int flowMode) {
- mFlowMode = flowMode;
- }
-
- public Account getAccount() {
- return mAccount;
- }
-
- public void setAccount(Account account) {
- mAccount = account;
- }
-
- public String getUsername() {
- return mUsername;
- }
-
- public void setUsername(String username) {
- mUsername = username;
- }
-
- public String getPassword() {
- return mPassword;
- }
-
- public void setPassword(String password) {
- mPassword = password;
- }
-
- public void setCheckSettingsMode(int checkSettingsMode) {
- mCheckSettingsMode = checkSettingsMode;
- }
-
- public boolean isCheckIncoming() {
- return (mCheckSettingsMode & CHECK_INCOMING) != 0;
- }
-
- public boolean isCheckOutgoing() {
- return (mCheckSettingsMode & CHECK_OUTGOING) != 0;
- }
- public boolean isCheckAutodiscover() {
- return (mCheckSettingsMode & CHECK_AUTODISCOVER) != 0;
- }
- public boolean isAllowAutodiscover() {
- return mAllowAutodiscover;
- }
-
- public void setAllowAutodiscover(boolean mAllowAutodiscover) {
- mAllowAutodiscover = mAllowAutodiscover;
- }
-
- public Policy getPolicy() {
- return mPolicy;
- }
-
- public void setPolicy(Policy policy) {
- mPolicy = policy;
- mAccount.mPolicy = policy;
- }
-
- public AccountAuthenticatorResponse getAccountAuthenticatorResponse() {
- return mAccountAuthenticatorResponse;
- }
-
- public void setAccountAuthenticatorResponse(AccountAuthenticatorResponse response) {
- mAccountAuthenticatorResponse = response;
- }
-
- // Parcelable methods
- @Override
- public int describeContents() {
- return 0;
- }
-
- public static final Parcelable.Creator<SetupData> CREATOR =
- new Parcelable.Creator<SetupData>() {
- @Override
- public SetupData createFromParcel(Parcel in) {
- return new SetupData(in);
- }
-
- @Override
- public SetupData[] newArray(int size) {
- return new SetupData[size];
- }
- };
-
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeInt(mFlowMode);
- dest.writeParcelable(mAccount, 0);
- dest.writeString(mUsername);
- dest.writeString(mPassword);
- dest.writeInt(mCheckSettingsMode);
- dest.writeInt(mAllowAutodiscover ? 1 : 0);
- dest.writeParcelable(mPolicy, 0);
- dest.writeParcelable(mAccountAuthenticatorResponse, 0);
- }
-
- public SetupData(Parcel in) {
- final ClassLoader loader = getClass().getClassLoader();
- mFlowMode = in.readInt();
- mAccount = in.readParcelable(loader);
- mUsername = in.readString();
- mPassword = in.readString();
- mCheckSettingsMode = in.readInt();
- mAllowAutodiscover = in.readInt() == 1;
- mPolicy = in.readParcelable(loader);
- mAccountAuthenticatorResponse = in.readParcelable(loader);
- }
-
- public String debugString() {
- final StringBuilder sb = new StringBuilder("SetupData");
- sb.append(":acct=");
- sb.append(mAccount == null ? "none" :mAccount.mId);
- if (mUsername != null) {
- sb.append(":user=");
- sb.append(mUsername);
- }
- if (mPassword != null) {
- sb.append(":pass=");
- sb.append(mPassword);
- }
- sb.append(":a/d=");
- sb.append(mAllowAutodiscover);
- sb.append(":check=");
- if (isCheckIncoming()) sb.append("in+");
- if (isCheckOutgoing()) sb.append("out+");
- if (isCheckAutodiscover()) sb.append("a/d");
- sb.append(":policy=");
- sb.append(mPolicy == null ? "none" : "exists");
- return sb.toString();
- }
-}
diff --git a/src/com/android/email/activity/setup/SetupDataFragment.java b/src/com/android/email/activity/setup/SetupDataFragment.java
new file mode 100644
index 0000000..9dc2839
--- /dev/null
+++ b/src/com/android/email/activity/setup/SetupDataFragment.java
@@ -0,0 +1,265 @@
+package com.android.email.activity.setup;
+
+import android.accounts.AccountAuthenticatorResponse;
+import android.app.Fragment;
+import android.os.Bundle;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import com.android.emailcommon.provider.Account;
+import com.android.emailcommon.provider.Policy;
+
+/**
+ * Headless fragment to hold setup data for the account setup or settings flows
+ */
+public class SetupDataFragment extends Fragment implements Parcelable {
+ // The "extra" name for the Bundle saved with SetupData
+ public static final String EXTRA_SETUP_DATA = "com.android.email.setupdata";
+
+ // NORMAL is the standard entry from the Email app; EAS and POP_IMAP are used when entering via
+ // Settings -> Accounts
+ public static final int FLOW_MODE_UNSPECIFIED = -1;
+ public static final int FLOW_MODE_NORMAL = 0;
+ public static final int FLOW_MODE_ACCOUNT_MANAGER = 1;
+ public static final int FLOW_MODE_EDIT = 3;
+ public static final int FLOW_MODE_FORCE_CREATE = 4;
+ // The following two modes are used to "pop the stack" and return from the setup flow. We
+ // either return to the caller (if we're in an account type flow) or go to the message list
+ public static final int FLOW_MODE_RETURN_TO_CALLER = 5;
+ public static final int FLOW_MODE_RETURN_TO_MESSAGE_LIST = 6;
+ public static final int FLOW_MODE_RETURN_NO_ACCOUNTS_RESULT = 7;
+ public static final int FLOW_MODE_NO_ACCOUNTS = 8;
+
+ // Mode bits for AccountSetupCheckSettings, indicating the type of check requested
+ public static final int CHECK_INCOMING = 1;
+ public static final int CHECK_OUTGOING = 2;
+ public static final int CHECK_AUTODISCOVER = 4;
+
+ private static final String SAVESTATE_FLOWMODE = "flowMode";
+ private static final String SAVESTATE_FLOWACCOUNTTYPE = "flowAccountType";
+ private static final String SAVESTATE_ACCOUNT = "account";
+ private static final String SAVESTATE_USERNAME = "username";
+ private static final String SAVESTATE_PASSWORD = "password";
+ private static final String SAVESTATE_CHECKSETTINGSMODE = "checkSettingsMode";
+ private static final String SAVESTATE_ALLOWAUTODISCOVER = "allowAutoDiscover";
+ private static final String SAVESTATE_POLICY = "policy";
+ private static final String SAVESTATE_ACCOUNTAUTHENTICATORRESPONSE =
+ "accountAuthenticatorResponse";
+
+ // All access will be through getters/setters
+ private int mFlowMode = FLOW_MODE_NORMAL;
+ private String mFlowAccountType;
+ private Account mAccount;
+ private String mUsername;
+ private String mPassword;
+ private int mCheckSettingsMode = 0;
+ private boolean mAllowAutodiscover = true;
+ private Policy mPolicy;
+ private AccountAuthenticatorResponse mAccountAuthenticatorResponse = null;
+
+ public interface SetupDataContainer {
+ public SetupDataFragment getSetupData();
+ public void setSetupData(SetupDataFragment setupData);
+ }
+
+ public SetupDataFragment() {
+ mPolicy = null;
+ mAllowAutodiscover = true;
+ mCheckSettingsMode = 0;
+ mAccount = new Account();
+ mUsername = null;
+ mPassword = null;
+ mAccountAuthenticatorResponse = null;
+ }
+
+ public SetupDataFragment(int flowMode) {
+ this();
+ mFlowMode = flowMode;
+ }
+
+ public SetupDataFragment(int flowMode, String accountType) {
+ this(flowMode);
+ mFlowAccountType = accountType;
+ }
+
+ public SetupDataFragment(int flowMode, Account account) {
+ this(flowMode);
+ mAccount = account;
+ }
+
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putInt(SAVESTATE_FLOWMODE, mFlowMode);
+ outState.putString(SAVESTATE_FLOWACCOUNTTYPE, mFlowAccountType);
+ outState.putParcelable(SAVESTATE_ACCOUNT, mAccount);
+ outState.putString(SAVESTATE_USERNAME, mUsername);
+ outState.putString(SAVESTATE_PASSWORD, mPassword);
+ outState.putInt(SAVESTATE_CHECKSETTINGSMODE, mCheckSettingsMode);
+ outState.putBoolean(SAVESTATE_ALLOWAUTODISCOVER, mAllowAutodiscover);
+ outState.putParcelable(SAVESTATE_POLICY, mPolicy);
+ outState.putParcelable(SAVESTATE_ACCOUNTAUTHENTICATORRESPONSE,
+ mAccountAuthenticatorResponse);
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ if (savedInstanceState != null) {
+ mFlowMode = savedInstanceState.getInt(SAVESTATE_FLOWMODE);
+ mFlowAccountType = savedInstanceState.getString(SAVESTATE_FLOWACCOUNTTYPE);
+ mAccount = savedInstanceState.getParcelable(SAVESTATE_ACCOUNT);
+ mUsername = savedInstanceState.getString(SAVESTATE_USERNAME);
+ mPassword = savedInstanceState.getString(SAVESTATE_PASSWORD);
+ mCheckSettingsMode = savedInstanceState.getInt(SAVESTATE_CHECKSETTINGSMODE);
+ mAllowAutodiscover = savedInstanceState.getBoolean(SAVESTATE_ALLOWAUTODISCOVER);
+ mPolicy = savedInstanceState.getParcelable(SAVESTATE_POLICY);
+ mAccountAuthenticatorResponse =
+ savedInstanceState.getParcelable(SAVESTATE_ACCOUNTAUTHENTICATORRESPONSE);
+ }
+ setRetainInstance(true);
+ }
+
+ // Getters and setters
+ public int getFlowMode() {
+ return mFlowMode;
+ }
+
+ public void setFlowMode(int flowMode) {
+ mFlowMode = flowMode;
+ }
+
+ public String getFlowAccountType() {
+ return mFlowAccountType;
+ }
+
+ public void setFlowAccountType(String flowAccountType) {
+ mFlowAccountType = flowAccountType;
+ }
+
+ public Account getAccount() {
+ return mAccount;
+ }
+
+ public void setAccount(Account account) {
+ mAccount = account;
+ }
+
+ public String getUsername() {
+ return mUsername;
+ }
+
+ public void setUsername(String username) {
+ mUsername = username;
+ }
+
+ public String getPassword() {
+ return mPassword;
+ }
+
+ public void setPassword(String password) {
+ mPassword = password;
+ }
+
+ public int getCheckSettingsMode() {
+ return mCheckSettingsMode;
+ }
+
+ public void setCheckSettingsMode(int checkSettingsMode) {
+ mCheckSettingsMode = checkSettingsMode;
+ }
+
+ public boolean isAllowAutodiscover() {
+ return mAllowAutodiscover;
+ }
+
+ public void setAllowAutodiscover(boolean allowAutodiscover) {
+ mAllowAutodiscover = allowAutodiscover;
+ }
+
+ public Policy getPolicy() {
+ return mPolicy;
+ }
+
+ public void setPolicy(Policy policy) {
+ mPolicy = policy;
+ }
+
+ public AccountAuthenticatorResponse getAccountAuthenticatorResponse() {
+ return mAccountAuthenticatorResponse;
+ }
+
+ public void setAccountAuthenticatorResponse(
+ AccountAuthenticatorResponse accountAuthenticatorResponse) {
+ mAccountAuthenticatorResponse = accountAuthenticatorResponse;
+ }
+
+ // Parcelable methods
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ public static final Parcelable.Creator<SetupDataFragment> CREATOR =
+ new Parcelable.Creator<SetupDataFragment>() {
+ @Override
+ public SetupDataFragment createFromParcel(Parcel in) {
+ return new SetupDataFragment(in);
+ }
+
+ @Override
+ public SetupDataFragment[] newArray(int size) {
+ return new SetupDataFragment[size];
+ }
+ };
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeInt(mFlowMode);
+ dest.writeString(mFlowAccountType);
+ dest.writeParcelable(mAccount, 0);
+ dest.writeString(mUsername);
+ dest.writeString(mPassword);
+ dest.writeInt(mCheckSettingsMode);
+ dest.writeInt(mAllowAutodiscover ? 1 : 0);
+ dest.writeParcelable(mPolicy, 0);
+ dest.writeParcelable(mAccountAuthenticatorResponse, 0);
+ }
+
+ public SetupDataFragment(Parcel in) {
+ final ClassLoader loader = getClass().getClassLoader();
+ mFlowMode = in.readInt();
+ mFlowAccountType = in.readString();
+ mAccount = in.readParcelable(loader);
+ mUsername = in.readString();
+ mPassword = in.readString();
+ mCheckSettingsMode = in.readInt();
+ mAllowAutodiscover = in.readInt() == 1;
+ mPolicy = in.readParcelable(loader);
+ mAccountAuthenticatorResponse = in.readParcelable(loader);
+ }
+
+ public String debugString() {
+ final StringBuilder sb = new StringBuilder("SetupData");
+ sb.append(":acct=");
+ sb.append(mAccount == null ? "none" :mAccount.mId);
+ if (mUsername != null) {
+ sb.append(":user=");
+ sb.append(mUsername);
+ }
+ if (mPassword != null) {
+ sb.append(":pass=");
+ sb.append(mPassword);
+ }
+ sb.append(":a/d=");
+ sb.append(mAllowAutodiscover);
+ sb.append(":check=");
+ if ((mCheckSettingsMode & CHECK_INCOMING) != 0) sb.append("in+");
+ if ((mCheckSettingsMode & CHECK_OUTGOING) != 0) sb.append("out+");
+ if ((mCheckSettingsMode & CHECK_AUTODISCOVER) != 0) sb.append("a/d");
+ sb.append(":policy=");
+ sb.append(mPolicy == null ? "none" : "exists");
+ return sb.toString();
+ }
+
+}
diff --git a/tests/src/com/android/email/activity/setup/AccountSetupIncomingTests.java b/tests/src/com/android/email/activity/setup/AccountSetupIncomingTests.java
index fdcc630..9cd77af 100644
--- a/tests/src/com/android/email/activity/setup/AccountSetupIncomingTests.java
+++ b/tests/src/com/android/email/activity/setup/AccountSetupIncomingTests.java
@@ -27,7 +27,7 @@
import com.android.email.R;
import com.android.email.activity.setup.AccountSetupIncoming;
import com.android.email.activity.setup.AccountSetupIncomingFragment;
-import com.android.email.activity.setup.SetupData;
+import com.android.email.activity.setup.SetupDataFragment;
import com.android.emailcommon.provider.Account;
import com.android.emailcommon.provider.HostAuth;
@@ -190,18 +190,15 @@
*/
private Intent getTestIntent(String storeUriString)
throws URISyntaxException {
- Account account = new Account();
- Context context = getInstrumentation().getTargetContext();
- HostAuth auth = account.getOrCreateHostAuthRecv(context);
+ final Account account = new Account();
+ final Context context = getInstrumentation().getTargetContext();
+ final HostAuth auth = account.getOrCreateHostAuthRecv(context);
HostAuth.setHostAuthFromString(auth, storeUriString);
-
- Bundle extras = new Bundle();
- extras.putParcelable(SetupData.EXTRA_SETUP_DATA, new SetupData(SetupData.FLOW_MODE_NORMAL, account));
-
- Intent intent = new Intent(Intent.ACTION_MAIN);
- intent.putExtras(extras);
-
- return intent;
+ final SetupDataFragment setupDataFragment =
+ new SetupDataFragment(SetupDataFragment.FLOW_MODE_NORMAL, account);
+ final Intent i = new Intent(Intent.ACTION_MAIN);
+ i.putExtra(SetupDataFragment.EXTRA_SETUP_DATA, setupDataFragment);
+ return i;
}
}
diff --git a/tests/src/com/android/email/activity/setup/AccountSetupOptionsTests.java b/tests/src/com/android/email/activity/setup/AccountSetupOptionsTests.java
index 745c19f..cd27d44 100644
--- a/tests/src/com/android/email/activity/setup/AccountSetupOptionsTests.java
+++ b/tests/src/com/android/email/activity/setup/AccountSetupOptionsTests.java
@@ -164,13 +164,16 @@
*/
private Intent getTestIntent(String name, String storeUri)
throws URISyntaxException {
- Account account = new Account();
+ final Account account = new Account();
account.setSenderName(name);
- Context context = getInstrumentation().getTargetContext();
- HostAuth auth = account.getOrCreateHostAuthRecv(context);
+ final Context context = getInstrumentation().getTargetContext();
+ final HostAuth auth = account.getOrCreateHostAuthRecv(context);
HostAuth.setHostAuthFromString(auth, storeUri);
- SetupData setupData = new SetupData(SetupData.FLOW_MODE_NORMAL, account);
- return new Intent(Intent.ACTION_MAIN);
+ final SetupDataFragment setupDataFragment =
+ new SetupDataFragment(SetupDataFragment.FLOW_MODE_NORMAL, account);
+ final Intent i = new Intent(Intent.ACTION_MAIN);
+ i.putExtra(SetupDataFragment.EXTRA_SETUP_DATA, setupDataFragment);
+ return i;
}
}
diff --git a/tests/src/com/android/email/activity/setup/AccountSetupOutgoingTests.java b/tests/src/com/android/email/activity/setup/AccountSetupOutgoingTests.java
index e4f6b3a..985e8a4 100644
--- a/tests/src/com/android/email/activity/setup/AccountSetupOutgoingTests.java
+++ b/tests/src/com/android/email/activity/setup/AccountSetupOutgoingTests.java
@@ -26,7 +26,7 @@
import com.android.email.R;
import com.android.email.activity.setup.AccountSetupOutgoing;
import com.android.email.activity.setup.AccountSetupOutgoingFragment;
-import com.android.email.activity.setup.SetupData;
+import com.android.email.activity.setup.SetupDataFragment;
import com.android.emailcommon.provider.Account;
import com.android.emailcommon.provider.HostAuth;
@@ -185,13 +185,15 @@
*/
private Intent getTestIntent(String senderUriString)
throws URISyntaxException {
- Account account = new Account();
- Context context = getInstrumentation().getTargetContext();
- HostAuth auth = account.getOrCreateHostAuthSend(context);
+ final Account account = new Account();
+ final Context context = getInstrumentation().getTargetContext();
+ final HostAuth auth = account.getOrCreateHostAuthSend(context);
HostAuth.setHostAuthFromString(auth, senderUriString);
- // TODO: we need to do something with this SetupData, add it as an extra in the intent?
- SetupData setupData = new SetupData(SetupData.FLOW_MODE_NORMAL, account);
- return new Intent(Intent.ACTION_MAIN);
+ final SetupDataFragment setupDataFragment =
+ new SetupDataFragment(SetupDataFragment.FLOW_MODE_NORMAL, account);
+ final Intent i = new Intent(Intent.ACTION_MAIN);
+ i.putExtra(SetupDataFragment.EXTRA_SETUP_DATA, setupDataFragment);
+ return i;
}
}