| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.android_webview.test; | 5 package org.chromium.android_webview.test; |
| 6 | 6 |
| 7 import android.os.Build; | 7 import android.os.Build; |
| 8 import android.test.suitebuilder.annotation.MediumTest; | 8 import android.test.suitebuilder.annotation.MediumTest; |
| 9 | 9 |
| 10 import org.chromium.android_webview.AwContents; | 10 import org.chromium.android_webview.AwContents; |
| (...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 278 } finally { | 278 } finally { |
| 279 webServer.shutdown(); | 279 webServer.shutdown(); |
| 280 } | 280 } |
| 281 } | 281 } |
| 282 | 282 |
| 283 @MediumTest | 283 @MediumTest |
| 284 @Feature({"AndroidWebView"}) | 284 @Feature({"AndroidWebView"}) |
| 285 public void testOnPageFinishedNotCalledOnDomModificationForBlankWebView() th
rows Throwable { | 285 public void testOnPageFinishedNotCalledOnDomModificationForBlankWebView() th
rows Throwable { |
| 286 TestWebServer webServer = TestWebServer.start(); | 286 TestWebServer webServer = TestWebServer.start(); |
| 287 try { | 287 try { |
| 288 doTestOnPageFinishedNotCalledOnDomMutation(webServer); | 288 doTestOnPageFinishedNotCalledOnDomMutation(webServer, null); |
| 289 } finally { | 289 } finally { |
| 290 webServer.shutdown(); | 290 webServer.shutdown(); |
| 291 } | 291 } |
| 292 } | 292 } |
| 293 | 293 |
| 294 @MediumTest | 294 @MediumTest |
| 295 @Feature({"AndroidWebView"}) | 295 @Feature({"AndroidWebView"}) |
| 296 public void testOnPageFinishedCalledOnDomModificationAfterNonCommittedLoad()
throws Throwable { | 296 public void testOnPageFinishedNotCalledOnDomModificationAfterNonCommittedLoa
dFromApi() |
| 297 throws Throwable { |
| 297 enableJavaScriptOnUiThread(mAwContents); | 298 enableJavaScriptOnUiThread(mAwContents); |
| 298 TestWebServer webServer = TestWebServer.start(); | 299 TestWebServer webServer = TestWebServer.start(); |
| 299 try { | 300 try { |
| 300 final String noContentUrl = webServer.setResponseWithNoContentStatus
("/nocontent.html"); | 301 final String noContentUrl = webServer.setResponseWithNoContentStatus
("/nocontent.html"); |
| 301 TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelpe
r = | |
| 302 mContentsClient.getOnPageFinishedHelper(); | |
| 303 final int onPageFinishedCallCount = onPageFinishedHelper.getCallCoun
t(); | |
| 304 loadUrlAsync(mAwContents, noContentUrl); | 302 loadUrlAsync(mAwContents, noContentUrl); |
| 305 // Mutate DOM. | 303 doTestOnPageFinishedNotCalledOnDomMutation(webServer, noContentUrl); |
| 306 executeJavaScriptAndWaitForResult(mAwContents, mContentsClient, | |
| 307 "document.body.innerHTML='Hello, World!'"); | |
| 308 onPageFinishedHelper.waitForCallback(onPageFinishedCallCount); | |
| 309 assertEquals("about:blank", onPageFinishedHelper.getUrl()); | |
| 310 } finally { | 304 } finally { |
| 311 webServer.shutdown(); | 305 webServer.shutdown(); |
| 312 } | 306 } |
| 313 } | 307 } |
| 314 | 308 |
| 315 @MediumTest | 309 @MediumTest |
| 316 @Feature({"AndroidWebView"}) | 310 @Feature({"AndroidWebView"}) |
| 317 public void testOnPageFinishedNotCalledOnDomModificationAfterLoadUrl() throw
s Throwable { | 311 public void testOnPageFinishedNotCalledOnDomModificationAfterLoadUrl() throw
s Throwable { |
| 318 TestWebServer webServer = TestWebServer.start(); | 312 TestWebServer webServer = TestWebServer.start(); |
| 319 try { | 313 try { |
| 320 final String testUrl = | 314 final String testUrl = |
| 321 webServer.setResponse("/test.html", CommonResources.ABOUT_HT
ML, null); | 315 webServer.setResponse("/test.html", CommonResources.ABOUT_HT
ML, null); |
| 322 loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(),
testUrl); | 316 loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(),
testUrl); |
| 323 doTestOnPageFinishedNotCalledOnDomMutation(webServer); | 317 doTestOnPageFinishedNotCalledOnDomMutation(webServer, null); |
| 324 } finally { | 318 } finally { |
| 325 webServer.shutdown(); | 319 webServer.shutdown(); |
| 326 } | 320 } |
| 327 } | 321 } |
| 328 | 322 |
| 329 @MediumTest | 323 @MediumTest |
| 330 @Feature({"AndroidWebView"}) | 324 @Feature({"AndroidWebView"}) |
| 331 public void testOnPageFinishedNotCalledOnDomModificationAfterLoadData() | 325 public void testOnPageFinishedNotCalledOnDomModificationAfterLoadData() |
| 332 throws Throwable { | 326 throws Throwable { |
| 333 TestWebServer webServer = TestWebServer.start(); | 327 TestWebServer webServer = TestWebServer.start(); |
| 334 try { | 328 try { |
| 335 loadDataSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), | 329 loadDataSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), |
| 336 CommonResources.ABOUT_HTML, "text/html", false); | 330 CommonResources.ABOUT_HTML, "text/html", false); |
| 337 doTestOnPageFinishedNotCalledOnDomMutation(webServer); | 331 doTestOnPageFinishedNotCalledOnDomMutation(webServer, null); |
| 338 } finally { | 332 } finally { |
| 339 webServer.shutdown(); | 333 webServer.shutdown(); |
| 340 } | 334 } |
| 341 } | 335 } |
| 342 | 336 |
| 343 private void doTestOnPageFinishedNotCalledOnDomMutation(TestWebServer webSer
ver) | 337 private void doTestOnPageFinishedNotCalledOnDomMutation(TestWebServer webSer
ver, String syncUrl) |
| 344 throws Throwable { | 338 throws Throwable { |
| 345 enableJavaScriptOnUiThread(mAwContents); | 339 enableJavaScriptOnUiThread(mAwContents); |
| 346 TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelper = | 340 TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelper = |
| 347 mContentsClient.getOnPageFinishedHelper(); | 341 mContentsClient.getOnPageFinishedHelper(); |
| 348 final int onPageFinishedCallCount = onPageFinishedHelper.getCallCount(); | 342 final int onPageFinishedCallCount = onPageFinishedHelper.getCallCount(); |
| 349 // Mutate DOM. | 343 // Mutate DOM. |
| 350 executeJavaScriptAndWaitForResult(mAwContents, mContentsClient, | 344 executeJavaScriptAndWaitForResult(mAwContents, mContentsClient, |
| 351 "document.body.innerHTML='Hello, World!'"); | 345 "document.body.innerHTML='Hello, World!'"); |
| 352 // Rather than wait a fixed time to see that an onPageFinished callback
isn't issued | 346 // Rather than wait a fixed time to see that an onPageFinished callback
isn't issued |
| 353 // we load another valid page. Since callbacks arrive sequentially if th
e next callback | 347 // we load another valid page. Since callbacks arrive sequentially if th
e next callback |
| 354 // we get is for the synchronizationUrl we know that DOM mutation did no
t schedule | 348 // we get is for the synchronizationUrl we know that DOM mutation did no
t schedule |
| 355 // a callback for the iframe. | 349 // a callback for the iframe. |
| 356 final String syncUrl = webServer.setResponse("/sync.html", "", null); | 350 if (syncUrl == null) { |
| 357 loadUrlAsync(mAwContents, syncUrl); | 351 syncUrl = webServer.setResponse("/sync.html", "", null); |
| 352 loadUrlAsync(mAwContents, syncUrl); |
| 353 } |
| 358 onPageFinishedHelper.waitForCallback(onPageFinishedCallCount); | 354 onPageFinishedHelper.waitForCallback(onPageFinishedCallCount); |
| 359 assertEquals(syncUrl, onPageFinishedHelper.getUrl()); | 355 assertEquals(syncUrl, onPageFinishedHelper.getUrl()); |
| 360 assertEquals(onPageFinishedCallCount + 1, onPageFinishedHelper.getCallCo
unt()); | 356 assertEquals(onPageFinishedCallCount + 1, onPageFinishedHelper.getCallCo
unt()); |
| 361 } | 357 } |
| 362 | 358 |
| 363 @MediumTest | 359 @MediumTest |
| 364 @Feature({"AndroidWebView"}) | 360 @Feature({"AndroidWebView"}) |
| 365 public void testOnPageFinishedCalledAfter204Reply() throws Throwable { | 361 public void testOnPageFinishedCalledAfter204Reply() throws Throwable { |
| 366 TestWebServer webServer = TestWebServer.start(); | 362 TestWebServer webServer = TestWebServer.start(); |
| 367 try { | 363 try { |
| 368 final String url = webServer.setResponseWithNoContentStatus("/page.h
tml"); | 364 final String url = webServer.setResponseWithNoContentStatus("/page.h
tml"); |
| 369 TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelpe
r = | 365 TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelpe
r = |
| 370 mContentsClient.getOnPageFinishedHelper(); | 366 mContentsClient.getOnPageFinishedHelper(); |
| 371 int currentCallCount = onPageFinishedHelper.getCallCount(); | 367 int currentCallCount = onPageFinishedHelper.getCallCount(); |
| 372 loadUrlAsync(mAwContents, url); | 368 loadUrlAsync(mAwContents, url); |
| 373 onPageFinishedHelper.waitForCallback(currentCallCount); | 369 onPageFinishedHelper.waitForCallback(currentCallCount); |
| 374 assertEquals(url, onPageFinishedHelper.getUrl()); | 370 assertEquals(url, onPageFinishedHelper.getUrl()); |
| 375 } finally { | 371 } finally { |
| 376 webServer.shutdown(); | 372 webServer.shutdown(); |
| 377 } | 373 } |
| 378 } | 374 } |
| 379 } | 375 } |
| OLD | NEW |