diff options
Diffstat (limited to 'deps/v8/build/android/gyp/generate_resource_rewriter.py')
-rwxr-xr-x | deps/v8/build/android/gyp/generate_resource_rewriter.py | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/deps/v8/build/android/gyp/generate_resource_rewriter.py b/deps/v8/build/android/gyp/generate_resource_rewriter.py new file mode 100755 index 0000000000..ba635a293d --- /dev/null +++ b/deps/v8/build/android/gyp/generate_resource_rewriter.py @@ -0,0 +1,109 @@ +#!/usr/bin/env python +# +# Copyright (c) 2015 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. + +"""Generate ResourceRewriter.java which overwrites the given package's + resource id. +""" + +import argparse +import os +import sys +import zipfile + +from util import build_utils + +# Import jinja2 from third_party/jinja2 +sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), + '..', + '..', + '..', + 'third_party'))) +import jinja2 + + +RESOURCE_REWRITER_JAVA="ResourceRewriter.java" + +RESOURCE_REWRITER="""/* AUTO-GENERATED FILE. DO NOT MODIFY. */ + +package {{ package }}; +/** + * Helper class used to fix up resource ids. + */ +class ResourceRewriter { + /** + * Rewrite the R 'constants' for the WebView. + */ + public static void rewriteRValues(final int packageId) { + {% for res_package in res_packages %} + {{ res_package }}.R.onResourcesLoaded(packageId); + {% endfor %} + } +} +""" + +def ParseArgs(args): + """Parses command line options. + + Returns: + An Namespace from argparse.parse_args() + """ + parser = argparse.ArgumentParser(prog='generate_resource_rewriter') + + parser.add_argument('--package-name', + required=True, + help='The package name of ResourceRewriter.') + parser.add_argument('--dep-packages', + required=True, + help='A list of packages whose resource id will be' + 'overwritten in ResourceRewriter.') + parser.add_argument('--output-dir', + help='A output directory of generated' + ' ResourceRewriter.java') + parser.add_argument('--srcjar', + help='The path of generated srcjar which has' + ' ResourceRewriter.java') + + return parser.parse_args(args) + + +def CreateResourceRewriter(package, res_packages, output_dir): + build_utils.MakeDirectory(output_dir) + java_path = os.path.join(output_dir, RESOURCE_REWRITER_JAVA) + template = jinja2.Template(RESOURCE_REWRITER, + trim_blocks=True, + lstrip_blocks=True) + output = template.render(package=package, res_packages=res_packages) + with open(java_path, 'w') as f: + f.write(output) + +def CreateResourceRewriterSrcjar(package, res_packages, srcjar_path): + with build_utils.TempDir() as temp_dir: + output_dir = os.path.join(temp_dir, *package.split('.')) + CreateResourceRewriter(package, res_packages, output_dir) + build_utils.DoZip([os.path.join(output_dir, RESOURCE_REWRITER_JAVA)], + srcjar_path, + temp_dir) + + +def main(): + options = ParseArgs(build_utils.ExpandFileArgs(sys.argv[1:])) + package = options.package_name + if options.output_dir: + output_dir = os.path.join(options.output_dir, *package.split('.')) + CreateResourceRewriter( + package, + build_utils.ParseGnList(options.dep_packages), + output_dir) + else: + CreateResourceRewriterSrcjar( + package, + build_utils.ParseGnList(options.dep_packages), + options.srcjar) + + return 0 + +if __name__ == '__main__': + sys.exit(main()) |