From a715a2f88e842329e6133390788b6d8d22bf8201 Mon Sep 17 00:00:00 2001 From: pvalenzuela Date: Tue, 25 Aug 2015 11:44:01 -0700 Subject: Convert ChromeSyncShell to use ChromePublic infrastructure (try #2) This is a re-land of the patch originally committed as part of https://codereview.chromium.org/1282603005/. The one major change is that a landmine has been added to clobber the Android arm64 bot as it caused problems after the original commit. Several test fixes are included to support this change. Note: This CL only provides a GYP implementation (no GN). This is not a regression from the previous state. BUG=510211 Review URL: https://codereview.chromium.org/1305213003 Cr-Commit-Position: refs/heads/master@{#345392} --- chrome/android/chrome_apk.gyp | 182 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 170 insertions(+), 12 deletions(-) (limited to 'chrome/android/chrome_apk.gyp') diff --git a/chrome/android/chrome_apk.gyp b/chrome/android/chrome_apk.gyp index cb910ec..6e452b78 100644 --- a/chrome/android/chrome_apk.gyp +++ b/chrome/android/chrome_apk.gyp @@ -10,8 +10,11 @@ 'chromium_code': 1, 'package_name': 'chrome_public_apk', 'manifest_package': 'org.chromium.chrome', + 'sync_shell_manifest_package': 'org.chromium.chrome.sync_shell', 'chrome_public_apk_manifest': '<(SHARED_INTERMEDIATE_DIR)/chrome_public_apk_manifest/AndroidManifest.xml', 'chrome_public_test_apk_manifest': '<(SHARED_INTERMEDIATE_DIR)/chrome_public_test_apk_manifest/AndroidManifest.xml', + 'chrome_sync_shell_apk_manifest': '<(SHARED_INTERMEDIATE_DIR)/chrome_sync_shell_apk_manifest/AndroidManifest.xml', + 'chrome_sync_shell_test_apk_manifest': '<(SHARED_INTERMEDIATE_DIR)/chrome_sync_shell_test_apk_manifest/AndroidManifest.xml', # This list is shared with GN. # Defines a list of source files should be present in the open-source # chrome-apk but not in the published static_library which is included in the @@ -60,23 +63,46 @@ 'includes': [ '../../build/android/jinja_template.gypi' ], }, { - # GN: //chrome/android:chrome_public - 'target_name': 'libchrome_public', - 'type': 'shared_library', + # TODO(pvalenzuela): Implement this target with GN: + # http://crbug.com/475612 + 'target_name': 'chrome_sync_shell_template_resources', + 'type': 'none', + 'variables': { + 'jinja_inputs_base_dir': 'java/res_template', + 'jinja_inputs': [ + '<(jinja_inputs_base_dir)/xml/searchable.xml', + '<(jinja_inputs_base_dir)/xml/syncadapter.xml', + ], + 'jinja_outputs_zip': '<(PRODUCT_DIR)/res.java/<(_target_name).zip', + 'jinja_variables': [ + 'manifest_package=<(sync_shell_manifest_package)', + ], + }, + 'all_dependent_settings': { + 'variables': { + 'additional_input_paths': ['<(jinja_outputs_zip)'], + 'dependencies_res_zip_paths': ['<(jinja_outputs_zip)'], + }, + }, + 'includes': [ '../../build/android/jinja_template.gypi' ], + }, + { + # The base library used in both ChromePublic and ChromeSyncShell. + 'target_name': 'libchrome_public_base', + 'type': 'none', 'dependencies': [ '../../chrome/chrome.gyp:chrome_android_core', ], 'include_dirs': [ '../..', ], - 'sources': [ - '<@(chrome_public_app_native_sources)', - ], - 'ldflags': [ - # Some android targets still depend on --gc-sections to link. - # TODO: remove --gc-sections for Debug builds (crbug.com/159847). - '-Wl,--gc-sections', - ], + 'direct_dependent_settings': { + 'ldflags': [ + # Some android targets still depend on --gc-sections to link. + # TODO: remove --gc-sections for Debug builds (crbug.com/159847). + '-Wl,--gc-sections', + ], + }, 'conditions': [ # TODO(yfriedman): move this DEP to chrome_android_core to be shared # between internal/external. @@ -102,6 +128,34 @@ ], }, { + # GN: //chrome/android:chrome_public + 'target_name': 'libchrome_public', + 'type': 'shared_library', + 'sources': [ + '<@(chrome_public_app_native_sources)', + ], + 'dependencies': [ + 'libchrome_public_base', + ], + }, + { + # TODO(pvalenzuela): Implement this target with GN: + # http://crbug.com/475612 + 'target_name': 'libchrome_sync_shell', + 'type': 'shared_library', + 'sources': [ + '../browser/android/chrome_entry_point.cc', + '../browser/android/chrome_sync_shell_main_delegate_initializer.cc', + '../browser/android/chrome_sync_shell_main_delegate.h', + '../browser/android/chrome_sync_shell_main_delegate.cc', + ], + 'dependencies': [ + 'libchrome_public_base', + '../../sync/sync.gyp:sync', + '../../sync/sync.gyp:test_support_sync_fake_server_android', + ], + }, + { # GN: //chrome/android:chrome_public_apk_manifest 'target_name': 'chrome_public_manifest', 'type': 'none', @@ -119,6 +173,24 @@ 'includes': [ '../../build/android/jinja_template.gypi' ], }, { + # TODO(pvalenzuela): Implement this target with GN: + # http://crbug.com/475612 + 'target_name': 'chrome_sync_shell_manifest', + 'type': 'none', + 'variables': { + 'jinja_inputs': ['java/AndroidManifest.xml'], + 'jinja_output': '<(chrome_sync_shell_apk_manifest)', + 'jinja_variables': [ + 'channel=<(android_channel)', + 'configuration_policy=<(configuration_policy)', + 'manifest_package=<(sync_shell_manifest_package)', + 'min_sdk_version=16', + 'target_sdk_version=22', + ], + }, + 'includes': [ '../../build/android/jinja_template.gypi' ], + }, + { # GN: //chrome/android:chrome_public_apk 'target_name': 'chrome_public_apk', 'type': 'none', @@ -157,6 +229,48 @@ 'includes': [ '../../build/apk_fake_jar.gypi' ], }, { + # TODO(pvalenzuela): Implement this target with GN: + # http://crbug.com/475612 + 'target_name': 'chrome_sync_shell_apk', + 'type': 'none', + 'variables': { + 'android_manifest_path': '<(chrome_sync_shell_apk_manifest)', + 'apk_name': 'ChromeSyncShell', + 'native_lib_target': 'libchrome_sync_shell', + 'java_in_dir': 'java', + 'conditions': [ + # Only attempt loading the library from the APK for 64 bit devices + # until the number of 32 bit devices which don't support this + # approach falls to a minimal level - http://crbug.com/390618. + ['component != "shared_library" and profiling==0 and (target_arch == "arm64" or target_arch == "x86_64")', { + 'load_library_from_zip_file': '<(chrome_apk_load_library_from_zip)', + 'load_library_from_zip': '<(chrome_apk_load_library_from_zip)', + }], + ], + }, + 'dependencies': [ + 'chrome_android_paks_copy', + 'chrome_sync_shell_template_resources', + '../chrome.gyp:chrome_java', + # 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. + '../../sync/sync.gyp:test_support_sync_proto_java', + ], + 'includes': [ 'chrome_apk.gypi' ], + }, + { + # GN: N/A + # chrome_sync_shell_apk creates a .jar as a side effect. Any java targets + # that need that .jar in their classpath should depend on this target. + 'target_name': 'chrome_sync_shell_apk_java', + 'type': 'none', + 'dependencies': [ + 'chrome_sync_shell_apk', + ], + 'includes': [ '../../build/apk_fake_jar.gypi' ], + }, + { # GN: //chrome/android:chrome_shared_test_java # This target is for sharing tests between both upstream and internal # trees until sufficient test coverage is upstream. @@ -178,7 +292,6 @@ '../../net/net.gyp:net_java', '../../net/net.gyp:net_java_test_support', '../../sync/sync.gyp:sync_java_test_support', - '../../sync/sync.gyp:sync_javatests', '../../third_party/android_tools/android_tools.gyp:android_support_v7_appcompat_javalib', '../../ui/android/ui_android.gyp:ui_javatests', ], @@ -198,6 +311,20 @@ 'includes': [ '../../build/android/jinja_template.gypi' ], }, { + # TODO(pvalenzuela): Implement this target with GN: + # http://crbug.com/475612 + 'target_name': 'chrome_sync_shell_test_apk_manifest', + 'type': 'none', + 'variables': { + 'jinja_inputs': ['sync_shell/javatests/AndroidManifest.xml'], + 'jinja_output': '<(chrome_sync_shell_test_apk_manifest)', + 'jinja_variables': [ + 'manifest_package=<(sync_shell_manifest_package)', + ], + }, + 'includes': [ '../../build/android/jinja_template.gypi' ], + }, + { # GN: //chrome/android:chrome_public_test_apk 'target_name': 'chrome_public_test_apk', 'type': 'none', @@ -222,6 +349,37 @@ '../../build/android/test_runner.gypi', ], }, + { + # TODO(pvalenzuela): Implement this target with GN: + # http://crbug.com/475612 + 'target_name': 'chrome_sync_shell_test_apk', + 'type': 'none', + 'dependencies': [ + 'chrome_sync_shell_apk_java', + '../../base/base.gyp:base_java', + '../../base/base.gyp:base_java_test_support', + '../../chrome/chrome.gyp:chrome_java', + '../../chrome/chrome.gyp:chrome_java_test_support', + '../../sync/sync.gyp:sync_java', + '../../sync/sync.gyp:sync_java_test_support', + '../../sync/sync.gyp:sync_javatests', + '../../sync/sync.gyp:test_support_sync_proto_java', + '../../testing/android/on_device_instrumentation.gyp:broker_java', + '../../testing/android/on_device_instrumentation.gyp:require_driver_apk', + ], + 'variables': { + 'android_manifest_path': '<(chrome_sync_shell_test_apk_manifest)', + 'package_name': 'chrome_sync_shell_test', + 'java_in_dir': 'sync_shell/javatests', + 'apk_name': 'ChromeSyncShellTest', + 'is_test_apk': 1, + 'test_type': 'instrumentation', + }, + 'includes': [ + '../../build/java_apk.gypi', + '../../build/android/test_runner.gypi', + ], + }, ], } -- cgit v1.1