Index: build/config/android/rules.gni |
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni |
index f3076be1f42fe1222668cd1d6a9e9d011226a6cf..521924c568bff52cdba2c67d62fab7f9cd17ac94 100644 |
--- a/build/config/android/rules.gni |
+++ b/build/config/android/rules.gni |
@@ -33,7 +33,11 @@ assert(is_android) |
# } |
template("generate_jni") { |
set_sources_assignment_filter([]) |
- forward_variables_from(invoker, [ "testonly" ]) |
+ forward_variables_from(invoker, |
+ [ |
+ "testonly", |
+ "deps", |
agrieve
2016/05/19 00:42:50
Adding "deps" here makes it apply to all targets d
ynovikov
2016/05/20 02:38:10
Done.
|
+ ]) |
assert(defined(invoker.sources)) |
assert(defined(invoker.jni_package)) |
@@ -81,7 +85,6 @@ template("generate_jni") { |
group(target_name) { |
forward_variables_from(invoker, |
[ |
- "deps", |
"public_deps", |
"visibility", |
]) |
@@ -90,6 +93,9 @@ template("generate_jni") { |
} |
public_deps += [ ":$foreach_target_name" ] |
public_configs = [ ":jni_includes_${target_name}" ] |
+ if (defined(invoker.deps)) { |
+ deps += invoker.deps |
+ } |
} |
} |
@@ -2112,6 +2118,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 +2126,38 @@ 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 != "") |
+ |
+ if (!defined(invoker.apk_name)) { |
+ _apk_name = _test_suite_name |
+ } else { |
+ _apk_name = invoker.apk_name |
+ } |
+ _use_native_activity = |
+ defined(invoker.use_native_activity) && invoker.use_native_activity |
+ |
+ if (!defined(android_manifest)) { |
agrieve
2016/05/19 00:42:50
This should be "invoker.android_manifest" I think.
ynovikov
2016/05/20 02:38:10
Done.
|
+ 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 = "${root_gen_dir}/${_apk_name}_jinja/AndroidManifest.xml" |
agrieve
2016/05/19 00:42:50
Better to use $target_gen_dir/$target_name/ rather
ynovikov
2016/05/20 02:38:10
Done.
|
+ 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 +2165,27 @@ 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 |
- } |
+ apk_name = _apk_name |
if (!defined(android_manifest)) { |
+ deps += [ ":${target_name}_manifest" ] |
android_manifest = |
- "//testing/android/native_test/java/AndroidManifest.xml" |
+ "${root_gen_dir}/${_apk_name}_jinja/AndroidManifest.xml" |
agrieve
2016/05/19 00:42:50
nit: Make a variable for this in the outer scope.
ynovikov
2016/05/20 02:38:10
Done.
|
} |
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 += [ |