From ce1faa889de6c66e6015330f10efbb5c7c9184df Mon Sep 17 00:00:00 2001 From: Anthony Lee Date: Fri, 22 Aug 2014 10:03:44 -0700 Subject: [PATCH] b/17193866. Update policies when we reconcile. In the situation where we have deleted an Account from our provider reconciliation will delete the associated amAccount. Unfortunately, there isn't any sort of side effect code path that considers that policies may need to be updated when this Account is deleted. This CL injects that logic. Change-Id: I27c7a35efbdca4be274a9d3d8f7ce698f9204092 --- .../android/email/provider/AccountReconciler.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/com/android/email/provider/AccountReconciler.java b/src/com/android/email/provider/AccountReconciler.java index 26f303fc2..531436a8a 100644 --- a/src/com/android/email/provider/AccountReconciler.java +++ b/src/com/android/email/provider/AccountReconciler.java @@ -31,6 +31,7 @@ import android.text.TextUtils; import com.android.email.NotificationController; import com.android.email.R; +import com.android.email.SecurityPolicy; import com.android.email.service.EmailServiceUtils; import com.android.email.service.EmailServiceUtils.EmailServiceInfo; import com.android.emailcommon.Logging; @@ -40,7 +41,6 @@ import com.android.mail.utils.LogUtils; import com.google.common.collect.ImmutableList; import java.io.IOException; -import java.util.Arrays; import java.util.Collections; import java.util.LinkedHashSet; import java.util.List; @@ -212,6 +212,7 @@ public class AccountReconciler { } // Now, look through AccountManager accounts to make sure we have a corresponding cached EAS // account from EmailProvider + boolean needsPolicyUpdate = false; for (final android.accounts.Account accountManagerAccount : accountManagerAccounts) { final String accountManagerAccountName = accountManagerAccount.name; if (!hasEpAccount(emailProviderAccounts, accountManagerAccountName)) { @@ -236,6 +237,9 @@ public class AccountReconciler { } catch (IOException e) { LogUtils.w(Logging.LOG_TAG, e.toString()); } + // Just set a flag that our policies need to be updated with device + // So we can do the update, one time, at a later point in time. + needsPolicyUpdate = true; } } else { // Fix up the Calendar and Contacts syncing. It used to be possible for IMAP and @@ -256,6 +260,12 @@ public class AccountReconciler { } } + if (needsPolicyUpdate) { + // We have removed accounts from the AccountManager, let's make sure that + // our policies are up to date. + SecurityPolicy.getInstance(context).policiesUpdated(); + } + final String composeActivityName = context.getString(R.string.reconciliation_compose_activity_name); if (!TextUtils.isEmpty(composeActivityName)) {