// Copyright 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. package org.chromium.android_webview.test; import android.test.suitebuilder.annotation.SmallTest; import org.chromium.android_webview.AwContents; import org.chromium.android_webview.test.util.CommonResources; import org.chromium.base.ThreadUtils; import org.chromium.base.test.util.DisabledTest; import org.chromium.content.browser.NavigationEntry; import org.chromium.content.browser.NavigationHistory; import org.chromium.content.browser.test.util.HistoryUtils; import org.chromium.content.browser.test.util.TestCallbackHelperContainer; import org.chromium.net.test.util.TestWebServer; import java.util.concurrent.Callable; public class NavigationHistoryTest extends AwTestBase { private static final String PAGE_1_PATH = "/page1.html"; private static final String PAGE_1_TITLE = "Page 1 Title"; private static final String PAGE_2_PATH = "/page2.html"; private static final String PAGE_2_TITLE = "Page 2 Title"; private static final String PAGE_WITH_HASHTAG_REDIRECT_TITLE = "Page with hashtag"; private static final String LOGIN_PAGE_PATH = "/login.html"; private static final String LOGIN_PAGE_TITLE = "Login page"; private static final String LOGIN_RESPONSE_PAGE_PATH = "/login-response.html"; private static final String LOGIN_RESPONSE_PAGE_TITLE = "Login response"; private static final String LOGIN_RESPONSE_PAGE_HELP_LINK_ID = "help"; private TestWebServer mWebServer; private TestAwContentsClient mContentsClient; private AwContents mAwContents; @Override public void setUp() throws Exception { super.setUp(); mContentsClient = new TestAwContentsClient(); final AwTestContainerView testContainerView = createAwTestContainerViewOnMainSync(mContentsClient); mAwContents = testContainerView.getAwContents(); mWebServer = new TestWebServer(false); } @Override public void tearDown() throws Exception { mWebServer.shutdown(); super.tearDown(); } private NavigationHistory getNavigationHistory(final AwContents awContents) throws Exception { return ThreadUtils.runOnUiThreadBlocking(new Callable() { @Override public NavigationHistory call() { return awContents.getContentViewCore().getNavigationHistory(); } }); } private void checkHistoryItem(NavigationEntry item, String url, String originalUrl, String title, boolean faviconNull) { assertEquals(url, item.getUrl()); assertEquals(originalUrl, item.getOriginalUrl()); assertEquals(title, item.getTitle()); if (faviconNull) { assertNull(item.getFavicon()); } else { assertNotNull(item.getFavicon()); } } private String addPage1ToServer(TestWebServer webServer) { return mWebServer.setResponse(PAGE_1_PATH, CommonResources.makeHtmlPageFrom( "" + PAGE_1_TITLE + "", "
This is test page 1.
"), CommonResources.getTextHtmlHeaders(false)); } private String addPage2ToServer(TestWebServer webServer) { return mWebServer.setResponse(PAGE_2_PATH, CommonResources.makeHtmlPageFrom( "" + PAGE_2_TITLE + "", "
This is test page 2.
"), CommonResources.getTextHtmlHeaders(false)); } private String addPageWithHashTagRedirectToServer(TestWebServer webServer) { return mWebServer.setResponse(PAGE_2_PATH, CommonResources.makeHtmlPageFrom( "" + PAGE_WITH_HASHTAG_REDIRECT_TITLE + "", "