Skip to content

Commit

Permalink
Prevent Android webview tests from being broken by data URL deprecation
Browse files Browse the repository at this point in the history
Content-initiated main-frame navigations to data URLs are being blocked
in crbug.com/594215. This CL changes several tests that use data URLs.

BUG=594215

Review-Url: https://codereview.chromium.org/2797893002
Cr-Commit-Position: refs/heads/master@{#462212}
  • Loading branch information
meacer authored and Commit bot committed Apr 5, 2017
1 parent 8c16f40 commit 0aaeb2d
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,9 @@ public void testCalledBeforeOnPageStarted() throws Throwable {
OnPageStartedHelper onPageStartedHelper = mContentsClient.getOnPageStartedHelper();

loadDataSync(mAwContents, mContentsClient.getOnPageFinishedHelper(),
CommonResources.makeHtmlPageWithSimpleLinkTo(DATA_URL), "text/html", false);
CommonResources.makeHtmlPageWithSimpleLinkTo(
ContentUrlConstants.ABOUT_BLANK_DISPLAY_URL),
"text/html", false);

final int shouldOverrideUrlLoadingCallCount =
mShouldOverrideUrlLoadingHelper.getCallCount();
Expand All @@ -271,7 +273,9 @@ public void testDoesNotCauseOnReceivedError() throws Throwable {
final int onReceivedErrorCallCount = onReceivedErrorHelper.getCallCount();

loadDataSync(mAwContents, mContentsClient.getOnPageFinishedHelper(),
CommonResources.makeHtmlPageWithSimpleLinkTo(DATA_URL), "text/html", false);
CommonResources.makeHtmlPageWithSimpleLinkTo(
ContentUrlConstants.ABOUT_BLANK_DISPLAY_URL),
"text/html", false);

final int shouldOverrideUrlLoadingCallCount =
mShouldOverrideUrlLoadingHelper.getCallCount();
Expand All @@ -282,8 +286,7 @@ public void testDoesNotCauseOnReceivedError() throws Throwable {

// After we load this URL we're certain that any in-flight callbacks for the previous
// navigation have been delivered.
loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(),
ContentUrlConstants.ABOUT_BLANK_DISPLAY_URL);
loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), DATA_URL);

assertEquals(onReceivedErrorCallCount, onReceivedErrorHelper.getCallCount());
}
Expand Down Expand Up @@ -334,16 +337,18 @@ private void doTestNotCalledForAnchorNavigations(boolean useLoadData) throws Thr
public void testCalledWhenLinkClicked() throws Throwable {
standardSetup();

// We can't go to about:blank from here because we'd get a cross-origin error.
loadDataSync(mAwContents, mContentsClient.getOnPageFinishedHelper(),
CommonResources.makeHtmlPageWithSimpleLinkTo(DATA_URL), "text/html", false);
CommonResources.makeHtmlPageWithSimpleLinkTo(
ContentUrlConstants.ABOUT_BLANK_DISPLAY_URL),
"text/html", false);

int callCount = mShouldOverrideUrlLoadingHelper.getCallCount();

clickOnLinkUsingJs();

mShouldOverrideUrlLoadingHelper.waitForCallback(callCount);
assertEquals(DATA_URL, mShouldOverrideUrlLoadingHelper.getShouldOverrideUrlLoadingUrl());
assertEquals(ContentUrlConstants.ABOUT_BLANK_DISPLAY_URL,
mShouldOverrideUrlLoadingHelper.getShouldOverrideUrlLoadingUrl());
assertFalse(mShouldOverrideUrlLoadingHelper.isRedirect());
assertFalse(mShouldOverrideUrlLoadingHelper.hasUserGesture());
assertTrue(mShouldOverrideUrlLoadingHelper.isMainFrame());
Expand Down Expand Up @@ -491,30 +496,6 @@ public void testCanIgnoreLoading() throws Throwable {
assertEquals(0, mWebServer.getRequestCount(REDIRECT_TARGET_PATH));
}

@SmallTest
@Feature({"AndroidWebView", "Navigation"})
public void testCalledForDataUrl() throws Throwable {
standardSetup();
final String dataUrl =
"data:text/html;base64,"
+ "PGh0bWw+PGhlYWQ+PHRpdGxlPmRhdGFVcmxUZXN0QmFzZTY0PC90aXRsZT48"
+ "L2hlYWQ+PC9odG1sPg==";
loadDataSync(mAwContents, mContentsClient.getOnPageFinishedHelper(),
CommonResources.makeHtmlPageWithSimpleLinkTo(dataUrl), "text/html", false);

int callCount = mShouldOverrideUrlLoadingHelper.getCallCount();
clickOnLinkUsingJs();

mShouldOverrideUrlLoadingHelper.waitForCallback(callCount);
assertTrue("Expected URL that starts with 'data:' but got: <"
+ mShouldOverrideUrlLoadingHelper.getShouldOverrideUrlLoadingUrl() + "> instead.",
mShouldOverrideUrlLoadingHelper.getShouldOverrideUrlLoadingUrl().startsWith(
"data:"));
assertFalse(mShouldOverrideUrlLoadingHelper.isRedirect());
assertFalse(mShouldOverrideUrlLoadingHelper.hasUserGesture());
assertTrue(mShouldOverrideUrlLoadingHelper.isMainFrame());
}

@SmallTest
@Feature({"AndroidWebView", "Navigation"})
public void testCalledForUnsupportedSchemes() throws Throwable {
Expand Down Expand Up @@ -852,7 +833,9 @@ public boolean shouldOverrideUrlLoading(AwContentsClient.AwWebResourceRequest re
int onReceivedErrorCallCount = onReceivedErrorHelper.getCallCount();

loadDataSync(mAwContents, mContentsClient.getOnPageFinishedHelper(),
CommonResources.makeHtmlPageWithSimpleLinkTo(DATA_URL), "text/html", false);
CommonResources.makeHtmlPageWithSimpleLinkTo(
ContentUrlConstants.ABOUT_BLANK_DISPLAY_URL),
"text/html", false);

int shouldOverrideUrlLoadingCallCount = mShouldOverrideUrlLoadingHelper.getCallCount();
setShouldOverrideUrlLoadingReturnValueOnUiThread(true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1184,10 +1184,14 @@ private String getData() {
return "<html><head>"
+ "<script>"
+ " function tryOpenWindow() {"
+ " var newWindow = window.open("
+ " 'data:text/html;charset=utf-8,"
+ " <html><head><title>" + POPUP_ENABLED + "</title></head></html>');"
+ " if (!newWindow) document.title = '" + POPUP_BLOCKED + "';"
+ " var newWindow = window.open('about:blank');"
+ " if (newWindow) {"
+ " newWindow.document.write("
+ " '<html><head><title>" + POPUP_ENABLED
+ "</title></head></html>');"
+ " } else {"
+ " document.title = '" + POPUP_BLOCKED + "';"
+ " }"
+ " }"
+ "</script></head>"
+ "<body onload='tryOpenWindow()'></body></html>";
Expand Down

0 comments on commit 0aaeb2d

Please sign in to comment.