Commit a460f0fc authored by Bo Liu's avatar Bo Liu Committed by Commit Bot

aw: Batch AwSettingsTest

Need to ensure AwBrowserProcess.start isn't called multiple
times for a single process. Also add an annotation to disable
batching and use it for app cache tests, since app cache
can only be set once and the setting is global.

Bug: 989569
Change-Id: I360230ac612a004bda94dded1d9dd6cb2e3f14cd
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2335673Reviewed-by: default avatarAndrew Grieve <agrieve@chromium.org>
Reviewed-by: default avatarRichard Coles <torne@chromium.org>
Reviewed-by: default avatarMichael Thiessen <mthiesse@chromium.org>
Commit-Queue: Bo <boliu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#796424}
parent deb838f0
...@@ -60,6 +60,8 @@ public class AwActivityTestRule extends ActivityTestRule<AwTestRunnerActivity> { ...@@ -60,6 +60,8 @@ public class AwActivityTestRule extends ActivityTestRule<AwTestRunnerActivity> {
private static final Pattern MAYBE_QUOTED_STRING = Pattern.compile("^(\"?)(.*)\\1$"); private static final Pattern MAYBE_QUOTED_STRING = Pattern.compile("^(\"?)(.*)\\1$");
private static boolean sBrowserProcessStarted;
/** /**
* An interface to call onCreateWindow(AwContents). * An interface to call onCreateWindow(AwContents).
*/ */
...@@ -98,6 +100,9 @@ public class AwActivityTestRule extends ActivityTestRule<AwTestRunnerActivity> { ...@@ -98,6 +100,9 @@ public class AwActivityTestRule extends ActivityTestRule<AwTestRunnerActivity> {
} }
if (needsBrowserProcessStarted()) { if (needsBrowserProcessStarted()) {
startBrowserProcess(); startBrowserProcess();
} else {
assert !sBrowserProcessStarted
: "needsBrowserProcessStarted false and @Batch are incompatible";
} }
} }
...@@ -171,7 +176,10 @@ public class AwActivityTestRule extends ActivityTestRule<AwTestRunnerActivity> { ...@@ -171,7 +176,10 @@ public class AwActivityTestRule extends ActivityTestRule<AwTestRunnerActivity> {
public void startBrowserProcess() { public void startBrowserProcess() {
// The Activity must be launched in order for proper webview statics to be setup. // The Activity must be launched in order for proper webview statics to be setup.
launchActivity(); launchActivity();
TestThreadUtils.runOnUiThreadBlocking(() -> AwBrowserProcess.start()); if (!sBrowserProcessStarted) {
sBrowserProcessStarted = true;
TestThreadUtils.runOnUiThreadBlocking(() -> AwBrowserProcess.start());
}
if (mBrowserContext != null) { if (mBrowserContext != null) {
TestThreadUtils.runOnUiThreadBlocking( TestThreadUtils.runOnUiThreadBlocking(
() -> mBrowserContext.setNativePointer( () -> mBrowserContext.setNativePointer(
......
...@@ -39,10 +39,12 @@ import org.chromium.android_webview.test.util.VideoTestUtil; ...@@ -39,10 +39,12 @@ import org.chromium.android_webview.test.util.VideoTestUtil;
import org.chromium.android_webview.test.util.VideoTestWebServer; import org.chromium.android_webview.test.util.VideoTestWebServer;
import org.chromium.base.Callback; import org.chromium.base.Callback;
import org.chromium.base.FileUtils; import org.chromium.base.FileUtils;
import org.chromium.base.test.util.Batch;
import org.chromium.base.test.util.CallbackHelper; import org.chromium.base.test.util.CallbackHelper;
import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.DisabledTest; import org.chromium.base.test.util.DisabledTest;
import org.chromium.base.test.util.Feature; import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.RequiresRestart;
import org.chromium.base.test.util.TestFileUtil; import org.chromium.base.test.util.TestFileUtil;
import org.chromium.base.test.util.UrlUtils; import org.chromium.base.test.util.UrlUtils;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
...@@ -72,6 +74,7 @@ import java.util.regex.Pattern; ...@@ -72,6 +74,7 @@ import java.util.regex.Pattern;
@RunWith(AwJUnit4ClassRunner.class) @RunWith(AwJUnit4ClassRunner.class)
@CommandLineFlags.Add({ContentSwitches.HOST_RESOLVER_RULES + "=MAP * 127.0.0.1", @CommandLineFlags.Add({ContentSwitches.HOST_RESOLVER_RULES + "=MAP * 127.0.0.1",
"enable-features=WebViewOriginCheckForStreamReader"}) "enable-features=WebViewOriginCheckForStreamReader"})
@Batch(Batch.PER_CLASS)
public class AwSettingsTest { public class AwSettingsTest {
@Rule @Rule
public AwActivityTestRule mActivityTestRule = public AwActivityTestRule mActivityTestRule =
...@@ -2851,6 +2854,7 @@ public class AwSettingsTest { ...@@ -2851,6 +2854,7 @@ public class AwSettingsTest {
} }
} }
@RequiresRestart("Enabling appcache is global and cannot be reversed.")
@Test @Test
@SmallTest @SmallTest
@Feature({"AndroidWebView", "Preferences", "AppCache"}) @Feature({"AndroidWebView", "Preferences", "AppCache"})
...@@ -2884,6 +2888,7 @@ public class AwSettingsTest { ...@@ -2884,6 +2888,7 @@ public class AwSettingsTest {
} }
} }
@RequiresRestart("Enabling appcache is global and cannot be reversed.")
@Test @Test
@SmallTest @SmallTest
@Feature({"AndroidWebView", "Preferences", "AppCache"}) @Feature({"AndroidWebView", "Preferences", "AppCache"})
......
...@@ -3775,6 +3775,7 @@ if (is_android) { ...@@ -3775,6 +3775,7 @@ if (is_android) {
"test/android/javatests/src/org/chromium/base/test/util/MetricsUtils.java", "test/android/javatests/src/org/chromium/base/test/util/MetricsUtils.java",
"test/android/javatests/src/org/chromium/base/test/util/MinAndroidSdkLevel.java", "test/android/javatests/src/org/chromium/base/test/util/MinAndroidSdkLevel.java",
"test/android/javatests/src/org/chromium/base/test/util/MinAndroidSdkLevelSkipCheck.java", "test/android/javatests/src/org/chromium/base/test/util/MinAndroidSdkLevelSkipCheck.java",
"test/android/javatests/src/org/chromium/base/test/util/RequiresRestart.java",
"test/android/javatests/src/org/chromium/base/test/util/Restriction.java", "test/android/javatests/src/org/chromium/base/test/util/Restriction.java",
"test/android/javatests/src/org/chromium/base/test/util/RestrictionSkipCheck.java", "test/android/javatests/src/org/chromium/base/test/util/RestrictionSkipCheck.java",
"test/android/javatests/src/org/chromium/base/test/util/ScalableTimeout.java", "test/android/javatests/src/org/chromium/base/test/util/ScalableTimeout.java",
......
// Copyright 2020 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.base.test.util;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Overrides a Batch annotation on a class and still require process restart for a particular test
* method. This should be used on individual methods only. See comments on Batch for more details.
* Optionally supply a message explaining why restart is needed as the value.
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RequiresRestart {
String value() default "";
}
...@@ -471,7 +471,8 @@ class LocalDeviceInstrumentationTestRun( ...@@ -471,7 +471,8 @@ class LocalDeviceInstrumentationTestRun(
batched_tests = dict() batched_tests = dict()
other_tests = [] other_tests = []
for test in tests: for test in tests:
if 'Batch' in test['annotations']: if 'Batch' in test['annotations'] and 'RequiresRestart' not in test[
'annotations']:
batch_name = test['annotations']['Batch']['value'] batch_name = test['annotations']['Batch']['value']
if not batch_name: if not batch_name:
batch_name = test['class'] batch_name = test['class']
......
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