| Index: chrome/android/javatests/src/org/chromium/chrome/browser/externalnav/UrlOverridingTest.java
|
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/externalnav/UrlOverridingTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/externalnav/UrlOverridingTest.java
|
| index 2836fbe32e2a83863a31ca9d796520e000dc8c75..84ea6adaccaacf4e0cfe06533188059668b63895 100644
|
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/externalnav/UrlOverridingTest.java
|
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/externalnav/UrlOverridingTest.java
|
| @@ -71,11 +71,14 @@
|
|
|
| private static class TestTabObserver extends EmptyTabObserver {
|
| private final CallbackHelper mFinishCallback;
|
| - private final CallbackHelper mFailCallback;
|
| -
|
| - TestTabObserver(final CallbackHelper finishCallback, final CallbackHelper failCallback) {
|
| + private final CallbackHelper mPageFailCallback;
|
| + private final CallbackHelper mLoadFailCallback;
|
| +
|
| + TestTabObserver(final CallbackHelper finishCallback, final CallbackHelper pageFailCallback,
|
| + final CallbackHelper loadFailCallback) {
|
| mFinishCallback = finishCallback;
|
| - mFailCallback = failCallback;
|
| + mPageFailCallback = pageFailCallback;
|
| + mLoadFailCallback = loadFailCallback;
|
| }
|
|
|
| @Override
|
| @@ -83,13 +86,31 @@
|
| boolean isErrorPage, boolean hasCommitted, boolean isSameDocument,
|
| boolean isFragmentNavigation, Integer pageTransition, int errorCode,
|
| int httpStatusCode) {
|
| - if (errorCode == 0) return;
|
| - mFailCallback.notifyCalled();
|
| + if (errorCode != 0) {
|
| + mLoadFailCallback.notifyCalled();
|
| + }
|
| }
|
|
|
| @Override
|
| public void onPageLoadFinished(Tab tab) {
|
| mFinishCallback.notifyCalled();
|
| + }
|
| +
|
| + @Override
|
| + public void onPageLoadFailed(Tab tab, int errorCode) {
|
| + mPageFailCallback.notifyCalled();
|
| + }
|
| +
|
| + @Override
|
| + public void onDidFailLoad(Tab tab, boolean isMainFrame, int errorCode, String description,
|
| + String failingUrl) {
|
| + mLoadFailCallback.notifyCalled();
|
| + }
|
| +
|
| + @Override
|
| + public void onDestroyed(Tab tab) {
|
| + // A new tab is destroyed when loading is overridden while opening it.
|
| + mPageFailCallback.notifyCalled();
|
| }
|
| }
|
|
|
| @@ -126,19 +147,21 @@
|
| int expectedNewTabCount, final boolean shouldLaunchExternalIntent,
|
| final String expectedFinalUrl, boolean isMainFrame) throws InterruptedException {
|
| final CallbackHelper finishCallback = new CallbackHelper();
|
| - final CallbackHelper failCallback = new CallbackHelper();
|
| + final CallbackHelper pageFailCallback = new CallbackHelper();
|
| + final CallbackHelper loadFailCallback = new CallbackHelper();
|
| final CallbackHelper newTabCallback = new CallbackHelper();
|
|
|
| final Tab tab = getActivity().getActivityTab();
|
| final Tab[] latestTabHolder = new Tab[1];
|
| latestTabHolder[0] = tab;
|
| - tab.addObserver(new TestTabObserver(finishCallback, failCallback));
|
| + tab.addObserver(new TestTabObserver(finishCallback, pageFailCallback, loadFailCallback));
|
| if (expectedNewTabCount > 0) {
|
| getActivity().getTabModelSelector().addObserver(new EmptyTabModelSelectorObserver() {
|
| @Override
|
| public void onNewTabCreated(Tab newTab) {
|
| newTabCallback.notifyCalled();
|
| - newTab.addObserver(new TestTabObserver(finishCallback, failCallback));
|
| + newTab.addObserver(new TestTabObserver(
|
| + finishCallback, pageFailCallback, loadFailCallback));
|
| latestTabHolder[0] = newTab;
|
| }
|
| });
|
| @@ -167,26 +190,13 @@
|
| singleClickView(tab.getView());
|
| }
|
|
|
| - if (failCallback.getCallCount() == 0) {
|
| + CallbackHelper helper = isMainFrame ? pageFailCallback : loadFailCallback;
|
| + if (helper.getCallCount() == 0) {
|
| try {
|
| - failCallback.waitForCallback(0, 1, 20, TimeUnit.SECONDS);
|
| + helper.waitForCallback(0, 1, 20, TimeUnit.SECONDS);
|
| } catch (TimeoutException ex) {
|
| fail();
|
| return;
|
| - }
|
| - }
|
| -
|
| - boolean hasFallbackUrl =
|
| - expectedFinalUrl != null && !TextUtils.equals(url, expectedFinalUrl);
|
| -
|
| - if (hasFallbackUrl) {
|
| - if (finishCallback.getCallCount() == 1) {
|
| - try {
|
| - finishCallback.waitForCallback(1, 1, 20, TimeUnit.SECONDS);
|
| - } catch (TimeoutException ex) {
|
| - fail();
|
| - return;
|
| - }
|
| }
|
| }
|
|
|
| @@ -215,16 +225,6 @@
|
| || TextUtils.equals(expectedFinalUrl, tab.getUrl());
|
| }
|
| });
|
| -
|
| - CriteriaHelper.pollUiThread(
|
| - Criteria.equals(shouldLaunchExternalIntent ? 1 : 0, new Callable<Integer>() {
|
| - @Override
|
| - public Integer call() {
|
| - return mActivityMonitor.getHits();
|
| - }
|
| - }));
|
| - assertEquals(1 + (hasFallbackUrl ? 1 : 0), finishCallback.getCallCount());
|
| - assertEquals(1, failCallback.getCallCount());
|
| }
|
|
|
| @SmallTest
|
|
|