| Index: chrome/test/android/javatests/src/org/chromium/chrome/test/util/browser/tabmodel/document/TestInitializationObserver.java
|
| diff --git a/chrome/test/android/javatests/src/org/chromium/chrome/test/util/browser/tabmodel/document/TestInitializationObserver.java b/chrome/test/android/javatests/src/org/chromium/chrome/test/util/browser/tabmodel/document/TestInitializationObserver.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..7f20edccb82d898066214a5c04436fa8607c19ee
|
| --- /dev/null
|
| +++ b/chrome/test/android/javatests/src/org/chromium/chrome/test/util/browser/tabmodel/document/TestInitializationObserver.java
|
| @@ -0,0 +1,62 @@
|
| +// 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.test.util.browser.tabmodel.document;
|
| +
|
| +import static junit.framework.Assert.assertTrue;
|
| +
|
| +import org.chromium.base.ThreadUtils;
|
| +import org.chromium.chrome.browser.tabmodel.document.DocumentTabModel;
|
| +import org.chromium.content.browser.test.util.Criteria;
|
| +import org.chromium.content.browser.test.util.CriteriaHelper;
|
| +
|
| +/**
|
| + * Monitors the DocumentTabModel until it has progressed far enough along initialization.
|
| + */
|
| +public class TestInitializationObserver extends DocumentTabModel.InitializationObserver {
|
| + public boolean mIsReady;
|
| + private final int mState;
|
| +
|
| + public TestInitializationObserver(DocumentTabModel model, int state) {
|
| + super(model);
|
| + mState = state;
|
| + }
|
| +
|
| + @Override
|
| + protected void runImmediately() {
|
| + mIsReady = true;
|
| + }
|
| +
|
| + @Override
|
| + public boolean isSatisfied(int currentState) {
|
| + return currentState >= mState;
|
| + }
|
| +
|
| + @Override
|
| + public boolean isCanceled() {
|
| + return false;
|
| + }
|
| +
|
| + /**
|
| + * Wait until the DocumentTabModel has reached the given state.
|
| + * @param model DocumentTabModel to monitor.
|
| + * @param state State to wait for.
|
| + */
|
| + public static void waitUntilState(final DocumentTabModel model, int state) throws Exception {
|
| + final TestInitializationObserver observer = new TestInitializationObserver(model, state);
|
| + ThreadUtils.runOnUiThread(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + observer.runWhenReady();
|
| + }
|
| + });
|
| +
|
| + assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
|
| + @Override
|
| + public boolean isSatisfied() {
|
| + return observer.mIsReady;
|
| + }
|
| + }));
|
| + }
|
| +}
|
|
|