Chromium Code Reviews| Index: android_webview/javatests/src/org/chromium/android_webview/test/ClientOnPageFinishedTest.java |
| diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/ClientOnPageFinishedTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/ClientOnPageFinishedTest.java |
| index aaaa6cc5860a6e385f7a1200c59f7d26345145a0..385b1ff55e847240ca74339a289008da90959792 100644 |
| --- a/android_webview/javatests/src/org/chromium/android_webview/test/ClientOnPageFinishedTest.java |
| +++ b/android_webview/javatests/src/org/chromium/android_webview/test/ClientOnPageFinishedTest.java |
| @@ -72,6 +72,95 @@ public class ClientOnPageFinishedTest extends AwTestBase { |
| assertEquals(1, onReceivedErrorHelper.getCallCount()); |
| } |
| + /** |
| + * If url1 is redirected url2, and url2 load is overridden, onPageFinished should still be |
|
mkosiba (inactive)
2014/02/12 16:03:38
umm.. this isn't a "proper" JavaDoc, so please don
hush (inactive)
2014/02/12 18:40:40
Done.
|
| + * called for url2. |
| + * Steps: |
| + * 1. load url1. url1 onPageStarted |
| + * 2. server redirects url1 to url2. url2 onPageStarted |
| + * 3. shouldOverridedUrlLoading called for url2 and returns true |
| + * 4. url2 onPageFinishedCalled |
| + */ |
| + @MediumTest |
| + @Feature({"AndroidWebView"}) |
| + public void testOnPageFinishedCalledAfterRedirectedUrlIsOverridden() throws Throwable { |
| + TestWebServer webServer = null; |
| + try { |
| + webServer = new TestWebServer(false); |
| + final String redirectTargetPath = "/redirect_target.html"; |
| + // If you visit redirectUrl, you will be redirected to redirectTargetUrl |
|
mkosiba (inactive)
2014/02/12 16:03:38
IMHO this is pretty obvious from the code and does
hush (inactive)
2014/02/12 18:40:40
Done.
|
| + final String redirectTargetUrl = webServer.setResponse(redirectTargetPath, |
| + "<html><body>hello world</body></html>", null); |
| + final String redirectUrl = webServer.setRedirect("/302.html", redirectTargetUrl); |
| + |
| + mContentsClient = new TestAwContentsClient() { |
| + @Override |
| + public boolean shouldOverrideUrlLoading(String url) { |
|
mkosiba (inactive)
2014/02/12 16:03:38
I'd prefer either:
a) moving the shouldOverrideUr
hush (inactive)
2014/02/12 18:40:40
Sure. Actually I would like to do some refactoring
|
| + if (url.equals(redirectTargetUrl)) { |
|
mkosiba (inactive)
2014/02/12 16:03:38
I don't think you need this check - we shouldn't c
hush (inactive)
2014/02/12 18:40:40
you are right, I don't need this check. I was just
|
| + return true; |
| + } |
| + return false; |
| + } |
| + }; |
| + final AwTestContainerView testContainerView = |
| + createAwTestContainerViewOnMainSync(mContentsClient); |
| + mAwContents = testContainerView.getAwContents(); |
| + |
| + TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelper = |
| + mContentsClient.getOnPageFinishedHelper(); |
| + |
| + loadUrlSync(mAwContents, onPageFinishedHelper, redirectUrl); |
| + |
| + // onPageFinished needs to be called for redirectTargetUrl, but not for redirectUrl |
| + assertEquals(1, onPageFinishedHelper.getCallCount()); |
|
mkosiba (inactive)
2014/02/12 16:03:38
please don't use absolute for this. Grab the curre
hush (inactive)
2014/02/12 18:40:40
Done. I loadUrlAync then I waitforCallback to incr
|
| + assertEquals(redirectTargetUrl, onPageFinishedHelper.getUrl()); |
| + } finally { |
| + if (webServer != null) webServer.shutdown(); |
| + } |
| + } |
| + |
| + /** |
| + * Tests that onPageFinished is called after onReceivedError, if there is indeed an error |
| + */ |
| + @MediumTest |
| + @Feature({"AndroidWebView"}) |
| + public void testOnPageFinishedCalledAfterOnReceivedError() throws Throwable { |
| + mContentsClient = new TestAwContentsClient() { |
| + private boolean isOnReceivedErrorCalled = false; |
| + private boolean isOnPageFinishedCalled = false; |
| + |
| + @Override |
| + public void onReceivedError(int errorCode, String description, String failingUrl) { |
| + isOnReceivedErrorCalled = true; |
| + // Make sure onReceivedError is not called before onPageFinished |
|
mkosiba (inactive)
2014/02/12 16:03:38
is this really how Classic operated? sigh..
hush (inactive)
2014/02/12 18:40:40
sorry. I typed the wrong comments there. I meant "
hush (inactive)
2014/02/12 19:41:00
testOnPageFinishedCalledAfterError is not testing
|
| + assertEquals(false, isOnPageFinishedCalled); |
| + super.onReceivedError(errorCode, description, failingUrl); |
| + } |
| + |
| + @Override |
| + public void onPageFinished(String url) { |
| + isOnPageFinishedCalled = true; |
| + super.onPageFinished(url); |
| + } |
| + }; |
| + |
| + final AwTestContainerView testContainerView = |
| + createAwTestContainerViewOnMainSync(mContentsClient); |
| + mAwContents = testContainerView.getAwContents(); |
| + |
| + TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelper = |
| + mContentsClient.getOnPageFinishedHelper(); |
| + |
| + TestCallbackHelperContainer.OnReceivedErrorHelper onReceivedErrorHelper = |
| + mContentsClient.getOnReceivedErrorHelper(); |
| + |
| + final String invalidUrl = "foo://invalid.url.co"; |
| + loadUrlSync(mAwContents, onPageFinishedHelper, invalidUrl); |
| + |
| + assertEquals(invalidUrl, onReceivedErrorHelper.getFailingUrl()); |
|
mkosiba (inactive)
2014/02/12 16:03:38
a couple of lines above you're checking that onRec
hush (inactive)
2014/02/12 18:40:40
Sorry. I was actually trying to test onReceivedErr
|
| + assertEquals(invalidUrl, onPageFinishedHelper.getUrl()); |
| + } |
| + |
| @MediumTest |
| @Feature({"AndroidWebView"}) |
| public void testOnPageFinishedNotCalledForValidSubresources() throws Throwable { |