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

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

Issue 281563002: [Android WebView] Filter out error page URL from onPageFinished to un-flake tests (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Filter out the error page URL on the side of AwContentsClient Created 6 years, 6 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/ClientOnPageStartedTest.java
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/ClientOnPageStartedTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/ClientOnPageStartedTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..abf0c6a533e08eb3e178dbcb7532e3a9f9b44adc
--- /dev/null
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/ClientOnPageStartedTest.java
@@ -0,0 +1,106 @@
+// Copyright 2012 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.MediumTest;
+
+import org.chromium.android_webview.AwContents;
+import org.chromium.base.test.util.Feature;
+import org.chromium.content.browser.test.util.TestCallbackHelperContainer;
+
+/**
+ * Tests for the ContentViewClient.onPageStarted() method.
+ */
+public class ClientOnPageStartedTest extends AwTestBase {
+
+ private TestAwContentsClient mContentsClient;
+ private AwContents mAwContents;
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ setTestAwContentsClient(new TestAwContentsClient());
+ }
+
+ private void setTestAwContentsClient(TestAwContentsClient contentsClient) throws Exception {
+ mContentsClient = contentsClient;
+ final AwTestContainerView testContainerView =
+ createAwTestContainerViewOnMainSync(mContentsClient);
+ mAwContents = testContainerView.getAwContents();
+ }
+
+ @MediumTest
+ @Feature({"AndroidWebView"})
+ public void testOnPageStartedPassesCorrectUrl() throws Throwable {
+ TestCallbackHelperContainer.OnPageStartedHelper onPageStartedHelper =
+ mContentsClient.getOnPageStartedHelper();
+
+ String html = "<html><body>Simple page.</body></html>";
+ int currentCallCount = onPageStartedHelper.getCallCount();
+ loadDataAsync(mAwContents, html, "text/html", false);
+
+ onPageStartedHelper.waitForCallback(currentCallCount);
+ assertEquals("data:text/html," + html, onPageStartedHelper.getUrl());
+ }
+
+ @MediumTest
+ @Feature({"AndroidWebView"})
+ public void testOnPageStartedCalledOnceOnError() throws Throwable {
+ class OurTestAwContentsClient extends TestAwContentsClient {
+ private boolean isOnReceivedErrorCalled = false;
+ private boolean isOnPageStartedCalled = false;
+ private boolean allowAboutBlank = false;
+
+ @Override
+ public void onReceivedError(int errorCode, String description, String failingUrl) {
+ assertEquals("onReceivedError called twice for " + failingUrl,
+ false, isOnReceivedErrorCalled);
+ isOnReceivedErrorCalled = true;
+ assertEquals("onPageStarted not called before onReceivedError for " + failingUrl,
+ true, isOnPageStartedCalled);
+ super.onReceivedError(errorCode, description, failingUrl);
+ }
+
+ @Override
+ public void onPageStarted(String url) {
+ if (allowAboutBlank && "about:blank".equals(url)) {
+ super.onPageStarted(url);
+ return;
+ }
+ assertEquals("onPageStarted called twice for " + url,
+ false, isOnPageStartedCalled);
+ isOnPageStartedCalled = true;
+ assertEquals("onReceivedError called before onPageStarted for " + url,
+ false, isOnReceivedErrorCalled);
+ super.onPageStarted(url);
+ }
+
+ void setAllowAboutBlank() {
+ allowAboutBlank = true;
+ }
+ };
+ OurTestAwContentsClient testContentsClient = new OurTestAwContentsClient();
+ setTestAwContentsClient(testContentsClient);
+
+ TestCallbackHelperContainer.OnReceivedErrorHelper onReceivedErrorHelper =
+ mContentsClient.getOnReceivedErrorHelper();
+ TestCallbackHelperContainer.OnPageStartedHelper onPageStartedHelper =
+ mContentsClient.getOnPageStartedHelper();
+ TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelper =
+ mContentsClient.getOnPageFinishedHelper();
+
+ String invalidUrl = "http://localhost:7/non_existent";
+ loadUrlSync(mAwContents, onPageFinishedHelper, invalidUrl);
+
+ assertEquals(invalidUrl, onReceivedErrorHelper.getFailingUrl());
+ assertEquals(invalidUrl, onPageStartedHelper.getUrl());
+
+ // Rather than wait a fixed time to see that another onPageStarted callback isn't issued
+ // we load a valid page. Since callbacks arrive sequentially, this will ensure that
+ // any extra calls of onPageStarted / onReceivedError will arrive to our client.
+ testContentsClient.setAllowAboutBlank();
+ loadUrlSync(mAwContents, onPageFinishedHelper, "about:blank");
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698