Merge "Delete build directory (mostly)." into jb-ub-mail-ur10
diff --git a/src/com/android/exchange/service/EasPingSyncHandler.java b/src/com/android/exchange/service/EasPingSyncHandler.java
index 1439cbe..baaf6ea 100644
--- a/src/com/android/exchange/service/EasPingSyncHandler.java
+++ b/src/com/android/exchange/service/EasPingSyncHandler.java
@@ -43,14 +43,14 @@
private static final String WHERE_ACCOUNT_KEY_AND_SERVER_ID =
MailboxColumns.ACCOUNT_KEY + "=? and " + MailboxColumns.SERVER_ID + "=?";
- private final EmailSyncAdapterService.SyncHandlerSychronizer mSyncHandlerMap;
+ private final EmailSyncAdapterService.SyncHandlerSynchronizer mSyncHandlerMap;
// TODO: The old code used to increase the heartbeat time after successful pings. Is there
// a good reason to not just start at the high value? If there's a problem, it'll just fail
// early anyway...
private static final long PING_HEARTBEAT = 8 * DateUtils.MINUTE_IN_MILLIS;
- private PingTask(final EmailSyncAdapterService.SyncHandlerSychronizer syncHandlerMap) {
+ private PingTask(final EmailSyncAdapterService.SyncHandlerSynchronizer syncHandlerMap) {
mSyncHandlerMap = syncHandlerMap;
}
@@ -286,7 +286,7 @@
}
public EasPingSyncHandler(final Context context, final Account account,
- final EmailSyncAdapterService.SyncHandlerSychronizer syncHandlerMap) {
+ final EmailSyncAdapterService.SyncHandlerSynchronizer syncHandlerMap) {
super(context, account, HostAuth.restoreHostAuthWithId(context, account.mHostAuthKeyRecv));
mContentResolver = context.getContentResolver();
mPingTask = new PingTask(syncHandlerMap);
diff --git a/src/com/android/exchange/service/EmailSyncAdapterService.java b/src/com/android/exchange/service/EmailSyncAdapterService.java
index 4619d09..ae96c72 100644
--- a/src/com/android/exchange/service/EmailSyncAdapterService.java
+++ b/src/com/android/exchange/service/EmailSyncAdapterService.java
@@ -80,7 +80,7 @@
* - As an optimization, while a ping request is waiting to run, subsequent ping requests are
* ignored (the pending ping will pick up the latest ping parameters at the time it runs).
*/
- public class SyncHandlerSychronizer {
+ public class SyncHandlerSynchronizer {
/**
* Map of account id -> ping handler.
* For a given account id, there are three possible states:
@@ -126,6 +126,15 @@
return (mPingHandlers.containsKey(accountId) && mPingHandlers.get(accountId) == null);
}
+ private void stopServiceIfNoPings() {
+ for (final EasPingSyncHandler pingHandler : mPingHandlers.values()) {
+ if (pingHandler != null) {
+ return;
+ }
+ }
+ EmailSyncAdapterService.this.stopSelf();
+ }
+
/**
* Called prior to starting a sync to update our state.
* @param accountId The account on which we are running a sync.
@@ -165,7 +174,11 @@
// No ping or sync running. Figure out whether a ping is needed, and if so with
// what params.
final Account account = Account.restoreAccountWithId(context, accountId);
- if (account.mSyncInterval == Account.CHECK_INTERVAL_PUSH) {
+ if (account == null || account.mSyncInterval != Account.CHECK_INTERVAL_PUSH) {
+ // A ping that was running is no longer running, or something happened to the
+ // account.
+ stopServiceIfNoPings();
+ } else {
// Note: unlike startSync, we CANNOT allow the caller to do the actual work.
// If we return before the ping starts, there's a race condition where another
// ping or sync might start first. It only works for startSync because sync is
@@ -203,6 +216,9 @@
// block.
if (wasSync) {
modifyPing(accountId);
+ } else {
+ // A ping stopped, so check if we should stop the service.
+ stopServiceIfNoPings();
}
// Similarly, it's ok to notify after we restart the ping, because we know the ping
@@ -212,7 +228,7 @@
}
}
}
- private final SyncHandlerSychronizer mSyncHandlerMap = new SyncHandlerSychronizer();
+ private final SyncHandlerSynchronizer mSyncHandlerMap = new SyncHandlerSynchronizer();
/**
* The binder for IEmailService.
diff --git a/src/com/android/exchange/service/ExchangeBroadcastProcessorService.java b/src/com/android/exchange/service/ExchangeBroadcastProcessorService.java
index 5de25b3..707595b 100644
--- a/src/com/android/exchange/service/ExchangeBroadcastProcessorService.java
+++ b/src/com/android/exchange/service/ExchangeBroadcastProcessorService.java
@@ -23,6 +23,7 @@
import android.util.Log;
import com.android.emailcommon.Logging;
+import com.android.emailcommon.service.AccountServiceProxy;
import com.android.emailsync.SyncManager;
import com.android.exchange.Eas;
import com.android.exchange.ExchangeService;
@@ -72,7 +73,8 @@
if (Eas.USER_LOG) {
Log.d(Logging.LOG_TAG, "Login accounts changed; reconciling...");
}
- SyncManager.reconcileAccounts(this);
+ new AccountServiceProxy(this).reconcileAccounts(Eas.PROTOCOL,
+ Eas.EXCHANGE_ACCOUNT_MANAGER_TYPE);
}
}
}