Commit ceb30d5a authored by Benoit Lize's avatar Benoit Lize Committed by Commit Bot

android: Remove PrerenderTest.

Prerender is no more, remove the java tests.

Bug: 1014213, 642392
Change-Id: I25bb948ad859b80ffa0610dade4b692b969d3917
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2228611Reviewed-by: default avatarYaron Friedman <yfriedman@chromium.org>
Reviewed-by: default avatarEgor Pasko <pasko@chromium.org>
Commit-Queue: Benoit L <lizeb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#775013}
parent e55c1fbf
......@@ -1735,7 +1735,6 @@ generate_jni("test_support_jni_headers") {
"javatests/src/org/chromium/chrome/browser/ServicificationBackgroundService.java",
"javatests/src/org/chromium/chrome/browser/offlinepages/OfflineTestUtil.java",
"javatests/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchTestBridge.java",
"javatests/src/org/chromium/chrome/browser/prerender/PrerenderTestHelper.java",
"javatests/src/org/chromium/chrome/browser/query_tiles/QueryTileFakeServer.java",
"javatests/src/org/chromium/chrome/browser/test/MockCertVerifierRuleAndroid.java",
]
......@@ -1748,7 +1747,6 @@ android_library("browser_java_test_support") {
"javatests/src/org/chromium/chrome/browser/ServicificationBackgroundService.java",
"javatests/src/org/chromium/chrome/browser/offlinepages/OfflineTestUtil.java",
"javatests/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchTestBridge.java",
"javatests/src/org/chromium/chrome/browser/prerender/PrerenderTestHelper.java",
"javatests/src/org/chromium/chrome/browser/query_tiles/QueryTileFakeServer.java",
"javatests/src/org/chromium/chrome/browser/sync/FakeServerHelper.java",
"javatests/src/org/chromium/chrome/browser/test/MockCertVerifierRuleAndroid.java",
......@@ -1777,7 +1775,6 @@ static_library("browser_test_support") {
"../browser/android/ssl/mock_cert_verifier_rule_android.h",
"../browser/offline_pages/android/offline_test_util_jni.cc",
"../browser/offline_pages/android/prefetch_test_bridge.cc",
"../browser/prerender/prerender_test_helper.cc",
"../browser/query_tiles/query_tile_fake_server.cc",
]
deps = [
......
......@@ -28,7 +28,6 @@ chrome_test_java_sources = [
"javatests/src/org/chromium/chrome/browser/PopularUrlsTest.java",
"javatests/src/org/chromium/chrome/browser/PopupTest.java",
"javatests/src/org/chromium/chrome/browser/PowerBroadcastReceiverTest.java",
"javatests/src/org/chromium/chrome/browser/PrerenderTest.java",
"javatests/src/org/chromium/chrome/browser/ProcessIsolationTest.java",
"javatests/src/org/chromium/chrome/browser/ReachedCodeProfilerTest.java",
"javatests/src/org/chromium/chrome/browser/RestoreHistogramTest.java",
......
// Copyright 2015 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.chrome.browser;
import static org.chromium.base.test.util.Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE;
import android.os.Build;
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.LargeTest;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.DisableIf;
import org.chromium.base.test.util.DisabledTest;
import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.FlakyTest;
import org.chromium.base.test.util.Restriction;
import org.chromium.chrome.browser.flags.ChromeSwitches;
import org.chromium.chrome.browser.prerender.ExternalPrerenderHandler;
import org.chromium.chrome.browser.prerender.PrerenderTestHelper;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
import org.chromium.chrome.test.util.browser.TabTitleObserver;
import org.chromium.content_public.browser.test.util.TestThreadUtils;
import org.chromium.net.test.EmbeddedTestServer;
import org.chromium.ui.base.PageTransition;
import java.util.concurrent.TimeoutException;
/**
* Prerender tests.
*
* Tests are disabled on low-end devices. These only support one renderer for performance reasons.
*/
@RunWith(ChromeJUnit4ClassRunner.class)
@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE})
public class PrerenderTest {
@Rule
public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
private EmbeddedTestServer mTestServer;
@Before
public void setUp() throws Exception {
mActivityTestRule.startMainActivityOnBlankPage();
mTestServer = EmbeddedTestServer.createAndStartServer(InstrumentationRegistry.getContext());
}
@After
public void tearDown() {
mTestServer.stopAndDestroyServer();
}
/**
* We are using Autocomplete Action Predictor to decide whether or not to prerender.
* Without any training data the default action should be no-prerender.
*/
@Test
@LargeTest
@Restriction({RESTRICTION_TYPE_NON_LOW_END_DEVICE})
@Feature({"TabContents"})
@FlakyTest(message = "https://crbug.com/1014213")
@DisableIf.
Build(sdk_is_greater_than = Build.VERSION_CODES.M, message = "https://crbug.com/1014213")
public void testNoPrerender() throws InterruptedException {
String testUrl = mTestServer.getURL(
"/chrome/test/data/android/prerender/google.html");
final Tab tab = mActivityTestRule.getActivity().getActivityTab();
// Mimic user behavior: touch to focus then type some URL.
// Since this is a URL, it should be prerendered.
// Type one character at a time to properly simulate input
// to the action predictor.
mActivityTestRule.typeInOmnibox(testUrl, true);
Assert.assertFalse("URL should not have been prerendered.",
PrerenderTestHelper.waitForPrerenderUrl(tab, testUrl, true));
// Navigate should not use the prerendered version.
Assert.assertEquals(TabLoadStatus.DEFAULT_PAGE_LOAD,
mActivityTestRule.loadUrlInTab(
testUrl, PageTransition.TYPED | PageTransition.FROM_ADDRESS_BAR, tab));
}
/*
@LargeTest
@Restriction({RESTRICTION_TYPE_NON_LOW_END_DEVICE})
@Feature({"TabContents"})
*/
@Test
@FlakyTest(message = "crbug.com/339668")
public void testPrerenderNotDead() throws TimeoutException {
String testUrl = mTestServer.getURL(
"/chrome/test/data/android/prerender/google.html");
final Tab tab = mActivityTestRule.getActivity().getActivityTab();
PrerenderTestHelper.prerenderUrl(testUrl, tab);
// Navigate should use the prerendered version.
Assert.assertEquals(
TabLoadStatus.FULL_PRERENDERED_PAGE_LOAD, mActivityTestRule.loadUrl(testUrl));
// Prerender again with new text; make sure we get something different.
String newTitle = "Welcome to the YouTube";
testUrl = mTestServer.getURL("/chrome/test/data/android/prerender/youtube.html");
PrerenderTestHelper.prerenderUrl(testUrl, tab);
// Make sure the current tab title is NOT from the prerendered page.
Assert.assertNotEquals(newTitle, tab.getTitle());
TabTitleObserver observer = new TabTitleObserver(tab, newTitle);
// Now commit and see the new title.
mActivityTestRule.loadUrl(testUrl);
observer.waitForTitleUpdate(5);
Assert.assertEquals(newTitle, tab.getTitle());
}
/**
* Tests that we don't crash when dismissing a prerendered page with infobars and unload
* handler (See bug 5757331).
* Note that this bug happened with the instant code. Now that we use Wicked Fast, we don't
* deal with infobars ourselves.
*/
/*
@LargeTest
@Restriction({RESTRICTION_TYPE_NON_LOW_END_DEVICE})
@Feature({"TabContents"})
*/
@Test
@DisabledTest(message = "Prerenderer disables infobars. crbug.com/588808")
public void testInfoBarDismissed() {
final String url = mTestServer.getURL(
"/chrome/test/data/geolocation/geolocation_on_load.html");
final ExternalPrerenderHandler handler = PrerenderTestHelper.prerenderUrl(
url, mActivityTestRule.getActivity().getActivityTab());
// Cancel the prerender. This will discard the prerendered WebContents and close the
// infobars.
TestThreadUtils.runOnUiThreadBlocking(() -> handler.cancelCurrentPrerender());
}
}
......@@ -35,7 +35,6 @@ import org.chromium.chrome.browser.compositor.layouts.OverviewModeController;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.flags.ChromeSwitches;
import org.chromium.chrome.browser.omnibox.UrlBar;
import org.chromium.chrome.browser.prerender.PrerenderTestHelper;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabStateBrowserControlsVisibilityDelegate;
import org.chromium.chrome.browser.tab.TabTestUtils;
......@@ -43,7 +42,6 @@ import org.chromium.chrome.browser.tab.TabWebContentsDelegateAndroid;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
import org.chromium.chrome.test.util.FullscreenTestUtils;
import org.chromium.chrome.test.util.OmniboxTestUtils;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.content_public.browser.GestureListenerManager;
import org.chromium.content_public.browser.GestureStateListener;
......@@ -57,7 +55,6 @@ import org.chromium.content_public.browser.test.util.TestTouchUtils;
import org.chromium.content_public.browser.test.util.TouchCommon;
import org.chromium.content_public.browser.test.util.UiUtils;
import org.chromium.content_public.browser.test.util.WebContentsUtils;
import org.chromium.net.test.EmbeddedTestServer;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
......@@ -457,38 +454,6 @@ public class FullscreenManagerTest {
PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, delegate::rendererResponsive);
}
/*
@LargeTest
@Feature({"Fullscreen"})
@Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
*/
@Test
@DisabledTest(message = "crbug.com/642336")
public void testPrerenderedPageSupportsManualHiding() throws InterruptedException {
FullscreenManagerTestUtils.disableBrowserOverrides();
mActivityTestRule.startMainActivityOnBlankPage();
EmbeddedTestServer testServer =
EmbeddedTestServer.createAndStartServer(InstrumentationRegistry.getContext());
try {
final Tab tab = mActivityTestRule.getActivity().getActivityTab();
final String testUrl = testServer.getURL(
"/chrome/test/data/android/very_long_google.html");
PrerenderTestHelper.prerenderUrl(testUrl, tab);
Assert.assertTrue("loadUrl did not use pre-rendered page.",
PrerenderTestHelper.isLoadUrlResultPrerendered(
mActivityTestRule.loadUrl(testUrl)));
UrlBar urlBar = (UrlBar) mActivityTestRule.getActivity().findViewById(R.id.url_bar);
OmniboxTestUtils.toggleUrlBarFocus(urlBar, false);
OmniboxTestUtils.waitForFocusAndKeyboardActive(urlBar, false);
FullscreenManagerTestUtils.waitForBrowserControlsToBeMoveable(mActivityTestRule, tab);
} finally {
testServer.stopAndDestroyServer();
}
}
/* @LargeTest
* @Feature({"Fullscreen"})
*/
......
// Copyright 2015 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.chrome.browser.prerender;
import android.graphics.Rect;
import org.junit.Assert;
import org.chromium.chrome.browser.TabLoadStatus;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.test.util.Coordinates;
import org.chromium.content_public.browser.test.util.Criteria;
import org.chromium.content_public.browser.test.util.CriteriaHelper;
import org.chromium.content_public.browser.test.util.TestThreadUtils;
import java.util.concurrent.Callable;
/**
* Utility class for common methods to test prerendering.
*/
public class PrerenderTestHelper {
private static final int UI_DELAY_MS = 100;
private static final int WAIT_FOR_RESPONSE_MS = 10000;
private static final int SHORT_TIMEOUT_MS = 200;
private static boolean hasTabPrerenderedUrl(final Tab tab, final String url) {
return TestThreadUtils.runOnUiThreadBlockingNoException(new Callable<Boolean>() {
@Override
public Boolean call() {
return nativeHasPrerenderedUrl(tab.getWebContents(), url);
}
});
}
/**
* Waits for the specified URL to be prerendered.
* Returns true if it succeeded, false if it was not prerendered before the timeout.
* shortTimeout should be set to true when expecting this function to return false, as to
* make the tests run faster.
*/
public static boolean waitForPrerenderUrl(
final Tab tab, final String url, boolean shortTimeout) {
try {
CriteriaHelper.pollInstrumentationThread(new Criteria() {
@Override
public boolean isSatisfied() {
return hasTabPrerenderedUrl(tab, url);
}
}, shortTimeout ? SHORT_TIMEOUT_MS : WAIT_FOR_RESPONSE_MS, UI_DELAY_MS);
} catch (AssertionError e) {
// TODO(tedchoc): This is horrible and should never timeout to determine success.
}
return hasTabPrerenderedUrl(tab, url);
}
/**
* Prerenders a url.
*
* @param testUrl Url to prerender
* @param tab The tab to add the prerender to.
*/
public static ExternalPrerenderHandler prerenderUrl(final String testUrl, Tab tab) {
final Tab currentTab = tab;
final Coordinates coord = Coordinates.createFor(currentTab.getWebContents());
ExternalPrerenderHandler prerenderHandler =
TestThreadUtils.runOnUiThreadBlockingNoException(
new Callable<ExternalPrerenderHandler>() {
@Override
public ExternalPrerenderHandler call() {
ExternalPrerenderHandler prerenderHandler =
new ExternalPrerenderHandler();
Rect bounds = new Rect(0, 0, coord.getContentWidthPixInt(),
coord.getContentHeightPixInt());
boolean didPrerender = prerenderHandler.addPrerender(
Profile.fromWebContents(
currentTab.getWebContents()),
currentTab.getWebContents(), testUrl,
null, bounds, true)
!= null;
Assert.assertTrue(
"Failed to prerender test url: " + testUrl, didPrerender);
return prerenderHandler;
}
});
Assert.assertTrue("URL was not prerendered.",
PrerenderTestHelper.waitForPrerenderUrl(currentTab, testUrl, false));
return prerenderHandler;
}
/**
* Checks if the load url result is prerendered.
*
* @param result Result from a page load.
* @return Whether the result param indicates a prerendered url.
*/
public static boolean isLoadUrlResultPrerendered(int result) {
return result == TabLoadStatus.FULL_PRERENDERED_PAGE_LOAD
|| result == TabLoadStatus.PARTIAL_PRERENDERED_PAGE_LOAD;
}
private static native boolean nativeHasPrerenderedUrl(WebContents webContents, String url);
}
// Copyright 2019 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.
#include "base/android/jni_android.h"
#include "base/android/jni_string.h"
#include "chrome/android/test_support_jni_headers/PrerenderTestHelper_jni.h"
#include "chrome/browser/prerender/prerender_contents.h"
#include "chrome/browser/prerender/prerender_manager.h"
#include "chrome/browser/prerender/prerender_manager_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "content/public/browser/web_contents.h"
// Test helper method required by Java layer.
static jboolean JNI_PrerenderTestHelper_HasPrerenderedUrl(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& jweb_contents,
const base::android::JavaParamRef<jstring>& jurl) {
auto* web_contents = content::WebContents::FromJavaWebContents(jweb_contents);
if (!web_contents)
return false;
auto* profile =
Profile::FromBrowserContext(web_contents->GetBrowserContext());
if (!profile)
return false;
auto* prerender_manager =
prerender::PrerenderManagerFactory::GetForBrowserContext(profile);
if (!prerender_manager)
return false;
GURL url(base::android::ConvertJavaStringToUTF8(env, jurl));
auto contents = prerender_manager->GetAllPrerenderingContents();
for (auto* content : contents) {
auto* prerender_contents = prerender_manager->GetPrerenderContents(content);
if (prerender_contents->prerender_url() == url &&
prerender_contents->has_finished_loading()) {
return true;
}
}
return false;
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment