Merge "Database cleanup needs to happen for all users." into jb-mr1-dev
diff --git a/core/java/android/content/SyncManager.java b/core/java/android/content/SyncManager.java
index e0e2995..1e4ad76 100644
--- a/core/java/android/content/SyncManager.java
+++ b/core/java/android/content/SyncManager.java
@@ -243,6 +243,10 @@
     public void updateRunningAccounts() {
         mRunningAccounts = AccountManagerService.getSingleton().getRunningAccounts();
 
+        if (mBootCompleted) {
+            doDatabaseCleanup();
+        }
+
         for (ActiveSyncContext currentSyncContext : mActiveSyncContexts) {
             if (!containsAccountAndUser(mRunningAccounts,
                     currentSyncContext.mSyncOperation.account,
@@ -258,6 +262,13 @@
         sendCheckAlarmsMessage();
     }
 
+    private void doDatabaseCleanup() {
+        for (UserInfo user : mUserManager.getUsers()) {
+            Account[] accountsForUser = AccountManagerService.getSingleton().getAccounts(user.id);
+            mSyncStorageEngine.doDatabaseCleanup(accountsForUser, user.id);
+        }
+    }
+
     private BroadcastReceiver mConnectivityIntentReceiver =
             new BroadcastReceiver() {
         public void onReceive(Context context, Intent intent) {
@@ -891,12 +902,10 @@
 
         updateRunningAccounts();
 
-        final Account[] accounts = AccountManagerService.getSingleton().getAccounts(userId);
-        mSyncStorageEngine.doDatabaseCleanup(accounts, userId);
-
         mSyncQueue.addPendingOperations(userId);
 
         // Schedule sync for any accounts under started user
+        final Account[] accounts = AccountManagerService.getSingleton().getAccounts(userId);
         for (Account account : accounts) {
             scheduleSync(account, userId, null, null, 0 /* no delay */,
                     true /* onlyThoseWithUnknownSyncableState */);
@@ -1619,6 +1628,8 @@
         public void onBootCompleted() {
             mBootCompleted = true;
 
+            doDatabaseCleanup();
+
             if (mReadyToRunLatch != null) {
                 mReadyToRunLatch.countDown();
             }