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") {
if (is_android) {
deps += [
"//content/shell/android:content_shell_apk",
"//ui/android:ui_java",
"//third_party/guava:guava_javalib",
"//third_party/android_tools:android_gcm_java",
......
......@@ -1372,43 +1372,7 @@ if (is_android) {
"//third_party/jsr-305:jsr_305_javalib"
]
java_files = [
"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",
]
DEPRECATED_java_in_dir = "android/java/src"
# A new version of NativeLibraries.java (with the actual correct values)
# will be created when creating an apk.
......@@ -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") {
sources = [
"android/java/src/org/chromium/base/ApplicationState.template",
......
......@@ -44,7 +44,7 @@ def main(args):
if options.depfile:
build_utils.WriteDepfile(
options.depfile,
options.files + build_utils.GetPythonDependencies())
files + build_utils.GetPythonDependencies())
if options.stamp:
build_utils.Touch(options.stamp)
......
......@@ -172,7 +172,7 @@ def main(argv):
java_dir = os.path.join(temp_dir, 'java')
os.makedirs(java_dir)
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')
if options.javac_includes:
......
......@@ -88,6 +88,27 @@ def MoveImagesToNonMdpiFolders(res_root):
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():
options = ParseArgs()
android_jar = os.path.join(options.android_sdk, 'android.jar')
......@@ -120,8 +141,7 @@ def main():
if os.path.exists(subdir):
raise Exception('Resource zip name conflict: ' + os.path.basename(z))
build_utils.ExtractAll(z, path=subdir)
MoveImagesToNonMdpiFolders(subdir)
package_command += ['-S', subdir]
package_command += PackageArgsForExtractedZip(subdir)
if 'Debug' in options.configuration_name:
package_command += ['--debug-mode']
......
......@@ -155,6 +155,20 @@ def ZipResources(resource_dirs, zip_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():
args = build_utils.ExpandFileArgs(sys.argv[1:])
......@@ -248,8 +262,8 @@ def main():
ZipResources(zip_resource_dirs, options.resource_zip_out)
if options.all_resources_zip_out:
ZipResources(
zip_resource_dirs + dep_subdirs, options.all_resources_zip_out)
CombineZips([options.resource_zip_out] + dep_zips,
options.all_resources_zip_out)
if options.R_dir:
build_utils.DeleteDirectory(options.R_dir)
......
......@@ -191,7 +191,7 @@ def CheckZipPath(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:
path = os.getcwd()
elif not os.path.exists(path):
......@@ -201,6 +201,9 @@ def ExtractAll(zip_path, path=None, no_clobber=True):
for name in z.namelist():
if name.endswith('/'):
continue
if pattern is not None:
if not fnmatch.fnmatch(name, pattern):
continue
CheckZipPath(name)
if no_clobber:
output_path = os.path.join(path, name)
......
......@@ -169,21 +169,24 @@ def main(argv):
java_libraries_list = []
if options.native_libs:
libraries = build_utils.ParseGypList(options.native_libs)
libraries_dir = os.path.dirname(libraries[0])
write_ordered_libraries.SetReadelfPath(options.readelf_path)
write_ordered_libraries.SetLibraryDirs([libraries_dir])
all_native_library_deps = (
write_ordered_libraries.GetSortedTransitiveDependenciesForBinaries(
libraries))
java_libraries_list = '{%s}' % ','.join(
['"%s"' % s for s in all_native_library_deps])
library_paths = map(
write_ordered_libraries.FullLibraryPath, all_native_library_deps)
config['native'] = {
'libraries': library_paths,
'java_libraries_list': java_libraries_list
}
if libraries:
libraries_dir = os.path.dirname(libraries[0])
write_ordered_libraries.SetReadelfPath(options.readelf_path)
write_ordered_libraries.SetLibraryDirs([libraries_dir])
all_native_library_deps = (
write_ordered_libraries.GetSortedTransitiveDependenciesForBinaries(
libraries))
# Create a java literal array with the "base" library names:
# e.g. libfoo.so -> foo
java_libraries_list = '{%s}' % ','.join(
['"%s"' % s[3:-3] for s in all_native_library_deps])
library_paths = map(
write_ordered_libraries.FullLibraryPath, all_native_library_deps)
config['native'] = {
'libraries': library_paths,
'java_libraries_list': java_libraries_list
}
build_utils.WriteJson(config, options.build_config, only_if_changed=True)
......
......@@ -522,7 +522,11 @@ template("android_java_library") {
} else {
_java_files_build_rel = exec_script(
"//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"
)
_java_files = rebase_path(_java_files_build_rel, ".", root_build_dir)
......
......@@ -118,17 +118,16 @@ template("generate_jar_jni") {
base_output_dir = "${root_gen_dir}/${target_name}/${jni_package}"
jni_output_dir = "${base_output_dir}/jni"
jni_generator_include =
rebase_path("//base/android/jni_generator/jni_generator_helper.h",
root_build_dir)
jni_generator_include = "//base/android/jni_generator/jni_generator_helper.h"
# TODO(cjhopman): make jni_generator.py support generating jni for multiple
# .class files from a .jar.
jni_actions = []
foreach(class, invoker.classes) {
classname_list = process_file_template(
_classname_list = []
_classname_list = process_file_template(
[class], "{{source_name_part}}")
classname = classname_list[0]
classname = _classname_list[0]
jni_target_name = "${target_name}__jni_${classname}"
jni_actions += [ ":$jni_target_name" ]
action(jni_target_name) {
......@@ -150,7 +149,7 @@ template("generate_jar_jni") {
"--optimize_generation=1",
"--ptr_type=long",
"--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") {
# }
template("android_resources") {
assert(defined(invoker.resource_dirs))
assert(defined(invoker.android_manifest) || defined(invoker.custom_package))
base_path = "$target_gen_dir/$target_name"
zip_path = base_path + ".resources.zip"
......@@ -474,8 +474,12 @@ template("android_library") {
proguard_config = invoker.proguard_config
}
jar_excluded_patterns = [
"*/R.class", "*/R##*.class",
"*/Manifest.class", "*/Manifest##*.class",
]
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)) {
......@@ -600,6 +604,7 @@ template("android_java_prebuilt") {
# ]
# }
template("android_apk") {
assert(defined(invoker.final_apk_path) || defined(invoker.apk_name))
gen_dir = "$target_gen_dir/$target_name"
base_path = "$gen_dir/$target_name"
build_config = "$base_path.build_config"
......@@ -609,17 +614,17 @@ template("android_apk") {
jar_path = "$base_path.jar"
final_dex_path = "$gen_dir/classes.dex"
_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 = []
if (defined(invoker.native_libs)) {
_native_libs = invoker.native_libs
_native_libs_dir = base_path + "/libs"
}
_keystore_path = android_default_keystore_path
......@@ -639,7 +644,7 @@ template("android_apk") {
_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"
srcjar = resource_srcjar_path
dex_path = final_dex_path
......@@ -657,8 +662,8 @@ template("android_apk") {
final_deps = []
final_deps += [":${target_name}__process_resources"]
process_resources("${target_name}__process_resources") {
final_deps += [":${_template_name}__process_resources"]
process_resources("${_template_name}__process_resources") {
android_manifest = invoker.android_manifest
resource_dirs = ["//build/android/ant/empty/res"]
......@@ -668,36 +673,42 @@ template("android_apk") {
generate_constant_ids = true
}
java_cpp_template("${target_name}__native_libraries_java") {
package_name = "org/chromium/base/library_loader"
sources = [
"//base/android/java/templates/NativeLibraries.template",
]
inputs = [
build_config,
]
if (_native_libs != []) {
_use_chromium_linker = false
_enable_chromium_linker_tests = false
_load_library_from_apk = false
_native_lib_version_name = ""
defines = [
"NATIVE_LIBRARIES_LIST=" +
"@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"]
java_cpp_template("${_template_name}__native_libraries_java") {
package_name = "org/chromium/base/library_loader"
sources = [
"//base/android/java/templates/NativeLibraries.template",
]
inputs = [
build_config,
]
defines = [
"NATIVE_LIBRARIES_LIST=" +
"@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"]
android_java_library("${target_name}__java") {
final_deps += [":${_template_name}__java"]
android_java_library("${_template_name}__java") {
android_manifest = invoker.android_manifest
if (defined(invoker.java_files)) {
java_files = invoker.java_files
......@@ -708,22 +719,24 @@ template("android_apk") {
dex_path = base_path + ".dex.jar"
}
final_deps += [":${target_name}__final_dex"]
dex("${target_name}__final_dex") {
final_deps += [":${_template_name}__final_dex"]
dex("${_template_name}__final_dex") {
sources = [jar_path]
inputs = [build_config]
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)"]
}
if (_native_libs != []) {
copy_ex("${target_name}__prepare_native") {
copy_ex("${_template_name}__prepare_native") {
clear_dir = true
inputs = [build_config]
inputs = [
build_config
]
dest = "$_native_libs_dir/$android_app_abi"
args = [
"--files=@FileArg(${rebased_build_config}:native:libraries)",
"--files=@FileArg(${_rebased_build_config}:native:libraries)",
]
if (is_debug) {
rebased_gdbserver = rebase_path(android_gdbserver, root_build_dir)
......@@ -734,13 +747,17 @@ template("android_apk") {
}
}
final_deps += [":${target_name}__create"]
create_apk("${target_name}__create") {
apk_path = invoker.final_apk_path
final_deps += [":${_template_name}__create"]
create_apk("${_template_name}__create") {
apk_path = _final_apk_path
android_manifest = invoker.android_manifest
resources_zip = all_resources_zip_path
dex_path = final_dex_path
if (defined(invoker.asset_location)) {
asset_location = invoker.asset_location
}
keystore_name = _keystore_name
keystore_path = _keystore_path
keystore_password = _keystore_password
......@@ -794,8 +811,8 @@ template("unittest_apk") {
}
android_apk(target_name) {
apk_name = test_suite_name
final_apk_path = "$root_build_dir/${apk_name}_apk/${apk_name}-debug.apk"
_apk_name = test_suite_name
final_apk_path = "$root_build_dir/${_apk_name}_apk/${_apk_name}-debug.apk"
java_files = [
"//testing/android/java/src/org/chromium/native_test/ChromeNativeTestActivity.java"
]
......
......@@ -2,6 +2,10 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
if (is_android) {
import("//build/config/android/config.gni")
}
source_set("browser") {
sources = [
"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/rules.gni")
......@@ -9,3 +13,199 @@ android_aidl("common_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 @@
import("//build/config/features.gni")
import("//build/config/ui.gni")
import("//tools/grit/grit_rule.gni")
import("//tools/grit/repack.gni")
import("//tools/grit/grit_rule.gni")
if (is_android) {
import("//build/config/android/config.gni")
}
......@@ -261,8 +261,8 @@ static_library("content_shell_lib") {
}
if (is_android) {
#deps += [ 'content_shell_jni_headers' ] TODO(GYP)
#deps -= [ 'copy_test_netscape_plugin' ] TODO(GYP)
deps += [ ":content_shell_jni_headers" ]
#deps -= [ "copy_test_netscape_plugin" ] TODO(GYP)
}
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") {
]
}
android_resources("ui_java_res") {
android_resources("ui_java_resources") {
custom_package = "org.chromium.ui"
resource_dirs = [
"java/res"
......@@ -117,7 +117,7 @@ android_library("ui_java") {
"java/src/org/chromium/ui/gl/SurfaceTexturePlatformWrapper.java",
]
deps = [
":ui_java_res",
":ui_java_resources",
"//base:base_java",
]
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