Increase Sync Windows
Bug: 10935007
Change-Id: Ibf97b9369398a394f4cda60624386559c842a031
diff --git a/src/com/android/exchange/adapter/AbstractSyncAdapter.java b/src/com/android/exchange/adapter/AbstractSyncAdapter.java
index c8ffe75..23bcb68 100644
--- a/src/com/android/exchange/adapter/AbstractSyncAdapter.java
+++ b/src/com/android/exchange/adapter/AbstractSyncAdapter.java
@@ -50,8 +50,6 @@
public static final int DAYS = HOURS*24;
public static final int WEEKS = DAYS*7;
- protected static final String PIM_WINDOW_SIZE = "4";
-
private static final long SEPARATOR_ID = Long.MAX_VALUE;
public Mailbox mMailbox;
@@ -97,36 +95,6 @@
}
/**
- * Set sync options common to PIM's (contacts and calendar)
- * @param protocolVersion the protocol version under which we're syncing
- * @param filter the filter to use (or null)
- * @param s the Serializer
- * @throws IOException
- */
- protected void setPimSyncOptions(Double protocolVersion, String filter, Serializer s)
- throws IOException {
- s.tag(Tags.SYNC_DELETES_AS_MOVES);
- s.tag(Tags.SYNC_GET_CHANGES);
- s.data(Tags.SYNC_WINDOW_SIZE, PIM_WINDOW_SIZE);
- s.start(Tags.SYNC_OPTIONS);
- // Set the filter (lookback), if provided
- if (filter != null) {
- s.data(Tags.SYNC_FILTER_TYPE, filter);
- }
- // Set the truncation amount and body type
- if (protocolVersion >= Eas.SUPPORTED_PROTOCOL_EX2007_DOUBLE) {
- s.start(Tags.BASE_BODY_PREFERENCE);
- // Plain text
- s.data(Tags.BASE_TYPE, Eas.BODY_PREFERENCE_TEXT);
- s.data(Tags.BASE_TRUNCATION_SIZE, Eas.EAS12_TRUNCATION_SIZE);
- s.end();
- } else {
- s.data(Tags.SYNC_TRUNCATION, Eas.EAS2_5_TRUNCATION_SIZE);
- }
- s.end();
- }
-
- /**
* Returns the current SyncKey; override if the SyncKey is stored elsewhere (as for Contacts)
* @return the current SyncKey for the Mailbox
* @throws IOException
diff --git a/src/com/android/exchange/adapter/CalendarSyncParser.java b/src/com/android/exchange/adapter/CalendarSyncParser.java
index b86dcfe..dc43b3c 100644
--- a/src/com/android/exchange/adapter/CalendarSyncParser.java
+++ b/src/com/android/exchange/adapter/CalendarSyncParser.java
@@ -1321,18 +1321,12 @@
int offset = 0;
for (Operation op: ops) {
if (op.mSeparator) {
- try {
- //mService.userLog("Try mini-batch of ", mini.size(), " CPO's");
- applyAndCopyResults(contentResolver, authority, mini, result, offset);
- mini.clear();
- // Save away the offset here; this will need to be subtracted out of the
- // value originally set by the adapter
- offset = count + 1; // Remember to add 1 for the separator!
- } catch (TransactionTooLargeException e1) {
- throw new RuntimeException("Can't send transaction; sync stopped.");
- } catch (RemoteException e1) {
- throw e1;
- }
+ //mService.userLog("Try mini-batch of ", mini.size(), " CPO's");
+ applyAndCopyResults(contentResolver, authority, mini, result, offset);
+ mini.clear();
+ // Save away the offset here; this will need to be subtracted out of the
+ // value originally set by the adapter
+ offset = count + 1; // Remember to add 1 for the separator!
} else {
mini.add(op);
}
diff --git a/src/com/android/exchange/adapter/ContactsSyncParser.java b/src/com/android/exchange/adapter/ContactsSyncParser.java
index 559187a..5704f57 100644
--- a/src/com/android/exchange/adapter/ContactsSyncParser.java
+++ b/src/com/android/exchange/adapter/ContactsSyncParser.java
@@ -1,25 +1,20 @@
package com.android.exchange.adapter;
import android.content.ContentProviderOperation;
+import android.content.ContentProviderOperation.Builder;
import android.content.ContentProviderResult;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.content.Entity;
+import android.content.Entity.NamedContentValues;
import android.content.EntityIterator;
import android.content.OperationApplicationException;
-import android.content.ContentProviderOperation.Builder;
-import android.content.Entity.NamedContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.RemoteException;
import android.provider.ContactsContract;
-import android.provider.SyncStateContract;
-import android.provider.ContactsContract.Data;
-import android.provider.ContactsContract.Groups;
-import android.provider.ContactsContract.RawContacts;
-import android.provider.ContactsContract.SyncState;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Event;
import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
@@ -33,6 +28,10 @@
import android.provider.ContactsContract.CommonDataKinds.StructuredName;
import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
import android.provider.ContactsContract.CommonDataKinds.Website;
+import android.provider.ContactsContract.Data;
+import android.provider.ContactsContract.RawContacts;
+import android.provider.ContactsContract.SyncState;
+import android.provider.SyncStateContract;
import android.text.util.Rfc822Token;
import android.text.util.Rfc822Tokenizer;
import android.util.Base64;
@@ -800,7 +799,7 @@
private int mContactBackValue = mCount;
// Make an array big enough for the PIM window (max items we can get)
private final int[] mContactIndexArray =
- new int[Integer.parseInt(AbstractSyncAdapter.PIM_WINDOW_SIZE)];
+ new int[EasContactsSyncHandler.PIM_WINDOW_SIZE_CONTACTS];
private int mContactIndexCount = 0;
private ContentProviderResult[] mResults = null;
diff --git a/src/com/android/exchange/service/EasCalendarSyncHandler.java b/src/com/android/exchange/service/EasCalendarSyncHandler.java
index 698a9af..3646fca 100644
--- a/src/com/android/exchange/service/EasCalendarSyncHandler.java
+++ b/src/com/android/exchange/service/EasCalendarSyncHandler.java
@@ -226,7 +226,7 @@
@Override
protected void setNonInitialSyncOptions(final Serializer s) throws IOException {
- setPimSyncOptions(s, Eas.FILTER_2_WEEKS);
+ setPimSyncOptions(s, Eas.FILTER_2_WEEKS, PIM_WINDOW_SIZE_CALENDAR);
}
/**
diff --git a/src/com/android/exchange/service/EasContactsSyncHandler.java b/src/com/android/exchange/service/EasContactsSyncHandler.java
index 8daf3eb..dcc62fc 100644
--- a/src/com/android/exchange/service/EasContactsSyncHandler.java
+++ b/src/com/android/exchange/service/EasContactsSyncHandler.java
@@ -239,7 +239,7 @@
@Override
protected void setNonInitialSyncOptions(final Serializer s) throws IOException {
- setPimSyncOptions(s, null);
+ setPimSyncOptions(s, null, PIM_WINDOW_SIZE_CONTACTS);
}
/**
diff --git a/src/com/android/exchange/service/EasMailboxSyncHandler.java b/src/com/android/exchange/service/EasMailboxSyncHandler.java
index ab297a4..c69a83e 100644
--- a/src/com/android/exchange/service/EasMailboxSyncHandler.java
+++ b/src/com/android/exchange/service/EasMailboxSyncHandler.java
@@ -33,7 +33,7 @@
private static final String[] FETCH_REQUEST_PROJECTION = { SyncColumns.SERVER_ID };
private static final int FETCH_REQUEST_SERVER_ID = 0;
- private static final String EMAIL_WINDOW_SIZE = "5";
+ private static final int EMAIL_WINDOW_SIZE = 10;
/**
* List of server ids for messages to fetch from the server.
@@ -133,7 +133,7 @@
s.data(Tags.SYNC_DELETES_AS_MOVES, isTrashMailbox ? "0" : "1");
}
s.tag(Tags.SYNC_GET_CHANGES);
- s.data(Tags.SYNC_WINDOW_SIZE, EMAIL_WINDOW_SIZE);
+ s.data(Tags.SYNC_WINDOW_SIZE, String.valueOf(EMAIL_WINDOW_SIZE));
s.start(Tags.SYNC_OPTIONS);
// Set the lookback appropriately (EAS calls this a "filter")
s.data(Tags.SYNC_FILTER_TYPE, getEmailFilter());
diff --git a/src/com/android/exchange/service/EasSyncHandler.java b/src/com/android/exchange/service/EasSyncHandler.java
index 29f55b5..02ba144 100644
--- a/src/com/android/exchange/service/EasSyncHandler.java
+++ b/src/com/android/exchange/service/EasSyncHandler.java
@@ -76,8 +76,9 @@
public abstract class EasSyncHandler extends EasServerConnection {
private static final String TAG = "EasSyncHandler";
- /** Window size for PIM (contact & calendar) sync options. */
- protected static final String PIM_WINDOW_SIZE = "4";
+ /** Window sizes for PIM (contact & calendar) sync options. */
+ public static final int PIM_WINDOW_SIZE_CONTACTS = 10;
+ public static final int PIM_WINDOW_SIZE_CALENDAR = 10;
// TODO: For each type of failure, provide info about why.
protected static final int SYNC_RESULT_FAILED = -1;
@@ -216,14 +217,17 @@
/**
* Shared non-initial sync options for PIM (contacts & calendar) objects.
- * @param s The {@link Serializer} for this sync request.
+ *
+ * @param s The {@link com.android.exchange.adapter.Serializer} for this sync request.
* @param filter The lookback to use, or null if no lookback is desired.
+ * @param windowSize
* @throws IOException
*/
- protected void setPimSyncOptions(final Serializer s, final String filter) throws IOException {
+ protected void setPimSyncOptions(final Serializer s, final String filter, int windowSize)
+ throws IOException {
s.tag(Tags.SYNC_DELETES_AS_MOVES);
s.tag(Tags.SYNC_GET_CHANGES);
- s.data(Tags.SYNC_WINDOW_SIZE, PIM_WINDOW_SIZE);
+ s.data(Tags.SYNC_WINDOW_SIZE, String.valueOf(windowSize));
s.start(Tags.SYNC_OPTIONS);
// Set the filter (lookback), if provided
if (filter != null) {