Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2626)

Unified Diff: android_webview/javatests/src/org/chromium/android_webview/test/AwWebContentsObserverTest.java

Issue 445403002: [android_webview] Factor AwWebContentsObserver out of AwContentsClient. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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());
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698