Commit eb03cb63 authored by newt's avatar newt Committed by Commit bot

Add utility method to wait for bookmark model to be loaded in tests.

BUG=583477

Review URL: https://codereview.chromium.org/1707103004

Cr-Commit-Position: refs/heads/master@{#376077}
parent 56a7be18
......@@ -11,10 +11,9 @@ import org.chromium.base.ThreadUtils;
import org.chromium.base.test.util.Feature;
import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.test.util.BookmarkTestUtil;
import org.chromium.components.bookmarks.BookmarkId;
import org.chromium.content.browser.test.NativeLibraryTestBase;
import org.chromium.content.browser.test.util.Criteria;
import org.chromium.content.browser.test.util.CriteriaHelper;
import java.util.ArrayList;
import java.util.Arrays;
......@@ -35,6 +34,7 @@ public class BookmarkBridgeTest extends NativeLibraryTestBase {
protected void setUp() throws Exception {
super.setUp();
loadNativeLibraryAndInitBrowserProcess();
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@Override
public void run() {
......@@ -44,13 +44,7 @@ public class BookmarkBridgeTest extends NativeLibraryTestBase {
}
});
CriteriaHelper.pollForUIThreadCriteria(new Criteria() {
@Override
public boolean isSatisfied() {
return mBookmarkBridge.isBookmarkModelLoaded();
}
});
BookmarkTestUtil.waitForBookmarkModelLoaded();
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@Override
public void run() {
......
......@@ -15,10 +15,9 @@ import org.chromium.chrome.browser.ChromeSwitches;
import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
import org.chromium.chrome.browser.bookmarks.BookmarkModel.AddBookmarkCallback;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.test.util.BookmarkTestUtil;
import org.chromium.components.bookmarks.BookmarkId;
import org.chromium.content.browser.test.NativeLibraryTestBase;
import org.chromium.content.browser.test.util.Criteria;
import org.chromium.content.browser.test.util.CriteriaHelper;
import java.util.ArrayList;
import java.util.Arrays;
......@@ -53,13 +52,7 @@ public class BookmarkModelTest extends NativeLibraryTestBase {
}
});
CriteriaHelper.pollForUIThreadCriteria(new Criteria() {
@Override
public boolean isSatisfied() {
return mBookmarkModel.isBookmarkModelLoaded();
}
});
BookmarkTestUtil.waitForBookmarkModelLoaded();
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@Override
public void run() {
......
......@@ -22,21 +22,19 @@ import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ChromeSwitches;
import org.chromium.chrome.browser.UrlConstants;
import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkModelObserver;
import org.chromium.chrome.test.ChromeActivityTestCaseBase;
import org.chromium.chrome.test.util.ActivityUtils;
import org.chromium.chrome.test.util.BookmarkTestUtil;
import org.chromium.chrome.test.util.ChromeTabUtils;
import org.chromium.chrome.test.util.MenuUtils;
import org.chromium.components.bookmarks.BookmarkId;
import org.chromium.components.bookmarks.BookmarkType;
import org.chromium.content.browser.test.util.CallbackHelper;
import org.chromium.content.browser.test.util.TouchCommon;
import org.chromium.net.test.EmbeddedTestServer;
import org.chromium.ui.base.DeviceFormFactor;
import java.util.ArrayList;
import java.util.concurrent.Callable;
import java.util.concurrent.TimeoutException;
/**
* Tests for the bookmark manager.
......@@ -76,38 +74,10 @@ public class BookmarkTest extends ChromeActivityTestCaseBase<ChromeActivity> {
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@Override
public void run() {
mBookmarkModel = new BookmarkModel(
getActivity().getActivityTab().getProfile());
mBookmarkModel = new BookmarkModel(getActivity().getActivityTab().getProfile());
}
});
waitForBookmarkModelLoaded();
}
private void waitForBookmarkModelLoaded() throws InterruptedException {
final CallbackHelper loadedCallback = new CallbackHelper();
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@Override
public void run() {
if (mBookmarkModel.isBookmarkModelLoaded()) loadedCallback.notifyCalled();
else {
mBookmarkModel.addObserver(new BookmarkModelObserver() {
@Override
public void bookmarkModelChanged() {}
@Override
public void bookmarkModelLoaded() {
loadedCallback.notifyCalled();
mBookmarkModel.removeObserver(this);
}
});
}
}
});
try {
loadedCallback.waitForCallback(0);
} catch (TimeoutException e) {
Assert.fail("bookmark model did not load: Timeout.");
}
BookmarkTestUtil.waitForBookmarkModelLoaded();
}
private void openBookmarkManager() throws InterruptedException {
......
// Copyright 2016 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.test.util;
import junit.framework.Assert;
import org.chromium.base.ThreadUtils;
import org.chromium.chrome.browser.bookmarks.BookmarkModel;
import org.chromium.content.browser.test.util.CallbackHelper;
import java.util.concurrent.Callable;
import java.util.concurrent.TimeoutException;
/**
* Utility functions for dealing with bookmarks in tests.
*/
public class BookmarkTestUtil {
/**
* Waits until the bookmark model is loaded, i.e. until
* {@link BookmarkModel#isBookmarkModelLoaded()} is true.
*/
public static void waitForBookmarkModelLoaded() throws InterruptedException {
final BookmarkModel bookmarkModel = ThreadUtils.runOnUiThreadBlockingNoException(
new Callable<BookmarkModel>() {
@Override
public BookmarkModel call() throws Exception {
return new BookmarkModel();
}
});
final CallbackHelper loadedCallback = new CallbackHelper();
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@Override
public void run() {
bookmarkModel.runAfterBookmarkModelLoaded(new Runnable() {
@Override
public void run() {
loadedCallback.notifyCalled();
}
});
}
});
try {
loadedCallback.waitForCallback(0);
} catch (TimeoutException e) {
Assert.fail("Bookmark model did not load: Timeout.");
}
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@Override
public void run() {
bookmarkModel.destroy();
}
});
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment