| Index: chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/BookmarksTest.java
|
| diff --git a/chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/BookmarksTest.java b/chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/BookmarksTest.java
|
| index f3583534469a588441392c6be2475bcbcdd2cfdf..ed07f81d3b4488f820cd0d4686236a3ec5334a5a 100644
|
| --- a/chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/BookmarksTest.java
|
| +++ b/chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/BookmarksTest.java
|
| @@ -16,6 +16,8 @@ import org.chromium.components.bookmarks.BookmarkId;
|
| import org.chromium.content.browser.test.util.Criteria;
|
| import org.chromium.content.browser.test.util.CriteriaHelper;
|
| import org.chromium.sync.internal_api.pub.base.ModelType;
|
| +import org.chromium.sync.protocol.BookmarkSpecifics;
|
| +import org.chromium.sync.protocol.SyncEntity;
|
| import org.json.JSONException;
|
| import org.json.JSONObject;
|
|
|
| @@ -34,6 +36,7 @@ public class BookmarksTest extends SyncTestBase {
|
| private static final String URL = "http://chromium.org/";
|
| private static final String TITLE = "Chromium";
|
| private static final String MODIFIED_TITLE = "Chromium2";
|
| + private static final String FOLDER_TITLE = "Tech";
|
|
|
| private BookmarksBridge mBookmarksBridge;
|
|
|
| @@ -42,11 +45,13 @@ public class BookmarksTest extends SyncTestBase {
|
| public final String id;
|
| public final String title;
|
| public final String url;
|
| + public final String parentId;
|
|
|
| - private Bookmark(String id, String title, String url) {
|
| + private Bookmark(String id, String title, String url, String parentId) {
|
| this.id = id;
|
| this.title = title;
|
| this.url = url;
|
| + this.parentId = parentId;
|
| }
|
|
|
| public boolean isFolder() {
|
| @@ -123,6 +128,36 @@ public class BookmarksTest extends SyncTestBase {
|
| waitForClientBookmarkCount(0);
|
| }
|
|
|
| + // Test syncing a bookmark modification from server to client.
|
| + @LargeTest
|
| + @Feature({"Sync"})
|
| + public void testDownloadMovedBookmark() throws Exception {
|
| + // Add the entity to test moving.
|
| + addServerBookmark(TITLE, URL);
|
| + SyncTestUtil.triggerSyncAndWaitForCompletion(mContext);
|
| + waitForServerBookmarkCountWithName(1, TITLE);
|
| + waitForClientBookmarkCount(1);
|
| +
|
| + // Add the folder to move to.
|
| + addServerBookmarkFolder(FOLDER_TITLE);
|
| + SyncTestUtil.triggerSyncAndWaitForCompletion(mContext);
|
| + waitForServerBookmarkCountWithName(1, FOLDER_TITLE);
|
| + waitForClientBookmarkCount(2);
|
| +
|
| + // The folder comes first because new entities are inserted at index 0.
|
| + Bookmark folder = getClientBookmarks().get(0);
|
| + Bookmark bookmark = getClientBookmarks().get(1);
|
| + assertTrue(folder.isFolder());
|
| + assertFalse(bookmark.isFolder());
|
| +
|
| + // Move on server, sync, and verify the move locally.
|
| + mFakeServerHelper.modifyBookmarkEntity(bookmark.id, TITLE, URL, folder.id);
|
| + SyncTestUtil.triggerSyncAndWaitForCompletion(mContext);
|
| + bookmark = getClientBookmarks().get(1);
|
| + // The "s" is prepended because the server adds one to the parentId.
|
| + assertEquals("The bookmark was not moved.", "s" + folder.id, bookmark.parentId);
|
| + }
|
| +
|
| // Test syncing a new bookmark folder from server to client.
|
| @LargeTest
|
| @Feature({"Sync"})
|
| @@ -214,6 +249,45 @@ public class BookmarksTest extends SyncTestBase {
|
| assertServerBookmarkCountWithName(0, MODIFIED_TITLE);
|
| }
|
|
|
| + // Test syncing a bookmark modification from client to server.
|
| + @LargeTest
|
| + @Feature({"Sync"})
|
| + public void testUploadMovedBookmark() throws Exception {
|
| + // Add the entity to test moving.
|
| + BookmarkId bookmarkId = addClientBookmark(TITLE, URL);
|
| + SyncTestUtil.triggerSyncAndWaitForCompletion(mContext);
|
| + waitForServerBookmarkCountWithName(1, TITLE);
|
| + waitForClientBookmarkCount(1);
|
| +
|
| + // Add the folder to move to.
|
| + BookmarkId folderId = addClientBookmarkFolder(FOLDER_TITLE);
|
| + SyncTestUtil.triggerSyncAndWaitForCompletion(mContext);
|
| + waitForServerBookmarkCountWithName(1, FOLDER_TITLE);
|
| + waitForClientBookmarkCount(2);
|
| +
|
| + List<Bookmark> bookmarks = getServerBookmarks();
|
| + Bookmark bookmark;
|
| + Bookmark folder;
|
| + if (bookmarks.get(0).isFolder()) {
|
| + folder = bookmarks.get(0);
|
| + bookmark = bookmarks.get(1);
|
| + } else {
|
| + bookmark = bookmarks.get(0);
|
| + folder = bookmarks.get(1);
|
| + }
|
| +
|
| + // Move on client, sync, and verify the move on the server.
|
| + moveClientBookmark(bookmarkId, folderId);
|
| + SyncTestUtil.triggerSyncAndWaitForCompletion(mContext);
|
| + bookmarks = getServerBookmarks();
|
| + if (bookmarks.get(0).isFolder()) {
|
| + bookmark = getServerBookmarks().get(1);
|
| + } else {
|
| + bookmark = getServerBookmarks().get(0);
|
| + }
|
| + assertEquals("The bookmark was not moved.", folder.id, bookmark.parentId);
|
| + }
|
| +
|
| // Test syncing a new bookmark folder from client to server.
|
| @LargeTest
|
| @Feature({"Sync"})
|
| @@ -337,6 +411,15 @@ public class BookmarksTest extends SyncTestBase {
|
| });
|
| }
|
|
|
| + private void moveClientBookmark(final BookmarkId id, final BookmarkId newParentId) {
|
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + mBookmarksBridge.moveBookmark(id, newParentId, 0 /* new index */);
|
| + }
|
| + });
|
| + }
|
| +
|
| private List<Bookmark> getClientBookmarks() throws JSONException {
|
| List<Pair<String, JSONObject>> rawBookmarks = SyncTestUtil.getLocalData(
|
| mContext, BOOKMARKS_TYPE_STRING);
|
| @@ -344,7 +427,21 @@ public class BookmarksTest extends SyncTestBase {
|
| for (Pair<String, JSONObject> rawBookmark : rawBookmarks) {
|
| String id = rawBookmark.first;
|
| JSONObject json = rawBookmark.second;
|
| - bookmarks.add(new Bookmark(id, json.getString("title"), json.optString("url", null)));
|
| + bookmarks.add(new Bookmark(id, json.getString("title"), json.optString("url", null),
|
| + json.getString("parent_id")));
|
| + }
|
| + return bookmarks;
|
| + }
|
| +
|
| + private List<Bookmark> getServerBookmarks() throws Exception {
|
| + List<SyncEntity> entities =
|
| + mFakeServerHelper.getSyncEntitiesByModelType(ModelType.BOOKMARK);
|
| + List<Bookmark> bookmarks = new ArrayList<Bookmark>(entities.size());
|
| + for (SyncEntity entity : entities) {
|
| + String id = entity.idString;
|
| + String parentId = entity.parentIdString;
|
| + BookmarkSpecifics specifics = entity.specifics.bookmark;
|
| + bookmarks.add(new Bookmark(id, specifics.title, specifics.url, parentId));
|
| }
|
| return bookmarks;
|
| }
|
|
|