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; 10f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blankimport com.android.emailcommon.provider.Account; 11064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantlerimport com.android.emailcommon.provider.HostAuth; 12f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blankimport com.android.emailcommon.provider.Policy; 13f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank 149c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler/** 159c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler * Headless fragment to hold setup data for the account setup or settings flows 169c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler */ 179c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantlerpublic class SetupDataFragment extends Fragment implements Parcelable { 18e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // The "extra" name for the Bundle saved with SetupData 19e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public static final String EXTRA_SETUP_DATA = "com.android.email.setupdata"; 20e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 21e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // NORMAL is the standard entry from the Email app; EAS and POP_IMAP are used when entering via 22e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // Settings -> Accounts 23c5c44eed77b851e71803b972fb76fd91d5338fefBen Komalo public static final int FLOW_MODE_UNSPECIFIED = -1; 24e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public static final int FLOW_MODE_NORMAL = 0; 25f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank public static final int FLOW_MODE_ACCOUNT_MANAGER = 1; 26e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public static final int FLOW_MODE_EDIT = 3; 27d685b469c73c3479c09301da2e65cd7c11fd4aceAndy Stadler public static final int FLOW_MODE_FORCE_CREATE = 4; 28e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // The following two modes are used to "pop the stack" and return from the setup flow. We 29e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // either return to the caller (if we're in an account type flow) or go to the message list 3076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler // TODO: figure out if we still care about these 31d685b469c73c3479c09301da2e65cd7c11fd4aceAndy Stadler public static final int FLOW_MODE_RETURN_TO_CALLER = 5; 32d685b469c73c3479c09301da2e65cd7c11fd4aceAndy Stadler public static final int FLOW_MODE_RETURN_TO_MESSAGE_LIST = 6; 33f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank public static final int FLOW_MODE_RETURN_NO_ACCOUNTS_RESULT = 7; 34f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank public static final int FLOW_MODE_NO_ACCOUNTS = 8; 35e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 36e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // Mode bits for AccountSetupCheckSettings, indicating the type of check requested 37e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public static final int CHECK_INCOMING = 1; 38e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public static final int CHECK_OUTGOING = 2; 39e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public static final int CHECK_AUTODISCOVER = 4; 40e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 4176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private static final String SAVESTATE_FLOWMODE = "SetupDataFragment.flowMode"; 4276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private static final String SAVESTATE_ACCOUNT = "SetupDataFragment.account"; 4376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private static final String SAVESTATE_EMAIL = "SetupDataFragment.email"; 4476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private static final String SAVESTATE_CREDENTIAL = "SetupDataFragment.credential"; 4576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private static final String SAVESTATE_INCOMING_LOADED = "SetupDataFragment.incomingLoaded"; 4676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private static final String SAVESTATE_OUTGOING_LOADED = "SetupDataFragment.outgoingLoaded"; 4776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private static final String SAVESTATE_POLICY = "SetupDataFragment.policy"; 48064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler private static final String SAVESTATE_INCOMING_PROTOCOL = "SetupDataFragment.incomingProtocol"; 4953b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler private static final String SAVESTATE_AM_PROTOCOL = "SetupDataFragment.amProtocol"; 509c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler 51e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // All access will be through getters/setters 52e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank private int mFlowMode = FLOW_MODE_NORMAL; 53e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank private Account mAccount; 5476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private String mEmail; 5576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private Bundle mCredentialResults; 5676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler // These are used to track whether we've preloaded the login credentials into incoming/outgoing 5776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler // settings. Set them to 'true' by default, and false when we change the credentials or email 5876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private boolean mIncomingCredLoaded = true; 5976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private boolean mOutgoingCredLoaded = true; 6076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler // This is accessed off-thread in AccountCheckSettingsFragment 6176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler private volatile Policy mPolicy; 62064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler // Cache incoming protocol and service info here 63064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler private EmailServiceUtils.EmailServiceInfo mIncomingServiceInfo; 64064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler private String mIncomingProtocol; 6553b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler // Protocol the user chose in the account manager "Add an account" screen 6653b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler private String mAmProtocol; 67e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 6826cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler public interface SetupDataContainer { 699c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler public SetupDataFragment getSetupData(); 70e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 71e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 729c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler public SetupDataFragment() { 7326cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler mPolicy = null; 74994c282d804a635f783681ae314a6b4b244b476eTony Mantler setAccount(new Account()); 7576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mEmail = null; 7676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mCredentialResults = null; 77e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 78e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 799c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler @Override 809c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler public void onSaveInstanceState(Bundle outState) { 819c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler super.onSaveInstanceState(outState); 829c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler outState.putInt(SAVESTATE_FLOWMODE, mFlowMode); 839c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler outState.putParcelable(SAVESTATE_ACCOUNT, mAccount); 8476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler outState.putString(SAVESTATE_EMAIL, mEmail); 8576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler outState.putParcelable(SAVESTATE_CREDENTIAL, mCredentialResults); 8676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler outState.putBoolean(SAVESTATE_INCOMING_LOADED, mIncomingCredLoaded); 8776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler outState.putBoolean(SAVESTATE_OUTGOING_LOADED, mOutgoingCredLoaded); 889c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler outState.putParcelable(SAVESTATE_POLICY, mPolicy); 89064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler outState.putString(SAVESTATE_INCOMING_PROTOCOL, mIncomingProtocol); 9053b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler outState.putString(SAVESTATE_AM_PROTOCOL, mAmProtocol); 919c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler } 929c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler 939c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler @Override 949c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler public void onCreate(Bundle savedInstanceState) { 959c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler super.onCreate(savedInstanceState); 969c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler if (savedInstanceState != null) { 979c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler mFlowMode = savedInstanceState.getInt(SAVESTATE_FLOWMODE); 98994c282d804a635f783681ae314a6b4b244b476eTony Mantler setAccount((Account) savedInstanceState.getParcelable(SAVESTATE_ACCOUNT)); 9976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mEmail = savedInstanceState.getString(SAVESTATE_EMAIL); 10076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mCredentialResults = savedInstanceState.getParcelable(SAVESTATE_CREDENTIAL); 10176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mIncomingCredLoaded = savedInstanceState.getBoolean(SAVESTATE_INCOMING_LOADED); 10276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mOutgoingCredLoaded = savedInstanceState.getBoolean(SAVESTATE_OUTGOING_LOADED); 1039c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler mPolicy = savedInstanceState.getParcelable(SAVESTATE_POLICY); 104064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler mIncomingProtocol = savedInstanceState.getString(SAVESTATE_INCOMING_PROTOCOL); 10553b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler mAmProtocol = savedInstanceState.getString(SAVESTATE_AM_PROTOCOL); 1069c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler } 1079c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler setRetainInstance(true); 1089c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler } 1099c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler 1109c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler // Getters and setters 11126cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler public int getFlowMode() { 11226cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler return mFlowMode; 113e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 114e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 1159c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler public void setFlowMode(int flowMode) { 1169c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler mFlowMode = flowMode; 1179c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler } 1189c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler 11926cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler public Account getAccount() { 12026cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler return mAccount; 121e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 122e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 12326cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler public void setAccount(Account account) { 12426cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler mAccount = account; 125994c282d804a635f783681ae314a6b4b244b476eTony Mantler mAccount.setTemporary(true); 126e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 127e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 12876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public String getEmail() { 12976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler return mEmail; 130e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 131e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 13276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public void setEmail(String email) { 13376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mEmail = email; 13476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mAccount.mEmailAddress = email; 13576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mIncomingCredLoaded = false; 13676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mOutgoingCredLoaded = false; 137e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 138e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 13976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public Bundle getCredentialResults() { 14076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler return mCredentialResults; 141e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 142e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 14376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public void setCredentialResults(Bundle credentialResults) { 14476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mCredentialResults = credentialResults; 14576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mIncomingCredLoaded = false; 14676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mOutgoingCredLoaded = false; 147e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 148e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 14976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public boolean isIncomingCredLoaded() { 15076472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler return mIncomingCredLoaded; 151e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 152e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 15376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public void setIncomingCredLoaded(boolean incomingCredLoaded) { 15476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mIncomingCredLoaded = incomingCredLoaded; 155e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 156e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 15776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public boolean isOutgoingCredLoaded() { 15876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler return mOutgoingCredLoaded; 159f020910461908681978a9e0f8f98b748853b0e39Andy Stadler } 160f020910461908681978a9e0f8f98b748853b0e39Andy Stadler 16176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public void setOutgoingCredLoaded(boolean outgoingCredLoaded) { 16276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mOutgoingCredLoaded = outgoingCredLoaded; 163f020910461908681978a9e0f8f98b748853b0e39Andy Stadler } 164f020910461908681978a9e0f8f98b748853b0e39Andy Stadler 16576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public synchronized Policy getPolicy() { 16626cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler return mPolicy; 16712a79eb4798093b7e8a276c4e96f07fd62e0933dMarc Blank } 16812a79eb4798093b7e8a276c4e96f07fd62e0933dMarc Blank 16976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public synchronized void setPolicy(Policy policy) { 17026cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler mPolicy = policy; 171e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 172e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 173064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler /** 174064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler * Retrieve the service info for the incoming protocol 175064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler * @param context For resolving the service info, and possibly loading the {@link HostAuth} 176064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler * @return service info object 177064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler */ 178064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler public EmailServiceUtils.EmailServiceInfo getIncomingServiceInfo(Context context) { 179064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler if (mIncomingServiceInfo == null) { 180064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler mIncomingServiceInfo = EmailServiceUtils.getServiceInfo(context, 181064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler getIncomingProtocol(context)); 182064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler } 183064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler return mIncomingServiceInfo; 184064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler } 185064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler 186064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler /** 187064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler * Retrieve the protocol as previously set in setIncomingProtocol, but don't attempt to look at 188064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler * {@link #mAccount#hostAuthRecv } 189064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler * @return Protocol string 190064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler */ 191064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler public String getIncomingProtocol() { 192064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler return mIncomingProtocol; 193064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler } 194064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler 195064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler /** 196064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler * Retrieve the protocol as previously set in setIncomingProtocol, or from 197064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler * {@link #mAccount#hostAuthRecv}. Try not to call this on the main thread if it's unlikely that 198064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler * the hostauth isn't already loaded. 199064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler * @param context context to possibly load the {@link HostAuth} from the provider 200064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler * @return Protocol string 201064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler */ 202064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler public String getIncomingProtocol(Context context) { 203064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler if (mIncomingProtocol != null) { 204064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler return mIncomingProtocol; 205064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler } 206064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler 207064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler final HostAuth recvAuth = mAccount.getOrCreateHostAuthRecv(context); 208064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler return recvAuth.mProtocol; 209064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler } 210064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler 211064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler public void setIncomingProtocol(final Context context, final String protocol) { 212064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler final HostAuth recvAuth = mAccount.getOrCreateHostAuthRecv(context); 213064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler recvAuth.setConnection(protocol, recvAuth.mAddress, recvAuth.mPort, recvAuth.mFlags); 214064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler mIncomingProtocol = protocol; 215064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler mIncomingServiceInfo = null; 216064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler } 217064726d9f9fb7c38a252fc9c4fe2b7cf645eade0Tony Mantler 218f6a945a6cf53327db81be84ef4d16708a864fc18Tony Mantler public String getClientCert(Context context) { 219f6a945a6cf53327db81be84ef4d16708a864fc18Tony Mantler final HostAuth recvAuth = mAccount.getOrCreateHostAuthRecv(context); 220f6a945a6cf53327db81be84ef4d16708a864fc18Tony Mantler return recvAuth.mClientCertAlias; 221f6a945a6cf53327db81be84ef4d16708a864fc18Tony Mantler } 222f6a945a6cf53327db81be84ef4d16708a864fc18Tony Mantler 22353b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler public String getAmProtocol() { 22453b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler return mAmProtocol; 22553b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler } 22653b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler 22753b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler public void setAmProtocol(String amProtocol) { 22853b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler mAmProtocol = amProtocol; 22953b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler } 23053b64eee54cdb74dc325089b8362a6ff4811759eTony Mantler 231e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank // Parcelable methods 232f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank @Override 233e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public int describeContents() { 234e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank return 0; 235e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 236e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 2379c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler public static final Parcelable.Creator<SetupDataFragment> CREATOR = 2389c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler new Parcelable.Creator<SetupDataFragment>() { 2399c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler @Override 2409c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler public SetupDataFragment createFromParcel(Parcel in) { 2419c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler return new SetupDataFragment(in); 2429c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler } 243e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 2449c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler @Override 2459c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler public SetupDataFragment[] newArray(int size) { 2469c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler return new SetupDataFragment[size]; 2479c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler } 2489c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler }; 249e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 250f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank @Override 251e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank public void writeToParcel(Parcel dest, int flags) { 252e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank dest.writeInt(mFlowMode); 253e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank dest.writeParcelable(mAccount, 0); 25476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler dest.writeString(mEmail); 25576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler dest.writeParcelable(mCredentialResults, 0); 25676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler dest.writeBooleanArray(new boolean[] {mIncomingCredLoaded, mOutgoingCredLoaded}); 257aeee10e57ef4d931e7708fde218d590453a82aeaMarc Blank dest.writeParcelable(mPolicy, 0); 258e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 259e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 2609c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler public SetupDataFragment(Parcel in) { 26126cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler final ClassLoader loader = getClass().getClassLoader(); 262e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank mFlowMode = in.readInt(); 263994c282d804a635f783681ae314a6b4b244b476eTony Mantler setAccount((Account) in.readParcelable(loader)); 26476472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mEmail = in.readString(); 26576472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mCredentialResults = in.readParcelable(loader); 26676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler final boolean[] credsLoaded = in.createBooleanArray(); 26776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mIncomingCredLoaded = credsLoaded[0]; 26876472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler mOutgoingCredLoaded = credsLoaded[1]; 269aeee10e57ef4d931e7708fde218d590453a82aeaMarc Blank mPolicy = in.readParcelable(loader); 270e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 271e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank 27276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler @Override 27376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler public String toString() { 27426cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler final StringBuilder sb = new StringBuilder("SetupData"); 27526cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler sb.append(":acct="); 27626cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler sb.append(mAccount == null ? "none" :mAccount.mId); 27776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler if (mEmail != null) { 27826cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler sb.append(":user="); 27976472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler sb.append(mEmail); 280e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 28176472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler if (mCredentialResults != null) { 28276472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler sb.append(":cred="); 28376472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler sb.append(mCredentialResults.toString()); 284e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 28526cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler sb.append(":policy="); 28626cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler sb.append(mPolicy == null ? "none" : "exists"); 287e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank return sb.toString(); 288e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank } 2899c8c471f971f9c8e40002503a0799ce56c5bfd76Tony Mantler 290e6cc662abc0b5fffe223cda5e980b4f05a4e91ddMarc Blank} 291