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_public_apk",
"//chrome/android:chrome_public_test_apk",
"//chrome/android:chrome_sync_shell_test_apk",
"//chrome/test/chromedriver/test/webview_shell:chromedriver_webview_shell_apk",
"//content/shell/android:content_shell_test_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
# :webkit_layout_tests_exparchive, above, instead.
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 = []
if (is_debug) {
extra_args += [

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

@ -89,6 +89,8 @@ public class BaseChromiumAndroidJUnitRunner extends AndroidJUnitRunner {
// * ProGuard disabled =>
// Under-test apk might be 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
if (!BuildConfig.IS_MULTIDEX_ENABLED) {
ChromiumMultiDexInstaller.install(new BaseChromiumRunnerCommon.MultiDexContextWrapper(

@ -55,8 +55,6 @@ _DEFAULT_TARGETS = [
'//chrome/android:chrome_junit_tests',
'//chrome/android:chrome_public_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/shell/android:content_shell_apk',
# 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
# Ours differ in that:
# 1. It omits -keeps for application / instrumentation / backupagents (these are

@ -31,6 +31,7 @@ if (modularize_vr) {
}
manifest_package = "org.chromium.chrome"
test_manifest_package = "org.chromium.chrome.tests"
chrome_public_jinja_variables = default_chrome_public_jinja_variables +
[ "manifest_package=$manifest_package" ]
@ -38,8 +39,6 @@ chrome_public_android_manifest =
"$target_gen_dir/chrome_public_apk/AndroidManifest.xml"
chrome_modern_public_android_manifest =
"$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 =
"$target_gen_dir/monochrome_public_apk/AndroidManifest.xml"
trichrome_library_android_manifest =
@ -47,10 +46,6 @@ trichrome_library_android_manifest =
trichrome_chrome_android_manifest =
"$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"
if (enable_resource_whitelist_generation) {
@ -118,16 +113,6 @@ jinja_template("trichrome_chrome_android_manifest") {
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") {
resource_dirs = [
"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_javatests",
"//components/sync:sync_java_test_support",
"//components/sync:test_support_proto_java",
"//components/sync/android:sync_java",
"//components/sync/android:sync_javatests",
"//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",
]
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 = [
"java/res_template/xml/file_paths.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",
]
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
@ -1116,9 +1108,12 @@ chrome_shared_library("libchromefortest") {
":browser_test_support",
":chrome_jni_for_test_registration($default_toolchain)",
"//base/test:test_support",
"//chrome:chrome_android_core",
"//chrome/browser/android/metrics:ukm_utils_for_test",
"//components/heap_profiling:test_support",
"//components/minidump_uploader",
"//components/sync",
"//components/sync:test_support_fake_server_android",
"//content/public/test/android:content_native_test_support",
"//content/test:test_support",
]
@ -1134,6 +1129,8 @@ if (current_toolchain == default_toolchain) {
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") {
testonly = true
target = ":chrome_public_base_module_java_for_test"
@ -1141,13 +1138,6 @@ if (current_toolchain == default_toolchain) {
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) {
generate_resource_whitelist("monochrome_resource_whitelist") {
# 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
# JNI registration is generated based on this target.
# 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/minidump_uploader:minidump_uploader_java",
"//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
# the chrome sync shell APK.
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 = [
# Dependencies that are common to any chrome_public derivative targets.
_chrome_public_shared_deps = [
":chrome_public_apk_resources",
":chrome_public_base_module_java",
":chrome_public_non_pak_assets",
@ -1395,10 +1342,15 @@ generate_jni("test_support_jni_headers") {
# Test support code that needs access to the browser.
android_library("browser_java_test_support") {
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 = [
":chrome_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",
])
deps = _chrome_public_and_sync_shell_shared_deps
deps = _chrome_public_shared_deps
if (_is_modern) {
min_sdk_version = 21
@ -1509,27 +1461,6 @@ chrome_public_apk_or_module_tmpl("chrome_modern_public_base_module") {
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") {
deps = [
"//android_webview/glue",
@ -1664,26 +1595,10 @@ monochrome_public_apk_or_module_tmpl("trichrome_chrome_apk") {
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 =
"$root_gen_dir/chrome_public_test_apk_manifest/AndroidManifest.xml"
chrome_public_test_vr_apk_manifest =
"$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 =
"$root_gen_dir/monochrome_public_test_ar_apk_manifest/AndroidManifest.xml"
vr_nfc_simulator_apk_manifest =
@ -1691,9 +1606,11 @@ vr_nfc_simulator_apk_manifest =
jinja_template("chrome_public_test_apk_manifest") {
input = "javatests/AndroidManifest.xml"
includes = [ "java/AndroidManifest.xml" ]
output = chrome_public_test_apk_manifest
variables = chrome_public_jinja_variables
variables = default_chrome_public_jinja_variables
variables += [
"manifest_package=$test_manifest_package",
"min_sdk_version=16",
"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") {
input = "javatests/AndroidManifest.xml"
includes = [ "java/AndroidManifest.xml" ]
output = chrome_public_test_vr_apk_manifest
variables = chrome_public_jinja_variables
variables += [
@ -1711,11 +1629,17 @@ jinja_template("chrome_public_test_vr_apk_manifest") {
jinja_template("monochrome_public_test_ar_apk_manifest") {
input = "javatests/AndroidManifest_monochrome.xml"
includes = [ "javatests/AndroidManifest.xml" ]
includes = [
"java/AndroidManifest.xml",
"javatests/AndroidManifest.xml",
]
output = monochrome_public_test_ar_apk_manifest
variables = chrome_public_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") {
@ -1725,29 +1649,64 @@ jinja_template("vr_nfc_simulator_apk_manifest") {
variables = chrome_public_jinja_variables
}
jinja_template("chrome_sync_shell_test_apk_manifest") {
input = "sync_shell/javatests/AndroidManifest.xml"
output = chrome_sync_shell_test_apk_manifest
variables = chrome_sync_shell_jinja_variables
template("chrome_test_apk_tmpl") {
chrome_public_common_apk_or_module_tmpl(target_name) {
forward_variables_from(invoker,
[
"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_under_test = ":chrome_public_apk_for_test"
android_manifest = chrome_public_test_apk_manifest
android_manifest_dep = ":chrome_public_test_apk_manifest"
shared_libraries = [ ":libchromefortest" ]
deps = [
":chrome_test_apk_template_resources",
":chrome_test_java",
"//chrome/android/webapk/libs/runtime_library:runtime_library_javatests",
"//chrome/android/webapk/shell_apk:shell_apk_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 = [
"//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/javatests/dex_optimizer:dex_optimizer_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) {
instrumentation_test_apk("chrome_public_test_vr_apk") {
chrome_test_apk_tmpl("chrome_public_test_vr_apk") {
apk_name = "ChromePublicTestVr"
apk_under_test = ":chrome_public_apk_for_test"
android_manifest = chrome_public_test_vr_apk_manifest
android_manifest_dep = ":chrome_public_test_vr_apk_manifest"
shared_libraries = [ ":libchromefortest" ]
deps = [
":chrome_test_vr_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") {
@ -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)) {
action("monochrome_static_initializers") {
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(
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'")
# 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 %}"
android:icon="@drawable/ic_launcher"
android:roundIcon="@drawable/ic_launcher_round"
android:label="@string/app_name"
android:label="{% block application_label %}@string/app_name{% endblock %}"
android:largeHeap="false"
android:manageSpaceActivity="@string/manage_space_activity"
android:supportsRtl="true"
@ -1167,5 +1167,9 @@ android:value="true" />
android:value="org.chromium.chrome.browser.media.remote.DefaultMediaRouteController"/>
{% endblock %}
{% block extra_application_definitions_for_test %}
{% endblock %}
</application>
{% block extra_root_definitions %}
{% endblock %}
</manifest>

@ -30,6 +30,7 @@ import android.text.style.ForegroundColorSpan;
import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.BuildInfo;
import org.chromium.base.ContextUtils;
import org.chromium.base.StrictModeContext;
import org.chromium.base.ThreadUtils;
import org.chromium.base.VisibleForTesting;
import org.chromium.base.metrics.RecordHistogram;
@ -147,7 +148,9 @@ public class SyncCustomizationFragment extends PreferenceFragment
mIsEngineInitialized && mProfileSyncService.isPassphraseRequiredForDecryption();
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);
mSyncAutofill = (CheckBoxPreference) findPreference(PREFERENCE_SYNC_AUTOFILL);
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/TileGroupTest.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/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/tab/InterceptNavigationDelegateTest.java",
"javatests/src/org/chromium/chrome/browser/tab/SadTabTest.java",

@ -1,22 +1,17 @@
<?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. -->
{% extends "chrome/android/java/AndroidManifest.xml" %}
<!-- package name must be unique. -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.chromium.chrome.tests">
# 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.
<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.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="{% block application_name %}ChromePublicTest{% endblock %}">
{% endblock %}
{% block extra_application_definitions_for_test %}
<uses-library android:name="android.test.runner" />
<provider android:name="org.chromium.chrome.test.TestContentProvider"
@ -55,9 +50,10 @@
<activity android:name="org.chromium.test.broker.OnDeviceInstrumentationBroker"
android:exported="true"/>
</application>
{% endblock %}
{% block extra_root_definitions %}
<instrumentation android:name="org.chromium.base.test.BaseChromiumAndroidJUnitRunner"
android:targetPackage="{{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.
## 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="{{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 = [
"+chrome/app",
"+components/autofill/android/java/src/org/chromium/components/autofill",
"+components/background_task_scheduler/android/java",
"+components/bookmarks/common/android/java/src/org/chromium/components/bookmarks",
@ -14,7 +15,9 @@ include_rules = [
"+components/offline_items_collection/core/android/java",
"+components/payments/content/android/java/src/org/chromium/components/payments",
"+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/test/fake_server/android",
# We should only depend on the util package of something that lives in
# javatests.
"+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.runner.RunWith;
import org.chromium.base.ContextUtils;
import org.chromium.base.ThreadUtils;
import org.chromium.base.test.util.CallbackHelper;
import org.chromium.base.test.util.CommandLineFlags;
@ -48,7 +49,8 @@ public class OriginVerifierTest {
(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 PACKAGE_NAME = "org.chromium.chrome";
private static final String PACKAGE_NAME =
ContextUtils.getApplicationContext().getPackageName();
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"
+ ":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.runner.RunWith;
import org.chromium.base.ContextUtils;
import org.chromium.base.ThreadUtils;
import org.chromium.base.library_loader.LibraryLoader;
import org.chromium.base.library_loader.LibraryProcessType;
@ -47,7 +48,8 @@ public class TrustedWebActivityTest {
public CustomTabActivityTestRule mCustomTabActivityTestRule = new CustomTabActivityTestRule();
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 String mTestPage;

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

@ -20,6 +20,7 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.chromium.base.Callback;
import org.chromium.base.ContextUtils;
import org.chromium.base.ThreadUtils;
import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.DisableIf;
@ -66,8 +67,9 @@ public class OfflinePageUtilsTest {
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 CONTENT_URI = "content://chromium/some-content-id";
private static final String CONTENT_URI_PREFIX =
"content://org.chromium.chrome.FileProvider/offline-cache/";
private static final String CONTENT_URI_PREFIX = "content://"
+ ContextUtils.getApplicationContext().getPackageName()
+ ".FileProvider/offline-cache/";
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 EMPTY_URI = "";

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

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

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

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

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

@ -146,7 +146,7 @@ public class TypedUrlsTest {
SyncTestUtil.getLocalData(mSyncTestRule.getTargetContext(), TYPED_URLS_TYPE);
List<TypedUrl> typedUrls = new ArrayList<TypedUrl>(rawTypedUrls.size());
for (Pair<String, JSONObject> rawTypedUrl : rawTypedUrls) {
String id = rawTypedUrl.first;
String id = rawTypedUrl.first;
String client_tag_hash = "";
if (rawTypedUrl.second.has("metadata")) {
JSONObject metadata = rawTypedUrl.second.getJSONObject("metadata");
@ -182,18 +182,20 @@ public class TypedUrlsTest {
}
private void waitForServerTypedUrlCountWithName(final int count, final String name) {
CriteriaHelper.pollInstrumentationThread(new Criteria(
"Expected " + count + " server typed URLs with name " + name + ".") {
@Override
public boolean isSatisfied() {
try {
return mSyncTestRule.getFakeServerHelper().verifyEntityCountByTypeAndName(
count, ModelType.TYPED_URLS, name);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}, SyncTestUtil.TIMEOUT_MS, SyncTestUtil.INTERVAL_MS);
CriteriaHelper.pollInstrumentationThread(
new Criteria("Expected " + count + " server typed URLs with name " + name + ".") {
@Override
public boolean isSatisfied() {
try {
return mSyncTestRule.getFakeServerHelper()
.verifyEntityCountByTypeAndName(
count, ModelType.TYPED_URLS, name);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
},
SyncTestUtil.TIMEOUT_MS, SyncTestUtil.INTERVAL_MS);
}
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.
// 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.
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.
// 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.
IN_PROC_BROWSER_TEST_P(UkmBrowserTest, ConsentAddedButNoSyncCheck) {
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.
// 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.
IN_PROC_BROWSER_TEST_P(UkmBrowserTest, SingleDisableHistorySyncCheck) {
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.
// 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.
IN_PROC_BROWSER_TEST_F(UkmBrowserTestUnifiedConsentDisabled,
SecondaryPassphraseCheck) {
@ -899,7 +899,7 @@ IN_PROC_BROWSER_TEST_F(UkmBrowserTestUnifiedConsentDisabled,
#if !defined(OS_CHROMEOS)
// Make sure that UKM is disabled when the profile signs out of Sync.
// 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.
IN_PROC_BROWSER_TEST_P(UkmBrowserTest, SingleSyncSignoutCheck) {
MetricsConsentOverride metrics_consent(true);

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

@ -1073,7 +1073,7 @@ if (is_android) {
testonly = true
jni_package = "sync/test/fake_server"
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 = [
":android_shell_descriptors",
# #include'ed by renderer/layout_test/blink_test_runner.h
":mojo_bindings",
# This exposes all public content APIs.
"//content/public/app:both",
"//content/public/browser",
@ -261,7 +264,6 @@ jumbo_static_library("content_shell_lib") {
":content_shell_packaged_services_manifest_overlay",
":layout_test_switches",
":layout_test_utils",
":mojo_bindings",
":resources",
"//base",
"//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`
- `content_shell_test_apk` for anything in `//content` or below
- `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 --
typically belong in `<top-level directory>_junit_tests` (e.g.
`base_junit_tests` for `//base`), though here again there are cases

@ -1392,51 +1392,6 @@
},
"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": [
"--gs-results-bucket=chromium-result-details",
@ -3804,31 +3759,6 @@
},
"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": [
"--gs-results-bucket=chromium-result-details",
@ -5321,31 +5251,6 @@
},
"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": [
"--gs-results-bucket=chromium-result-details",

@ -1251,50 +1251,6 @@
},
"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": [
"--gs-results-bucket=chromium-result-details",
@ -3864,50 +3820,6 @@
},
"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": [
"--gs-results-bucket=chromium-result-details",
@ -6538,51 +6450,6 @@
},
"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": [
"--gs-results-bucket=chromium-result-details",
@ -9255,51 +9122,6 @@
},
"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": [
"--gs-results-bucket=chromium-result-details",
@ -11991,49 +11813,6 @@
},
"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": [
"--gs-results-bucket=chromium-result-details",
@ -14603,50 +14382,6 @@
},
"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": [
"--gs-results-bucket=chromium-result-details",
@ -18779,49 +18514,6 @@
},
"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": [
"--gs-results-bucket=chromium-result-details",
@ -21457,49 +21149,6 @@
},
"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": [
"--gs-results-bucket=chromium-result-details",

@ -5321,49 +5321,6 @@
},
"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": [
"--gs-results-bucket=chromium-result-details",
@ -7982,49 +7939,6 @@
},
"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": [
"--gs-results-bucket=chromium-result-details",

@ -653,49 +653,6 @@
},
"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": [
"--gs-results-bucket=chromium-result-details",

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

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

@ -294,7 +294,6 @@
'shards': 2,
},
},
'chrome_sync_shell_test_apk': {},
'gl_tests': {
# 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