Bug 1343726 - Ensure that bookmark folders are processed first by the uploader r=rnewman
Since we're uploading records atomically, order in which they're processed by the uploader
only matters if we want to do sanity checks on certain types of records. Server might still
preserve some of the order, but for our purposes here it shouldn't matter.
We'd like to ensure that we process the "mobile root" bookmark record along with other folder
records first, so that we increase our chances of avoiding making a failing network request if
that those records' payload is too large.
Sorting by bookmark type achieves this.
MozReview-Commit-ID: KrAs3zepaOk
--- a/mobile/android/services/src/main/java/org/mozilla/gecko/sync/repositories/android/AndroidBrowserBookmarksDataAccessor.java
+++ b/mobile/android/services/src/main/java/org/mozilla/gecko/sync/repositories/android/AndroidBrowserBookmarksDataAccessor.java
@@ -70,16 +70,28 @@ public class AndroidBrowserBookmarksData
this.queryHelper = new RepoUtils.QueryHelper(context, getUri(), LOG_TAG);
}
@Override
protected Uri getUri() {
return BrowserContractHelpers.BOOKMARKS_CONTENT_URI;
}
+ /**
+ * Order bookmarks by type, ensuring that folders will be processed before other records during
+ * an upload. This is in support of payload-size validation. See Bug 1343726.
+ */
+ @Override
+ public Cursor fetchSince(long timestamp) throws NullCursorException {
+ return queryHelper.safeQuery(".fetchSince",
+ getAllColumns(),
+ dateModifiedWhere(timestamp),
+ null, BrowserContract.Bookmarks.TYPE + " ASC");
+ }
+
protected static Uri getPositionsUri() {
return BrowserContractHelpers.BOOKMARKS_POSITIONS_CONTENT_URI;
}
@Override
public void wipe() {
Uri uri = getUri();
Logger.info(LOG_TAG, "wiping (except for special guids): " + uri);