public void testShouldOverrideUrlLoadingNotCalledForAnchorNavigationsWithNonHierarchicalScheme() {
   try {
     final String anchorLinkPath = "/anchor_link.html";
     final String anchorLinkUrl = mWebServer.getResponseUrl(anchorLinkPath);
     addPageToTestServer(
         mWebServer,
         anchorLinkPath,
         CommonResources.makeHtmlPageWithSimpleLinkTo(anchorLinkUrl + "#anchor"));
     loadDataSync(
         null, CommonResources.makeHtmlPageWithSimpleLinkTo("#anchor"), "text/html", false);
     ShouldOverrideUrlLoadingHelper mShouldOverrideUrlLoadingHelper =
         mTestHelperBridge.getShouldOverrideUrlLoadingHelper();
     final int shouldOverrideUrlLoadingCallCount = mShouldOverrideUrlLoadingHelper.getCallCount();
     clickOnElementId("link", null);
     loadUrlSync("about:blank");
     assertEquals(
         shouldOverrideUrlLoadingCallCount, mShouldOverrideUrlLoadingHelper.getCallCount());
   } catch (Exception e) {
     assertTrue(false);
     e.printStackTrace();
   } catch (Throwable e) {
     assertTrue(false);
     e.printStackTrace();
   }
 }
 public void testShouldOverrideUrlLoadingOnBackForwardNavigation() {
   try {
     final String url = "file:///android_asset/index.html";
     final String httpPath = "/test.html";
     final String httpPathOnServer = mWebServer.getResponseUrl(httpPath);
     addPageToTestServer(
         mWebServer, httpPath, CommonResources.makeHtmlPageWithSimpleLinkTo(httpPathOnServer));
     ShouldOverrideUrlLoadingHelper mShouldOverrideUrlLoadingHelper =
         mTestHelperBridge.getShouldOverrideUrlLoadingHelper();
     loadUrlSync(httpPathOnServer);
     loadUrlSync(url);
     assertEquals(2, mShouldOverrideUrlLoadingHelper.getCallCount());
     String oldTitle = getTitleOnUiThread();
     goBackSync(1);
     assertFalse(oldTitle.equals(getTitleOnUiThread()));
     assertEquals(3, mShouldOverrideUrlLoadingHelper.getCallCount());
     oldTitle = getTitleOnUiThread();
     goForwardSync(1);
     assertFalse(oldTitle.equals(getTitleOnUiThread()));
     assertEquals(4, mShouldOverrideUrlLoadingHelper.getCallCount());
   } catch (Exception e) {
     assertTrue(false);
     e.printStackTrace();
   } catch (Throwable e) {
     assertTrue(false);
     e.printStackTrace();
   }
 }
 public void testShouldOverrideUrlLoadingForDataUrl() {
   try {
     final String dataUrl =
         "data:text/html;base64,"
             + "PGh0bWw+PGhlYWQ+PHRpdGxlPmRhdGFVcmxUZXN0QmFzZTY0PC90aXRsZT48"
             + "L2hlYWQ+PC9odG1sPg==";
     loadDataSync(null, CommonResources.makeHtmlPageWithSimpleLinkTo(dataUrl), "text/html", false);
     ShouldOverrideUrlLoadingHelper mShouldOverrideUrlLoadingHelper =
         mTestHelperBridge.getShouldOverrideUrlLoadingHelper();
     int callCount = mShouldOverrideUrlLoadingHelper.getCallCount();
     clickOnElementId("link", null);
     mShouldOverrideUrlLoadingHelper.waitForCallback(callCount);
     assertTrue(
         "Expected URL that starts with 'data:' but got: <"
             + mShouldOverrideUrlLoadingHelper.getShouldOverrideUrlLoadingUrl()
             + "> instead.",
         mShouldOverrideUrlLoadingHelper.getShouldOverrideUrlLoadingUrl().startsWith("data:"));
     assertEquals(1, mShouldOverrideUrlLoadingHelper.getCallCount());
   } catch (Exception e) {
     assertTrue(false);
     e.printStackTrace();
   } catch (Throwable e) {
     assertTrue(false);
     e.printStackTrace();
   }
 }
 public void testShouldOverrideUrlLoadingWithCorrectUrl() {
   try {
     final String redirectTargetUrl =
         addPageToTestServer(
             mWebServer,
             REDIRECT_TARGET_PATH,
             CommonResources.makeHtmlPageFrom(
                 "<title>" + TITLE + "</title> ",
                 "<div>This is the end of the redirect chain</div>"));
     loadDataSync(
         null,
         CommonResources.makeHtmlPageWithSimpleLinkTo(redirectTargetUrl),
         "text/html",
         false);
     ShouldOverrideUrlLoadingHelper mShouldOverrideUrlLoadingHelper =
         mTestHelperBridge.getShouldOverrideUrlLoadingHelper();
     int callCount = mShouldOverrideUrlLoadingHelper.getCallCount();
     clickOnElementId("link", null);
     mShouldOverrideUrlLoadingHelper.waitForCallback(callCount);
     assertEquals(
         redirectTargetUrl, mShouldOverrideUrlLoadingHelper.getShouldOverrideUrlLoadingUrl());
   } catch (Exception e) {
     assertTrue(false);
     e.printStackTrace();
   } catch (Throwable e) {
     assertTrue(false);
     e.printStackTrace();
   }
 }
 public void testShouldOverrideUrlLoadingNotCalledOnLoadData() {
   try {
     ShouldOverrideUrlLoadingHelper mShouldOverrideUrlLoadingHelper =
         mTestHelperBridge.getShouldOverrideUrlLoadingHelper();
     loadDataSync(
         null, CommonResources.makeHtmlPageWithSimpleLinkTo(DATA_URL), "text/html", false);
     assertEquals(0, mShouldOverrideUrlLoadingHelper.getCallCount());
   } catch (Exception e) {
     assertTrue(false);
     e.printStackTrace();
   }
 }
 public void testShouldOverrideUrlLoadingWhenLinkClicked() {
   try {
     loadDataSync(
         null, CommonResources.makeHtmlPageWithSimpleLinkTo(DATA_URL), "text/html", false);
     ShouldOverrideUrlLoadingHelper mShouldOverrideUrlLoadingHelper =
         mTestHelperBridge.getShouldOverrideUrlLoadingHelper();
     int callCount = mShouldOverrideUrlLoadingHelper.getCallCount();
     clickOnElementId("link", null);
     mShouldOverrideUrlLoadingHelper.waitForCallback(callCount);
     assertEquals(1, mShouldOverrideUrlLoadingHelper.getCallCount());
   } catch (Exception e) {
     assertTrue(false);
     e.printStackTrace();
   } catch (Throwable e) {
     assertTrue(false);
     e.printStackTrace();
   }
 }
 public void testShouldOverrideUrlLoading_OnPageStarted() {
   try {
     OnPageStartedHelper onPageStartedHelper = mTestHelperBridge.getOnPageStartedHelper();
     ShouldOverrideUrlLoadingHelper mShouldOverrideUrlLoadingHelper =
         mTestHelperBridge.getShouldOverrideUrlLoadingHelper();
     loadDataSync(
         null, CommonResources.makeHtmlPageWithSimpleLinkTo(DATA_URL), "text/html", false);
     final int shouldOverrideUrlLoadingCallCount = mShouldOverrideUrlLoadingHelper.getCallCount();
     final int onPageStartedCallCount = onPageStartedHelper.getCallCount();
     mShouldOverrideUrlLoadingHelper.setShouldOverrideUrlLoadingReturnValue(true);
     clickOnElementId("link", null);
     mShouldOverrideUrlLoadingHelper.waitForCallback(shouldOverrideUrlLoadingCallCount);
     assertEquals(onPageStartedCallCount, onPageStartedHelper.getCallCount());
   } catch (Exception e) {
     assertTrue(false);
     e.printStackTrace();
   } catch (Throwable e) {
     assertTrue(false);
     e.printStackTrace();
   }
 }
 public void testShouldOverrideUrlLoadingWhenSelfLinkClicked() {
   try {
     final String httpPath = "/page_with_link_to_self.html";
     final String httpPathOnServer = mWebServer.getResponseUrl(httpPath);
     addPageToTestServer(
         mWebServer, httpPath, CommonResources.makeHtmlPageWithSimpleLinkTo(httpPathOnServer));
     ShouldOverrideUrlLoadingHelper mShouldOverrideUrlLoadingHelper =
         mTestHelperBridge.getShouldOverrideUrlLoadingHelper();
     loadUrlSync(httpPathOnServer);
     int callCount = mShouldOverrideUrlLoadingHelper.getCallCount();
     clickOnElementId("link", null);
     mShouldOverrideUrlLoadingHelper.waitForCallback(callCount);
     assertEquals(
         httpPathOnServer, mShouldOverrideUrlLoadingHelper.getShouldOverrideUrlLoadingUrl());
   } catch (Exception e) {
     assertTrue(false);
     e.printStackTrace();
   } catch (Throwable e) {
     assertTrue(false);
     e.printStackTrace();
   }
 }
 public void testShouldOverrideUrlLoadingForUnsupportedSchemes() {
   try {
     final String unsupportedSchemeUrl = "foobar://resource/1";
     loadDataSync(
         null,
         CommonResources.makeHtmlPageWithSimpleLinkTo(unsupportedSchemeUrl),
         "text/html",
         false);
     ShouldOverrideUrlLoadingHelper mShouldOverrideUrlLoadingHelper =
         mTestHelperBridge.getShouldOverrideUrlLoadingHelper();
     int callCount = mShouldOverrideUrlLoadingHelper.getCallCount();
     clickOnElementId("link", null);
     mShouldOverrideUrlLoadingHelper.waitForCallback(callCount);
     assertEquals(
         unsupportedSchemeUrl, mShouldOverrideUrlLoadingHelper.getShouldOverrideUrlLoadingUrl());
   } catch (Exception e) {
     assertTrue(false);
     e.printStackTrace();
   } catch (Throwable e) {
     assertTrue(false);
     e.printStackTrace();
   }
 }