summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanny Baumann <dannybaumann@web.de>2015-06-10 10:22:47 +0200
committerGerrit Code Review <gerrit@cyanogenmod.org>2015-06-11 06:12:10 +0000
commite7c9a851e1247f74c33c430ca427317fb9c6e91d (patch)
treeecb3edbfe7609573c27aef4471101864dfdfaffe
parentc9a91488b988ccf2b82ca888ecdd9ab40152e266 (diff)
downloadandroid_packages_apps_Email-e7c9a851e1247f74c33c430ca427317fb9c6e91d.tar.gz
android_packages_apps_Email-e7c9a851e1247f74c33c430ca427317fb9c6e91d.tar.bz2
android_packages_apps_Email-e7c9a851e1247f74c33c430ca427317fb9c6e91d.zip
Simplify logic.
Make sure that either messages are fetched or a sync is initiated, and there can be no situation where neither happens. Change-Id: I73ec2482a5a86c54309634f434b7d8fd77d7c079
-rw-r--r--provider_src/com/android/email/service/ImapService.java48
1 files changed, 25 insertions, 23 deletions
diff --git a/provider_src/com/android/email/service/ImapService.java b/provider_src/com/android/email/service/ImapService.java
index b31058822..94dd20f68 100644
--- a/provider_src/com/android/email/service/ImapService.java
+++ b/provider_src/com/android/email/service/ImapService.java
@@ -2768,9 +2768,9 @@ public class ImapService extends Service {
// the changes just perform a full sync
final long timeSinceLastFullSync = SystemClock.elapsedRealtime() -
mailbox.mLastFullSyncTime;
- final boolean fullSync = timeSinceLastFullSync >= FULL_SYNC_INTERVAL_MILLIS
+ final boolean forceSync = timeSinceLastFullSync >= FULL_SYNC_INTERVAL_MILLIS
|| timeSinceLastFullSync < 0;
- if (fullSync) {
+ if (forceSync) {
needSync = true;
fetchMessages.clear();
@@ -2786,31 +2786,33 @@ public class ImapService extends Service {
+ ": need sync " + needSync + ", " + msgToFetchSize + " fetch messages");
}
- boolean syncRequested = false;
- try {
- // Sync fetch messages only if we are not going to perform a full sync
- if (msgToFetchSize > 0 && msgToFetchSize < MAX_MESSAGES_TO_FETCH && !needSync) {
- processImapFetchChanges(context, account, mailbox, fetchMessages);
- }
- if (needSync || msgToFetchSize > MAX_MESSAGES_TO_FETCH) {
- // With idle we fetched as much as possible. If as resync is required, then
- // if should be a full sync
- requestSync(context, account, mailbox.mId, true);
- syncRequested = true;
+ if (msgToFetchSize > 0) {
+ if (!needSync && msgToFetchSize <= MAX_MESSAGES_TO_FETCH) {
+ try {
+ processImapFetchChanges(context, account, mailbox, fetchMessages);
+ } catch (MessagingException ex) {
+ LogUtils.w(LOG_TAG,
+ "Failed to process imap idle changes for mailbox " + mailbox.mId);
+ needSync = true;
+ }
+ } else {
+ needSync = true;
}
- } catch (MessagingException ex) {
- LogUtils.w(LOG_TAG, "Failed to process imap idle changes for mailbox " + mailbox.mId);
}
- // In case no sync happens, re-add idle status
- try {
- if (!syncRequested && account.getSyncInterval() == Account.CHECK_INTERVAL_PUSH) {
- final ImapIdleFolderHolder holder = ImapIdleFolderHolder.getInstance();
- holder.registerMailboxForIdle(context, account, mailbox);
+ if (needSync) {
+ requestSync(context, account, mailbox.mId, true);
+ } else {
+ // In case no sync happens, re-add idle status
+ try {
+ if (account.getSyncInterval() == Account.CHECK_INTERVAL_PUSH) {
+ final ImapIdleFolderHolder holder = ImapIdleFolderHolder.getInstance();
+ holder.registerMailboxForIdle(context, account, mailbox);
+ }
+ } catch (MessagingException ex) {
+ LogUtils.w(LOG_TAG, "Failed to readd imap idle after no sync " +
+ "for mailbox " + mailbox.mId);
}
- } catch (MessagingException ex) {
- LogUtils.w(LOG_TAG, "Failed to readd imap idle after no sync " +
- "for mailbox " + mailbox.mId);
}
}
}