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..e2c56abe1fd4fbf6315934b6c92f470876d61dd5 |
--- /dev/null |
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwWebContentsObserverTest.java |
@@ -0,0 +1,138 @@ |
+// 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.UiThreadTest; |
+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 static String mUnreachableWebDataUrl; |
+ |
+ @Override |
+ public void setUp() throws Exception { |
+ super.setUp(); |
+ mContentsClient = new TestAwContentsClient(); |
+ mTestContainerView = createAwTestContainerViewOnMainSync(mContentsClient); |
+ mUnreachableWebDataUrl = AwContentsStatics.getUnreachableWebDataUrl(); |
+ getInstrumentation().runOnMainSync(new Runnable() { |
boliu
2014/08/07 16:01:29
Is runOnMainSync here necessary? Test won't start
mkosiba (inactive)
2014/08/08 10:58:44
The constructor DCHECKS when it's not run on the U
|
+ @Override |
+ public void run() { |
+ mWebContentsObserver = new AwWebContentsObserver( |
+ mTestContainerView.getContentViewCore().getWebContents(), mContentsClient); |
+ } |
+ }); |
+ } |
+ |
+ @SmallTest |
+ @UiThreadTest |
+ @Feature({"AndroidWebView"}) |
+ public void testOnPageFinished() { |
+ int callCount = mContentsClient.getOnPageFinishedHelper().getCallCount(); |
+ mWebContentsObserver.didFinishLoad(/*frameId=*/0, EXAMPLE_URL, /*isMainFrame=*/false); |
boliu
2014/08/07 16:01:29
nit: Not sure what the java style is, but in chrom
mkosiba (inactive)
2014/08/08 10:58:44
Done.
|
+ assertEquals("onPageFinished should only be called for the main frame.", callCount, |
+ mContentsClient.getOnPageFinishedHelper().getCallCount()); |
+ |
+ callCount = mContentsClient.getOnPageFinishedHelper().getCallCount(); |
+ mWebContentsObserver.didFinishLoad( |
+ /*frameId=*/0, mUnreachableWebDataUrl, /*isMainFrame=*/true); |
+ assertEquals("onPageFinished should not be called for the error url.", callCount, |
+ mContentsClient.getOnPageFinishedHelper().getCallCount()); |
+ |
+ callCount = mContentsClient.getOnPageFinishedHelper().getCallCount(); |
+ mWebContentsObserver.didFinishLoad(/*frameId=*/0, EXAMPLE_URL, /*isMainFrame=*/true); |
+ assertEquals("onPageFinished should be called for main frame navigations.", callCount + 1, |
+ mContentsClient.getOnPageFinishedHelper().getCallCount()); |
+ |
+ callCount = mContentsClient.getOnPageFinishedHelper().getCallCount(); |
+ mWebContentsObserver.didFailLoad(/*isProvisionaLoad=*/false, /*isMainFrame=*/true, |
+ 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(/*isProvisionaLoad=*/false, /*isMainFrame=*/false, |
+ 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(/*isProvisionaLoad=*/false, /*isMainFrame=*/true, |
+ NetError.ERR_ABORTED, ERROR_DESCRIPTION, mUnreachableWebDataUrl); |
+ assertEquals("onPageFinished should not be called on unrechable url errors.", callCount, |
+ mContentsClient.getOnPageFinishedHelper().getCallCount()); |
+ |
+ callCount = mContentsClient.getOnPageFinishedHelper().getCallCount(); |
+ mWebContentsObserver.didNavigateMainFrame(/*url=*/EXAMPLE_URL, /*baseUrl=*/null, |
+ /*isNavigationToDifferentPage*/false, /*isFragmentNavigation*/true); |
+ assertEquals("onPageFinished should be called for main frame fragment navigations.", |
+ callCount + 1, mContentsClient.getOnPageFinishedHelper().getCallCount()); |
+ |
+ callCount = mContentsClient.getOnPageFinishedHelper().getCallCount(); |
+ mWebContentsObserver.didNavigateMainFrame(/*url=*/EXAMPLE_URL, /*baseUrl=*/null, |
+ /*isNavigationToDifferentPage*/false, /*isFragmentNavigation*/false); |
+ assertEquals("onPageFinished should be called only for main frame fragment navigations.", |
+ callCount, mContentsClient.getOnPageFinishedHelper().getCallCount()); |
+ } |
+ |
+ @SmallTest |
+ @UiThreadTest |
+ @Feature({"AndroidWebView"}) |
+ public void testOnReceivedError() { |
+ int callCount = mContentsClient.getOnReceivedErrorHelper().getCallCount(); |
+ mWebContentsObserver.didFailLoad(/*isProvisionaLoad=*/false, /*isMainFrame=*/false, |
+ 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(/*isProvisionaLoad=*/false, /*isMainFrame=*/true, |
+ 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(/*isProvisionaLoad=*/false, /*isMainFrame=*/true, |
+ NetError.ERR_ABORTED, ERROR_DESCRIPTION, EXAMPLE_URL); |
+ assertEquals("onReceivedError should not be called for aborted navigations", callCount, |
+ mContentsClient.getOnReceivedErrorHelper().getCallCount()); |
+ } |
+ |
+ @SmallTest |
+ @UiThreadTest |
+ @Feature({"AndroidWebView"}) |
+ public void testDidNavigateMainFrame() { |
+ int callCount = mContentsClient.getDoUpdateVisitedHistoryHelper().getCallCount(); |
+ mWebContentsObserver.didNavigateAnyFrame(/*url=*/null, /*baseUrl=*/null, |
+ /*isReload=*/false); |
+ assertEquals("doUpdateVisitedHistory should only be called for any url.", callCount + 1, |
+ mContentsClient.getDoUpdateVisitedHistoryHelper().getCallCount()); |
boliu
2014/08/07 16:01:29
check isReload matches
mkosiba (inactive)
2014/08/08 10:58:44
Done.
|
+ |
+ callCount = mContentsClient.getDoUpdateVisitedHistoryHelper().getCallCount(); |
+ mWebContentsObserver.didNavigateAnyFrame(/*url=*/EXAMPLE_URL, /*baseUrl=*/null, |
+ /*isReload=*/false); |
+ assertEquals("doUpdateVisitedHistory should only be called for any url.", callCount + 1, |
+ mContentsClient.getDoUpdateVisitedHistoryHelper().getCallCount()); |
+ |
+ callCount = mContentsClient.getDoUpdateVisitedHistoryHelper().getCallCount(); |
+ mWebContentsObserver.didNavigateAnyFrame(/*url=*/EXAMPLE_URL, /*baseUrl=*/null, |
+ /*isReload=*/true); |
+ assertEquals("doUpdateVisitedHistory should be called for reloads.", callCount + 1, |
+ mContentsClient.getDoUpdateVisitedHistoryHelper().getCallCount()); |
+ } |
+} |