Index: build/config/android/rules.gni |
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni |
index f3076be1f42fe1222668cd1d6a9e9d011226a6cf..fab5711bc3d73ff3b637ddd05d02c8de5d4edf40 100644 |
--- a/build/config/android/rules.gni |
+++ b/build/config/android/rules.gni |
@@ -46,6 +46,7 @@ template("generate_jni") { |
foreach_target_name = "${target_name}__jni_gen" |
action_foreach(foreach_target_name) { |
+ forward_variables_from(invoker, [ "deps" ]) |
script = "//base/android/jni_generator/jni_generator.py" |
depfile = "$target_gen_dir/$target_name.{{source_name_part}}.d" |
sources = invoker.sources |
@@ -2112,6 +2113,7 @@ template("instrumentation_test_apk") { |
# of the unittests_dep target postfixed with "_apk" |
# use_default_launcher: Whether the default activity (NativeUnitTestActivity) |
# should be used for launching tests. |
+# use_native_activity: Test implements ANativeActivity_onCreate(). |
# |
# Example |
# unittest_apk("foo_unittests_apk") { |
@@ -2119,6 +2121,42 @@ template("instrumentation_test_apk") { |
# unittests_dep = ":foo_unittests" |
# } |
template("unittest_apk") { |
+ assert(defined(invoker.unittests_dep), "Need unittests_dep for $target_name") |
+ _test_suite_name = get_label_info(invoker.unittests_dep, "name") |
+ |
+ # This trivial assert is needed in case both unittests_binary and apk_name |
+ # are defined, as otherwise _test_suite_name would not be used. |
+ assert(_test_suite_name != "") |
+ |
+ _use_native_activity = |
+ defined(invoker.use_native_activity) && invoker.use_native_activity |
+ |
+ # This trivial assert is needed in case both android_manifest and !use_default_launcher |
Dirk Pranke
2016/05/20 17:18:41
nit: wrap long line?
ynovikov
2016/05/26 03:16:15
Done.
|
+ # are defined, as otherwise _use_native_activity would not be used. |
+ assert(_use_native_activity != "") |
+ _android_manifest = "$target_gen_dir/$target_name/AndroidManifest.xml" |
+ |
+ # This trivial assert is needed in case android_manifest |
+ # is defined, as otherwise _android_manifest would not be used. |
+ assert(_android_manifest != "") |
+ |
+ if (!defined(invoker.android_manifest)) { |
+ jinja_template("${target_name}_manifest") { |
+ if (!defined(invoker.unittests_binary)) { |
+ native_library_name = _test_suite_name |
+ } else { |
+ native_library_name = invoker.unittests_binary |
+ } |
+ input = "//testing/android/native_test/java/AndroidManifest.xml.jinja2" |
+ output = _android_manifest |
+ variables = [ |
+ "is_component_build=${is_component_build}", |
+ "native_library_name=${native_library_name}", |
+ "use_native_activity=${_use_native_activity}", |
+ ] |
+ } |
+ } |
+ |
android_apk(target_name) { |
set_sources_assignment_filter([]) |
data_deps = [] |
@@ -2126,31 +2164,28 @@ template("unittest_apk") { |
forward_variables_from(invoker, "*") |
testonly = true |
- assert(defined(unittests_dep), "Need unittests_dep for $target_name") |
- |
- test_suite_name = get_label_info(unittests_dep, "name") |
- |
- # This trivial assert is needed in case both unittests_binary and apk_name |
- # are defined, as otherwise test_suite_name would not be used. |
- assert(test_suite_name != "") |
- |
if (!defined(apk_name)) { |
apk_name = test_suite_name |
} |
if (!defined(android_manifest)) { |
- android_manifest = |
- "//testing/android/native_test/java/AndroidManifest.xml" |
+ deps += [ ":${target_name}_manifest" ] |
+ android_manifest = _android_manifest |
} |
if (!defined(unittests_binary)) { |
- unittests_binary = "lib${test_suite_name}${shlib_extension}" |
+ unittests_binary = "lib${_test_suite_name}${shlib_extension}" |
} |
final_apk_path = "$root_build_dir/${apk_name}_apk/${apk_name}-debug.apk" |
if (!defined(use_default_launcher) || use_default_launcher) { |
- deps += [ "//testing/android/native_test:native_test_java" ] |
+ if (_use_native_activity) { |
+ deps += |
+ [ "//testing/android/native_test:native_test_native_activity_java" ] |
+ } else { |
+ deps += [ "//testing/android/native_test:native_test_java" ] |
+ } |
} |
native_libs = [ unittests_binary ] |
deps += [ |