Commit cd7694af authored by cjhopman's avatar cjhopman Committed by Commit bot

Add content_shell_apk target (and a bunch of its dependencies)

The content_shell_apk does not have the full native part that it should.
It builds, installs, starts, loads the native library, and then crashes
when it tries to access missing native parts.

This requires fixes to a bunch of little things:
1. Should only extract java files to compile from srcjars.
2. The way we were creating the single combined resources zip was wrong
because we were clobbering xml files (we should only clobber images, xml
files need to be handled more carefully). Instead of trying to properly
handle xml files, the combined zip now just puts all the different
dependencies in different folders (0/, 1/, etc) and then when packaging
we detect that type of zip and pass all the subdirs to aapt.
3. java_cpp_template with multiple sources needs to have a unique
depfile path for each source
4. jni_generator needs to clear the classlist variable in each loop of
foreach (otherwise gn complains about assigning to non-empty list)
5. a couple parts of apk native lib handling was not skipped for an apk
with no native lib

This adds a bunch of targets:
//base:base_java_test_support
//content/public/android:content_java_resources
//content/public/android:content_java
//content/public/android:content_strings_grd
//content/public/android:gesture_event_type_java
//content/public/android:page_transition_types_java
//content/public/android:popup_item_type_java
//content/public/android:result_codes_java
//content/public/android:selection_event_type_java
//content/public/android:speech_recognition_error_java
//content/public/android:top_controls_state_java
//content/public/android:screen_orientation_values_java
//content/public/android:content_gamepad_mapping_java
//content/public/android:content_jni_headers
//content/shell/android:content_shell_jni_headers
//content/shell/android:libcontent_shell_content_view (partial)
//content/shell/android:content_shell_java_resources
//content/shell/android:content_shell_java
//content/shell/android:content_shell_apk_resources
//content/shell/android:content_shell_apk
//net/android:net_java
//net/android:remote_android_keystore_aidl
//net/android:net_java_test_support
//net/android:net_javatests
//net/android:net_errors_java
//net/android:certificate_mime_types_java
//net/android:cert_verify_status_android_java
//net/android:private_key_types_java
//net/android:net_unittests_apk (disabled)

TBR=yfriedman,thestig
BUG=359249

Review URL: https://codereview.chromium.org/507523002

Cr-Commit-Position: refs/heads/master@{#293671}
parent 57b0f857
...@@ -166,6 +166,7 @@ group("root") { ...@@ -166,6 +166,7 @@ group("root") {
if (is_android) { if (is_android) {
deps += [ deps += [
"//content/shell/android:content_shell_apk",
"//ui/android:ui_java", "//ui/android:ui_java",
"//third_party/guava:guava_javalib", "//third_party/guava:guava_javalib",
"//third_party/android_tools:android_gcm_java", "//third_party/android_tools:android_gcm_java",
......
...@@ -1372,43 +1372,7 @@ if (is_android) { ...@@ -1372,43 +1372,7 @@ if (is_android) {
"//third_party/jsr-305:jsr_305_javalib" "//third_party/jsr-305:jsr_305_javalib"
] ]
java_files = [ DEPRECATED_java_in_dir = "android/java/src"
"android/java/src/org/chromium/base/BaseChromiumApplication.java",
"android/java/src/org/chromium/base/JavaHandlerThread.java",
"android/java/src/org/chromium/base/PathService.java",
"android/java/src/org/chromium/base/CollectionUtil.java",
"android/java/src/org/chromium/base/PathUtils.java",
"android/java/src/org/chromium/base/library_loader/ProcessInitException.java",
"android/java/src/org/chromium/base/library_loader/LoaderErrors.java",
"android/java/src/org/chromium/base/library_loader/LibraryLoader.java",
"android/java/src/org/chromium/base/library_loader/Linker.java",
"android/java/src/org/chromium/base/library_loader/LibraryLoaderHelper.java",
"android/java/src/org/chromium/base/ThreadUtils.java",
"android/java/src/org/chromium/base/CpuFeatures.java",
"android/java/src/org/chromium/base/CalledByNative.java",
"android/java/src/org/chromium/base/PowerMonitor.java",
"android/java/src/org/chromium/base/CommandLine.java",
"android/java/src/org/chromium/base/SystemMessageHandler.java",
"android/java/src/org/chromium/base/ContentUriUtils.java",
"android/java/src/org/chromium/base/WindowCallbackWrapper.java",
"android/java/src/org/chromium/base/ImportantFileWriterAndroid.java",
"android/java/src/org/chromium/base/BaseSwitches.java",
"android/java/src/org/chromium/base/SysUtils.java",
"android/java/src/org/chromium/base/PowerStatusReceiver.java",
"android/java/src/org/chromium/base/ObserverList.java",
"android/java/src/org/chromium/base/PerfTraceEvent.java",
"android/java/src/org/chromium/base/BuildInfo.java",
"android/java/src/org/chromium/base/TraceEvent.java",
"android/java/src/org/chromium/base/AccessedByNative.java",
"android/java/src/org/chromium/base/JNINamespace.java",
"android/java/src/org/chromium/base/CalledByNativeUnchecked.java",
"android/java/src/org/chromium/base/MemoryPressureListener.java",
"android/java/src/org/chromium/base/NativeClassQualifiedName.java",
"android/java/src/org/chromium/base/ActivityState.java",
"android/java/src/org/chromium/base/ApplicationStatus.java",
"android/java/src/org/chromium/base/ApiCompatibilityUtils.java",
"android/java/src/org/chromium/base/VisibleForTesting.java",
]
# A new version of NativeLibraries.java (with the actual correct values) # A new version of NativeLibraries.java (with the actual correct values)
# will be created when creating an apk. # will be created when creating an apk.
...@@ -1418,6 +1382,13 @@ if (is_android) { ...@@ -1418,6 +1382,13 @@ if (is_android) {
] ]
} }
android_library("base_java_test_support") {
deps = [
":base_java",
]
DEPRECATED_java_in_dir = "test/android/javatests/src"
}
java_cpp_template("base_java_application_state") { java_cpp_template("base_java_application_state") {
sources = [ sources = [
"android/java/src/org/chromium/base/ApplicationState.template", "android/java/src/org/chromium/base/ApplicationState.template",
......
...@@ -44,7 +44,7 @@ def main(args): ...@@ -44,7 +44,7 @@ def main(args):
if options.depfile: if options.depfile:
build_utils.WriteDepfile( build_utils.WriteDepfile(
options.depfile, options.depfile,
options.files + build_utils.GetPythonDependencies()) files + build_utils.GetPythonDependencies())
if options.stamp: if options.stamp:
build_utils.Touch(options.stamp) build_utils.Touch(options.stamp)
......
...@@ -172,7 +172,7 @@ def main(argv): ...@@ -172,7 +172,7 @@ def main(argv):
java_dir = os.path.join(temp_dir, 'java') java_dir = os.path.join(temp_dir, 'java')
os.makedirs(java_dir) os.makedirs(java_dir)
for srcjar in java_srcjars: for srcjar in java_srcjars:
build_utils.ExtractAll(srcjar, path=java_dir) build_utils.ExtractAll(srcjar, path=java_dir, pattern='*.java')
java_files += build_utils.FindInDirectory(java_dir, '*.java') java_files += build_utils.FindInDirectory(java_dir, '*.java')
if options.javac_includes: if options.javac_includes:
......
...@@ -88,6 +88,27 @@ def MoveImagesToNonMdpiFolders(res_root): ...@@ -88,6 +88,27 @@ def MoveImagesToNonMdpiFolders(res_root):
shutil.move(src_file, dst_file) shutil.move(src_file, dst_file)
def PackageArgsForExtractedZip(d):
"""Returns the aapt args for an extracted resources zip.
A resources zip either contains the resources for a single target or for
multiple targets. If it is multiple targets merged into one, the actual
resource directories will be contained in the subdirectories 0, 1, 2, ...
"""
res_dirs = []
subdirs = [os.path.join(d, s) for s in os.listdir(d)]
subdirs = sorted([s for s in subdirs if os.path.isdir(s)])
if subdirs and os.path.basename(subdirs[0]) == '0':
res_dirs = subdirs
else:
res_dirs = [d]
package_command = []
for d in res_dirs:
MoveImagesToNonMdpiFolders(d)
package_command += ['-S', d]
return package_command
def main(): def main():
options = ParseArgs() options = ParseArgs()
android_jar = os.path.join(options.android_sdk, 'android.jar') android_jar = os.path.join(options.android_sdk, 'android.jar')
...@@ -120,8 +141,7 @@ def main(): ...@@ -120,8 +141,7 @@ def main():
if os.path.exists(subdir): if os.path.exists(subdir):
raise Exception('Resource zip name conflict: ' + os.path.basename(z)) raise Exception('Resource zip name conflict: ' + os.path.basename(z))
build_utils.ExtractAll(z, path=subdir) build_utils.ExtractAll(z, path=subdir)
MoveImagesToNonMdpiFolders(subdir) package_command += PackageArgsForExtractedZip(subdir)
package_command += ['-S', subdir]
if 'Debug' in options.configuration_name: if 'Debug' in options.configuration_name:
package_command += ['--debug-mode'] package_command += ['--debug-mode']
......
...@@ -155,6 +155,20 @@ def ZipResources(resource_dirs, zip_path): ...@@ -155,6 +155,20 @@ def ZipResources(resource_dirs, zip_path):
outzip.write(path, archive_path) outzip.write(path, archive_path)
def CombineZips(zip_files, output_path):
# When packaging resources, if the top-level directories in the zip file are
# of the form 0, 1, ..., then each subdirectory will be passed to aapt as a
# resources directory. While some resources just clobber others (image files,
# etc), other resources (particularly .xml files) need to be more
# intelligently merged. That merging is left up to aapt.
with zipfile.ZipFile(output_path, 'w') as outzip:
for i, z in enumerate(zip_files):
with zipfile.ZipFile(z, 'r') as inzip:
for name in inzip.namelist():
new_name = '%d/%s' % (i, name)
outzip.writestr(new_name, inzip.read(name))
def main(): def main():
args = build_utils.ExpandFileArgs(sys.argv[1:]) args = build_utils.ExpandFileArgs(sys.argv[1:])
...@@ -248,8 +262,8 @@ def main(): ...@@ -248,8 +262,8 @@ def main():
ZipResources(zip_resource_dirs, options.resource_zip_out) ZipResources(zip_resource_dirs, options.resource_zip_out)
if options.all_resources_zip_out: if options.all_resources_zip_out:
ZipResources( CombineZips([options.resource_zip_out] + dep_zips,
zip_resource_dirs + dep_subdirs, options.all_resources_zip_out) options.all_resources_zip_out)
if options.R_dir: if options.R_dir:
build_utils.DeleteDirectory(options.R_dir) build_utils.DeleteDirectory(options.R_dir)
......
...@@ -191,7 +191,7 @@ def CheckZipPath(name): ...@@ -191,7 +191,7 @@ def CheckZipPath(name):
raise Exception('Absolute zip path: %s' % name) raise Exception('Absolute zip path: %s' % name)
def ExtractAll(zip_path, path=None, no_clobber=True): def ExtractAll(zip_path, path=None, no_clobber=True, pattern=None):
if path is None: if path is None:
path = os.getcwd() path = os.getcwd()
elif not os.path.exists(path): elif not os.path.exists(path):
...@@ -201,6 +201,9 @@ def ExtractAll(zip_path, path=None, no_clobber=True): ...@@ -201,6 +201,9 @@ def ExtractAll(zip_path, path=None, no_clobber=True):
for name in z.namelist(): for name in z.namelist():
if name.endswith('/'): if name.endswith('/'):
continue continue
if pattern is not None:
if not fnmatch.fnmatch(name, pattern):
continue
CheckZipPath(name) CheckZipPath(name)
if no_clobber: if no_clobber:
output_path = os.path.join(path, name) output_path = os.path.join(path, name)
......
...@@ -169,21 +169,24 @@ def main(argv): ...@@ -169,21 +169,24 @@ def main(argv):
java_libraries_list = [] java_libraries_list = []
if options.native_libs: if options.native_libs:
libraries = build_utils.ParseGypList(options.native_libs) libraries = build_utils.ParseGypList(options.native_libs)
libraries_dir = os.path.dirname(libraries[0]) if libraries:
write_ordered_libraries.SetReadelfPath(options.readelf_path) libraries_dir = os.path.dirname(libraries[0])
write_ordered_libraries.SetLibraryDirs([libraries_dir]) write_ordered_libraries.SetReadelfPath(options.readelf_path)
all_native_library_deps = ( write_ordered_libraries.SetLibraryDirs([libraries_dir])
write_ordered_libraries.GetSortedTransitiveDependenciesForBinaries( all_native_library_deps = (
libraries)) write_ordered_libraries.GetSortedTransitiveDependenciesForBinaries(
java_libraries_list = '{%s}' % ','.join( libraries))
['"%s"' % s for s in all_native_library_deps]) # Create a java literal array with the "base" library names:
library_paths = map( # e.g. libfoo.so -> foo
write_ordered_libraries.FullLibraryPath, all_native_library_deps) java_libraries_list = '{%s}' % ','.join(
['"%s"' % s[3:-3] for s in all_native_library_deps])
config['native'] = { library_paths = map(
'libraries': library_paths, write_ordered_libraries.FullLibraryPath, all_native_library_deps)
'java_libraries_list': java_libraries_list
} config['native'] = {
'libraries': library_paths,
'java_libraries_list': java_libraries_list
}
build_utils.WriteJson(config, options.build_config, only_if_changed=True) build_utils.WriteJson(config, options.build_config, only_if_changed=True)
......
...@@ -522,7 +522,11 @@ template("android_java_library") { ...@@ -522,7 +522,11 @@ template("android_java_library") {
} else { } else {
_java_files_build_rel = exec_script( _java_files_build_rel = exec_script(
"//build/android/gyp/find.py", "//build/android/gyp/find.py",
["--pattern", "*.java", rebase_path(invoker.DEPRECATED_java_in_dir, root_build_dir)], [
"--pattern",
"*.java",
rebase_path(invoker.DEPRECATED_java_in_dir, root_build_dir)
],
"list lines" "list lines"
) )
_java_files = rebase_path(_java_files_build_rel, ".", root_build_dir) _java_files = rebase_path(_java_files_build_rel, ".", root_build_dir)
......
...@@ -118,17 +118,16 @@ template("generate_jar_jni") { ...@@ -118,17 +118,16 @@ template("generate_jar_jni") {
base_output_dir = "${root_gen_dir}/${target_name}/${jni_package}" base_output_dir = "${root_gen_dir}/${target_name}/${jni_package}"
jni_output_dir = "${base_output_dir}/jni" jni_output_dir = "${base_output_dir}/jni"
jni_generator_include = jni_generator_include = "//base/android/jni_generator/jni_generator_helper.h"
rebase_path("//base/android/jni_generator/jni_generator_helper.h",
root_build_dir)
# TODO(cjhopman): make jni_generator.py support generating jni for multiple # TODO(cjhopman): make jni_generator.py support generating jni for multiple
# .class files from a .jar. # .class files from a .jar.
jni_actions = [] jni_actions = []
foreach(class, invoker.classes) { foreach(class, invoker.classes) {
classname_list = process_file_template( _classname_list = []
_classname_list = process_file_template(
[class], "{{source_name_part}}") [class], "{{source_name_part}}")
classname = classname_list[0] classname = _classname_list[0]
jni_target_name = "${target_name}__jni_${classname}" jni_target_name = "${target_name}__jni_${classname}"
jni_actions += [ ":$jni_target_name" ] jni_actions += [ ":$jni_target_name" ]
action(jni_target_name) { action(jni_target_name) {
...@@ -150,7 +149,7 @@ template("generate_jar_jni") { ...@@ -150,7 +149,7 @@ template("generate_jar_jni") {
"--optimize_generation=1", "--optimize_generation=1",
"--ptr_type=long", "--ptr_type=long",
"--output_dir", rebase_path(jni_output_dir, root_build_dir), "--output_dir", rebase_path(jni_output_dir, root_build_dir),
"--includes", rebase_path(jni_generator_include, "//"), "--includes", rebase_path(jni_generator_include, root_build_dir),
] ]
} }
} }
...@@ -293,6 +292,7 @@ template("java_cpp_template") { ...@@ -293,6 +292,7 @@ template("java_cpp_template") {
# } # }
template("android_resources") { template("android_resources") {
assert(defined(invoker.resource_dirs)) assert(defined(invoker.resource_dirs))
assert(defined(invoker.android_manifest) || defined(invoker.custom_package))
base_path = "$target_gen_dir/$target_name" base_path = "$target_gen_dir/$target_name"
zip_path = base_path + ".resources.zip" zip_path = base_path + ".resources.zip"
...@@ -474,8 +474,12 @@ template("android_library") { ...@@ -474,8 +474,12 @@ template("android_library") {
proguard_config = invoker.proguard_config proguard_config = invoker.proguard_config
} }
jar_excluded_patterns = [
"*/R.class", "*/R##*.class",
"*/Manifest.class", "*/Manifest##*.class",
]
if (defined(invoker.jar_excluded_patterns)) { if (defined(invoker.jar_excluded_patterns)) {
jar_excluded_patterns = invoker.jar_excluded_patterns jar_excluded_patterns += invoker.jar_excluded_patterns
} }
if (defined(invoker.srcjar_deps)) { if (defined(invoker.srcjar_deps)) {
...@@ -600,6 +604,7 @@ template("android_java_prebuilt") { ...@@ -600,6 +604,7 @@ template("android_java_prebuilt") {
# ] # ]
# } # }
template("android_apk") { template("android_apk") {
assert(defined(invoker.final_apk_path) || defined(invoker.apk_name))
gen_dir = "$target_gen_dir/$target_name" gen_dir = "$target_gen_dir/$target_name"
base_path = "$gen_dir/$target_name" base_path = "$gen_dir/$target_name"
build_config = "$base_path.build_config" build_config = "$base_path.build_config"
...@@ -609,17 +614,17 @@ template("android_apk") { ...@@ -609,17 +614,17 @@ template("android_apk") {
jar_path = "$base_path.jar" jar_path = "$base_path.jar"
final_dex_path = "$gen_dir/classes.dex" final_dex_path = "$gen_dir/classes.dex"
_template_name = target_name _template_name = target_name
_final_apk_path = ""
if (defined(invoker.final_apk_path)) {
_final_apk_path = invoker.final_apk_path
} else if (defined(invoker.apk_name)) {
_final_apk_path = "$root_build_dir/apks/" + invoker.apk_name + ".apk"
}
_native_lib_version_name = ""
_use_chromium_linker = false
_enable_chromium_linker_tests = false
_load_library_from_apk = false
_native_libs_dir = base_path + "/libs"
_native_libs = [] _native_libs = []
if (defined(invoker.native_libs)) { if (defined(invoker.native_libs)) {
_native_libs = invoker.native_libs _native_libs = invoker.native_libs
_native_libs_dir = base_path + "/libs"
} }
_keystore_path = android_default_keystore_path _keystore_path = android_default_keystore_path
...@@ -639,7 +644,7 @@ template("android_apk") { ...@@ -639,7 +644,7 @@ template("android_apk") {
_rebased_build_config = rebase_path(build_config, root_build_dir) _rebased_build_config = rebase_path(build_config, root_build_dir)
write_build_config("${target_name}__build_config") { write_build_config("${_template_name}__build_config") {
type = "android_apk" type = "android_apk"
srcjar = resource_srcjar_path srcjar = resource_srcjar_path
dex_path = final_dex_path dex_path = final_dex_path
...@@ -657,8 +662,8 @@ template("android_apk") { ...@@ -657,8 +662,8 @@ template("android_apk") {
final_deps = [] final_deps = []
final_deps += [":${target_name}__process_resources"] final_deps += [":${_template_name}__process_resources"]
process_resources("${target_name}__process_resources") { process_resources("${_template_name}__process_resources") {
android_manifest = invoker.android_manifest android_manifest = invoker.android_manifest
resource_dirs = ["//build/android/ant/empty/res"] resource_dirs = ["//build/android/ant/empty/res"]
...@@ -668,36 +673,42 @@ template("android_apk") { ...@@ -668,36 +673,42 @@ template("android_apk") {
generate_constant_ids = true generate_constant_ids = true
} }
java_cpp_template("${target_name}__native_libraries_java") { if (_native_libs != []) {
package_name = "org/chromium/base/library_loader" _use_chromium_linker = false
sources = [ _enable_chromium_linker_tests = false
"//base/android/java/templates/NativeLibraries.template", _load_library_from_apk = false
] _native_lib_version_name = ""
inputs = [
build_config,
]
defines = [
"NATIVE_LIBRARIES_LIST=" + java_cpp_template("${_template_name}__native_libraries_java") {
"@FileArg($_rebased_build_config:native:java_libraries_list)", package_name = "org/chromium/base/library_loader"
"NATIVE_LIBRARIES_VERSION_NUMBER=\"$_native_lib_version_name\"", sources = [
] "//base/android/java/templates/NativeLibraries.template",
if (_use_chromium_linker) { ]
defines += ["ENABLED_CHROMIUM_LINKER"] inputs = [
} build_config,
if (_load_library_from_apk) { ]
defines += ["ENABLE_CHROMIUM_LINKER_LIBRARY_IN_ZIP_FILE"]
} defines = [
if (_enable_chromium_linker_tests) { "NATIVE_LIBRARIES_LIST=" +
defines += ["ENABLE_CHROMIUM_LINKER_TESTS"] "@FileArg($_rebased_build_config:native:java_libraries_list)",
"NATIVE_LIBRARIES_VERSION_NUMBER=\"$_native_lib_version_name\"",
]
if (_use_chromium_linker) {
defines += ["ENABLED_CHROMIUM_LINKER"]
}
if (_load_library_from_apk) {
defines += ["ENABLE_CHROMIUM_LINKER_LIBRARY_IN_ZIP_FILE"]
}
if (_enable_chromium_linker_tests) {
defines += ["ENABLE_CHROMIUM_LINKER_TESTS"]
}
} }
_srcjar_deps += [ ":${_template_name}__native_libraries_java" ]
} }
_srcjar_deps += [ ":${target_name}__native_libraries_java" ]
rebased_build_config = rebase_path(build_config, root_build_dir)
final_deps += [":${target_name}__java"] final_deps += [":${_template_name}__java"]
android_java_library("${target_name}__java") { android_java_library("${_template_name}__java") {
android_manifest = invoker.android_manifest android_manifest = invoker.android_manifest
if (defined(invoker.java_files)) { if (defined(invoker.java_files)) {
java_files = invoker.java_files java_files = invoker.java_files
...@@ -708,22 +719,24 @@ template("android_apk") { ...@@ -708,22 +719,24 @@ template("android_apk") {
dex_path = base_path + ".dex.jar" dex_path = base_path + ".dex.jar"
} }
final_deps += [":${target_name}__final_dex"] final_deps += [":${_template_name}__final_dex"]
dex("${target_name}__final_dex") { dex("${_template_name}__final_dex") {
sources = [jar_path] sources = [jar_path]
inputs = [build_config] inputs = [build_config]
output = final_dex_path output = final_dex_path
dex_arg_key = "${rebased_build_config}:apk_dex:dependency_dex_files" dex_arg_key = "${_rebased_build_config}:apk_dex:dependency_dex_files"
args = ["--inputs=@FileArg($dex_arg_key)"] args = ["--inputs=@FileArg($dex_arg_key)"]
} }
if (_native_libs != []) { if (_native_libs != []) {
copy_ex("${target_name}__prepare_native") { copy_ex("${_template_name}__prepare_native") {
clear_dir = true clear_dir = true
inputs = [build_config] inputs = [
build_config
]
dest = "$_native_libs_dir/$android_app_abi" dest = "$_native_libs_dir/$android_app_abi"
args = [ args = [
"--files=@FileArg(${rebased_build_config}:native:libraries)", "--files=@FileArg(${_rebased_build_config}:native:libraries)",
] ]
if (is_debug) { if (is_debug) {
rebased_gdbserver = rebase_path(android_gdbserver, root_build_dir) rebased_gdbserver = rebase_path(android_gdbserver, root_build_dir)
...@@ -734,13 +747,17 @@ template("android_apk") { ...@@ -734,13 +747,17 @@ template("android_apk") {
} }
} }
final_deps += [":${target_name}__create"] final_deps += [":${_template_name}__create"]
create_apk("${target_name}__create") { create_apk("${_template_name}__create") {
apk_path = invoker.final_apk_path apk_path = _final_apk_path
android_manifest = invoker.android_manifest android_manifest = invoker.android_manifest
resources_zip = all_resources_zip_path resources_zip = all_resources_zip_path
dex_path = final_dex_path dex_path = final_dex_path
if (defined(invoker.asset_location)) {
asset_location = invoker.asset_location
}
keystore_name = _keystore_name keystore_name = _keystore_name
keystore_path = _keystore_path keystore_path = _keystore_path
keystore_password = _keystore_password keystore_password = _keystore_password
...@@ -794,8 +811,8 @@ template("unittest_apk") { ...@@ -794,8 +811,8 @@ template("unittest_apk") {
} }
android_apk(target_name) { android_apk(target_name) {
apk_name = test_suite_name _apk_name = test_suite_name
final_apk_path = "$root_build_dir/${apk_name}_apk/${apk_name}-debug.apk" final_apk_path = "$root_build_dir/${_apk_name}_apk/${_apk_name}-debug.apk"
java_files = [ java_files = [
"//testing/android/java/src/org/chromium/native_test/ChromeNativeTestActivity.java" "//testing/android/java/src/org/chromium/native_test/ChromeNativeTestActivity.java"
] ]
......
...@@ -2,6 +2,10 @@ ...@@ -2,6 +2,10 @@
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.
if (is_android) {
import("//build/config/android/config.gni")
}
source_set("browser") { source_set("browser") {
sources = [ sources = [
"crash_dump_manager_android.cc", "crash_dump_manager_android.cc",
......
# Copyright 2014 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.
import("//build/config/android/config.gni") import("//build/config/android/config.gni")
import("//build/config/android/rules.gni") import("//build/config/android/rules.gni")
...@@ -9,3 +13,199 @@ android_aidl("common_aidl") { ...@@ -9,3 +13,199 @@ android_aidl("common_aidl") {
"java/src/org/chromium/content/common/IChildProcessService.aidl", "java/src/org/chromium/content/common/IChildProcessService.aidl",
] ]
} }
android_resources("content_java_resources") {
deps = [
":content_strings_grd",
"//ui/android:ui_java_resources",
]
custom_package = "org.chromium.content"
resource_dirs = [ "java/res" ]
}
android_library("content_java") {
deps = [
":content_java_resources",
"//base:base_java",
"//media:media_java",
"//net/android:net_java",
"//ui/android:ui_java",
"//third_party/guava:guava_javalib",
"//third_party/jsr-305:jsr_305_javalib",
#"//content:content_common",
]
srcjar_deps = [
":common_aidl",
":content_gamepad_mapping_java",
":gesture_event_type_java",
":page_transition_types_java",
":popup_item_type_java",
":result_codes_java",
":selection_event_type_java",
":speech_recognition_error_java",
":top_controls_state_java",
":screen_orientation_values_java",
]
DEPRECATED_java_in_dir = "java/src"
if (!is_android_webview_build) {
deps += [
"//third_party/eyesfree:eyesfree_java",
"//third_party/guava:guava_javalib",
]
}
}
java_strings_grd("content_strings_grd") {
grd_file = "java/strings/android_content_strings.grd"
outputs = [
"values-am/android_content_strings.xml",
"values-ar/android_content_strings.xml",
"values-bg/android_content_strings.xml",
"values-ca/android_content_strings.xml",
"values-cs/android_content_strings.xml",
"values-da/android_content_strings.xml",
"values-de/android_content_strings.xml",
"values-el/android_content_strings.xml",
"values/android_content_strings.xml",
"values-en-rGB/android_content_strings.xml",
"values-es/android_content_strings.xml",
"values-es-rUS/android_content_strings.xml",
"values-fa/android_content_strings.xml",
"values-fi/android_content_strings.xml",
"values-tl/android_content_strings.xml",
"values-fr/android_content_strings.xml",
"values-hi/android_content_strings.xml",
"values-hr/android_content_strings.xml",
"values-hu/android_content_strings.xml",
"values-in/android_content_strings.xml",
"values-it/android_content_strings.xml",
"values-iw/android_content_strings.xml",
"values-ja/android_content_strings.xml",
"values-ko/android_content_strings.xml",
"values-lt/android_content_strings.xml",
"values-lv/android_content_strings.xml",
"values-nl/android_content_strings.xml",
"values-nb/android_content_strings.xml",
"values-pl/android_content_strings.xml",
"values-pt-rBR/android_content_strings.xml",
"values-pt-rPT/android_content_strings.xml",
"values-ro/android_content_strings.xml",
"values-ru/android_content_strings.xml",
"values-sk/android_content_strings.xml",
"values-sl/android_content_strings.xml",
"values-sr/android_content_strings.xml",
"values-sv/android_content_strings.xml",
"values-sw/android_content_strings.xml",
"values-th/android_content_strings.xml",
"values-tr/android_content_strings.xml",
"values-uk/android_content_strings.xml",
"values-vi/android_content_strings.xml",
"values-zh-rCN/android_content_strings.xml",
"values-zh-rTW/android_content_strings.xml",
]
}
java_cpp_template("gesture_event_type_java") {
sources = [
"java/src/org/chromium/content/browser/GestureEventType.template",
]
package_name = "org/chromium/content/browser"
inputs = [
"//content/browser/android/gesture_event_type_list.h"
]
}
java_cpp_template("page_transition_types_java") {
sources = [
"java/src/org/chromium/content_public/browser/PageTransitionTypes.template",
]
package_name = "org/chromium/content/browser"
inputs = [
"//content/public/common/page_transition_types_list.h"
]
}
java_cpp_template("popup_item_type_java") {
sources = [
"java/src/org/chromium/content/browser/input/PopupItemType.template",
]
package_name = "org/chromium/content/browser/input"
inputs = [
"//content/browser/android/popup_item_type_list.h"
]
}
java_cpp_template("result_codes_java") {
sources = [
"java/src/org/chromium/content/common/ResultCodes.template",
]
package_name = "org/chromium/content/common"
inputs = [
"//content/public/common/result_codes_list.h"
]
}
java_cpp_template("selection_event_type_java") {
sources = [
"java/src/org/chromium/content/browser/input/SelectionEventType.template",
]
package_name = "org/chromium/content/browser/input"
inputs = [
"//content/browser/renderer_host/input/selection_event_type_list.h"
]
}
java_cpp_template("speech_recognition_error_java") {
sources = [
"java/src/org/chromium/content/browser/SpeechRecognitionError.template",
]
package_name = "org/chromium/content/browser"
inputs = [
"//content/public/common/speech_recognition_error_list.h"
]
}
java_cpp_template("top_controls_state_java") {
sources = [
"java/src/org/chromium/content/common/TopControlsState.template",
]
package_name = "org/chromium/content/common"
inputs = [
"//content/public/common/top_controls_state_list.h"
]
}
java_cpp_template("screen_orientation_values_java") {
sources = [
"java/src/org/chromium/content/common/ScreenOrientationValues.template",
]
package_name = "org/chromium/content/common"
inputs = [
"//content/public/common/screen_orientation_values_list.h"
]
}
java_cpp_template("content_gamepad_mapping_java") {
sources = [
"java/src/org/chromium/content/browser/input/CanonicalAxisIndex.template",
"java/src/org/chromium/content/browser/input/CanonicalButtonIndex.template",
]
package_name = "org/chromium/content/common"
inputs = [
"//content/browser/gamepad/canonical_axis_index_list.h",
"//content/browser/gamepad/canonical_button_index_list.h",
]
}
generate_jar_jni("content_jni_headers") {
jni_package = "content"
classes = [
"android/view/MotionEvent.class",
"java/util/HashSet.class",
]
}
# TODO(GYP): content_icudata
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
import("//build/config/features.gni") import("//build/config/features.gni")
import("//build/config/ui.gni") import("//build/config/ui.gni")
import("//tools/grit/grit_rule.gni")
import("//tools/grit/repack.gni") import("//tools/grit/repack.gni")
import("//tools/grit/grit_rule.gni")
if (is_android) { if (is_android) {
import("//build/config/android/config.gni") import("//build/config/android/config.gni")
} }
...@@ -261,8 +261,8 @@ static_library("content_shell_lib") { ...@@ -261,8 +261,8 @@ static_library("content_shell_lib") {
} }
if (is_android) { if (is_android) {
#deps += [ 'content_shell_jni_headers' ] TODO(GYP) deps += [ ":content_shell_jni_headers" ]
#deps -= [ 'copy_test_netscape_plugin' ] TODO(GYP) #deps -= [ "copy_test_netscape_plugin" ] TODO(GYP)
} }
if (is_posix && !is_mac && (!is_android || !is_android_webview_build)) { if (is_posix && !is_mac && (!is_android || !is_android_webview_build)) {
......
# Copyright 2014 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.
import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
generate_jni("content_shell_jni_headers") {
jni_package = "content/shell"
sources = [
"browsertests_apk/src/org/chromium/content_browsertests_apk/ContentBrowserTestsActivity.java",
"java/src/org/chromium/content_shell/ShellLayoutTestUtils.java",
"java/src/org/chromium/content_shell/ShellManager.java",
"java/src/org/chromium/content_shell/Shell.java",
]
}
shared_library("libcontent_shell_content_view") {
# TODO(GYP,cjhopman): enable these when content_shell builds
deps = [
":content_shell_jni_headers",
#"//content/shell:content_shell",
#"//content/shell:content_shell_pak",
"//skia",
"//media/base/android",
]
sources = [
#"shell_library_loader.cc",
#"shell_library_loader.h",
]
if (is_android_webview_build) {
ldflags = [
"-lgabi++",
]
}
}
android_resources("content_shell_java_resources") {
resource_dirs = [ "java/res" ]
custom_package = "org.chromium.content_shell"
}
android_library("content_shell_java") {
deps = [
"//base:base_java",
"//content/public/android:content_java",
"//media:media_java",
"//net/android:net_java",
"//ui/android:ui_java",
":content_shell_java_resources",
]
DEPRECATED_java_in_dir = "java/src"
}
android_resources("content_shell_apk_resources") {
resource_dirs = [ "shell_apk/res" ]
deps = [
":content_shell_java_resources"
]
android_manifest = "shell_apk/AndroidManifest.xml"
}
android_apk("content_shell_apk") {
datadeps = [
# "//tools/android/forwarder",
]
deps = [
":content_shell_apk_resources",
":content_shell_java",
":libcontent_shell_content_view",
"//base:base_java",
"//content/public/android:content_java",
"//content/public/android:content_java_resources",
"//media:media_java",
"//net/android:net_java",
#"//third_party/mesa:osmesa_in_lib_dir",
"//ui/android:ui_java",
]
apk_name = "ContentShell"
android_manifest = "shell_apk/AndroidManifest.xml"
DEPRECATED_java_in_dir = "shell_apk/src"
native_libs = [
"$root_build_dir/lib.stripped/libcontent_shell_content_view.so"
]
asset_location = "$root_build_dir/content_shell/assets"
# TODO(GYP)
#'additional_input_paths': ['<(PRODUCT_DIR)/content_shell/assets/content_shell.pak'],
#'extra_native_libs': ['<(SHARED_LIB_DIR)/libosmesa.so'],
if (false && icu_use_data_file_flag) {
# TODO(GYP)
}
if (is_android_webview_build) {
# TODO(GYP)
}
}
# Copyright 2014 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.
import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
android_library("net_java") {
DEPRECATED_java_in_dir = "java/src"
deps = [
"//base:base_java",
]
srcjar_deps = [
":cert_verify_status_android_java",
":certificate_mime_types_java",
":net_errors_java",
":private_key_types_java",
":remote_android_keystore_aidl",
]
}
android_aidl("remote_android_keystore_aidl") {
interface_file = "java/src/org/chromium/net/IRemoteAndroidKeyStoreInterface.aidl"
sources = [
"java/src/org/chromium/net/IRemoteAndroidKeyStore.aidl",
"java/src/org/chromium/net/IRemoteAndroidKeyStoreCallbacks.aidl",
]
}
android_library("net_java_test_support") {
DEPRECATED_java_in_dir = "../test/android/javatests/src"
}
android_library("net_javatests") {
DEPRECATED_java_in_dir = "javatests/src"
deps = [
"//base:base_java",
"//base:base_java_test_support",
":net_java",
]
}
java_cpp_template("net_errors_java") {
package_name = "org/chromium/net"
sources = [
"java/NetError.template",
]
inputs = [
"../base/net_error_list.h"
]
}
java_cpp_template("certificate_mime_types_java") {
package_name = "org/chromium/net"
sources = [
"java/CertificateMimeType.template",
]
inputs = [
"../base/mime_util_certificate_type_list.h"
]
}
java_cpp_template("cert_verify_status_android_java") {
package_name = "org/chromium/net"
sources = [
"java/CertVerifyStatusAndroid.template",
]
inputs = [
"cert_verify_status_android_list.h"
]
}
java_cpp_template("private_key_types_java") {
package_name = "org/chromium/net"
sources = [
"java/PrivateKeyType.template",
]
inputs = [
"private_key_type_list.h"
]
}
# TODO(GYP)
if (false) {
unittest_apk("net_unittests_apk") {
deps = [
":net_java",
":net_javatests",
"//net:net_unittests",
]
unittests_dep = "//net:net_unittests"
}
}
...@@ -72,7 +72,7 @@ java_strings_grd("ui_strings_grd") { ...@@ -72,7 +72,7 @@ java_strings_grd("ui_strings_grd") {
] ]
} }
android_resources("ui_java_res") { android_resources("ui_java_resources") {
custom_package = "org.chromium.ui" custom_package = "org.chromium.ui"
resource_dirs = [ resource_dirs = [
"java/res" "java/res"
...@@ -117,7 +117,7 @@ android_library("ui_java") { ...@@ -117,7 +117,7 @@ android_library("ui_java") {
"java/src/org/chromium/ui/gl/SurfaceTexturePlatformWrapper.java", "java/src/org/chromium/ui/gl/SurfaceTexturePlatformWrapper.java",
] ]
deps = [ deps = [
":ui_java_res", ":ui_java_resources",
"//base:base_java", "//base:base_java",
] ]
srcjar_deps = [ srcjar_deps = [
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment