Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Side by Side Diff: android_webview/javatests/src/org/chromium/android_webview/test/ClientOnPageFinishedTest.java

Issue 1024103002: [Android WebView] Provide user-initiated provisional load detection (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comments and build fix Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698