1e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blankpackage com.android.email.activity.setup; 2e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 39c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantlerimport android.app.Fragment; 4064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantlerimport android.content.Context; 5e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blankimport android.os.Bundle; 6e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blankimport android.os.Parcel; 7e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blankimport android.os.Parcelable; 8e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 9064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantlerimport com.android.email.service.EmailServiceUtils; 10bb68c13afa630cae058eb40d3ce68644f3f3c8b9Paul Westbrookimport com.android.email.setup.AuthenticatorSetupIntentHelper; 11f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blankimport com.android.emailcommon.provider.Account; 12064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantlerimport com.android.emailcommon.provider.HostAuth; 13f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blankimport com.android.emailcommon.provider.Policy; 14f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank 159c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler/** 169c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler * Headless fragment to hold setup data for the account setup or settings flows 179c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler */ 189c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantlerpublic class SetupDataFragment extends Fragment implements Parcelable { 19e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // The "extra" name for the Bundle saved with SetupData 20e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public static final String EXTRA_SETUP_DATA = "com.android.email.setupdata"; 21e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 22e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // The following two modes are used to "pop the stack" and return from the setup flow. We 23e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // either return to the caller (if we're in an account type flow) or go to the message list 2476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler // TODO: figure out if we still care about these 25d685b469c73c3479c09301da2e65cd7c11fd4aceAndy Stadler public static final int FLOW_MODE_RETURN_TO_CALLER = 5; 26d685b469c73c3479c09301da2e65cd7c11fd4aceAndy Stadler public static final int FLOW_MODE_RETURN_TO_MESSAGE_LIST = 6; 27f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank public static final int FLOW_MODE_RETURN_NO_ACCOUNTS_RESULT = 7; 28e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 29e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // Mode bits for AccountSetupCheckSettings, indicating the type of check requested 30e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public static final int CHECK_INCOMING = 1; 31e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public static final int CHECK_OUTGOING = 2; 32e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public static final int CHECK_AUTODISCOVER = 4; 33e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 3476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private static final String SAVESTATE_FLOWMODE = "SetupDataFragment.flowMode"; 3576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private static final String SAVESTATE_ACCOUNT = "SetupDataFragment.account"; 3676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private static final String SAVESTATE_EMAIL = "SetupDataFragment.email"; 3776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private static final String SAVESTATE_CREDENTIAL = "SetupDataFragment.credential"; 3876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private static final String SAVESTATE_INCOMING_LOADED = "SetupDataFragment.incomingLoaded"; 3976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private static final String SAVESTATE_OUTGOING_LOADED = "SetupDataFragment.outgoingLoaded"; 4076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private static final String SAVESTATE_POLICY = "SetupDataFragment.policy"; 41064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler private static final String SAVESTATE_INCOMING_PROTOCOL = "SetupDataFragment.incomingProtocol"; 4253b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler private static final String SAVESTATE_AM_PROTOCOL = "SetupDataFragment.amProtocol"; 439c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler 44e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // All access will be through getters/setters 45bb68c13afa630cae058eb40d3ce68644f3f3c8b9Paul Westbrook private int mFlowMode = AuthenticatorSetupIntentHelper.FLOW_MODE_NORMAL; 46e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank private Account mAccount; 4776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private String mEmail; 4876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private Bundle mCredentialResults; 4976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler // These are used to track whether we've preloaded the login credentials into incoming/outgoing 5076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler // settings. Set them to 'true' by default, and false when we change the credentials or email 5176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private boolean mIncomingCredLoaded = true; 5276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private boolean mOutgoingCredLoaded = true; 5376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler // This is accessed off-thread in AccountCheckSettingsFragment 5476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private volatile Policy mPolicy; 55064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler // Cache incoming protocol and service info here 56064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler private EmailServiceUtils.EmailServiceInfo mIncomingServiceInfo; 57064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler private String mIncomingProtocol; 5853b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler // Protocol the user chose in the account manager "Add an account" screen 5953b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler private String mAmProtocol; 60e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 6126cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler public interface SetupDataContainer { 629c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler public SetupDataFragment getSetupData(); 63e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 64e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 659c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler public SetupDataFragment() { 6626cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler mPolicy = null; 67994c282d804a635f783681ae314a6b4b244b476eTony Mantler setAccount(new Account()); 6876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mEmail = null; 6976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mCredentialResults = null; 70e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 71e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 729c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler @Override 739c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler public void onSaveInstanceState(Bundle outState) { 749c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler super.onSaveInstanceState(outState); 759c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler outState.putInt(SAVESTATE_FLOWMODE, mFlowMode); 769c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler outState.putParcelable(SAVESTATE_ACCOUNT, mAccount); 7776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler outState.putString(SAVESTATE_EMAIL, mEmail); 7876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler outState.putParcelable(SAVESTATE_CREDENTIAL, mCredentialResults); 7976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler outState.putBoolean(SAVESTATE_INCOMING_LOADED, mIncomingCredLoaded); 8076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler outState.putBoolean(SAVESTATE_OUTGOING_LOADED, mOutgoingCredLoaded); 819c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler outState.putParcelable(SAVESTATE_POLICY, mPolicy); 82064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler outState.putString(SAVESTATE_INCOMING_PROTOCOL, mIncomingProtocol); 8353b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler outState.putString(SAVESTATE_AM_PROTOCOL, mAmProtocol); 849c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler } 859c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler 869c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler @Override 879c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler public void onCreate(Bundle savedInstanceState) { 889c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler super.onCreate(savedInstanceState); 899c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler if (savedInstanceState != null) { 909c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler mFlowMode = savedInstanceState.getInt(SAVESTATE_FLOWMODE); 91994c282d804a635f783681ae314a6b4b244b476eTony Mantler setAccount((Account) savedInstanceState.getParcelable(SAVESTATE_ACCOUNT)); 9276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mEmail = savedInstanceState.getString(SAVESTATE_EMAIL); 9376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mCredentialResults = savedInstanceState.getParcelable(SAVESTATE_CREDENTIAL); 9476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mIncomingCredLoaded = savedInstanceState.getBoolean(SAVESTATE_INCOMING_LOADED); 9576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mOutgoingCredLoaded = savedInstanceState.getBoolean(SAVESTATE_OUTGOING_LOADED); 969c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler mPolicy = savedInstanceState.getParcelable(SAVESTATE_POLICY); 97064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler mIncomingProtocol = savedInstanceState.getString(SAVESTATE_INCOMING_PROTOCOL); 9853b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler mAmProtocol = savedInstanceState.getString(SAVESTATE_AM_PROTOCOL); 999c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler } 1009c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler setRetainInstance(true); 1019c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler } 1029c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler 1039c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler // Getters and setters 10426cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler public int getFlowMode() { 10526cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler return mFlowMode; 106e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 107e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 1089c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler public void setFlowMode(int flowMode) { 1099c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler mFlowMode = flowMode; 1109c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler } 1119c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler 11226cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler public Account getAccount() { 11326cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler return mAccount; 114e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 115e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 11626cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler public void setAccount(Account account) { 11726cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler mAccount = account; 118994c282d804a635f783681ae314a6b4b244b476eTony Mantler mAccount.setTemporary(true); 119e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 120e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 12176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public String getEmail() { 12276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler return mEmail; 123e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 124e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 12576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public void setEmail(String email) { 12676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mEmail = email; 12776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mAccount.mEmailAddress = email; 12876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mIncomingCredLoaded = false; 12976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mOutgoingCredLoaded = false; 130e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 131e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 13276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public Bundle getCredentialResults() { 13376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler return mCredentialResults; 134e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 135e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 13676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public void setCredentialResults(Bundle credentialResults) { 13776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mCredentialResults = credentialResults; 13876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mIncomingCredLoaded = false; 13976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mOutgoingCredLoaded = false; 140e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 141e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 14276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public boolean isIncomingCredLoaded() { 14376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler return mIncomingCredLoaded; 144e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 145e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 14676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public void setIncomingCredLoaded(boolean incomingCredLoaded) { 14776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mIncomingCredLoaded = incomingCredLoaded; 148e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 149e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 15076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public boolean isOutgoingCredLoaded() { 15176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler return mOutgoingCredLoaded; 152f020910461908681978a9e0f8f98b748853b0e39Andy Stadler } 153f020910461908681978a9e0f8f98b748853b0e39Andy Stadler 15476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public void setOutgoingCredLoaded(boolean outgoingCredLoaded) { 15576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mOutgoingCredLoaded = outgoingCredLoaded; 156f020910461908681978a9e0f8f98b748853b0e39Andy Stadler } 157f020910461908681978a9e0f8f98b748853b0e39Andy Stadler 15876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public synchronized Policy getPolicy() { 15926cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler return mPolicy; 16012a79eb4798093b7e8a276c4e96f07fd62e0933dMarc Blank } 16112a79eb4798093b7e8a276c4e96f07fd62e0933dMarc Blank 16276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public synchronized void setPolicy(Policy policy) { 16326cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler mPolicy = policy; 164e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 165e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 166064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler /** 167064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler * Retrieve the service info for the incoming protocol 168064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler * @param context For resolving the service info, and possibly loading the {@link HostAuth} 169064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler * @return service info object 170064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler */ 171064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler public EmailServiceUtils.EmailServiceInfo getIncomingServiceInfo(Context context) { 172064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler if (mIncomingServiceInfo == null) { 173064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler mIncomingServiceInfo = EmailServiceUtils.getServiceInfo(context, 174064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler getIncomingProtocol(context)); 175064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler } 176064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler return mIncomingServiceInfo; 177064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler } 178064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler 179064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler /** 180064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler * Retrieve the protocol as previously set in setIncomingProtocol, but don't attempt to look at 181064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler * {@link #mAccount#hostAuthRecv } 182064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler * @return Protocol string 183064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler */ 184064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler public String getIncomingProtocol() { 185064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler return mIncomingProtocol; 186064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler } 187064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler 188064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler /** 189064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler * Retrieve the protocol as previously set in setIncomingProtocol, or from 190064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler * {@link #mAccount#hostAuthRecv}. Try not to call this on the main thread if it's unlikely that 191064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler * the hostauth isn't already loaded. 192064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler * @param context context to possibly load the {@link HostAuth} from the provider 193064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler * @return Protocol string 194064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler */ 195064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler public String getIncomingProtocol(Context context) { 196064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler if (mIncomingProtocol != null) { 197064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler return mIncomingProtocol; 198064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler } 199064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler 200064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler final HostAuth recvAuth = mAccount.getOrCreateHostAuthRecv(context); 201064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler return recvAuth.mProtocol; 202064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler } 203064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler 204064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler public void setIncomingProtocol(final Context context, final String protocol) { 205064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler final HostAuth recvAuth = mAccount.getOrCreateHostAuthRecv(context); 206064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler recvAuth.setConnection(protocol, recvAuth.mAddress, recvAuth.mPort, recvAuth.mFlags); 207064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler mIncomingProtocol = protocol; 208064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler mIncomingServiceInfo = null; 209064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler } 210064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler 211f6a945a6cf53327db81be84ef4d16708a864fc18Tony Mantler public String getClientCert(Context context) { 212f6a945a6cf53327db81be84ef4d16708a864fc18Tony Mantler final HostAuth recvAuth = mAccount.getOrCreateHostAuthRecv(context); 213f6a945a6cf53327db81be84ef4d16708a864fc18Tony Mantler return recvAuth.mClientCertAlias; 214f6a945a6cf53327db81be84ef4d16708a864fc18Tony Mantler } 215f6a945a6cf53327db81be84ef4d16708a864fc18Tony Mantler 21653b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler public String getAmProtocol() { 21753b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler return mAmProtocol; 21853b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler } 21953b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler 22053b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler public void setAmProtocol(String amProtocol) { 22153b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler mAmProtocol = amProtocol; 22253b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler } 22353b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler 224e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // Parcelable methods 225f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank @Override 226e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public int describeContents() { 227e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank return 0; 228e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 229e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 2309c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler public static final Parcelable.Creator<SetupDataFragment> CREATOR = 2319c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler new Parcelable.Creator<SetupDataFragment>() { 2329c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler @Override 2339c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler public SetupDataFragment createFromParcel(Parcel in) { 2349c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler return new SetupDataFragment(in); 2359c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler } 236e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 2379c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler @Override 2389c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler public SetupDataFragment[] newArray(int size) { 2399c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler return new SetupDataFragment[size]; 2409c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler } 2419c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler }; 242e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 243f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank @Override 244e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public void writeToParcel(Parcel dest, int flags) { 245e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank dest.writeInt(mFlowMode); 246e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank dest.writeParcelable(mAccount, 0); 24776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler dest.writeString(mEmail); 24876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler dest.writeParcelable(mCredentialResults, 0); 24976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler dest.writeBooleanArray(new boolean[] {mIncomingCredLoaded, mOutgoingCredLoaded}); 250aeee10e57ef4d931e7708fde218d590453a82aeaMarc Blank dest.writeParcelable(mPolicy, 0); 251e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 252e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 2539c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler public SetupDataFragment(Parcel in) { 25426cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler final ClassLoader loader = getClass().getClassLoader(); 255e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank mFlowMode = in.readInt(); 256994c282d804a635f783681ae314a6b4b244b476eTony Mantler setAccount((Account) in.readParcelable(loader)); 25776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mEmail = in.readString(); 25876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mCredentialResults = in.readParcelable(loader); 25976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler final boolean[] credsLoaded = in.createBooleanArray(); 26076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mIncomingCredLoaded = credsLoaded[0]; 26176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mOutgoingCredLoaded = credsLoaded[1]; 262aeee10e57ef4d931e7708fde218d590453a82aeaMarc Blank mPolicy = in.readParcelable(loader); 263e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 264e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 26576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler @Override 26676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public String toString() { 26726cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler final StringBuilder sb = new StringBuilder("SetupData"); 26826cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler sb.append(":acct="); 26926cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler sb.append(mAccount == null ? "none" :mAccount.mId); 27076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler if (mEmail != null) { 27126cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler sb.append(":user="); 27276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler sb.append(mEmail); 273e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 27476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler if (mCredentialResults != null) { 27576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler sb.append(":cred="); 27676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler sb.append(mCredentialResults.toString()); 277e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 27826cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler sb.append(":policy="); 27926cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler sb.append(mPolicy == null ? "none" : "exists"); 280e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank return sb.toString(); 281e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 2829c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler 283e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank} 284