Index: chrome/android/javatests/src/org/chromium/chrome/browser/BookmarksBridgeTest.java |
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/BookmarksBridgeTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/BookmarksBridgeTest.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e13b0997b5f313b8a9d5c9522cbc19369fec2b60 |
--- /dev/null |
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/BookmarksBridgeTest.java |
@@ -0,0 +1,164 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+package org.chromium.chrome.browser; |
+ |
+import android.test.suitebuilder.annotation.SmallTest; |
+ |
+import org.chromium.base.ThreadUtils; |
+import org.chromium.base.test.util.Feature; |
+import org.chromium.chrome.browser.profiles.Profile; |
+import org.chromium.chrome.shell.ChromeShellActivity; |
+import org.chromium.chrome.shell.ChromeShellTab; |
+import org.chromium.chrome.shell.ChromeShellTestBase; |
+import org.chromium.components.bookmarks.BookmarkId; |
+ |
+import java.util.ArrayList; |
+import java.util.List; |
+ |
+/** |
+ * Tests for bookmark bridge |
+ */ |
+public class BookmarksBridgeTest extends ChromeShellTestBase { |
+ /* |
+ * Dummy bookmark model is structured as below: |
+ * |
+ * mobile-> a -> aa |
+ * \ | -> ab |
+ * \ | -> ac |
+ * \ |
+ * -> b -> ba |
+ * | -> bb |
+ * | -> bc |
+ * |
+ * other -> c -> ca |
+ * \ | -> cb |
+ * \ | -> cc |
+ * \ |
+ * -> d -> da |
+ * | -> db |
+ * | -> dc -> dca |
+ * |
+ * desktop -> e -> ea |
+ * \ |
+ * \ |
+ * -> f -> fa |
+ * */ |
+ |
+ private ChromeShellActivity mActivity; |
+ private Profile mProfile; |
+ private BookmarksBridge mBookmarksBridge; |
+ private BookmarkId mMobileNode; |
+ private BookmarkId mOtherNode; |
+ private BookmarkId mDesktopNode; |
+ |
+ // folders |
+ BookmarkId a; |
+ BookmarkId b; |
+ BookmarkId c; |
+ BookmarkId d; |
+ BookmarkId e; |
+ BookmarkId f; |
+ BookmarkId dc; |
+ |
+ // bookmarks |
+ BookmarkId ua; |
+ BookmarkId ub; |
+ BookmarkId uc; |
+ |
+ @Override |
+ protected void setUp() throws Exception { |
+ super.setUp(); |
+ mActivity = launchChromeShellWithBlankPage(); |
+ assertTrue(waitForActiveShellToBeDoneLoading()); |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ @Override |
+ public void run() { |
+ ChromeShellTab tab = mActivity.getActiveTab(); |
+ mProfile = tab.getProfile(); |
+ mBookmarksBridge = new BookmarksBridge(mProfile); |
+ mBookmarksBridge.loadEmptyPartnerBookmarkShimForTesting(); |
+ mMobileNode = mBookmarksBridge.getMobileFolderId(); |
+ mDesktopNode = mBookmarksBridge.getDesktopFolderId(); |
+ mOtherNode = mBookmarksBridge.getOtherFolderId(); |
+ |
+ addFolders(); |
+ addUrls(); |
+ } |
+ }); |
+ } |
+ |
+ private void addFolders() { |
+ a = mBookmarksBridge.addFolder(mMobileNode, 0, "a"); |
+ b = mBookmarksBridge.addFolder(mMobileNode, 0, "b"); |
+ c = mBookmarksBridge.addFolder(mOtherNode, 0, "c"); |
+ d = mBookmarksBridge.addFolder(mOtherNode, 0, "d"); |
+ e = mBookmarksBridge.addFolder(mDesktopNode, 0, "e"); |
+ f = mBookmarksBridge.addFolder(mDesktopNode, 0, "f"); |
+ |
+ mBookmarksBridge.addFolder(a, 0, "aa"); |
+ mBookmarksBridge.addFolder(a, 0, "ab"); |
+ mBookmarksBridge.addFolder(a, 0, "ac"); |
+ mBookmarksBridge.addFolder(b, 0, "ba"); |
+ mBookmarksBridge.addFolder(b, 0, "bb"); |
+ mBookmarksBridge.addFolder(b, 0, "bc"); |
+ mBookmarksBridge.addFolder(c, 0, "ca"); |
+ mBookmarksBridge.addFolder(c, 0, "cb"); |
+ mBookmarksBridge.addFolder(c, 0, "cc"); |
+ mBookmarksBridge.addFolder(d, 0, "da"); |
+ mBookmarksBridge.addFolder(d, 0, "db"); |
+ dc = mBookmarksBridge.addFolder(d, 0, "dc"); |
+ mBookmarksBridge.addFolder(e, 0, "ea"); |
+ mBookmarksBridge.addFolder(e, 0, "eb"); |
+ mBookmarksBridge.addFolder(e, 0, "ec"); |
+ mBookmarksBridge.addFolder(f, 0, "fa"); |
+ mBookmarksBridge.addFolder(f, 0, "fb"); |
+ mBookmarksBridge.addFolder(f, 0, "fc"); |
+ |
+ mBookmarksBridge.addFolder(dc, 0, "dca"); |
+ } |
+ |
+ /** |
+ * Add some dummy bookmarks. |
+ */ |
+ private void addUrls() { |
+ ua = mBookmarksBridge.addBookmark(mMobileNode, 0, "ua", "http://www.google.com"); |
+ ub = mBookmarksBridge.addBookmark(mOtherNode, 0, "ub", "http://www.facebook.com"); |
+ uc = mBookmarksBridge.addBookmark(mDesktopNode, 0, "uc", "http://www.yahoo.com"); |
+ } |
+ |
+ @SmallTest |
+ @Feature({"Bookmark Bridge"}) |
+ public void testGetAllFoldersWithDepths() { |
+ List<BookmarkId> folderList = new ArrayList<BookmarkId>(); |
+ List<Integer> depthList = new ArrayList<Integer>(); |
+ mBookmarksBridge.getAllFoldersWithDepths(folderList, depthList); |
+ |
+ // FolderList and DepthList should have same size. |
+ assertEquals(folderList.size(), depthList.size()); |
+ //assertEquals(folderList.size(), 18); |
+ |
+ // Mobile and Other should not be included |
+ assertFalse(folderList.contains(mMobileNode)); |
+ assertFalse(folderList.contains(mOtherNode)); |
+ assertTrue(folderList.contains(mDesktopNode)); |
+ |
+ // Subfolders of mobile/other are included. |
+ assertTrue(folderList.contains(a)); |
+ assertTrue(folderList.contains(b)); |
+ assertTrue(folderList.contains(c)); |
+ assertTrue(folderList.contains(d)); |
+ |
+ // Any bookmarks urls should not be returned in folder list. |
+ assertFalse(folderList.contains(ua)); |
+ assertFalse(folderList.contains(ub)); |
+ assertFalse(folderList.contains(uc)); |
+ |
+ // Both folderList and depthList should not contain invalid values. |
+ for (int i = 0; i < folderList.size(); i++) { |
+ assertNotNull(folderList.get(i)); |
+ assertTrue(depthList.get(i) >= 0); |
+ } |
+ } |
+} |