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

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

Issue 1161783005: [Android WebView] Send WebChromeClient.onReceivedTitle when navigating back (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed typo Created 5 years, 6 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.SmallTest; 8 import android.test.suitebuilder.annotation.SmallTest;
9 import android.util.Pair; 9 import android.util.Pair;
10 10
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 325
326 HistoryUtils.goBackSync(getInstrumentation(), 326 HistoryUtils.goBackSync(getInstrumentation(),
327 awContents.getWebContents(), 327 awContents.getWebContents(),
328 contentsClient.getOnPageFinishedHelper()); 328 contentsClient.getOnPageFinishedHelper());
329 assertEquals(2, webServer.getRequestCount(path)); 329 assertEquals(2, webServer.getRequestCount(path));
330 validateRequestHeaders(extraHeaders, webServer.getLastRequest(path)) ; 330 validateRequestHeaders(extraHeaders, webServer.getLastRequest(path)) ;
331 } finally { 331 } finally {
332 webServer.shutdown(); 332 webServer.shutdown();
333 } 333 }
334 } 334 }
335
336 private static class OnReceivedTitleClient extends TestAwContentsClient {
337 void setOnReceivedTitleCallback(Runnable onReceivedTitleCallback) {
338 mOnReceivedTitleCallback = onReceivedTitleCallback;
339 }
340 @Override
341 public void onReceivedTitle(String title) {
342 super.onReceivedTitle(title);
343 mOnReceivedTitleCallback.run();
344 }
345 private Runnable mOnReceivedTitleCallback;
346 }
347
348 // See crbug.com/494929. Need to make sure that loading a javascript: URL
349 // from inside onReceivedTitle works.
350 @SmallTest
351 @Feature({"AndroidWebView"})
352 public void testLoadUrlFromOnReceivedTitle() throws Throwable {
353 final OnReceivedTitleClient contentsClient = new OnReceivedTitleClient() ;
354 final AwTestContainerView testContainerView =
355 createAwTestContainerViewOnMainSync(contentsClient);
356 final AwContents awContents = testContainerView.getAwContents();
357 final AwSettings settings = getAwSettingsOnUiThread(awContents);
358 settings.setJavaScriptEnabled(true);
359
360 contentsClient.setOnReceivedTitleCallback(new Runnable() {
361 @Override
362 public void run() {
363 awContents.loadUrl("javascript:testProperty=42;void(0);");
364 }
365 });
366
367 TestWebServer webServer = TestWebServer.start();
368 try {
369 // We need to have a navigation entry, but with an empty title. Note that
370 // trying to load a page with no title makes the received title to b e
371 // the URL of the page so instead we use a "204 No Content" response .
372 final String url = webServer.setResponseWithNoContentStatus("/page.h tml");
373 loadUrlSync(awContents, contentsClient.getOnPageFinishedHelper(), ur l);
374 TestAwContentsClient.OnReceivedTitleHelper onReceivedTitleHelper =
375 contentsClient.getOnReceivedTitleHelper();
376 final String pageTitle = "Hello, World!";
377 int onReceivedTitleCallCount = onReceivedTitleHelper.getCallCount();
378 loadUrlAsync(awContents, "javascript:document.title=\"" + pageTitle + "\";void(0);");
379 onReceivedTitleHelper.waitForCallback(onReceivedTitleCallCount);
380 assertEquals(pageTitle, onReceivedTitleHelper.getTitle());
381 } finally {
382 webServer.shutdown();
383 }
384 }
385
386 public void testOnReceivedTitleForUnchangingTitle() throws Throwable {
387 final TestAwContentsClient contentsClient = new TestAwContentsClient();
388 final AwTestContainerView testContainerView =
389 createAwTestContainerViewOnMainSync(contentsClient);
390 final AwContents awContents = testContainerView.getAwContents();
391
392 TestWebServer webServer = TestWebServer.start();
393 try {
394 final String title = "Title";
395 final String url1 = webServer.setResponse("/page1.html",
396 "<html><head><title>" + title + "</title></head>Page 1</html >", null);
397 final String url2 = webServer.setResponse("/page2.html",
398 "<html><head><title>" + title + "</title></head>Page 2</html >", null);
399 TestAwContentsClient.OnReceivedTitleHelper onReceivedTitleHelper =
400 contentsClient.getOnReceivedTitleHelper();
401 int onReceivedTitleCallCount = onReceivedTitleHelper.getCallCount();
402 loadUrlSync(awContents, contentsClient.getOnPageFinishedHelper(), ur l1);
403 onReceivedTitleHelper.waitForCallback(onReceivedTitleCallCount);
404 assertEquals(title, onReceivedTitleHelper.getTitle());
405 // Verify that even if we load another page with the same title,
406 // onReceivedTitle is still being called.
407 onReceivedTitleCallCount = onReceivedTitleHelper.getCallCount();
408 loadUrlSync(awContents, contentsClient.getOnPageFinishedHelper(), ur l2);
409 onReceivedTitleHelper.waitForCallback(onReceivedTitleCallCount);
410 assertEquals(title, onReceivedTitleHelper.getTitle());
411 } finally {
412 webServer.shutdown();
413 }
414 }
335 } 415 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698