| Index: android_webview/javatests/src/org/chromium/android_webview/test/AwWebContentsObserverTest.java
|
| diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwWebContentsObserverTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwWebContentsObserverTest.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..fc4cc68b62a1eb81b55c3bd48416f15348174d31
|
| --- /dev/null
|
| +++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwWebContentsObserverTest.java
|
| @@ -0,0 +1,151 @@
|
| +// 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.android_webview.test;
|
| +
|
| +import android.test.suitebuilder.annotation.SmallTest;
|
| +
|
| +import org.chromium.android_webview.AwContentsStatics;
|
| +import org.chromium.android_webview.AwWebContentsObserver;
|
| +import org.chromium.base.test.util.Feature;
|
| +import org.chromium.net.NetError;
|
| +
|
| +/**
|
| + * Tests for the AwWebContentsObserver class.
|
| + */
|
| +public class AwWebContentsObserverTest extends AwTestBase {
|
| + private TestAwContentsClient mContentsClient;
|
| + private AwTestContainerView mTestContainerView;
|
| + private AwWebContentsObserver mWebContentsObserver;
|
| +
|
| + private static final String EXAMPLE_URL = "http://www.example.com/";
|
| + private static final String ERROR_DESCRIPTION = "description";
|
| + private String mUnreachableWebDataUrl;
|
| +
|
| + @Override
|
| + public void setUp() throws Exception {
|
| + super.setUp();
|
| + mContentsClient = new TestAwContentsClient();
|
| + mTestContainerView = createAwTestContainerViewOnMainSync(mContentsClient);
|
| + mUnreachableWebDataUrl = AwContentsStatics.getUnreachableWebDataUrl();
|
| + // AwWebContentsObserver constructor must be run on the UI thread.
|
| + getInstrumentation().runOnMainSync(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + mWebContentsObserver = new AwWebContentsObserver(
|
| + mTestContainerView.getContentViewCore().getWebContents(), mContentsClient);
|
| + }
|
| + });
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"AndroidWebView"})
|
| + public void testOnPageFinished() {
|
| + int frameId = 0;
|
| + boolean mainFrame = true;
|
| + boolean subFrame = false;
|
| +
|
| + int callCount = mContentsClient.getOnPageFinishedHelper().getCallCount();
|
| + mWebContentsObserver.didFinishLoad(frameId, EXAMPLE_URL, subFrame);
|
| + assertEquals("onPageFinished should only be called for the main frame.", callCount,
|
| + mContentsClient.getOnPageFinishedHelper().getCallCount());
|
| +
|
| + callCount = mContentsClient.getOnPageFinishedHelper().getCallCount();
|
| + mWebContentsObserver.didFinishLoad(frameId, mUnreachableWebDataUrl, mainFrame);
|
| + assertEquals("onPageFinished should not be called for the error url.", callCount,
|
| + mContentsClient.getOnPageFinishedHelper().getCallCount());
|
| +
|
| + callCount = mContentsClient.getOnPageFinishedHelper().getCallCount();
|
| + mWebContentsObserver.didFinishLoad(frameId, EXAMPLE_URL, mainFrame);
|
| + assertEquals("onPageFinished should be called for main frame navigations.", callCount + 1,
|
| + mContentsClient.getOnPageFinishedHelper().getCallCount());
|
| +
|
| + boolean provisionalLoad = true;
|
| +
|
| + callCount = mContentsClient.getOnPageFinishedHelper().getCallCount();
|
| + mWebContentsObserver.didFailLoad(!provisionalLoad, mainFrame,
|
| + NetError.ERR_ABORTED, ERROR_DESCRIPTION, EXAMPLE_URL);
|
| + assertEquals("onPageFinished should be called for main frame errors.", callCount + 1,
|
| + mContentsClient.getOnPageFinishedHelper().getCallCount());
|
| +
|
| + callCount = mContentsClient.getOnPageFinishedHelper().getCallCount();
|
| + mWebContentsObserver.didFailLoad(!provisionalLoad, subFrame,
|
| + NetError.ERR_ABORTED, ERROR_DESCRIPTION, EXAMPLE_URL);
|
| + assertEquals("onPageFinished should only be called for main frame errors.", callCount,
|
| + mContentsClient.getOnPageFinishedHelper().getCallCount());
|
| +
|
| + callCount = mContentsClient.getOnPageFinishedHelper().getCallCount();
|
| + mWebContentsObserver.didFailLoad(!provisionalLoad, mainFrame,
|
| + NetError.ERR_ABORTED, ERROR_DESCRIPTION, mUnreachableWebDataUrl);
|
| + assertEquals("onPageFinished should not be called on unrechable url errors.", callCount,
|
| + mContentsClient.getOnPageFinishedHelper().getCallCount());
|
| +
|
| + String baseUrl = null;
|
| + boolean navigationToDifferentPage = true;
|
| + boolean fragmentNavigation = true;
|
| + callCount = mContentsClient.getOnPageFinishedHelper().getCallCount();
|
| + mWebContentsObserver.didNavigateMainFrame(EXAMPLE_URL, baseUrl,
|
| + !navigationToDifferentPage, fragmentNavigation);
|
| + assertEquals("onPageFinished should be called for main frame fragment navigations.",
|
| + callCount + 1, mContentsClient.getOnPageFinishedHelper().getCallCount());
|
| +
|
| + callCount = mContentsClient.getOnPageFinishedHelper().getCallCount();
|
| + mWebContentsObserver.didNavigateMainFrame(EXAMPLE_URL, baseUrl,
|
| + !navigationToDifferentPage, !fragmentNavigation);
|
| + assertEquals("onPageFinished should be called only for main frame fragment navigations.",
|
| + callCount, mContentsClient.getOnPageFinishedHelper().getCallCount());
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"AndroidWebView"})
|
| + public void testOnReceivedError() {
|
| + boolean provisionalLoad = true;
|
| + boolean mainFrame = true;
|
| + boolean subFrame = false;
|
| +
|
| + int callCount = mContentsClient.getOnReceivedErrorHelper().getCallCount();
|
| + mWebContentsObserver.didFailLoad(!provisionalLoad, subFrame,
|
| + NetError.ERR_TIMED_OUT, ERROR_DESCRIPTION, EXAMPLE_URL);
|
| + assertEquals("onReceivedError should only be called for the main frame", callCount,
|
| + mContentsClient.getOnReceivedErrorHelper().getCallCount());
|
| +
|
| + callCount = mContentsClient.getOnReceivedErrorHelper().getCallCount();
|
| + mWebContentsObserver.didFailLoad(!provisionalLoad, mainFrame,
|
| + NetError.ERR_TIMED_OUT, ERROR_DESCRIPTION, EXAMPLE_URL);
|
| + assertEquals("onReceivedError should be called for the main frame", callCount + 1,
|
| + mContentsClient.getOnReceivedErrorHelper().getCallCount());
|
| +
|
| + callCount = mContentsClient.getOnReceivedErrorHelper().getCallCount();
|
| + mWebContentsObserver.didFailLoad(!provisionalLoad, mainFrame,
|
| + NetError.ERR_ABORTED, ERROR_DESCRIPTION, EXAMPLE_URL);
|
| + assertEquals("onReceivedError should not be called for aborted navigations", callCount,
|
| + mContentsClient.getOnReceivedErrorHelper().getCallCount());
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"AndroidWebView"})
|
| + public void testDidNavigateMainFrame() {
|
| + String nullUrl = null;
|
| + String baseUrl = null;
|
| + boolean reload = true;
|
| +
|
| + int callCount = mContentsClient.getDoUpdateVisitedHistoryHelper().getCallCount();
|
| + mWebContentsObserver.didNavigateAnyFrame(nullUrl, baseUrl, !reload);
|
| + assertEquals("doUpdateVisitedHistory should only be called for any url.", callCount + 1,
|
| + mContentsClient.getDoUpdateVisitedHistoryHelper().getCallCount());
|
| + assertEquals(!reload, mContentsClient.getDoUpdateVisitedHistoryHelper().getIsReload());
|
| +
|
| + callCount = mContentsClient.getDoUpdateVisitedHistoryHelper().getCallCount();
|
| + mWebContentsObserver.didNavigateAnyFrame(EXAMPLE_URL, baseUrl, !reload);
|
| + assertEquals("doUpdateVisitedHistory should only be called for any url.", callCount + 1,
|
| + mContentsClient.getDoUpdateVisitedHistoryHelper().getCallCount());
|
| + assertEquals(!reload, mContentsClient.getDoUpdateVisitedHistoryHelper().getIsReload());
|
| +
|
| + callCount = mContentsClient.getDoUpdateVisitedHistoryHelper().getCallCount();
|
| + mWebContentsObserver.didNavigateAnyFrame(EXAMPLE_URL, baseUrl, reload);
|
| + assertEquals("doUpdateVisitedHistory should be called for reloads.", callCount + 1,
|
| + mContentsClient.getDoUpdateVisitedHistoryHelper().getCallCount());
|
| + assertEquals(reload, mContentsClient.getDoUpdateVisitedHistoryHelper().getIsReload());
|
| + }
|
| +}
|
|
|