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 |