| Index: build/android/gyp/locale_pak_assets.py
|
| diff --git a/build/android/gyp/locale_pak_assets.py b/build/android/gyp/locale_pak_assets.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..b7e7ea269997a0c3b27bb060d623a1126c2e1955
|
| --- /dev/null
|
| +++ b/build/android/gyp/locale_pak_assets.py
|
| @@ -0,0 +1,104 @@
|
| +#!/usr/bin/env python
|
| +#
|
| +# Copyright 2016 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.
|
| +"""Creates a srcjar for locale pak file paths.
|
| +
|
| +Creates a srcjar with a class containing an array of locale pak files so that
|
| +these assets can be enumerated and extracted as necessary. This is much
|
| +more efficient than using AssetManager.list().
|
| +
|
| +The generated class implements:
|
| + //base/android/java/src/org/chromium/base/LocalePakFiles.java
|
| +
|
| +Providing access to pak file paths via:
|
| + public static String[] getFiles()
|
| +"""
|
| +
|
| +import argparse
|
| +import collections
|
| +import os
|
| +import string
|
| +import sys
|
| +import zipfile
|
| +
|
| +sys.path.append(os.path.join(os.path.dirname(__file__), os.pardir))
|
| +from pylib.constants import host_paths
|
| +from util import build_utils
|
| +
|
| +_CLASSNAME = 'LocalePakFiles'
|
| +_PACKAGE = 'org.chromium.ui'
|
| +_THIS_FILE = os.path.abspath(__file__)
|
| +
|
| +
|
| +def _CreateLocalePakFilesJava(pakfiles, package, classname, target):
|
| + """Generate the java file contents for the locale pak file class."""
|
| + file_tmpl = string.Template("""
|
| +// Copyright 2016 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.
|
| +
|
| +// This file is generated by:
|
| +// ${THIS_FILE}
|
| +// From target:
|
| +// ${TARGET}
|
| +
|
| +package ${PACKAGE};
|
| +
|
| +import org.chromium.base.annotations.SuppressFBWarnings;
|
| +
|
| +public class LocalePakFiles {
|
| + private static String[] pakFiles = {${PAKFILES}};
|
| +
|
| + @SuppressFBWarnings("MS_EXPOSE_REP")
|
| + public static String[] getFiles() {
|
| + return pakFiles;
|
| + }
|
| +}
|
| +""")
|
| +
|
| + values = {
|
| + 'TARGET': target,
|
| + 'PACKAGE': package,
|
| + 'CLASSNAME': classname,
|
| + 'THIS_FILE': os.path.relpath(_THIS_FILE, host_paths.DIR_SOURCE_ROOT),
|
| + 'PAKFILES': ', '.join('"%s"' % p for p in pakfiles),
|
| + }
|
| +
|
| + return file_tmpl.substitute(values)
|
| +
|
| +
|
| +def _WriteJarOutput(output_path, in_zip_path, data):
|
| + """Write file data to a srcjar."""
|
| + path = os.path.dirname(output_path)
|
| + if path and not os.path.exists(path):
|
| + os.makedirs(path)
|
| + with zipfile.ZipFile(output_path, 'w') as srcjar:
|
| + build_utils.AddToZipHermetic(srcjar, in_zip_path, data=data)
|
| +
|
| +
|
| +def main():
|
| + parser = argparse.ArgumentParser()
|
| + build_utils.AddDepfileOption(parser)
|
| + parser.add_argument('--locale-paks', required=True,
|
| + help='List of pak file paths to be added to srcjar')
|
| + parser.add_argument('--srcjar', required=True, help='Path to output srcjar')
|
| + parser.add_argument('--target', required=True, help='Target invoking script')
|
| +
|
| + args = parser.parse_args()
|
| +
|
| + sources = build_utils.ParseGnList(args.locale_paks)
|
| +
|
| + if args.depfile:
|
| + build_utils.WriteDepfile(args.depfile, args.srcjar)
|
| +
|
| + pakfiles = [os.path.basename(s) for s in sources]
|
| + srcjar_contents = _CreateLocalePakFilesJava(
|
| + pakfiles, _PACKAGE, _CLASSNAME, args.target)
|
| + in_zip_path = os.path.join(_PACKAGE.replace('.', '/'), _CLASSNAME + '.java')
|
| + _WriteJarOutput(args.srcjar, in_zip_path, srcjar_contents)
|
| +
|
| +
|
| +if __name__ == '__main__':
|
| + sys.exit(main())
|
|
|