0

Merge most chrome test apks

chrome_public_test_apk is now the union of:
* chrome_public_apk_for_test
* chrome_public_test_apk
* chrome_sync_shell_apk
* chrome_sync_shell_test_apk

Motivation is to simplify the targets, as well as to work around
multidex restrictions.

This change disabled two tests because fixing wasn't trivial:
* FirstRunIntegrationTest.java
* FirstRunTest.java
https://crbug.com/902774 will track un-@Disable'ing them.


NOTRY=true  # linux bot flakiness
TBR=agrieve  # Trivial rename in a couple files.

Bug: 833545, 841628, 901488
Change-Id: I9ebe035e86f1b6e5a208e36040baf038efa6cc15
Reviewed-on: https://chromium-review.googlesource.com/c/1319335
Commit-Queue: agrieve <agrieve@chromium.org>
Reviewed-by: agrieve <agrieve@chromium.org>
Reviewed-by: John Budorick <jbudorick@chromium.org>
Reviewed-by: Eric Stevenson <estevenson@chromium.org>
Reviewed-by: Yaron Friedman <yfriedman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#606283}
This commit is contained in:
Andrew Grieve
2018-11-08 01:57:01 +00:00
committed by Commit Bot
parent 939f1a0e0c
commit ecac5a9e2f
46 changed files with 226 additions and 974 deletions

@@ -347,7 +347,6 @@ group("gn_all") {
"//chrome/android:chrome_junit_tests", "//chrome/android:chrome_junit_tests",
"//chrome/android:chrome_public_apk", "//chrome/android:chrome_public_apk",
"//chrome/android:chrome_public_test_apk", "//chrome/android:chrome_public_test_apk",
"//chrome/android:chrome_sync_shell_test_apk",
"//chrome/test/chromedriver/test/webview_shell:chromedriver_webview_shell_apk", "//chrome/test/chromedriver/test/webview_shell:chromedriver_webview_shell_apk",
"//content/shell/android:content_shell_test_apk", "//content/shell/android:content_shell_test_apk",
"//third_party/custom_tabs_client:custom_tabs_client_example_apk", "//third_party/custom_tabs_client:custom_tabs_client_example_apk",
@@ -936,7 +935,8 @@ if (!is_ios) {
# To run the full layout test suite you need to use # To run the full layout test suite you need to use
# :webkit_layout_tests_exparchive, above, instead. # :webkit_layout_tests_exparchive, above, instead.
generated_script_test("webkit_layout_tests") { generated_script_test("webkit_layout_tests") {
generator_script = "//testing/scripts/generators/gen_run_web_tests_script.py" generator_script =
"//testing/scripts/generators/gen_run_web_tests_script.py"
extra_args = [] extra_args = []
if (is_debug) { if (is_debug) {
extra_args += [ extra_args += [

@@ -1515,8 +1515,7 @@
'|chrome/browser/.*supervised_user', '|chrome/browser/.*supervised_user',
}, },
'sync': { 'sync': {
'filepath': '^chrome/android/sync_shell/'\ 'filepath': '^chrome/browser/ui/sync/'\
'|^chrome/browser/ui/sync/'\
'|^chrome/browser/ui/views/sync/'\ '|^chrome/browser/ui/views/sync/'\
'|^chrome/test/android/javatests/src/org/chromium/chrome/test/util/browser/sync/'\ '|^chrome/test/android/javatests/src/org/chromium/chrome/test/util/browser/sync/'\
'|^ios/chrome/browser/sync/'\ '|^ios/chrome/browser/sync/'\

@@ -89,6 +89,8 @@ public class BaseChromiumAndroidJUnitRunner extends AndroidJUnitRunner {
// * ProGuard disabled => // * ProGuard disabled =>
// Under-test apk might be multidex // Under-test apk might be multidex
// Test apk does not duplicate classes, so does not need multidex. // Test apk does not duplicate classes, so does not need multidex.
// When there is no under-test apk, then Application.onCreate() should trigger multidex
// installation.
// https://crbug.com/824523 // https://crbug.com/824523
if (!BuildConfig.IS_MULTIDEX_ENABLED) { if (!BuildConfig.IS_MULTIDEX_ENABLED) {
ChromiumMultiDexInstaller.install(new BaseChromiumRunnerCommon.MultiDexContextWrapper( ChromiumMultiDexInstaller.install(new BaseChromiumRunnerCommon.MultiDexContextWrapper(

@@ -55,8 +55,6 @@ _DEFAULT_TARGETS = [
'//chrome/android:chrome_junit_tests', '//chrome/android:chrome_junit_tests',
'//chrome/android:chrome_public_apk', '//chrome/android:chrome_public_apk',
'//chrome/android:chrome_public_test_apk', '//chrome/android:chrome_public_test_apk',
'//chrome/android:chrome_sync_shell_apk',
'//chrome/android:chrome_sync_shell_test_apk',
'//content/public/android:content_junit_tests', '//content/public/android:content_junit_tests',
'//content/shell/android:content_shell_apk', '//content/shell/android:content_shell_apk',
# Below must be included even with --all since they are libraries. # Below must be included even with --all since they are libraries.

@@ -43,10 +43,6 @@
*; *;
} }
# Need test classes to be in the main dex because test listing does not
# load secondary dex on Dalvik devices.
-keep @**.RunWith class * {}
# The following are based on $SDK_BUILD_TOOLS/mainDexClasses.rules # The following are based on $SDK_BUILD_TOOLS/mainDexClasses.rules
# Ours differ in that: # Ours differ in that:
# 1. It omits -keeps for application / instrumentation / backupagents (these are # 1. It omits -keeps for application / instrumentation / backupagents (these are

@@ -31,6 +31,7 @@ if (modularize_vr) {
} }
manifest_package = "org.chromium.chrome" manifest_package = "org.chromium.chrome"
test_manifest_package = "org.chromium.chrome.tests"
chrome_public_jinja_variables = default_chrome_public_jinja_variables + chrome_public_jinja_variables = default_chrome_public_jinja_variables +
[ "manifest_package=$manifest_package" ] [ "manifest_package=$manifest_package" ]
@@ -38,8 +39,6 @@ chrome_public_android_manifest =
"$target_gen_dir/chrome_public_apk/AndroidManifest.xml" "$target_gen_dir/chrome_public_apk/AndroidManifest.xml"
chrome_modern_public_android_manifest = chrome_modern_public_android_manifest =
"$target_gen_dir/chrome_modern_public_apk/AndroidManifest.xml" "$target_gen_dir/chrome_modern_public_apk/AndroidManifest.xml"
chrome_sync_shell_android_manifest =
"$target_gen_dir/chrome_sync_shell_apk/AndroidManifest.xml"
monochrome_public_android_manifest = monochrome_public_android_manifest =
"$target_gen_dir/monochrome_public_apk/AndroidManifest.xml" "$target_gen_dir/monochrome_public_apk/AndroidManifest.xml"
trichrome_library_android_manifest = trichrome_library_android_manifest =
@@ -47,10 +46,6 @@ trichrome_library_android_manifest =
trichrome_chrome_android_manifest = trichrome_chrome_android_manifest =
"$target_gen_dir/trichrome_chrome_apk/AndroidManifest.xml" "$target_gen_dir/trichrome_chrome_apk/AndroidManifest.xml"
chrome_sync_shell_jinja_variables =
default_chrome_public_jinja_variables +
[ "manifest_package=org.chromium.chrome.sync_shell" ]
app_hooks_impl = "java/src/org/chromium/chrome/browser/AppHooksImpl.java" app_hooks_impl = "java/src/org/chromium/chrome/browser/AppHooksImpl.java"
if (enable_resource_whitelist_generation) { if (enable_resource_whitelist_generation) {
@@ -118,16 +113,6 @@ jinja_template("trichrome_chrome_android_manifest") {
variables = chrome_public_jinja_variables + trichrome_jinja_variables variables = chrome_public_jinja_variables + trichrome_jinja_variables
} }
jinja_template("chrome_sync_shell_android_manifest") {
input = "java/AndroidManifest.xml"
output = chrome_sync_shell_android_manifest
variables = chrome_sync_shell_jinja_variables
variables += [
"min_sdk_version=16",
"target_sdk_version=$android_sdk_version",
]
}
android_resources("chrome_app_java_resources") { android_resources("chrome_app_java_resources") {
resource_dirs = [ resource_dirs = [
"java/res", "java/res",
@@ -697,6 +682,7 @@ android_library("chrome_test_java") {
"//components/signin/core/browser/android:signin_java_test_support", "//components/signin/core/browser/android:signin_java_test_support",
"//components/signin/core/browser/android:signin_javatests", "//components/signin/core/browser/android:signin_javatests",
"//components/sync:sync_java_test_support", "//components/sync:sync_java_test_support",
"//components/sync:test_support_proto_java",
"//components/sync/android:sync_java", "//components/sync/android:sync_java",
"//components/sync/android:sync_javatests", "//components/sync/android:sync_javatests",
"//components/url_formatter/android:url_formatter_java", "//components/url_formatter/android:url_formatter_java",
@@ -1001,10 +987,10 @@ jinja_template_resources("chrome_public_apk_template_resources") {
"java/res_template/xml/syncadapter.xml", "java/res_template/xml/syncadapter.xml",
] ]
res_dir = "java/res_template" res_dir = "java/res_template"
variables = chrome_public_jinja_variables variables = [ "manifest_package=$manifest_package" ]
} }
jinja_template_resources("chrome_sync_shell_apk_template_resources") { jinja_template_resources("chrome_test_apk_template_resources") {
resources = [ resources = [
"java/res_template/xml/file_paths.xml", "java/res_template/xml/file_paths.xml",
"java/res_template/xml/launchershortcuts.xml", "java/res_template/xml/launchershortcuts.xml",
@@ -1012,7 +998,13 @@ jinja_template_resources("chrome_sync_shell_apk_template_resources") {
"java/res_template/xml/syncadapter.xml", "java/res_template/xml/syncadapter.xml",
] ]
res_dir = "java/res_template" res_dir = "java/res_template"
variables = chrome_sync_shell_jinja_variables
# Add dep to ensure these override the ones in
# chrome_public_apk_template_resources.
deps = [
":chrome_public_apk_template_resources",
]
variables = [ "manifest_package=$test_manifest_package" ]
} }
# This template contains common code for libchrome, libchromefortest and # This template contains common code for libchrome, libchromefortest and
@@ -1116,9 +1108,12 @@ chrome_shared_library("libchromefortest") {
":browser_test_support", ":browser_test_support",
":chrome_jni_for_test_registration($default_toolchain)", ":chrome_jni_for_test_registration($default_toolchain)",
"//base/test:test_support", "//base/test:test_support",
"//chrome:chrome_android_core",
"//chrome/browser/android/metrics:ukm_utils_for_test", "//chrome/browser/android/metrics:ukm_utils_for_test",
"//components/heap_profiling:test_support", "//components/heap_profiling:test_support",
"//components/minidump_uploader", "//components/minidump_uploader",
"//components/sync",
"//components/sync:test_support_fake_server_android",
"//content/public/test/android:content_native_test_support", "//content/public/test/android:content_native_test_support",
"//content/test:test_support", "//content/test:test_support",
] ]
@@ -1134,6 +1129,8 @@ if (current_toolchain == default_toolchain) {
exception_files = jni_exception_files exception_files = jni_exception_files
} }
# The test apks do not use chromium linker, but using manual JNI registration
# helps ensure that the correct classes are marked with @MainDex.
generate_jni_registration("chrome_jni_for_test_registration") { generate_jni_registration("chrome_jni_for_test_registration") {
testonly = true testonly = true
target = ":chrome_public_base_module_java_for_test" target = ":chrome_public_base_module_java_for_test"
@@ -1141,13 +1138,6 @@ if (current_toolchain == default_toolchain) {
exception_files = jni_exception_files exception_files = jni_exception_files
} }
generate_jni_registration("chrome_sync_shell_jni_registration") {
testonly = true
target = ":chrome_sync_shell_java"
output = chrome_sync_shell_jni_registration_header
exception_files = jni_exception_files
}
if (enable_resource_whitelist_generation) { if (enable_resource_whitelist_generation) {
generate_resource_whitelist("monochrome_resource_whitelist") { generate_resource_whitelist("monochrome_resource_whitelist") {
# Always use the 32-bit library's whitelist since the 64-bit one is # Always use the 32-bit library's whitelist since the 64-bit one is
@@ -1309,29 +1299,6 @@ if (!android_64bit_target_cpu ||
} }
} }
shared_library("chrome_sync_shell") {
testonly = true
sources = [
"../browser/android/chrome_sync_shell_entry_point.cc",
chrome_sync_shell_jni_registration_header,
]
deps = [
":chrome_sync_shell_jni_registration($default_toolchain)",
"//chrome:chrome_android_core",
"//chrome/browser/android/metrics:ukm_utils_for_test",
"//components/sync",
"//components/sync:test_support_fake_server_android",
]
if (chromium_linker_supported && use_lld) {
configs += [ "//build/config/android:lld_pack_relocations" ]
}
if (enable_vr) {
sources += [ "../browser/android/vr/register_jni.cc" ]
deps +=
[ "//chrome/browser/android/vr:jni_registration($default_toolchain)" ]
}
}
# Java libraries that go into each public chrome APK and base module. The chrome # Java libraries that go into each public chrome APK and base module. The chrome
# JNI registration is generated based on this target. # JNI registration is generated based on this target.
# TODO(tiborg): Remove the following three groups once we have a APK / module # TODO(tiborg): Remove the following three groups once we have a APK / module
@@ -1354,31 +1321,11 @@ java_group("chrome_public_base_module_java_for_test") {
"//components/heap_profiling:heap_profiling_java_test_support", "//components/heap_profiling:heap_profiling_java_test_support",
"//components/minidump_uploader:minidump_uploader_java", "//components/minidump_uploader:minidump_uploader_java",
"//content/public/test/android:content_java_test_support", "//content/public/test/android:content_java_test_support",
"//third_party/android_tools:android_test_mock_java",
] ]
} }
# Similar to chrome_public_base_module_java but for Java libraries that go into # Dependencies that are common to any chrome_public derivative targets.
# the chrome sync shell APK. _chrome_public_shared_deps = [
android_library("chrome_sync_shell_java") {
# This exists here rather than in chrome_sync_shell_test_apk for JNI
# registration to be able to find the native side functions.
java_files = [ "sync_shell/javatests/src/org/chromium/chrome/browser/sync/FakeServerHelper.java" ]
deps = [
":chrome_public_base_module_java",
"//base:base_java",
"//third_party/protobuf:protobuf_lite_javalib",
# This exists here because com.google.protobuf.nano is needed in tests,
# but that code is stripped out via proguard. Adding this deps adds
# usages and prevents removal of the proto code.
"//components/sync:test_support_proto_java",
]
}
# Dependencies that are common to any chrome_public derivative targets, as well
# as to chrome_sync_shell_apk.
_chrome_public_and_sync_shell_shared_deps = [
":chrome_public_apk_resources", ":chrome_public_apk_resources",
":chrome_public_base_module_java", ":chrome_public_base_module_java",
":chrome_public_non_pak_assets", ":chrome_public_non_pak_assets",
@@ -1395,10 +1342,15 @@ generate_jni("test_support_jni_headers") {
# Test support code that needs access to the browser. # Test support code that needs access to the browser.
android_library("browser_java_test_support") { android_library("browser_java_test_support") {
testonly = true testonly = true
java_files = [ "javatests/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchTestBridge.java" ] java_files = [
"javatests/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchTestBridge.java",
"javatests/src/org/chromium/chrome/browser/sync/FakeServerHelper.java",
]
deps = [ deps = [
":chrome_java", ":chrome_java",
"//base:base_java", "//base:base_java",
"//components/sync:test_support_proto_java",
"//third_party/protobuf:protobuf_lite_javalib",
] ]
} }
@@ -1448,7 +1400,7 @@ template("chrome_public_apk_or_module_tmpl") {
"target_type", "target_type",
]) ])
deps = _chrome_public_and_sync_shell_shared_deps deps = _chrome_public_shared_deps
if (_is_modern) { if (_is_modern) {
min_sdk_version = 21 min_sdk_version = 21
@@ -1509,27 +1461,6 @@ chrome_public_apk_or_module_tmpl("chrome_modern_public_base_module") {
is_modern = true is_modern = true
} }
# Defines the 'chrome_public_apk_for_test' target, which corresponds to APK
# built to run instrumentation tests. This includes additional code that is
# not part of the regular 'chrome_public_apk' target.
chrome_public_common_apk_or_module_tmpl("chrome_public_apk_for_test") {
testonly = true
target_type = "android_apk"
android_manifest = chrome_public_android_manifest
android_manifest_dep = ":chrome_public_android_manifest"
apk_name = "ChromePublicForTest"
shared_libraries = [ ":libchromefortest" ]
add_unwind_tables_in_apk = _add_unwind_tables_in_chrome_public_apk
if (_add_unwind_tables_in_chrome_public_apk) {
shared_library_for_unwind_asset = "chromefortest"
}
deps = _chrome_public_and_sync_shell_shared_deps +
[ ":chrome_public_base_module_java_for_test" ]
if (!is_java_debug) {
proguard_configs = [ "//chrome/android/java/apk_for_test.flags" ]
}
}
android_library("monochrome_java") { android_library("monochrome_java") {
deps = [ deps = [
"//android_webview/glue", "//android_webview/glue",
@@ -1664,26 +1595,10 @@ monochrome_public_apk_or_module_tmpl("trichrome_chrome_apk") {
use_trichrome_library = true use_trichrome_library = true
} }
chrome_public_common_apk_or_module_tmpl("chrome_sync_shell_apk") {
testonly = true
target_type = "android_apk"
android_manifest = chrome_sync_shell_android_manifest
android_manifest_dep = ":chrome_sync_shell_android_manifest"
apk_name = "ChromeSyncShell"
shared_libraries = [ ":chrome_sync_shell" ]
deps = _chrome_public_and_sync_shell_shared_deps + [
":chrome_sync_shell_apk_template_resources",
":chrome_sync_shell_java",
]
}
chrome_public_test_apk_manifest = chrome_public_test_apk_manifest =
"$root_gen_dir/chrome_public_test_apk_manifest/AndroidManifest.xml" "$root_gen_dir/chrome_public_test_apk_manifest/AndroidManifest.xml"
chrome_public_test_vr_apk_manifest = chrome_public_test_vr_apk_manifest =
"$root_gen_dir/chrome_public_test_vr_apk_manifest/AndroidManifest.xml" "$root_gen_dir/chrome_public_test_vr_apk_manifest/AndroidManifest.xml"
chrome_sync_shell_test_apk_manifest =
"$root_gen_dir/chrome_sync_shell_test_apk_manifest/AndroidManifest.xml"
monochrome_public_test_ar_apk_manifest = monochrome_public_test_ar_apk_manifest =
"$root_gen_dir/monochrome_public_test_ar_apk_manifest/AndroidManifest.xml" "$root_gen_dir/monochrome_public_test_ar_apk_manifest/AndroidManifest.xml"
vr_nfc_simulator_apk_manifest = vr_nfc_simulator_apk_manifest =
@@ -1691,9 +1606,11 @@ vr_nfc_simulator_apk_manifest =
jinja_template("chrome_public_test_apk_manifest") { jinja_template("chrome_public_test_apk_manifest") {
input = "javatests/AndroidManifest.xml" input = "javatests/AndroidManifest.xml"
includes = [ "java/AndroidManifest.xml" ]
output = chrome_public_test_apk_manifest output = chrome_public_test_apk_manifest
variables = chrome_public_jinja_variables variables = default_chrome_public_jinja_variables
variables += [ variables += [
"manifest_package=$test_manifest_package",
"min_sdk_version=16", "min_sdk_version=16",
"target_sdk_version=$android_sdk_version", "target_sdk_version=$android_sdk_version",
] ]
@@ -1701,6 +1618,7 @@ jinja_template("chrome_public_test_apk_manifest") {
jinja_template("chrome_public_test_vr_apk_manifest") { jinja_template("chrome_public_test_vr_apk_manifest") {
input = "javatests/AndroidManifest.xml" input = "javatests/AndroidManifest.xml"
includes = [ "java/AndroidManifest.xml" ]
output = chrome_public_test_vr_apk_manifest output = chrome_public_test_vr_apk_manifest
variables = chrome_public_jinja_variables variables = chrome_public_jinja_variables
variables += [ variables += [
@@ -1711,11 +1629,17 @@ jinja_template("chrome_public_test_vr_apk_manifest") {
jinja_template("monochrome_public_test_ar_apk_manifest") { jinja_template("monochrome_public_test_ar_apk_manifest") {
input = "javatests/AndroidManifest_monochrome.xml" input = "javatests/AndroidManifest_monochrome.xml"
includes = [ "javatests/AndroidManifest.xml" ] includes = [
"java/AndroidManifest.xml",
"javatests/AndroidManifest.xml",
]
output = monochrome_public_test_ar_apk_manifest output = monochrome_public_test_ar_apk_manifest
variables = chrome_public_jinja_variables + variables = chrome_public_jinja_variables +
monochrome_android_manifest_jinja_variables + monochrome_android_manifest_jinja_variables +
[ "target_sdk_version=$android_sdk_version" ] [
"target_sdk_version=$android_sdk_version",
"test_manifest_package=$test_manifest_package",
]
} }
jinja_template("vr_nfc_simulator_apk_manifest") { jinja_template("vr_nfc_simulator_apk_manifest") {
@@ -1725,29 +1649,64 @@ jinja_template("vr_nfc_simulator_apk_manifest") {
variables = chrome_public_jinja_variables variables = chrome_public_jinja_variables
} }
jinja_template("chrome_sync_shell_test_apk_manifest") { template("chrome_test_apk_tmpl") {
input = "sync_shell/javatests/AndroidManifest.xml" chrome_public_common_apk_or_module_tmpl(target_name) {
output = chrome_sync_shell_test_apk_manifest forward_variables_from(invoker,
variables = chrome_sync_shell_jinja_variables [
"apk_name",
"android_manifest",
"android_manifest_dep",
"data_deps",
"shared_libraries",
])
testonly = true
target_type = "instrumentation_test_apk"
add_unwind_tables_in_apk = _add_unwind_tables_in_chrome_public_apk
if (_add_unwind_tables_in_chrome_public_apk) {
shared_library_for_unwind_asset = "chromefortest"
}
deps = _chrome_public_shared_deps + invoker.deps + [
":chrome_public_base_module_java_for_test",
"//third_party/android_support_test_runner:runner_java",
"//third_party/android_tools:android_test_base_java",
"//third_party/android_tools:android_test_mock_java",
"//third_party/android_tools:android_test_runner_java",
]
if (enable_vr) {
# Contains VrFirstRunActivity, which is referenced by AndroidManifest.xml.
deps += [ "//chrome/browser/android/vr:java" ]
}
additional_apks = [ "//net/android:net_test_support_apk" ]
if (defined(invoker.additional_apks)) {
additional_apks += invoker.additional_apks
}
if (!is_java_debug) {
proguard_enabled = true
proguard_configs = [ "//chrome/android/java/apk_for_test.flags" ]
}
# The test APK contains code from both the APK under test and the
# test APK when proguard is enabled. That causes this APK to exceed
# the dex limit.
enable_multidex = true
}
} }
instrumentation_test_apk("chrome_public_test_apk") { chrome_test_apk_tmpl("chrome_public_test_apk") {
apk_name = "ChromePublicTest" apk_name = "ChromePublicTest"
apk_under_test = ":chrome_public_apk_for_test"
android_manifest = chrome_public_test_apk_manifest android_manifest = chrome_public_test_apk_manifest
android_manifest_dep = ":chrome_public_test_apk_manifest" android_manifest_dep = ":chrome_public_test_apk_manifest"
shared_libraries = [ ":libchromefortest" ]
deps = [ deps = [
":chrome_test_apk_template_resources",
":chrome_test_java", ":chrome_test_java",
"//chrome/android/webapk/libs/runtime_library:runtime_library_javatests", "//chrome/android/webapk/libs/runtime_library:runtime_library_javatests",
"//chrome/android/webapk/shell_apk:shell_apk_javatests", "//chrome/android/webapk/shell_apk:shell_apk_javatests",
"//chrome/browser/profiling_host:profiling_host_javatests", "//chrome/browser/profiling_host:profiling_host_javatests",
"//third_party/android_support_test_runner:runner_java",
"//third_party/android_tools:android_test_base_java",
"//third_party/android_tools:android_test_mock_java",
"//third_party/android_tools:android_test_runner_java",
] ]
data_deps = [ data_deps = [
"//testing/buildbot/filters:chrome_public_test_apk_filters", "//testing/buildbot/filters:chrome_public_test_apk_filters",
] ]
@@ -1757,34 +1716,20 @@ instrumentation_test_apk("chrome_public_test_apk") {
"//chrome/android/webapk/shell_apk:http_webapk", "//chrome/android/webapk/shell_apk:http_webapk",
"//chrome/android/webapk/shell_apk/javatests/dex_optimizer:dex_optimizer_apk", "//chrome/android/webapk/shell_apk/javatests/dex_optimizer:dex_optimizer_apk",
"//chrome/test/android/chrome_public_test_support:chrome_public_test_support_apk", "//chrome/test/android/chrome_public_test_support:chrome_public_test_support_apk",
"//net/android:net_test_support_apk",
] ]
proguard_enabled = !is_java_debug
# The test APK contains code from both the APK under test and the
# test APK when proguard is enabled. That causes this APK to exceed
# the dex limit.
enable_multidex = proguard_enabled
} }
if (enable_vr) { if (enable_vr) {
instrumentation_test_apk("chrome_public_test_vr_apk") { chrome_test_apk_tmpl("chrome_public_test_vr_apk") {
apk_name = "ChromePublicTestVr" apk_name = "ChromePublicTestVr"
apk_under_test = ":chrome_public_apk_for_test"
android_manifest = chrome_public_test_vr_apk_manifest android_manifest = chrome_public_test_vr_apk_manifest
android_manifest_dep = ":chrome_public_test_vr_apk_manifest" android_manifest_dep = ":chrome_public_test_vr_apk_manifest"
shared_libraries = [ ":libchromefortest" ]
deps = [ deps = [
":chrome_test_vr_java", ":chrome_test_vr_java",
"//third_party/android_tools:android_test_mock_java", "//third_party/android_tools:android_test_mock_java",
] ]
additional_apks = [ "//net/android:net_test_support_apk" ]
proguard_enabled = !is_java_debug
# The test APK contains code from both the APK under test and the
# test APK when proguard is enabled. That causes this APK to exceed
# the dex limit.
enable_multidex = proguard_enabled
} }
android_apk("vr_nfc_simulator_apk") { android_apk("vr_nfc_simulator_apk") {
@@ -1830,56 +1775,6 @@ if (enable_arcore && package_arcore) {
} }
} }
instrumentation_test_apk("chrome_sync_shell_test_apk") {
apk_name = "ChromeSyncShellTest"
apk_under_test = ":chrome_sync_shell_apk"
android_manifest = chrome_sync_shell_test_apk_manifest
android_manifest_dep = ":chrome_sync_shell_test_apk_manifest"
java_files = [
"sync_shell/javatests/src/org/chromium/chrome/browser/sync/AutofillTest.java",
"sync_shell/javatests/src/org/chromium/chrome/browser/sync/BookmarksTest.java",
"sync_shell/javatests/src/org/chromium/chrome/browser/sync/FirstRunTest.java",
"sync_shell/javatests/src/org/chromium/chrome/browser/sync/GmsCoreSyncListenerTest.java",
"sync_shell/javatests/src/org/chromium/chrome/browser/sync/OpenTabsTest.java",
"sync_shell/javatests/src/org/chromium/chrome/browser/sync/SyncCustomizationFragmentTest.java",
"sync_shell/javatests/src/org/chromium/chrome/browser/sync/SyncTest.java",
"sync_shell/javatests/src/org/chromium/chrome/browser/sync/SyncTestRule.java",
"sync_shell/javatests/src/org/chromium/chrome/browser/sync/TypedUrlsTest.java",
"sync_shell/javatests/src/org/chromium/chrome/browser/sync/UkmTest.java",
"sync_shell/javatests/src/org/chromium/chrome/browser/sync/ui/PassphraseTypeDialogFragmentTest.java",
]
deps = [
"//base:base_java",
"//base:base_java_test_support",
"//chrome/android:app_hooks_java",
"//chrome/android:chrome_java",
"//chrome/test/android:chrome_java_test_support",
"//components/bookmarks/common/android:bookmarks_java",
"//components/policy/android:policy_java",
"//components/signin/core/browser/android:java",
"//components/signin/core/browser/android:signin_java_test_support",
"//components/sync:sync_java_test_support",
"//components/sync:test_support_proto_java",
"//components/sync/android:sync_java",
"//content/public/android:content_java",
"//content/public/test/android:content_java_test_support",
"//third_party/android_deps:android_arch_lifecycle_common_java",
"//third_party/android_deps:android_support_v7_appcompat_java",
"//third_party/android_support_test_runner:rules_java",
"//third_party/android_support_test_runner:runner_java",
"//third_party/android_tools:android_test_mock_java",
"//third_party/junit",
"//ui/android:ui_java",
]
proguard_enabled = !is_java_debug
# The test APK contains code from both the APK under test and the
# test APK when proguard is enabled. That causes this APK to exceed
# the dex limit.
enable_multidex = proguard_enabled
}
if (defined(expected_static_initializer_count)) { if (defined(expected_static_initializer_count)) {
action("monochrome_static_initializers") { action("monochrome_static_initializers") {
script = "//build/android/gyp/assert_static_initializers.py" script = "//build/android/gyp/assert_static_initializers.py"

@@ -61,7 +61,8 @@ template("chrome_public_common_apk_or_module_tmpl") {
assert(defined(invoker.target_type), "target_type is required!") assert(defined(invoker.target_type), "target_type is required!")
assert( assert(
invoker.target_type == "android_apk" || invoker.target_type == "android_apk" ||
invoker.target_type == "android_app_bundle_module", invoker.target_type == "android_app_bundle_module" ||
invoker.target_type == "instrumentation_test_apk",
"Invalid target_type definition, should be 'android_apk' or 'android_app_bundle_module'") "Invalid target_type definition, should be 'android_apk' or 'android_app_bundle_module'")
# Adds unwind table asset to the chrome apk for the given library target. This # Adds unwind table asset to the chrome apk for the given library target. This

@@ -124,7 +124,7 @@ by a child template that "extends" this file.
<application android:name="{% block application_name %}org.chromium.chrome.browser.ChromeApplication{% endblock %}" <application android:name="{% block application_name %}org.chromium.chrome.browser.ChromeApplication{% endblock %}"
android:icon="@drawable/ic_launcher" android:icon="@drawable/ic_launcher"
android:roundIcon="@drawable/ic_launcher_round" android:roundIcon="@drawable/ic_launcher_round"
android:label="@string/app_name" android:label="{% block application_label %}@string/app_name{% endblock %}"
android:largeHeap="false" android:largeHeap="false"
android:manageSpaceActivity="@string/manage_space_activity" android:manageSpaceActivity="@string/manage_space_activity"
android:supportsRtl="true" android:supportsRtl="true"
@@ -1167,5 +1167,9 @@ android:value="true" />
android:value="org.chromium.chrome.browser.media.remote.DefaultMediaRouteController"/> android:value="org.chromium.chrome.browser.media.remote.DefaultMediaRouteController"/>
{% endblock %} {% endblock %}
{% block extra_application_definitions_for_test %}
{% endblock %}
</application> </application>
{% block extra_root_definitions %}
{% endblock %}
</manifest> </manifest>

@@ -30,6 +30,7 @@ import android.text.style.ForegroundColorSpan;
import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.BuildInfo; import org.chromium.base.BuildInfo;
import org.chromium.base.ContextUtils; import org.chromium.base.ContextUtils;
import org.chromium.base.StrictModeContext;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
import org.chromium.base.VisibleForTesting; import org.chromium.base.VisibleForTesting;
import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordHistogram;
@@ -147,7 +148,9 @@ public class SyncCustomizationFragment extends PreferenceFragment
mIsEngineInitialized && mProfileSyncService.isPassphraseRequiredForDecryption(); mIsEngineInitialized && mProfileSyncService.isPassphraseRequiredForDecryption();
getActivity().setTitle(R.string.sign_in_sync); getActivity().setTitle(R.string.sign_in_sync);
addPreferencesFromResource(R.xml.sync_customization_preferences); try (StrictModeContext ctx = StrictModeContext.allowDiskReads()) {
addPreferencesFromResource(R.xml.sync_customization_preferences);
}
mSyncEverything = (SwitchPreference) findPreference(PREFERENCE_SYNC_EVERYTHING); mSyncEverything = (SwitchPreference) findPreference(PREFERENCE_SYNC_EVERYTHING);
mSyncAutofill = (CheckBoxPreference) findPreference(PREFERENCE_SYNC_AUTOFILL); mSyncAutofill = (CheckBoxPreference) findPreference(PREFERENCE_SYNC_AUTOFILL);
mSyncBookmarks = (CheckBoxPreference) findPreference(PREFERENCE_SYNC_BOOKMARKS); mSyncBookmarks = (CheckBoxPreference) findPreference(PREFERENCE_SYNC_BOOKMARKS);

@@ -2156,7 +2156,18 @@ chrome_test_java_sources = [
"javatests/src/org/chromium/chrome/browser/suggestions/SuggestionsSheetVisibilityChangeObserverTest.java", "javatests/src/org/chromium/chrome/browser/suggestions/SuggestionsSheetVisibilityChangeObserverTest.java",
"javatests/src/org/chromium/chrome/browser/suggestions/TileGroupTest.java", "javatests/src/org/chromium/chrome/browser/suggestions/TileGroupTest.java",
"javatests/src/org/chromium/chrome/browser/suggestions/TileGridLayoutTest.java", "javatests/src/org/chromium/chrome/browser/suggestions/TileGridLayoutTest.java",
"javatests/src/org/chromium/chrome/browser/sync/AutofillTest.java",
"javatests/src/org/chromium/chrome/browser/sync/BookmarksTest.java",
"javatests/src/org/chromium/chrome/browser/sync/FakeProfileSyncService.java", "javatests/src/org/chromium/chrome/browser/sync/FakeProfileSyncService.java",
"javatests/src/org/chromium/chrome/browser/sync/FirstRunTest.java",
"javatests/src/org/chromium/chrome/browser/sync/GmsCoreSyncListenerTest.java",
"javatests/src/org/chromium/chrome/browser/sync/OpenTabsTest.java",
"javatests/src/org/chromium/chrome/browser/sync/SyncCustomizationFragmentTest.java",
"javatests/src/org/chromium/chrome/browser/sync/SyncTest.java",
"javatests/src/org/chromium/chrome/browser/sync/SyncTestRule.java",
"javatests/src/org/chromium/chrome/browser/sync/TypedUrlsTest.java",
"javatests/src/org/chromium/chrome/browser/sync/UkmTest.java",
"javatests/src/org/chromium/chrome/browser/sync/ui/PassphraseTypeDialogFragmentTest.java",
"javatests/src/org/chromium/chrome/browser/sync/ui/PassphraseActivityTest.java", "javatests/src/org/chromium/chrome/browser/sync/ui/PassphraseActivityTest.java",
"javatests/src/org/chromium/chrome/browser/tab/InterceptNavigationDelegateTest.java", "javatests/src/org/chromium/chrome/browser/tab/InterceptNavigationDelegateTest.java",
"javatests/src/org/chromium/chrome/browser/tab/SadTabTest.java", "javatests/src/org/chromium/chrome/browser/tab/SadTabTest.java",

@@ -1,22 +1,17 @@
<?xml version="1.0" encoding="utf-8"?> {% extends "chrome/android/java/AndroidManifest.xml" %}
<!-- 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 name must be unique. --> # Copyright 2015 The Chromium Authors. All rights reserved.
<manifest xmlns:android="http://schemas.android.com/apk/res/android" # Use of this source code is governed by a BSD-style license that can be
package="org.chromium.chrome.tests"> # found in the LICENSE file.
<uses-sdk android:minSdkVersion="{{min_sdk_version}}" android:targetSdkVersion="{{target_sdk_version}}" /> {% block application_label %}ChromePublicTest{% endblock %}
{% block extra_uses_permissions %}
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.READ_LOGS"/> <uses-permission android:name="android.permission.READ_LOGS"/>
<uses-permission android:name="android.permission.WAKE_LOCK" /> {% endblock %}
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET" />
<application
android:label="{% block application_name %}ChromePublicTest{% endblock %}">
{% block extra_application_definitions_for_test %}
<uses-library android:name="android.test.runner" /> <uses-library android:name="android.test.runner" />
<provider android:name="org.chromium.chrome.test.TestContentProvider" <provider android:name="org.chromium.chrome.test.TestContentProvider"
@@ -55,9 +50,10 @@
<activity android:name="org.chromium.test.broker.OnDeviceInstrumentationBroker" <activity android:name="org.chromium.test.broker.OnDeviceInstrumentationBroker"
android:exported="true"/> android:exported="true"/>
</application> {% endblock %}
{% block extra_root_definitions %}
<instrumentation android:name="org.chromium.base.test.BaseChromiumAndroidJUnitRunner" <instrumentation android:name="org.chromium.base.test.BaseChromiumAndroidJUnitRunner"
android:targetPackage="{{manifest_package}}" android:targetPackage="{{manifest_package}}"
android:label="Tests for {{manifest_package}}"/> android:label="Tests for {{manifest_package}}"/>
</manifest> {% endblock %}

@@ -1,10 +1,24 @@
{% extends "chrome/android/javatests/AndroidManifest.xml" %} <?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
## Copyright 2018 The Chromium Authors. All rights reserved. <!-- package name must be unique. -->
## Use of this source code is governed by a BSD-style license that can be <manifest xmlns:android="http://schemas.android.com/apk/res/android"
## found in the LICENSE file. package="{{test_manifest_package}}">
## Note: This is a jinja2 template, processed at build time into the final manifest. <uses-sdk android:minSdkVersion="{{min_sdk_version}}" android:targetSdkVersion="{{target_sdk_version}}" />
## <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.READ_LOGS"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET" />
{% block application_name %}MonochromePublicTest{% endblock %} <application android:label="MonochromePublicTest">
<uses-library android:name="android.test.runner" />
</application>
<instrumentation android:name="org.chromium.base.test.BaseChromiumAndroidJUnitRunner"
android:targetPackage="{{manifest_package}}"
android:label="Tests for {{manifest_package}}"/>
</manifest>

@@ -1,4 +1,5 @@
include_rules = [ include_rules = [
"+chrome/app",
"+components/autofill/android/java/src/org/chromium/components/autofill", "+components/autofill/android/java/src/org/chromium/components/autofill",
"+components/background_task_scheduler/android/java", "+components/background_task_scheduler/android/java",
"+components/bookmarks/common/android/java/src/org/chromium/components/bookmarks", "+components/bookmarks/common/android/java/src/org/chromium/components/bookmarks",
@@ -14,7 +15,9 @@ include_rules = [
"+components/offline_items_collection/core/android/java", "+components/offline_items_collection/core/android/java",
"+components/payments/content/android/java/src/org/chromium/components/payments", "+components/payments/content/android/java/src/org/chromium/components/payments",
"+components/safe_browsing/android/java/src/org/chromium/components/safe_browsing", "+components/safe_browsing/android/java/src/org/chromium/components/safe_browsing",
"+components/search_engines",
"+components/sync/android/java/src/org/chromium/components/sync", "+components/sync/android/java/src/org/chromium/components/sync",
"+components/sync/test/fake_server/android",
# We should only depend on the util package of something that lives in # We should only depend on the util package of something that lives in
# javatests. # javatests.
"+components/sync/test/android/javatests/src/org/chromium/components/sync/test/util", "+components/sync/test/android/javatests/src/org/chromium/components/sync/test/util",

@@ -14,6 +14,7 @@ import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.chromium.base.ContextUtils;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
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;
@@ -48,7 +49,8 @@ public class OriginVerifierTest {
(byte) 0x10, (byte) 0x20, (byte) 0x30, (byte) 0x01, (byte) 0x02}; (byte) 0x10, (byte) 0x20, (byte) 0x30, (byte) 0x01, (byte) 0x02};
private static final String STRING_ARRAY = "AA:BB:CC:10:20:30:01:02"; private static final String STRING_ARRAY = "AA:BB:CC:10:20:30:01:02";
private static final String PACKAGE_NAME = "org.chromium.chrome"; private static final String PACKAGE_NAME =
ContextUtils.getApplicationContext().getPackageName();
private static final String SHA_256_FINGERPRINT_PUBLIC = private static final String SHA_256_FINGERPRINT_PUBLIC =
"32:A2:FC:74:D7:31:10:58:59:E5:A8:5D:F1:6D:95:F1:02:D8:5B" "32:A2:FC:74:D7:31:10:58:59:E5:A8:5D:F1:6D:95:F1:02:D8:5B"
+ ":22:09:9B:80:64:C5:D8:91:5C:61:DA:D1:E0"; + ":22:09:9B:80:64:C5:D8:91:5C:61:DA:D1:E0";

@@ -20,6 +20,7 @@ import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.chromium.base.ContextUtils;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
import org.chromium.base.library_loader.LibraryLoader; import org.chromium.base.library_loader.LibraryLoader;
import org.chromium.base.library_loader.LibraryProcessType; import org.chromium.base.library_loader.LibraryProcessType;
@@ -47,7 +48,8 @@ public class TrustedWebActivityTest {
public CustomTabActivityTestRule mCustomTabActivityTestRule = new CustomTabActivityTestRule(); public CustomTabActivityTestRule mCustomTabActivityTestRule = new CustomTabActivityTestRule();
private static final String TEST_PAGE = "/chrome/test/data/android/google.html"; private static final String TEST_PAGE = "/chrome/test/data/android/google.html";
private static final String PACKAGE_NAME = "org.chromium.chrome"; // Package name of test apk. private static final String PACKAGE_NAME =
ContextUtils.getApplicationContext().getPackageName();
private EmbeddedTestServer mTestServer; private EmbeddedTestServer mTestServer;
private String mTestPage; private String mTestPage;

@@ -25,6 +25,7 @@ import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
import org.chromium.base.test.util.DisabledTest;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeTabbedActivity; import org.chromium.chrome.browser.ChromeTabbedActivity;
import org.chromium.chrome.browser.customtabs.CustomTabActivity; import org.chromium.chrome.browser.customtabs.CustomTabActivity;
@@ -185,6 +186,7 @@ public class FirstRunIntegrationTest {
@Test @Test
@SmallTest @SmallTest
@DisabledTest // https://crbug.com/901488
public void testAbortFirstRun() throws Exception { public void testAbortFirstRun() throws Exception {
Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation(); Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
final ActivityMonitor launcherActivityMonitor = final ActivityMonitor launcherActivityMonitor =

@@ -20,6 +20,7 @@ import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.chromium.base.Callback; import org.chromium.base.Callback;
import org.chromium.base.ContextUtils;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.DisableIf; import org.chromium.base.test.util.DisableIf;
@@ -66,8 +67,9 @@ public class OfflinePageUtilsTest {
new ClientId(OfflinePageBridge.SUGGESTED_ARTICLES_NAMESPACE, "90"); new ClientId(OfflinePageBridge.SUGGESTED_ARTICLES_NAMESPACE, "90");
private static final String SHARED_URI = "http://127.0.0.1/chrome/test/data/android/about.html"; private static final String SHARED_URI = "http://127.0.0.1/chrome/test/data/android/about.html";
private static final String CONTENT_URI = "content://chromium/some-content-id"; private static final String CONTENT_URI = "content://chromium/some-content-id";
private static final String CONTENT_URI_PREFIX = private static final String CONTENT_URI_PREFIX = "content://"
"content://org.chromium.chrome.FileProvider/offline-cache/"; + ContextUtils.getApplicationContext().getPackageName()
+ ".FileProvider/offline-cache/";
private static final String FILE_URI = "file://some-dir/some-file.mhtml"; private static final String FILE_URI = "file://some-dir/some-file.mhtml";
private static final String INVALID_URI = "This is not a uri."; private static final String INVALID_URI = "This is not a uri.";
private static final String EMPTY_URI = ""; private static final String EMPTY_URI = "";

@@ -76,8 +76,7 @@ public class FakeServerHelper {
* Deletes the existing FakeServer. * Deletes the existing FakeServer.
*/ */
public static void deleteFakeServer() { public static void deleteFakeServer() {
checkFakeServerInitialized( checkFakeServerInitialized("useFakeServer must be called before calling deleteFakeServer.");
"useFakeServer must be called before calling deleteFakeServer.");
ThreadUtils.runOnUiThreadBlockingNoException(new Callable<Void>() { ThreadUtils.runOnUiThreadBlockingNoException(new Callable<Void>() {
@Override @Override
public Void call() { public Void call() {
@@ -145,15 +144,14 @@ public class FakeServerHelper {
* *
* @return whether the number of specified entities exist * @return whether the number of specified entities exist
*/ */
public boolean verifyEntityCountByTypeAndName(final int count, final int modelType, public boolean verifyEntityCountByTypeAndName(
final String name) { final int count, final int modelType, final String name) {
checkFakeServerInitialized( checkFakeServerInitialized("useFakeServer must be called before data verification.");
"useFakeServer must be called before data verification.");
return ThreadUtils.runOnUiThreadBlockingNoException(new Callable<Boolean>() { return ThreadUtils.runOnUiThreadBlockingNoException(new Callable<Boolean>() {
@Override @Override
public Boolean call() { public Boolean call() {
return nativeVerifyEntityCountByTypeAndName(mNativeFakeServerHelperAndroid, return nativeVerifyEntityCountByTypeAndName(
sNativeFakeServer, count, modelType, name); mNativeFakeServerHelperAndroid, sNativeFakeServer, count, modelType, name);
} }
}); });
} }
@@ -166,13 +164,12 @@ public class FakeServerHelper {
* @return whether the sessions on the server match the given urls. * @return whether the sessions on the server match the given urls.
*/ */
public boolean verifySessions(final String[] urls) { public boolean verifySessions(final String[] urls) {
checkFakeServerInitialized( checkFakeServerInitialized("useFakeServer must be called before data verification.");
"useFakeServer must be called before data verification.");
return ThreadUtils.runOnUiThreadBlockingNoException(new Callable<Boolean>() { return ThreadUtils.runOnUiThreadBlockingNoException(new Callable<Boolean>() {
@Override @Override
public Boolean call() { public Boolean call() {
return nativeVerifySessions(mNativeFakeServerHelperAndroid, sNativeFakeServer, return nativeVerifySessions(
urls); mNativeFakeServerHelperAndroid, sNativeFakeServer, urls);
} }
}); });
} }
@@ -277,8 +274,8 @@ public class FakeServerHelper {
ThreadUtils.runOnUiThreadBlockingNoException(new Callable<Void>() { ThreadUtils.runOnUiThreadBlockingNoException(new Callable<Void>() {
@Override @Override
public Void call() { public Void call() {
nativeInjectBookmarkEntity(mNativeFakeServerHelperAndroid, sNativeFakeServer, title, nativeInjectBookmarkEntity(
url, parentId); mNativeFakeServerHelperAndroid, sNativeFakeServer, title, url, parentId);
return null; return null;
} }
}); });
@@ -379,8 +376,8 @@ public class FakeServerHelper {
return ThreadUtils.runOnUiThreadBlockingNoException(new Callable<String>() { return ThreadUtils.runOnUiThreadBlockingNoException(new Callable<String>() {
@Override @Override
public String call() { public String call() {
return nativeGetBookmarkBarFolderId(mNativeFakeServerHelperAndroid, return nativeGetBookmarkBarFolderId(
sNativeFakeServer); mNativeFakeServerHelperAndroid, sNativeFakeServer);
} }
}); });
} }
@@ -411,23 +408,20 @@ public class FakeServerHelper {
long nativeFakeServerHelperAndroid, long nativeFakeServer); long nativeFakeServerHelperAndroid, long nativeFakeServer);
private native void nativeDeleteFakeServer( private native void nativeDeleteFakeServer(
long nativeFakeServerHelperAndroid, long nativeFakeServer); long nativeFakeServerHelperAndroid, long nativeFakeServer);
private native boolean nativeVerifyEntityCountByTypeAndName( private native boolean nativeVerifyEntityCountByTypeAndName(long nativeFakeServerHelperAndroid,
long nativeFakeServerHelperAndroid, long nativeFakeServer, int count, int modelType, long nativeFakeServer, int count, int modelType, String name);
String name);
private native boolean nativeVerifySessions( private native boolean nativeVerifySessions(
long nativeFakeServerHelperAndroid, long nativeFakeServer, String[] urlArray); long nativeFakeServerHelperAndroid, long nativeFakeServer, String[] urlArray);
private native byte[][] nativeGetSyncEntitiesByModelType( private native byte[][] nativeGetSyncEntitiesByModelType(
long nativeFakeServerHelperAndroid, long nativeFakeServer, int modelType); long nativeFakeServerHelperAndroid, long nativeFakeServer, int modelType);
private native void nativeInjectUniqueClientEntity( private native void nativeInjectUniqueClientEntity(long nativeFakeServerHelperAndroid,
long nativeFakeServerHelperAndroid, long nativeFakeServer, String name, long nativeFakeServer, String name, byte[] serializedEntitySpecifics);
byte[] serializedEntitySpecifics);
private native void nativeSetWalletData( private native void nativeSetWalletData(
long nativeFakeServerHelperAndroid, long nativeFakeServer, byte[] serializedEntity); long nativeFakeServerHelperAndroid, long nativeFakeServer, byte[] serializedEntity);
private native void nativeModifyEntitySpecifics(long nativeFakeServerHelperAndroid, private native void nativeModifyEntitySpecifics(long nativeFakeServerHelperAndroid,
long nativeFakeServer, String id, byte[] serializedEntitySpecifics); long nativeFakeServer, String id, byte[] serializedEntitySpecifics);
private native void nativeInjectBookmarkEntity( private native void nativeInjectBookmarkEntity(long nativeFakeServerHelperAndroid,
long nativeFakeServerHelperAndroid, long nativeFakeServer, String title, String url, long nativeFakeServer, String title, String url, String parentId);
String parentId);
private native void nativeInjectBookmarkFolderEntity(long nativeFakeServerHelperAndroid, private native void nativeInjectBookmarkFolderEntity(long nativeFakeServerHelperAndroid,
long nativeFakeServer, String title, String parentId); long nativeFakeServer, String title, String parentId);
private native void nativeModifyBookmarkEntity(long nativeFakeServerHelperAndroid, private native void nativeModifyBookmarkEntity(long nativeFakeServerHelperAndroid,

@@ -23,6 +23,7 @@ import org.junit.runner.RunWith;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
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.Feature; import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.FlakyTest; import org.chromium.base.test.util.FlakyTest;
import org.chromium.chrome.browser.ChromeSwitches; import org.chromium.chrome.browser.ChromeSwitches;
@@ -83,7 +84,6 @@ public class FirstRunTest {
freMonitor.waitForActivityWithTimeout(CriteriaHelper.DEFAULT_MAX_TIME_TO_POLL); freMonitor.waitForActivityWithTimeout(CriteriaHelper.DEFAULT_MAX_TIME_TO_POLL);
instrumentation.removeMonitor(freMonitor); instrumentation.removeMonitor(freMonitor);
Assert.assertTrue(activity instanceof FirstRunActivity);
mActivity = (FirstRunActivity) activity; mActivity = (FirstRunActivity) activity;
try { try {
@@ -127,7 +127,6 @@ public class FirstRunTest {
private final TestObserver mTestObserver = new TestObserver(); private final TestObserver mTestObserver = new TestObserver();
private FirstRunActivity mActivity; private FirstRunActivity mActivity;
@After @After
public void tearDown() throws Exception { public void tearDown() throws Exception {
if (mActivity != null) mActivity.finish(); if (mActivity != null) mActivity.finish();
@@ -182,6 +181,7 @@ public class FirstRunTest {
@Test @Test
@SmallTest @SmallTest
@Feature({"Sync"}) @Feature({"Sync"})
@DisabledTest // https://crbug.com/901488
public void testNoSignIn() throws Exception { public void testNoSignIn() throws Exception {
SigninTestUtil.addTestAccount(); SigninTestUtil.addTestAccount();
Assert.assertFalse(SyncTestUtil.isSyncRequested()); Assert.assertFalse(SyncTestUtil.isSyncRequested());
@@ -204,14 +204,14 @@ public class FirstRunTest {
Preferences prefActivity = null; Preferences prefActivity = null;
if (showSettings == ShowSettings.YES) { if (showSettings == ShowSettings.YES) {
prefActivity = ActivityUtils.waitForActivity( prefActivity =
InstrumentationRegistry.getInstrumentation(), Preferences.class, ActivityUtils.waitForActivity(InstrumentationRegistry.getInstrumentation(),
new Runnable() { Preferences.class, new Runnable() {
@Override @Override
public void run() { public void run() {
processFirstRunOnUiThread(); processFirstRunOnUiThread();
} }
}); });
Assert.assertNotNull("Could not find the preferences activity", prefActivity); Assert.assertNotNull("Could not find the preferences activity", prefActivity);
} else { } else {
processFirstRunOnUiThread(); processFirstRunOnUiThread();

@@ -197,8 +197,7 @@ public class OpenTabsTest {
return SESSION_TAG_PREFIX + (mSessionTagCounter++); return SESSION_TAG_PREFIX + (mSessionTagCounter++);
} }
private void addFakeServerTabs(String clientName, String... urls) private void addFakeServerTabs(String clientName, String... urls) throws InterruptedException {
throws InterruptedException {
String tag = makeSessionTag(); String tag = makeSessionTag();
EntitySpecifics header = makeSessionEntity(tag, clientName, urls.length); EntitySpecifics header = makeSessionEntity(tag, clientName, urls.length);
mSyncTestRule.getFakeServerHelper().injectUniqueClientEntity(tag, header); mSyncTestRule.getFakeServerHelper().injectUniqueClientEntity(tag, header);
@@ -269,8 +268,7 @@ public class OpenTabsTest {
})); }));
} }
private void waitForServerTabs(final String... urls) private void waitForServerTabs(final String... urls) throws InterruptedException {
throws InterruptedException {
mSyncTestRule.pollInstrumentationThread( mSyncTestRule.pollInstrumentationThread(
new Criteria("Expected server open tabs: " + Arrays.toString(urls)) { new Criteria("Expected server open tabs: " + Arrays.toString(urls)) {
@Override @Override
@@ -393,8 +391,8 @@ public class OpenTabsTest {
JSONObject tab = json.getJSONObject("tab"); JSONObject tab = json.getJSONObject("tab");
int i = tab.getInt("current_navigation_index"); int i = tab.getInt("current_navigation_index");
String tabId = tab.getString("tab_id"); String tabId = tab.getString("tab_id");
String url = tab.getJSONArray("navigation") String url =
.getJSONObject(i).getString("virtual_url"); tab.getJSONArray("navigation").getJSONObject(i).getString("virtual_url");
tabIdsToUrls.put(tabId, url); tabIdsToUrls.put(tabId, url);
tabIdsToServerIds.put(tabId, tabEntity.first); tabIdsToServerIds.put(tabId, tabEntity.first);
tabIdsToClientTagHashes.put(tabId, clientTagHash); tabIdsToClientTagHashes.put(tabId, clientTagHash);

@@ -105,10 +105,9 @@ public class SyncCustomizationFragmentTest {
UI_DATATYPES.put(ModelType.BOOKMARKS, SyncCustomizationFragment.PREFERENCE_SYNC_BOOKMARKS); UI_DATATYPES.put(ModelType.BOOKMARKS, SyncCustomizationFragment.PREFERENCE_SYNC_BOOKMARKS);
UI_DATATYPES.put(ModelType.TYPED_URLS, SyncCustomizationFragment.PREFERENCE_SYNC_OMNIBOX); UI_DATATYPES.put(ModelType.TYPED_URLS, SyncCustomizationFragment.PREFERENCE_SYNC_OMNIBOX);
UI_DATATYPES.put(ModelType.PASSWORDS, SyncCustomizationFragment.PREFERENCE_SYNC_PASSWORDS); UI_DATATYPES.put(ModelType.PASSWORDS, SyncCustomizationFragment.PREFERENCE_SYNC_PASSWORDS);
UI_DATATYPES.put(ModelType.PROXY_TABS, UI_DATATYPES.put(
SyncCustomizationFragment.PREFERENCE_SYNC_RECENT_TABS); ModelType.PROXY_TABS, SyncCustomizationFragment.PREFERENCE_SYNC_RECENT_TABS);
UI_DATATYPES.put(ModelType.PREFERENCES, UI_DATATYPES.put(ModelType.PREFERENCES, SyncCustomizationFragment.PREFERENCE_SYNC_SETTINGS);
SyncCustomizationFragment.PREFERENCE_SYNC_SETTINGS);
} }
private Preferences mPreferences; private Preferences mPreferences;
@@ -458,8 +457,8 @@ public class SyncCustomizationFragmentTest {
CheckBoxPreference syncAutofill = (CheckBoxPreference) fragment.findPreference( CheckBoxPreference syncAutofill = (CheckBoxPreference) fragment.findPreference(
SyncCustomizationFragment.PREFERENCE_SYNC_AUTOFILL); SyncCustomizationFragment.PREFERENCE_SYNC_AUTOFILL);
togglePreference(syncAutofill); // Disable autofill sync. togglePreference(syncAutofill); // Disable autofill sync.
togglePreference(syncAutofill); // Re-enable autofill sync again. togglePreference(syncAutofill); // Re-enable autofill sync again.
CheckBoxPreference paymentsIntegration = (CheckBoxPreference) fragment.findPreference( CheckBoxPreference paymentsIntegration = (CheckBoxPreference) fragment.findPreference(
SyncCustomizationFragment.PREFERENCE_PAYMENTS_INTEGRATION); SyncCustomizationFragment.PREFERENCE_PAYMENTS_INTEGRATION);

@@ -247,7 +247,8 @@ public class SyncTestRule extends ChromeActivityTestRule<ChromeActivity> {
public String getUniqueId(String salt) { public String getUniqueId(String salt) {
return CLIENT_ID; return CLIENT_ID;
} }
}, true); },
true);
statement.evaluate(); statement.evaluate();
} }
}, desc); }, desc);
@@ -284,5 +285,4 @@ public class SyncTestRule extends ChromeActivityTestRule<ChromeActivity> {
SigninTestUtil.resetSigninState(); SigninTestUtil.resetSigninState();
SigninTestUtil.tearDownAuthForTest(); SigninTestUtil.tearDownAuthForTest();
} }
} }

@@ -146,7 +146,7 @@ public class TypedUrlsTest {
SyncTestUtil.getLocalData(mSyncTestRule.getTargetContext(), TYPED_URLS_TYPE); SyncTestUtil.getLocalData(mSyncTestRule.getTargetContext(), TYPED_URLS_TYPE);
List<TypedUrl> typedUrls = new ArrayList<TypedUrl>(rawTypedUrls.size()); List<TypedUrl> typedUrls = new ArrayList<TypedUrl>(rawTypedUrls.size());
for (Pair<String, JSONObject> rawTypedUrl : rawTypedUrls) { for (Pair<String, JSONObject> rawTypedUrl : rawTypedUrls) {
String id = rawTypedUrl.first; String id = rawTypedUrl.first;
String client_tag_hash = ""; String client_tag_hash = "";
if (rawTypedUrl.second.has("metadata")) { if (rawTypedUrl.second.has("metadata")) {
JSONObject metadata = rawTypedUrl.second.getJSONObject("metadata"); JSONObject metadata = rawTypedUrl.second.getJSONObject("metadata");
@@ -182,18 +182,20 @@ public class TypedUrlsTest {
} }
private void waitForServerTypedUrlCountWithName(final int count, final String name) { private void waitForServerTypedUrlCountWithName(final int count, final String name) {
CriteriaHelper.pollInstrumentationThread(new Criteria( CriteriaHelper.pollInstrumentationThread(
"Expected " + count + " server typed URLs with name " + name + ".") { new Criteria("Expected " + count + " server typed URLs with name " + name + ".") {
@Override @Override
public boolean isSatisfied() { public boolean isSatisfied() {
try { try {
return mSyncTestRule.getFakeServerHelper().verifyEntityCountByTypeAndName( return mSyncTestRule.getFakeServerHelper()
count, ModelType.TYPED_URLS, name); .verifyEntityCountByTypeAndName(
} catch (Exception e) { count, ModelType.TYPED_URLS, name);
throw new RuntimeException(e); } catch (Exception e) {
} throw new RuntimeException(e);
} }
}, SyncTestUtil.TIMEOUT_MS, SyncTestUtil.INTERVAL_MS); }
},
SyncTestUtil.TIMEOUT_MS, SyncTestUtil.INTERVAL_MS);
} }
private long getCurrentTimeInMicroseconds() { private long getCurrentTimeInMicroseconds() {

@@ -1,6 +0,0 @@
include_rules = [
"+chrome/app",
"+components/search_engines",
"+components/sync/test/fake_server/android",
]

@@ -1,2 +0,0 @@
ChromeSyncShell (and ChromeSyncShellTest) exists because we don't want to
include the Sync FakeServer as part of ChromeShell.

@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 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 name must be unique. -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.chromium.chrome.sync_shell.tests">
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="22" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.READ_LOGS"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET" />
<application
android:label="ChromeSyncShellTest">
<uses-library android:name="android.test.runner" />
</application>
<instrumentation android:name="org.chromium.base.test.BaseChromiumAndroidJUnitRunner"
android:targetPackage="{{manifest_package}}"
android:label="Tests for {{manifest_package}}"/>
</manifest>

@@ -1,11 +0,0 @@
include_rules = [
"+components/bookmarks",
"+components/sync/android/java/src/org/chromium/components/sync",
"+components/sync/test/android/javatests/src/org/chromium/components/sync/test/util",
"-content/public/android/java",
"+content/public/android/java/src/org/chromium/content_public",
"-content/public/android/javatests",
"+content/public/test/android/javatests",
]

@@ -1,40 +0,0 @@
// Copyright 2017 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_utils.h"
#include "base/android/library_loader/library_loader_hooks.h"
#include "base/bind.h"
#include "chrome/app/android/chrome_jni_onload.h"
#include "chrome/browser/android/chrome_sync_shell_jni_registration.h"
namespace {
bool NativeInit(base::android::LibraryProcessType) {
return android::OnJNIOnLoadInit();
}
} // namespace
// This is called by the VM when the shared library is first loaded.
JNI_EXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) {
// By default, all JNI methods are registered. However, since render processes
// don't need very much Java code, we enable selective JNI registration on the
// Java side and only register a subset of JNI methods.
base::android::InitVM(vm);
JNIEnv* env = base::android::AttachCurrentThread();
if (!base::android::IsSelectiveJniRegistrationEnabled(env) &&
!RegisterNonMainDexNatives(env)) {
return -1;
}
if (!RegisterMainDexNatives(env)) {
return -1;
}
if (!android::OnJNIOnLoadRegisterJNI(env)) {
return -1;
}
base::android::SetNativeInitializationHook(NativeInit);
return JNI_VERSION_1_4;
}

@@ -474,7 +474,7 @@ IN_PROC_BROWSER_TEST_P(UkmBrowserTest, OpenNonSyncCheck) {
// Make sure that UKM is disabled when metrics consent is revoked. // Make sure that UKM is disabled when metrics consent is revoked.
// Keep in sync with UkmTest.testMetricConsent in // Keep in sync with UkmTest.testMetricConsent in
// chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/ // chrome/android/javatests/src/org/chromium/chrome/browser/sync/
// UkmTest.java. // UkmTest.java.
IN_PROC_BROWSER_TEST_P(UkmBrowserTest, MetricsConsentCheck) { IN_PROC_BROWSER_TEST_P(UkmBrowserTest, MetricsConsentCheck) {
@@ -588,7 +588,7 @@ IN_PROC_BROWSER_TEST_P(UkmBrowserTest, NetworkProviderPopulatesSystemProfile) {
// Make sure that providing consent doesn't enable UKM when sync is disabled. // Make sure that providing consent doesn't enable UKM when sync is disabled.
// Keep in sync with UkmTest.consentAddedButNoSyncCheck in // Keep in sync with UkmTest.consentAddedButNoSyncCheck in
// chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/ // chrome/android/javatests/src/org/chromium/chrome/browser/sync/
// UkmTest.java. // UkmTest.java.
IN_PROC_BROWSER_TEST_P(UkmBrowserTest, ConsentAddedButNoSyncCheck) { IN_PROC_BROWSER_TEST_P(UkmBrowserTest, ConsentAddedButNoSyncCheck) {
MetricsConsentOverride metrics_consent(false); MetricsConsentOverride metrics_consent(false);
@@ -611,7 +611,7 @@ IN_PROC_BROWSER_TEST_P(UkmBrowserTest, ConsentAddedButNoSyncCheck) {
// Make sure that UKM is disabled when an open sync window disables history. // Make sure that UKM is disabled when an open sync window disables history.
// Keep in sync with UkmTest.singleDisableHistorySyncCheck in // Keep in sync with UkmTest.singleDisableHistorySyncCheck in
// chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/ // chrome/android/javatests/src/org/chromium/chrome/browser/sync/
// UkmTest.java. // UkmTest.java.
IN_PROC_BROWSER_TEST_P(UkmBrowserTest, SingleDisableHistorySyncCheck) { IN_PROC_BROWSER_TEST_P(UkmBrowserTest, SingleDisableHistorySyncCheck) {
MetricsConsentOverride metrics_consent(true); MetricsConsentOverride metrics_consent(true);
@@ -865,7 +865,7 @@ IN_PROC_BROWSER_TEST_P(UkmBrowserTest, LogsOpenerSource) {
// Make sure that UKM is disabled when an secondary passphrase is set. // Make sure that UKM is disabled when an secondary passphrase is set.
// Keep in sync with UkmTest.secondaryPassphraseCheck in // Keep in sync with UkmTest.secondaryPassphraseCheck in
// chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/ // chrome/android/javatests/src/org/chromium/chrome/browser/sync/
// UkmTest.java. // UkmTest.java.
IN_PROC_BROWSER_TEST_F(UkmBrowserTestUnifiedConsentDisabled, IN_PROC_BROWSER_TEST_F(UkmBrowserTestUnifiedConsentDisabled,
SecondaryPassphraseCheck) { SecondaryPassphraseCheck) {
@@ -899,7 +899,7 @@ IN_PROC_BROWSER_TEST_F(UkmBrowserTestUnifiedConsentDisabled,
#if !defined(OS_CHROMEOS) #if !defined(OS_CHROMEOS)
// Make sure that UKM is disabled when the profile signs out of Sync. // Make sure that UKM is disabled when the profile signs out of Sync.
// Keep in sync with UkmTest.singleSyncSignoutCheck in // Keep in sync with UkmTest.singleSyncSignoutCheck in
// chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/ // chrome/android/javatests/src/org/chromium/chrome/browser/sync/
// UkmTest.java. // UkmTest.java.
IN_PROC_BROWSER_TEST_P(UkmBrowserTest, SingleSyncSignoutCheck) { IN_PROC_BROWSER_TEST_P(UkmBrowserTest, SingleSyncSignoutCheck) {
MetricsConsentOverride metrics_consent(true); MetricsConsentOverride metrics_consent(true);

@@ -18,7 +18,7 @@ public class TestTrustedWebActivityService extends TrustedWebActivityService {
@Override @Override
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
TrustedWebActivityService.setVerifiedProviderForTesting(this, "org.chromium.chrome"); TrustedWebActivityService.setVerifiedProviderForTesting(this, "org.chromium.chrome.tests");
} }
@Override @Override

@@ -1073,7 +1073,7 @@ if (is_android) {
testonly = true testonly = true
jni_package = "sync/test/fake_server" jni_package = "sync/test/fake_server"
sources = [ sources = [
"//chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/FakeServerHelper.java", "//chrome/android/javatests/src/org/chromium/chrome/browser/sync/FakeServerHelper.java",
] ]
} }

@@ -246,6 +246,9 @@ jumbo_static_library("content_shell_lib") {
public_deps = [ public_deps = [
":android_shell_descriptors", ":android_shell_descriptors",
# #include'ed by renderer/layout_test/blink_test_runner.h
":mojo_bindings",
# This exposes all public content APIs. # This exposes all public content APIs.
"//content/public/app:both", "//content/public/app:both",
"//content/public/browser", "//content/public/browser",
@@ -261,7 +264,6 @@ jumbo_static_library("content_shell_lib") {
":content_shell_packaged_services_manifest_overlay", ":content_shell_packaged_services_manifest_overlay",
":layout_test_switches", ":layout_test_switches",
":layout_test_utils", ":layout_test_utils",
":mojo_bindings",
":resources", ":resources",
"//base", "//base",
"//base:base_static", "//base:base_static",

@@ -82,7 +82,6 @@ Java test files vary a bit more widely than their C++ counterparts:
- `webview_instrumentation_test_apk` for anything in `//android_webview` - `webview_instrumentation_test_apk` for anything in `//android_webview`
- `content_shell_test_apk` for anything in `//content` or below - `content_shell_test_apk` for anything in `//content` or below
- `chrome_public_test_apk` for most things in `//chrome` - `chrome_public_test_apk` for most things in `//chrome`
- `chrome_sync_shell_test_apk` in a few exceptional cases
- JUnit or Robolectric test files -- i.e., tests that will run on the host -- - JUnit or Robolectric test files -- i.e., tests that will run on the host --
typically belong in `<top-level directory>_junit_tests` (e.g. typically belong in `<top-level directory>_junit_tests` (e.g.
`base_junit_tests` for `//base`), though here again there are cases `base_junit_tests` for `//base`), though here again there are cases

@@ -1392,51 +1392,6 @@
}, },
"test": "chrome_public_test_vr_apk" "test": "chrome_public_test_vr_apk"
}, },
{
"args": [
"--gs-results-bucket=chromium-result-details",
"--recover-devices"
],
"merge": {
"args": [
"--bucket",
"chromium-result-details",
"--test-name",
"chrome_sync_shell_test_apk"
],
"script": "//build/android/pylib/results/presentation/test_results_presentation.py"
},
"swarming": {
"can_use_on_swarming_builders": true,
"cipd_packages": [
{
"cipd_package": "infra/tools/luci/logdog/butler/${platform}",
"location": "bin",
"revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
}
],
"dimension_sets": [
{
"device_os": "NRD91N",
"device_type": "bullhead",
"os": "Android"
}
],
"expiration": 10800,
"hard_timeout": 960,
"output_links": [
{
"link": [
"https://luci-logdog.appspot.com/v/?s",
"=android%2Fswarming%2Flogcats%2F",
"${TASK_ID}%2F%2B%2Funified_logcats"
],
"name": "shard #${SHARD_INDEX} logcats"
}
]
},
"test": "chrome_sync_shell_test_apk"
},
{ {
"args": [ "args": [
"--gs-results-bucket=chromium-result-details", "--gs-results-bucket=chromium-result-details",
@@ -3804,31 +3759,6 @@
}, },
"test": "chrome_public_test_apk" "test": "chrome_public_test_apk"
}, },
{
"args": [
"--gs-results-bucket=chromium-result-details",
"--recover-devices"
],
"merge": {
"args": [
"--bucket",
"chromium-result-details",
"--test-name",
"chrome_sync_shell_test_apk"
],
"script": "//build/android/pylib/results/presentation/test_results_presentation.py"
},
"swarming": {
"can_use_on_swarming_builders": true,
"dimension_sets": [
{
"device_type": "coho",
"os": "Android"
}
]
},
"test": "chrome_sync_shell_test_apk"
},
{ {
"args": [ "args": [
"--gs-results-bucket=chromium-result-details", "--gs-results-bucket=chromium-result-details",
@@ -5321,31 +5251,6 @@
}, },
"test": "chrome_public_test_apk" "test": "chrome_public_test_apk"
}, },
{
"args": [
"--gs-results-bucket=chromium-result-details",
"--recover-devices"
],
"merge": {
"args": [
"--bucket",
"chromium-result-details",
"--test-name",
"chrome_sync_shell_test_apk"
],
"script": "//build/android/pylib/results/presentation/test_results_presentation.py"
},
"swarming": {
"can_use_on_swarming_builders": true,
"dimension_sets": [
{
"device_type": "gce_x86",
"os": "Android"
}
]
},
"test": "chrome_sync_shell_test_apk"
},
{ {
"args": [ "args": [
"--gs-results-bucket=chromium-result-details", "--gs-results-bucket=chromium-result-details",

@@ -1251,50 +1251,6 @@
}, },
"test": "chrome_public_test_vr_apk" "test": "chrome_public_test_vr_apk"
}, },
{
"args": [
"--gs-results-bucket=chromium-result-details",
"--recover-devices"
],
"merge": {
"args": [
"--bucket",
"chromium-result-details",
"--test-name",
"chrome_sync_shell_test_apk"
],
"script": "//build/android/pylib/results/presentation/test_results_presentation.py"
},
"swarming": {
"can_use_on_swarming_builders": true,
"cipd_packages": [
{
"cipd_package": "infra/tools/luci/logdog/butler/${platform}",
"location": "bin",
"revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
}
],
"dimension_sets": [
{
"device_os": "KTU84P",
"device_type": "hammerhead",
"os": "Android"
}
],
"output_links": [
{
"link": [
"https://luci-logdog.appspot.com/v/?s",
"=android%2Fswarming%2Flogcats%2F",
"${TASK_ID}%2F%2B%2Funified_logcats"
],
"name": "shard #${SHARD_INDEX} logcats"
}
],
"shards": 2
},
"test": "chrome_sync_shell_test_apk"
},
{ {
"args": [ "args": [
"--gs-results-bucket=chromium-result-details", "--gs-results-bucket=chromium-result-details",
@@ -3864,50 +3820,6 @@
}, },
"test": "chrome_public_test_apk" "test": "chrome_public_test_apk"
}, },
{
"args": [
"--gs-results-bucket=chromium-result-details",
"--recover-devices"
],
"merge": {
"args": [
"--bucket",
"chromium-result-details",
"--test-name",
"chrome_sync_shell_test_apk"
],
"script": "//build/android/pylib/results/presentation/test_results_presentation.py"
},
"swarming": {
"can_use_on_swarming_builders": true,
"cipd_packages": [
{
"cipd_package": "infra/tools/luci/logdog/butler/${platform}",
"location": "bin",
"revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
}
],
"dimension_sets": [
{
"device_os": "KTU84Z",
"device_type": "flo",
"os": "Android"
}
],
"expiration": 10800,
"output_links": [
{
"link": [
"https://luci-logdog.appspot.com/v/?s",
"=android%2Fswarming%2Flogcats%2F",
"${TASK_ID}%2F%2B%2Funified_logcats"
],
"name": "shard #${SHARD_INDEX} logcats"
}
]
},
"test": "chrome_sync_shell_test_apk"
},
{ {
"args": [ "args": [
"--gs-results-bucket=chromium-result-details", "--gs-results-bucket=chromium-result-details",
@@ -6538,51 +6450,6 @@
}, },
"test": "chrome_public_test_vr_apk" "test": "chrome_public_test_vr_apk"
}, },
{
"args": [
"--gs-results-bucket=chromium-result-details",
"--recover-devices"
],
"merge": {
"args": [
"--bucket",
"chromium-result-details",
"--test-name",
"chrome_sync_shell_test_apk"
],
"script": "//build/android/pylib/results/presentation/test_results_presentation.py"
},
"swarming": {
"can_use_on_swarming_builders": true,
"cipd_packages": [
{
"cipd_package": "infra/tools/luci/logdog/butler/${platform}",
"location": "bin",
"revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
}
],
"dimension_sets": [
{
"device_os": "LMY48I",
"device_type": "hammerhead",
"os": "Android"
}
],
"expiration": 10800,
"hard_timeout": 960,
"output_links": [
{
"link": [
"https://luci-logdog.appspot.com/v/?s",
"=android%2Fswarming%2Flogcats%2F",
"${TASK_ID}%2F%2B%2Funified_logcats"
],
"name": "shard #${SHARD_INDEX} logcats"
}
]
},
"test": "chrome_sync_shell_test_apk"
},
{ {
"args": [ "args": [
"--gs-results-bucket=chromium-result-details", "--gs-results-bucket=chromium-result-details",
@@ -9255,51 +9122,6 @@
}, },
"test": "chrome_public_test_apk" "test": "chrome_public_test_apk"
}, },
{
"args": [
"--gs-results-bucket=chromium-result-details",
"--recover-devices"
],
"merge": {
"args": [
"--bucket",
"chromium-result-details",
"--test-name",
"chrome_sync_shell_test_apk"
],
"script": "//build/android/pylib/results/presentation/test_results_presentation.py"
},
"swarming": {
"can_use_on_swarming_builders": true,
"cipd_packages": [
{
"cipd_package": "infra/tools/luci/logdog/butler/${platform}",
"location": "bin",
"revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
}
],
"dimension_sets": [
{
"device_os": "LMY49B",
"device_type": "flo",
"os": "Android"
}
],
"expiration": 10800,
"hard_timeout": 120,
"output_links": [
{
"link": [
"https://luci-logdog.appspot.com/v/?s",
"=android%2Fswarming%2Flogcats%2F",
"${TASK_ID}%2F%2B%2Funified_logcats"
],
"name": "shard #${SHARD_INDEX} logcats"
}
]
},
"test": "chrome_sync_shell_test_apk"
},
{ {
"args": [ "args": [
"--gs-results-bucket=chromium-result-details", "--gs-results-bucket=chromium-result-details",
@@ -11991,49 +11813,6 @@
}, },
"test": "chrome_public_test_vr_apk" "test": "chrome_public_test_vr_apk"
}, },
{
"args": [
"--gs-results-bucket=chromium-result-details",
"--recover-devices"
],
"merge": {
"args": [
"--bucket",
"chromium-result-details",
"--test-name",
"chrome_sync_shell_test_apk"
],
"script": "//build/android/pylib/results/presentation/test_results_presentation.py"
},
"swarming": {
"can_use_on_swarming_builders": true,
"cipd_packages": [
{
"cipd_package": "infra/tools/luci/logdog/butler/${platform}",
"location": "bin",
"revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
}
],
"dimension_sets": [
{
"device_os": "MMB29Q",
"device_type": "bullhead",
"os": "Android"
}
],
"output_links": [
{
"link": [
"https://luci-logdog.appspot.com/v/?s",
"=android%2Fswarming%2Flogcats%2F",
"${TASK_ID}%2F%2B%2Funified_logcats"
],
"name": "shard #${SHARD_INDEX} logcats"
}
]
},
"test": "chrome_sync_shell_test_apk"
},
{ {
"args": [ "args": [
"--gs-results-bucket=chromium-result-details", "--gs-results-bucket=chromium-result-details",
@@ -14603,50 +14382,6 @@
}, },
"test": "chrome_public_test_apk" "test": "chrome_public_test_apk"
}, },
{
"args": [
"--gs-results-bucket=chromium-result-details",
"--recover-devices"
],
"merge": {
"args": [
"--bucket",
"chromium-result-details",
"--test-name",
"chrome_sync_shell_test_apk"
],
"script": "//build/android/pylib/results/presentation/test_results_presentation.py"
},
"swarming": {
"can_use_on_swarming_builders": true,
"cipd_packages": [
{
"cipd_package": "infra/tools/luci/logdog/butler/${platform}",
"location": "bin",
"revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
}
],
"dimension_sets": [
{
"device_os": "MRA58Z",
"device_type": "flo",
"os": "Android"
}
],
"expiration": 10800,
"output_links": [
{
"link": [
"https://luci-logdog.appspot.com/v/?s",
"=android%2Fswarming%2Flogcats%2F",
"${TASK_ID}%2F%2B%2Funified_logcats"
],
"name": "shard #${SHARD_INDEX} logcats"
}
]
},
"test": "chrome_sync_shell_test_apk"
},
{ {
"args": [ "args": [
"--gs-results-bucket=chromium-result-details", "--gs-results-bucket=chromium-result-details",
@@ -18779,49 +18514,6 @@
}, },
"test": "chrome_public_test_vr_apk" "test": "chrome_public_test_vr_apk"
}, },
{
"args": [
"--gs-results-bucket=chromium-result-details",
"--recover-devices"
],
"merge": {
"args": [
"--bucket",
"chromium-result-details",
"--test-name",
"chrome_sync_shell_test_apk"
],
"script": "//build/android/pylib/results/presentation/test_results_presentation.py"
},
"swarming": {
"can_use_on_swarming_builders": true,
"cipd_packages": [
{
"cipd_package": "infra/tools/luci/logdog/butler/${platform}",
"location": "bin",
"revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
}
],
"dimension_sets": [
{
"device_os": "KTU84P",
"device_type": "hammerhead",
"os": "Android"
}
],
"output_links": [
{
"link": [
"https://luci-logdog.appspot.com/v/?s",
"=android%2Fswarming%2Flogcats%2F",
"${TASK_ID}%2F%2B%2Funified_logcats"
],
"name": "shard #${SHARD_INDEX} logcats"
}
]
},
"test": "chrome_sync_shell_test_apk"
},
{ {
"args": [ "args": [
"--gs-results-bucket=chromium-result-details", "--gs-results-bucket=chromium-result-details",
@@ -21457,49 +21149,6 @@
}, },
"test": "chrome_public_test_vr_apk" "test": "chrome_public_test_vr_apk"
}, },
{
"args": [
"--gs-results-bucket=chromium-result-details",
"--recover-devices"
],
"merge": {
"args": [
"--bucket",
"chromium-result-details",
"--test-name",
"chrome_sync_shell_test_apk"
],
"script": "//build/android/pylib/results/presentation/test_results_presentation.py"
},
"swarming": {
"can_use_on_swarming_builders": true,
"cipd_packages": [
{
"cipd_package": "infra/tools/luci/logdog/butler/${platform}",
"location": "bin",
"revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
}
],
"dimension_sets": [
{
"device_os": "MMB29Q",
"device_type": "bullhead",
"os": "Android"
}
],
"output_links": [
{
"link": [
"https://luci-logdog.appspot.com/v/?s",
"=android%2Fswarming%2Flogcats%2F",
"${TASK_ID}%2F%2B%2Funified_logcats"
],
"name": "shard #${SHARD_INDEX} logcats"
}
]
},
"test": "chrome_sync_shell_test_apk"
},
{ {
"args": [ "args": [
"--gs-results-bucket=chromium-result-details", "--gs-results-bucket=chromium-result-details",

@@ -5321,49 +5321,6 @@
}, },
"test": "chrome_public_test_apk" "test": "chrome_public_test_apk"
}, },
{
"args": [
"--gs-results-bucket=chromium-result-details",
"--recover-devices"
],
"merge": {
"args": [
"--bucket",
"chromium-result-details",
"--test-name",
"chrome_sync_shell_test_apk"
],
"script": "//build/android/pylib/results/presentation/test_results_presentation.py"
},
"swarming": {
"can_use_on_swarming_builders": true,
"cipd_packages": [
{
"cipd_package": "infra/tools/luci/logdog/butler/${platform}",
"location": "bin",
"revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
}
],
"dimension_sets": [
{
"device_os": "KTU84P",
"device_type": "hammerhead",
"os": "Android"
}
],
"output_links": [
{
"link": [
"https://luci-logdog.appspot.com/v/?s",
"=android%2Fswarming%2Flogcats%2F",
"${TASK_ID}%2F%2B%2Funified_logcats"
],
"name": "shard #${SHARD_INDEX} logcats"
}
]
},
"test": "chrome_sync_shell_test_apk"
},
{ {
"args": [ "args": [
"--gs-results-bucket=chromium-result-details", "--gs-results-bucket=chromium-result-details",
@@ -7982,49 +7939,6 @@
}, },
"test": "chrome_public_test_apk" "test": "chrome_public_test_apk"
}, },
{
"args": [
"--gs-results-bucket=chromium-result-details",
"--recover-devices"
],
"merge": {
"args": [
"--bucket",
"chromium-result-details",
"--test-name",
"chrome_sync_shell_test_apk"
],
"script": "//build/android/pylib/results/presentation/test_results_presentation.py"
},
"swarming": {
"can_use_on_swarming_builders": true,
"cipd_packages": [
{
"cipd_package": "infra/tools/luci/logdog/butler/${platform}",
"location": "bin",
"revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
}
],
"dimension_sets": [
{
"device_os": "MMB29Q",
"device_type": "bullhead",
"os": "Android"
}
],
"output_links": [
{
"link": [
"https://luci-logdog.appspot.com/v/?s",
"=android%2Fswarming%2Flogcats%2F",
"${TASK_ID}%2F%2B%2Funified_logcats"
],
"name": "shard #${SHARD_INDEX} logcats"
}
]
},
"test": "chrome_sync_shell_test_apk"
},
{ {
"args": [ "args": [
"--gs-results-bucket=chromium-result-details", "--gs-results-bucket=chromium-result-details",

@@ -653,49 +653,6 @@
}, },
"test": "chrome_public_test_vr_apk" "test": "chrome_public_test_vr_apk"
}, },
{
"args": [
"--gs-results-bucket=chromium-result-details",
"--recover-devices"
],
"merge": {
"args": [
"--bucket",
"chromium-result-details",
"--test-name",
"chrome_sync_shell_test_apk"
],
"script": "//build/android/pylib/results/presentation/test_results_presentation.py"
},
"swarming": {
"can_use_on_swarming_builders": true,
"cipd_packages": [
{
"cipd_package": "infra/tools/luci/logdog/butler/${platform}",
"location": "bin",
"revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
}
],
"dimension_sets": [
{
"device_os": "MMB29Q",
"device_type": "bullhead",
"os": "Android"
}
],
"output_links": [
{
"link": [
"https://luci-logdog.appspot.com/v/?s",
"=android%2Fswarming%2Flogcats%2F",
"${TASK_ID}%2F%2B%2Funified_logcats"
],
"name": "shard #${SHARD_INDEX} logcats"
}
]
},
"test": "chrome_sync_shell_test_apk"
},
{ {
"args": [ "args": [
"--gs-results-bucket=chromium-result-details", "--gs-results-bucket=chromium-result-details",

@@ -333,10 +333,6 @@
"label": "//chrome/android:chrome_public_test_vr_apk", "label": "//chrome/android:chrome_public_test_vr_apk",
"type": "console_test_launcher", "type": "console_test_launcher",
}, },
"chrome_sync_shell_test_apk": {
"label": "//chrome/android:chrome_sync_shell_test_apk",
"type": "console_test_launcher",
},
"chromedriver": { "chromedriver": {
"label": "//chrome/test/chromedriver:chromedriver", "label": "//chrome/test/chromedriver:chromedriver",
"type": "additional_compile_target", "type": "additional_compile_target",

@@ -271,16 +271,6 @@
'ToTAndroidCFI', 'ToTAndroidCFI',
], ],
}, },
'chrome_sync_shell_test_apk': {
'modifications': {
# chromium.android
'KitKat Phone Tester (dbg)': {
'swarming': {
'shards': 2,
},
},
},
},
'components_unittests': { 'components_unittests': {
'modifications': { 'modifications': {
# chromium.memory # chromium.memory

@@ -294,7 +294,6 @@
'shards': 2, 'shards': 2,
}, },
}, },
'chrome_sync_shell_test_apk': {},
'gl_tests': { 'gl_tests': {
# TODO(kbr): these are actually run on many of the GPU bots, which have # TODO(kbr): these are actually run on many of the GPU bots, which have
# physical hardware for several of the desktop OSs. Once the GPU JSON # physical hardware for several of the desktop OSs. Once the GPU JSON