From 6a51abdf6e15e6cc28948ef163d3673adc6f6e7f Mon Sep 17 00:00:00 2001 From: Martin Hibdon Date: Thu, 20 Mar 2014 12:27:32 -0700 Subject: [PATCH] Only make Calendar and Contacts syncable on Exchange b/11818312 We were using the existance of OPTIONS_CALENDAR_SYNC in the bundle to indicate that syncing was possible, and it's value to indicate whether automatic syncing should be enabled. This is misleading. Now, we check the serviceInfo for the account type to figure out if sync calendar and contacts is possible, and use the options passed in to indicate whether or not it should be automatic. Change-Id: I776519668c6630dc71153fb008218a7ca6357c74 --- .../email/service/AuthenticatorService.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/com/android/email/service/AuthenticatorService.java b/src/com/android/email/service/AuthenticatorService.java index 36f3222a0..7add271e9 100644 --- a/src/com/android/email/service/AuthenticatorService.java +++ b/src/com/android/email/service/AuthenticatorService.java @@ -17,6 +17,7 @@ package com.android.email.service; import com.android.email.activity.setup.AccountSetupFinal; +import com.android.email.service.EmailServiceUtils.EmailServiceInfo; import com.android.emailcommon.provider.EmailContent; import android.accounts.AbstractAccountAuthenticator; @@ -56,7 +57,12 @@ public class AuthenticatorService extends Service { String authTokenType, String[] requiredFeatures, Bundle options) throws NetworkErrorException { - // There are two cases here: + final String protocol = EmailServiceUtils.getProtocolFromAccountType( + AuthenticatorService.this, accountType); + final EmailServiceInfo info = EmailServiceUtils.getServiceInfo( + AuthenticatorService.this, protocol); + + // There are two cases here: // 1) We are called with a username/password; this comes from the traditional email // app UI; we simply create the account and return the proper bundle if (options != null && options.containsKey(OPTIONS_PASSWORD) @@ -67,16 +73,16 @@ public class AuthenticatorService extends Service { account, options.getString(OPTIONS_PASSWORD), null); // Set up contacts syncing, if appropriate - if (options.containsKey(OPTIONS_CONTACTS_SYNC_ENABLED)) { - boolean syncContacts = options.getBoolean(OPTIONS_CONTACTS_SYNC_ENABLED); + if (info.syncContacts) { + boolean syncContacts = options.getBoolean(OPTIONS_CONTACTS_SYNC_ENABLED, false); ContentResolver.setIsSyncable(account, ContactsContract.AUTHORITY, 1); ContentResolver.setSyncAutomatically(account, ContactsContract.AUTHORITY, syncContacts); } // Set up calendar syncing, if appropriate - if (options.containsKey(OPTIONS_CALENDAR_SYNC_ENABLED)) { - boolean syncCalendar = options.getBoolean(OPTIONS_CALENDAR_SYNC_ENABLED); + if (info.syncCalendar) { + boolean syncCalendar = options.getBoolean(OPTIONS_CALENDAR_SYNC_ENABLED, false); ContentResolver.setIsSyncable(account, CalendarContract.AUTHORITY, 1); ContentResolver.setSyncAutomatically(account, CalendarContract.AUTHORITY, syncCalendar);