| # Copyright 2019 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/internal_rules.gni") | 
 |  | 
 | # Generates a script in the bin directory that runs | 
 | # //build/android/resource_sizes.py against the provided apk. | 
 | # | 
 | # Only one of apk_name or file_path should be provided. | 
 | # | 
 | # Variables: | 
 | #   apk_name: The name of the apk, without the extension. | 
 | #   file_path: The path to the apk or .minimal.apks. | 
 | #   trichrome_chrome_path: The path to chrome apk or .minimal.apks. | 
 | #   trichrome_webview_path: The path to webview apk or .minimal.apks. | 
 | #   trichrome_library_path: The path to library apk or .minimal.apks. | 
 | template("android_resource_sizes_test") { | 
 |   generate_android_wrapper(target_name) { | 
 |     forward_variables_from(invoker, [ "data_deps" ]) | 
 |     executable = "//build/android/resource_sizes.py" | 
 |     wrapper_script = "$root_out_dir/bin/run_${target_name}" | 
 |  | 
 |     assert(defined(invoker.apk_name) != defined(invoker.file_path), | 
 |            "Exactly one of apk_name or file_path should be provided.") | 
 |  | 
 |     deps = [ "//build/android:resource_sizes_py" ] | 
 |     executable_args = [ | 
 |       "--output-format", | 
 |       "histograms", | 
 |       "--chromium-output-directory", | 
 |       "@WrappedPath(.)", | 
 |     ] | 
 |  | 
 |     data = [ | 
 |       "//.vpython", | 
 |       "//.vpython3", | 
 |     ] | 
 |     if (defined(invoker.trichrome_chrome_path)) { | 
 |       data += [ | 
 |         invoker.trichrome_chrome_path, | 
 |         invoker.trichrome_webview_path, | 
 |         invoker.trichrome_library_path, | 
 |       ] | 
 |       _rebased_chrome = | 
 |           rebase_path(invoker.trichrome_chrome_path, root_build_dir) | 
 |       _rebased_webview = | 
 |           rebase_path(invoker.trichrome_webview_path, root_build_dir) | 
 |       _rebased_library = | 
 |           rebase_path(invoker.trichrome_library_path, root_build_dir) | 
 |  | 
 |       # apk_name used only as test suite name. Not a path in this case. | 
 |       executable_args += [ | 
 |         "--trichrome-chrome", | 
 |         "@WrappedPath(${_rebased_chrome})", | 
 |         "--trichrome-webview", | 
 |         "@WrappedPath(${_rebased_webview})", | 
 |         "--trichrome-library", | 
 |         "@WrappedPath(${_rebased_library})", | 
 |         "${invoker.apk_name}", | 
 |       ] | 
 |     } else { | 
 |       if (defined(invoker.apk_name)) { | 
 |         _file_path = "$root_out_dir/apks/${invoker.apk_name}.apk" | 
 |         data += [ "$root_out_dir/arsc/apks/${invoker.apk_name}.ap_" ] | 
 |       } else if (defined(invoker.file_path)) { | 
 |         _file_path = invoker.file_path | 
 |       } | 
 |       data += [ _file_path ] | 
 |       _rebased_file_path = rebase_path(_file_path, root_build_dir) | 
 |       executable_args += [ "@WrappedPath(${_rebased_file_path})" ] | 
 |     } | 
 |   } | 
 | } | 
 |  | 
 | # Generates a "size config JSON file" to specify data to be passed from recipes | 
 | # to Python scripts for binary size measurement on bots. All filenames are | 
 | # relative to $root_build_dir. The resulting JSON file is written to | 
 | # "$root_build_dir/config/${invoker.name}_size_config.json". | 
 | # | 
 | # Variables: | 
 | #   name: The name of the path to the generated size config JSON file. | 
 | #   mapping_files: List of mapping files. | 
 | #   to_resource_sizes_py: Scope containing data to pass to resource_sizes.py, | 
 | #     processed by generate_commit_size_analysis.py. | 
 | #   supersize_input_file: Main input for SuperSize. | 
 | template("android_size_bot_config") { | 
 |   _full_target_name = get_label_info(target_name, "label_no_toolchain") | 
 |   _out_json = { | 
 |     _HEADER = "Written by build target '${_full_target_name}'" | 
 |     forward_variables_from(invoker, | 
 |                            [ | 
 |                              "mapping_files", | 
 |                              "to_resource_sizes_py", | 
 |                              "supersize_input_file", | 
 |                            ]) | 
 |   } | 
 |   _output_json_path = "$root_build_dir/config/${invoker.name}_size_config.json" | 
 |   write_file(_output_json_path, _out_json, "json") | 
 | } |