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

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

Issue 1530183004: Revert 3 CLs for shouldOverrideUrlLoading implementation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase (simple conflict in AwContentsClientShouldOverrideUrlLoadingTest). Created 4 years, 11 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/AwContentsClientShouldOverrideUrlLoadingTest.java
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientShouldOverrideUrlLoadingTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientShouldOverrideUrlLoadingTest.java
index 06945019a603cc7b87afcfde174be35c9693b04f..e27672f62de416d3bbfe348ba7495144352314c0 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientShouldOverrideUrlLoadingTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientShouldOverrideUrlLoadingTest.java
@@ -9,10 +9,8 @@ import android.util.Pair;
import org.chromium.android_webview.AwContents;
import org.chromium.android_webview.AwContentsClient;
-import org.chromium.android_webview.test.TestAwContentsClient.OnFailedLoadHelper;
import org.chromium.android_webview.test.util.CommonResources;
import org.chromium.android_webview.test.util.JSUtils;
-import org.chromium.android_webview.test.util.JavascriptEventObserver;
import org.chromium.base.annotations.SuppressFBWarnings;
import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.DisabledTest;
@@ -20,7 +18,6 @@ import org.chromium.base.test.util.Feature;
import org.chromium.content.browser.test.util.CallbackHelper;
import org.chromium.content.browser.test.util.DOMUtils;
import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnEvaluateJavaScriptResultHelper;
-import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnPageFinishedHelper;
import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnPageStartedHelper;
import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnReceivedErrorHelper;
import org.chromium.content.common.ContentSwitches;
@@ -30,7 +27,6 @@ import org.chromium.net.test.util.TestWebServer;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
-import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
/**
@@ -736,9 +732,7 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase {
assertEquals(redirectTarget,
mShouldOverrideUrlLoadingHelper.getShouldOverrideUrlLoadingUrl());
assertEquals(serverSideRedirect, mShouldOverrideUrlLoadingHelper.isRedirect());
- // We keep the user gesture from the initial navigation for serverside redirects but drop
- // the user gesture for browser initiated redirects.
- assertEquals(serverSideRedirect, mShouldOverrideUrlLoadingHelper.hasUserGesture());
+ assertFalse(mShouldOverrideUrlLoadingHelper.hasUserGesture());
assertTrue(mShouldOverrideUrlLoadingHelper.isMainFrame());
}
@@ -1086,164 +1080,4 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase {
public void testClickableAddressInIframe() throws Throwable {
doTestClickableContent(TEST_ADDRESS, TEST_ADDRESS_URI, false);
}
-
- @SmallTest
- @Feature({"AndroidWebView"})
- public void testXhrInLink() throws Throwable {
- standardSetup();
- final CountDownLatch shouldOverrideUrlLoadingSignal = new CountDownLatch(1);
-
- final String xhrPath = "/xhrPath.html";
- final String xhrUrl = mWebServer.setResponseWithRunnableAction(
- xhrPath, CommonResources.makeHtmlPageFrom("", ""), null, new Runnable() {
- @Override
- public void run() {
- try {
- shouldOverrideUrlLoadingSignal.await();
- } catch (InterruptedException e) {
- throw new RuntimeException(e);
- }
- }
- });
-
- final String xhrJs = "function xhrFunction() {"
- + " var xhr = new XMLHttpRequest();"
- + " xhr.onload=function() {"
- + " console.info('xhr loaded');"
- + " window.jsInterface.setValue(true);"
- + " };"
- + " xhr.onerror=function() {"
- + " console.info('xhr failed, status ' + xhr.status);"
- + " window.jsInterface.setValue(false);"
- + " };"
- + " xhr.open('GET', '" + xhrUrl + "', true);"
- + " xhr.send();"
- + "};";
-
- String pageWithXhrLink = makeHtmlPageFrom(
- "<script>" + xhrJs + "</script>", "<img onclick=\"xhrFunction(); location.href='"
- + "thiswillbe://intercepted/"
- + "'\" class=\"big\" id=\"link\" />");
-
- final String startPath = "/startPath.html";
- final String startUrl = addPageToTestServer(startPath, pageWithXhrLink);
-
- enableJavaScriptOnUiThread(mAwContents);
- final BooleanValueJavascriptObserver jsInterface = new BooleanValueJavascriptObserver();
-
- // add javascript interface
- getInstrumentation().runOnMainSync(new Runnable() {
- @Override
- public void run() {
- jsInterface.register(mAwContents.getContentViewCore(), "jsInterface");
- }
- });
-
- loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), startUrl);
-
- setShouldOverrideUrlLoadingReturnValueOnUiThread(true);
- final int shouldOverrideUrlLoadingCallCount =
- mShouldOverrideUrlLoadingHelper.getCallCount();
-
- assertEquals(0, mWebServer.getRequestCount(xhrPath));
-
- clickOnLinkUsingJs();
-
- // Make the server xhr response wait until the navigation request is intercepted.
- mShouldOverrideUrlLoadingHelper.waitForCallback(shouldOverrideUrlLoadingCallCount);
- shouldOverrideUrlLoadingSignal.countDown();
-
- jsInterface.waitForEvent(WAIT_TIMEOUT_MS);
- assertTrue(jsInterface.getValue());
- assertEquals(1, mWebServer.getRequestCount(xhrPath));
- }
-
- private static class BooleanValueJavascriptObserver extends JavascriptEventObserver {
- private boolean mValue = false;
-
- public void setValue(boolean value) {
- mValue = value;
- notifyJava();
- }
-
- public boolean getValue() {
- return mValue;
- }
- }
-
- /**
- * This is to test a bug where a JS redirect failing in its provisional state would prevent us
- * from posting onPageFinished for the original page load.
- * The original page contains an iframe so that we can commit the original load but then
- * prevent it from finishing until the JS redirect fails by having the test server defer the
- * response to the iframe.
- */
- @SmallTest
- @Feature({"AndroidWebView"})
- public void testOnPageFinishedOnFailedJSRedirect() throws Throwable {
- final CountDownLatch jsRedirectSignal = new CountDownLatch(1);
-
- final String redirectTargetPath = "/redirectTargetPath.html";
- final String redirectTargetUrl = mWebServer.setResponse(
- redirectTargetPath, CommonResources.makeHtmlPageFrom("", ""), null);
-
- class DelayingOverrideClient extends TestAwContentsClient {
- @Override
- public boolean shouldOverrideUrlLoading(AwWebResourceRequest request) {
- if (redirectTargetUrl.equals(request.url)) {
- try {
- // Wait here to make sure the load reaches its provisional state before we
- // cancel it. Waiting for a callback to the WebContentsObserver to make sure
- // we have reached the provisional state causes a deadlock here.
- Thread.sleep(Math.min(WAIT_TIMEOUT_MS / 2, 2000));
- } catch (InterruptedException e) {
- }
- return true;
- }
- return false;
- }
- }
- mContentsClient = new DelayingOverrideClient();
- setupWithProvidedContentsClient(mContentsClient);
-
- final String redirectJs = "window.location.href='" + redirectTargetUrl + "';";
-
- final String iframePath = "/iframePath.html";
- final String iframeUrl = mWebServer.setResponseWithRunnableAction(
- iframePath, CommonResources.makeHtmlPageFrom("", ""), null, new Runnable() {
- @Override
- public void run() {
- try {
- mAwContents.evaluateJavaScriptForTests(redirectJs, null);
- jsRedirectSignal.await();
- } catch (InterruptedException e) {
- }
- }
- });
- final String iframeJs = "<iframe src='" + iframeUrl + "'></iframe>";
-
- String startPage = makeHtmlPageFrom("", iframeJs);
- final String startPath = "/startPath.html";
- final String startUrl = addPageToTestServer(startPath, startPage);
-
- enableJavaScriptOnUiThread(mAwContents);
-
- OnPageFinishedHelper onPageFinishedHelper = mContentsClient.getOnPageFinishedHelper();
- int onPageFinishedCallCount = onPageFinishedHelper.getCallCount();
-
- OnFailedLoadHelper onFailedLoadHelper = mContentsClient.getOnFailedLoadHelper();
- int onFailedLoadCallCount = onFailedLoadHelper.getCallCount();
-
- // load start url -> iframe -> JS redirect -> fail JS redirect -> finish start URL
- loadUrlAsync(mAwContents, startUrl);
-
- onFailedLoadHelper.waitForCallback(onFailedLoadCallCount);
- assertEquals(redirectTargetUrl, onFailedLoadHelper.getUrl());
-
- // let iframe finish
- jsRedirectSignal.countDown();
-
- onPageFinishedHelper.waitForCallback(onPageFinishedCallCount);
- assertEquals(startUrl, onPageFinishedHelper.getUrl());
- }
}

Powered by Google App Engine
This is Rietveld 408576698