Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1023)

Side by Side Diff: chrome/android/javatests/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkTest.java

Issue 1141283003: Upstream oodles of Chrome for Android code into Chromium. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: final patch? Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package org.chromium.chrome.browser.enhancedbookmarks;
6
7 import android.test.suitebuilder.annotation.SmallTest;
8 import android.text.TextUtils;
9 import android.view.View;
10
11 import com.google.android.apps.chrome.R;
12
13 import junit.framework.Assert;
14
15 import org.chromium.base.ThreadUtils;
16 import org.chromium.base.test.util.CommandLineFlags;
17 import org.chromium.chrome.browser.BookmarksBridge.BookmarkItem;
18 import org.chromium.chrome.browser.BookmarksBridge.BookmarkModelObserver;
19 import org.chromium.chrome.browser.ChromeActivity;
20 import org.chromium.chrome.browser.ChromeSwitches;
21 import org.chromium.chrome.browser.UrlConstants;
22 import org.chromium.chrome.browser.enhanced_bookmarks.EnhancedBookmarksModel;
23 import org.chromium.chrome.test.ChromeActivityTestCaseBase;
24 import org.chromium.chrome.test.util.ActivityUtils;
25 import org.chromium.chrome.test.util.BookmarkTestUtils;
26 import org.chromium.chrome.test.util.ChromeTabUtils;
27 import org.chromium.chrome.test.util.MenuUtils;
28 import org.chromium.chrome.test.util.TestHttpServerClient;
29 import org.chromium.components.bookmarks.BookmarkId;
30 import org.chromium.components.bookmarks.BookmarkType;
31 import org.chromium.content.browser.test.util.CallbackHelper;
32 import org.chromium.content.browser.test.util.TouchCommon;
33 import org.chromium.ui.base.DeviceFormFactor;
34
35 import java.util.concurrent.Callable;
36 import java.util.concurrent.TimeoutException;
37
38 /**
39 * Tests for the enhanced bookmark manager.
40 */
41 @CommandLineFlags.Add(ChromeSwitches.ENABLE_ENHANCED_BOOKMARKS + "=1")
42 public class EnhancedBookmarkTest extends ChromeActivityTestCaseBase<ChromeActiv ity> {
43
44 public EnhancedBookmarkTest() {
45 super(ChromeActivity.class);
46 }
47
48 private static final String TEST_PAGE = TestHttpServerClient.getUrl(
49 "chrome/test/data/android/google.html");
50 private static final String TEST_PAGE_TITLE = "The Google";
51
52 private EnhancedBookmarksModel mBookmarkModel;
53 private EnhancedBookmarkRecyclerView mItemsContainer;
54
55 @Override
56 public void startMainActivity() throws InterruptedException {
57 startMainActivityFromLauncher();
58 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
59 @Override
60 public void run() {
61 mBookmarkModel = new EnhancedBookmarksModel(
62 getActivity().getActivityTab().getProfile());
63 }
64 });
65 waitForBookmarkModelLoaded();
66 }
67
68 private void waitForBookmarkModelLoaded() throws InterruptedException {
69 final CallbackHelper loadedCallback = new CallbackHelper();
70 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
71 @Override
72 public void run() {
73 if (mBookmarkModel.isBookmarkModelLoaded()) loadedCallback.notif yCalled();
74 else {
75 mBookmarkModel.addModelObserver(new BookmarkModelObserver() {
76 @Override
77 public void bookmarkModelChanged() {}
78
79 @Override
80 public void bookmarkModelLoaded() {
81 loadedCallback.notifyCalled();
82 mBookmarkModel.removeModelObserver(this);
83 }
84 });
85 }
86 }
87 });
88 try {
89 loadedCallback.waitForCallback(0);
90 } catch (TimeoutException e) {
91 Assert.fail("Enhanced Bookmark model did not load: Timeout.");
92 }
93 }
94
95 private void openBookmarkManager() throws InterruptedException {
96 if (DeviceFormFactor.isTablet(getActivity())) {
97 loadUrl(UrlConstants.BOOKMARKS_URL);
98 mItemsContainer = (EnhancedBookmarkRecyclerView) getActivity().findV iewById(
99 R.id.eb_items_container);
100 } else {
101 // phone
102 EnhancedBookmarkActivity activity = ActivityUtils.waitForActivity(ge tInstrumentation(),
103 EnhancedBookmarkActivity.class, new MenuUtils.MenuActivityTr igger(
104 getInstrumentation(), getActivity(), R.id.all_bookma rks_menu_id));
105 mItemsContainer = (EnhancedBookmarkRecyclerView) activity.findViewBy Id(
106 R.id.eb_items_container);
107 }
108 }
109
110 private boolean isItemPresentInBookmarkList(final String expectedTitle) {
111 return ThreadUtils.runOnUiThreadBlockingNoException(new Callable<Boolean >() {
112 @Override
113 public Boolean call() throws Exception {
114 for (int i = 0; i < mItemsContainer.getAdapter().getItemCount(); i++) {
115 if (mItemsContainer.getAdapter().isHeader(i)) continue;
116
117 String actualTitle = mBookmarkModel.getBookmarkTitle(
118 mItemsContainer.getAdapter().getItem(i));
119 if (TextUtils.equals(actualTitle, expectedTitle)) {
120 return true;
121 }
122 }
123 return false;
124 }
125 });
126 }
127
128 @SmallTest
129 public void testAddBookmark() throws InterruptedException {
130 loadUrl(TEST_PAGE);
131 // Click star button to bookmark the curent tab.
132 MenuUtils.invokeCustomMenuActionSync(getInstrumentation(), getActivity() ,
133 R.id.bookmark_this_page_id);
134 // All actions with EnhancedBookmarksModel needs to run on UI thread.
135 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
136 @Override
137 public void run() {
138 long bookmarkIdLong = getActivity().getActivityTab().getUserBook markId();
139 BookmarkId id = new BookmarkId(bookmarkIdLong, BookmarkType.NORM AL);
140 assertTrue("The test page is not added as bookmark: ",
141 mBookmarkModel.doesBookmarkExist(id));
142 BookmarkItem item = mBookmarkModel.getBookmarkById(id);
143 assertEquals(mBookmarkModel.getDefaultFolder(), item.getParentId ());
144 assertEquals(TEST_PAGE, item.getUrl());
145 assertEquals(TEST_PAGE_TITLE, item.getTitle());
146 }
147 });
148 }
149
150 @SmallTest
151 public void testOpenBookmark() throws InterruptedException {
152 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
153 @Override
154 public void run() {
155 mBookmarkModel.addBookmark(mBookmarkModel.getDefaultFolder(), 0, TEST_PAGE_TITLE,
156 TEST_PAGE);
157 }
158 });
159 openBookmarkManager();
160 assertTrue("Grid view does not contain added bookmark: ",
161 isItemPresentInBookmarkList(TEST_PAGE_TITLE));
162 final View tile = BookmarkTestUtils.getViewWithText(mItemsContainer, TES T_PAGE_TITLE);
163 ChromeTabUtils.waitForTabPageLoaded(getActivity().getActivityTab(), new Runnable() {
164 @Override
165 public void run() {
166 TouchCommon.singleClickView(tile);
167 }
168 });
169 assertEquals(TEST_PAGE_TITLE, getActivity().getActivityTab().getTitle()) ;
170 }
171 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698