diff options
-rw-r--r-- | android_webview/android_webview.gyp | 26 | ||||
-rw-r--r-- | android_webview/android_webview_tests.gypi | 2 | ||||
-rw-r--r-- | android_webview/apk/system_webview_apk_common.gypi | 9 | ||||
-rw-r--r-- | android_webview/apk/system_webview_locales_paks.gypi | 125 | ||||
-rwxr-xr-x | android_webview/tools/webview_locales_rename_paks.py | 98 | ||||
-rwxr-xr-x | build/gyp_chromium | 1 |
6 files changed, 252 insertions, 9 deletions
diff --git a/android_webview/android_webview.gyp b/android_webview/android_webview.gyp index aad1cc7..8de8138 100644 --- a/android_webview/android_webview.gyp +++ b/android_webview/android_webview.gyp @@ -31,12 +31,24 @@ 'includes': [ '../build/repack_action.gypi' ], }, { - 'action_name': 'add_en_US_pak_locale', + 'action_name': 'android_webview_locales_rename_paks', 'variables': { - 'pak_inputs': ['<(SHARED_INTERMEDIATE_DIR)/content/app/strings/content_strings_en-US.pak'], - 'pak_output': '<(PRODUCT_DIR)/android_webview_assets/en-US.pak', + 'rename_locales': 'tools/webview_locales_rename_paks.py', }, - 'includes': [ '../build/repack_action.gypi' ], + 'inputs': [ + '<(rename_locales)', + '<!@pymod_do_main(webview_locales_rename_paks -i -p <(PRODUCT_DIR) -s <(SHARED_INTERMEDIATE_DIR) <(locales))' + ], + 'outputs': [ + '<!@pymod_do_main(webview_locales_rename_paks -o -p <(PRODUCT_DIR) -s <(SHARED_INTERMEDIATE_DIR) <(locales))' + ], + 'action': [ + 'python', + '<(rename_locales)', + '-p', '<(PRODUCT_DIR)', + '-s', '<(SHARED_INTERMEDIATE_DIR)', + '<@(locales)', + ], } ], }, @@ -124,7 +136,6 @@ '../ui/shell_dialogs/shell_dialogs.gyp:shell_dialogs', '../v8/tools/gyp/v8.gyp:v8', '../webkit/common/gpu/webkit_gpu.gyp:webkit_gpu', - 'android_webview_pak', 'android_webview_version', ], 'include_dirs': [ @@ -265,6 +276,11 @@ 'renderer/print_render_frame_observer.cc', 'renderer/print_render_frame_observer.h', ], + 'conditions': [ + ['android_webview_build==0', { + 'dependencies': [ 'android_webview_pak', ], + }], + ], }, { 'target_name': 'libwebviewchromium', diff --git a/android_webview/android_webview_tests.gypi b/android_webview/android_webview_tests.gypi index 7c9043d..817654f 100644 --- a/android_webview/android_webview_tests.gypi +++ b/android_webview/android_webview_tests.gypi @@ -50,7 +50,7 @@ 'destination': '<(PRODUCT_DIR)/android_webview_apk/assets', 'files': [ '<(PRODUCT_DIR)/android_webview_assets/webviewchromium.pak', - '<(PRODUCT_DIR)/android_webview_assets/en-US.pak', + '<(PRODUCT_DIR)/android_webview_assets/locales/en-US.pak', '<(java_in_dir)/assets/asset_file.html', '<(java_in_dir)/assets/asset_icon.png', '<(java_in_dir)/assets/cookie_test.html', diff --git a/android_webview/apk/system_webview_apk_common.gypi b/android_webview/apk/system_webview_apk_common.gypi index dae95ac..a8f5b6c 100644 --- a/android_webview/apk/system_webview_apk_common.gypi +++ b/android_webview/apk/system_webview_apk_common.gypi @@ -23,8 +23,8 @@ 'proguard_flags_paths': ['<(DEPTH)/android_webview/apk/java/proguard.flags'], # TODO: crbug.com/405035 Find a better solution for WebView .pak files. 'additional_input_paths': [ + '<@(webview_locales_output_paks)', '<(asset_location)/webviewchromium.pak', - '<(asset_location)/en-US.pak', '<(asset_location)/webview_licenses.notice', ], 'conditions': [ @@ -45,8 +45,8 @@ { 'destination': '<(asset_location)', 'files': [ + '<@(webview_locales_input_paks)', '<(PRODUCT_DIR)/android_webview_assets/webviewchromium.pak', - '<(PRODUCT_DIR)/android_webview_assets/en-US.pak', ], 'conditions': [ ['icu_use_data_file_flag==1', { @@ -83,5 +83,8 @@ 'message': 'Generating WebView license notice', }, ], - 'includes': [ '../../build/java_apk.gypi' ], + 'includes': [ + 'system_webview_locales_paks.gypi', + '../../build/java_apk.gypi', + ], } diff --git a/android_webview/apk/system_webview_locales_paks.gypi b/android_webview/apk/system_webview_locales_paks.gypi new file mode 100644 index 0000000..0872cd0 --- /dev/null +++ b/android_webview/apk/system_webview_locales_paks.gypi @@ -0,0 +1,125 @@ +# 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. +# +# This file defines the set of locales that should be packed inside the +# System WebView apk. +# TODO: consider unifying this list with the one in chrome_android_paks.gypi +# once Chrome includes all the locales that the WebView needs. +{ + 'variables': { + 'webview_locales_input_paks_folder': '<(PRODUCT_DIR)/android_webview_assets/locales/', + 'webview_locales_output_paks_folder': '<(asset_location)', + 'webview_locales_input_paks': [ + '<(webview_locales_input_paks_folder)/am.pak', + '<(webview_locales_input_paks_folder)/ar.pak', + '<(webview_locales_input_paks_folder)/bg.pak', + '<(webview_locales_input_paks_folder)/bn.pak', + '<(webview_locales_input_paks_folder)/ca.pak', + '<(webview_locales_input_paks_folder)/cs.pak', + '<(webview_locales_input_paks_folder)/da.pak', + '<(webview_locales_input_paks_folder)/de.pak', + '<(webview_locales_input_paks_folder)/el.pak', + '<(webview_locales_input_paks_folder)/en-GB.pak', + '<(webview_locales_input_paks_folder)/en-US.pak', + '<(webview_locales_input_paks_folder)/es.pak', + '<(webview_locales_input_paks_folder)/es-419.pak', + '<(webview_locales_input_paks_folder)/et.pak', + '<(webview_locales_input_paks_folder)/fa.pak', + '<(webview_locales_input_paks_folder)/fi.pak', + '<(webview_locales_input_paks_folder)/fil.pak', + '<(webview_locales_input_paks_folder)/fr.pak', + '<(webview_locales_input_paks_folder)/gu.pak', + '<(webview_locales_input_paks_folder)/he.pak', + '<(webview_locales_input_paks_folder)/hi.pak', + '<(webview_locales_input_paks_folder)/hr.pak', + '<(webview_locales_input_paks_folder)/hu.pak', + '<(webview_locales_input_paks_folder)/id.pak', + '<(webview_locales_input_paks_folder)/it.pak', + '<(webview_locales_input_paks_folder)/ja.pak', + '<(webview_locales_input_paks_folder)/kn.pak', + '<(webview_locales_input_paks_folder)/ko.pak', + '<(webview_locales_input_paks_folder)/lt.pak', + '<(webview_locales_input_paks_folder)/lv.pak', + '<(webview_locales_input_paks_folder)/ml.pak', + '<(webview_locales_input_paks_folder)/mr.pak', + '<(webview_locales_input_paks_folder)/ms.pak', + '<(webview_locales_input_paks_folder)/nb.pak', + '<(webview_locales_input_paks_folder)/nl.pak', + '<(webview_locales_input_paks_folder)/pl.pak', + '<(webview_locales_input_paks_folder)/pt-BR.pak', + '<(webview_locales_input_paks_folder)/pt-PT.pak', + '<(webview_locales_input_paks_folder)/ro.pak', + '<(webview_locales_input_paks_folder)/ru.pak', + '<(webview_locales_input_paks_folder)/sk.pak', + '<(webview_locales_input_paks_folder)/sl.pak', + '<(webview_locales_input_paks_folder)/sr.pak', + '<(webview_locales_input_paks_folder)/sv.pak', + '<(webview_locales_input_paks_folder)/sw.pak', + '<(webview_locales_input_paks_folder)/ta.pak', + '<(webview_locales_input_paks_folder)/te.pak', + '<(webview_locales_input_paks_folder)/th.pak', + '<(webview_locales_input_paks_folder)/tr.pak', + '<(webview_locales_input_paks_folder)/uk.pak', + '<(webview_locales_input_paks_folder)/vi.pak', + '<(webview_locales_input_paks_folder)/zh-CN.pak', + '<(webview_locales_input_paks_folder)/zh-TW.pak', + ], + 'webview_locales_output_paks': [ + '<(webview_locales_output_paks_folder)/am.pak', + '<(webview_locales_output_paks_folder)/ar.pak', + '<(webview_locales_output_paks_folder)/bg.pak', + '<(webview_locales_output_paks_folder)/bn.pak', + '<(webview_locales_output_paks_folder)/ca.pak', + '<(webview_locales_output_paks_folder)/cs.pak', + '<(webview_locales_output_paks_folder)/da.pak', + '<(webview_locales_output_paks_folder)/de.pak', + '<(webview_locales_output_paks_folder)/el.pak', + '<(webview_locales_output_paks_folder)/en-GB.pak', + '<(webview_locales_output_paks_folder)/en-US.pak', + '<(webview_locales_output_paks_folder)/es.pak', + '<(webview_locales_output_paks_folder)/es-419.pak', + '<(webview_locales_output_paks_folder)/et.pak', + '<(webview_locales_output_paks_folder)/fa.pak', + '<(webview_locales_output_paks_folder)/fi.pak', + '<(webview_locales_output_paks_folder)/fil.pak', + '<(webview_locales_output_paks_folder)/fr.pak', + '<(webview_locales_output_paks_folder)/gu.pak', + '<(webview_locales_output_paks_folder)/he.pak', + '<(webview_locales_output_paks_folder)/hi.pak', + '<(webview_locales_output_paks_folder)/hr.pak', + '<(webview_locales_output_paks_folder)/hu.pak', + '<(webview_locales_output_paks_folder)/id.pak', + '<(webview_locales_output_paks_folder)/it.pak', + '<(webview_locales_output_paks_folder)/ja.pak', + '<(webview_locales_output_paks_folder)/kn.pak', + '<(webview_locales_output_paks_folder)/ko.pak', + '<(webview_locales_output_paks_folder)/lt.pak', + '<(webview_locales_output_paks_folder)/lv.pak', + '<(webview_locales_output_paks_folder)/ml.pak', + '<(webview_locales_output_paks_folder)/mr.pak', + '<(webview_locales_output_paks_folder)/ms.pak', + '<(webview_locales_output_paks_folder)/nb.pak', + '<(webview_locales_output_paks_folder)/nl.pak', + '<(webview_locales_output_paks_folder)/pl.pak', + '<(webview_locales_output_paks_folder)/pt-BR.pak', + '<(webview_locales_output_paks_folder)/pt-PT.pak', + '<(webview_locales_output_paks_folder)/ro.pak', + '<(webview_locales_output_paks_folder)/ru.pak', + '<(webview_locales_output_paks_folder)/sk.pak', + '<(webview_locales_output_paks_folder)/sl.pak', + '<(webview_locales_output_paks_folder)/sr.pak', + '<(webview_locales_output_paks_folder)/sv.pak', + '<(webview_locales_output_paks_folder)/sw.pak', + '<(webview_locales_output_paks_folder)/ta.pak', + '<(webview_locales_output_paks_folder)/te.pak', + '<(webview_locales_output_paks_folder)/th.pak', + '<(webview_locales_output_paks_folder)/tr.pak', + '<(webview_locales_output_paks_folder)/uk.pak', + '<(webview_locales_output_paks_folder)/vi.pak', + '<(webview_locales_output_paks_folder)/zh-CN.pak', + '<(webview_locales_output_paks_folder)/zh-TW.pak', + ], + }, +} + diff --git a/android_webview/tools/webview_locales_rename_paks.py b/android_webview/tools/webview_locales_rename_paks.py new file mode 100755 index 0000000..4bc77e5 --- /dev/null +++ b/android_webview/tools/webview_locales_rename_paks.py @@ -0,0 +1,98 @@ +#!/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. + +"""Helper script to rename paks for a list of locales for the Android WebView. + +Gyp doesn't have any built-in looping capability, so this just provides a way to +loop over a list of locales when renaming pak files. Based on +chrome/tools/build/repack_locales.py +""" + +import optparse +import os +import shutil +import sys + +def calc_output(locale): + """Determine the file that will be generated for the given locale.""" + return os.path.join(PRODUCT_DIR, 'android_webview_assets', + 'locales', locale + '.pak') + +def calc_input(locale): + """Determine the file that needs processing for the given locale.""" + return os.path.join(SHARE_INT_DIR, 'content', 'app', 'strings', + 'content_strings_%s.pak' % locale) + +def list_outputs(locales): + """Returns the names of the files that will be generated for the given + locales. + + This is to provide gyp the list of output files, so build targets can + properly track what needs to be built. + """ + return list_files(locales, calc_output) + +def list_inputs(locales): + """Returns the names of the files that will be processed for the given + locales. + + This is to provide gyp the list of input files, so build targets can properly + track their prerequisites. + """ + return list_files(locales, calc_input) + +def list_files(locales, filename_func): + """Returns the names of the files generated by filename_func for a list of + locales. + + :param filename_func: function that generates a filename for a given locale + """ + files = [] + for locale in locales: + files.append(filename_func(locale)) + return " ".join(['"%s"' % x for x in files]) + +def rename_locales(locales): + """ Loop over and renames the given locales.""" + for locale in locales: + shutil.copy(calc_input(locale), calc_output(locale)) + +def DoMain(argv): + global SHARE_INT_DIR + global PRODUCT_DIR + + parser = optparse.OptionParser("usage: %prog [options] locales") + parser.add_option("-i", action="store_true", dest="inputs", default=False, + help="Print the expected input file list, then exit.") + parser.add_option("-o", action="store_true", dest="outputs", default=False, + help="Print the expected output file list, then exit.") + parser.add_option("-p", action="store", dest="product_dir", + help="Product build files output directory.") + parser.add_option("-s", action="store", dest="share_int_dir", + help="Shared intermediate build files output directory.") + options, locales = parser.parse_args(argv) + if not locales: + parser.error('Please specify at least one locale to process.\n') + + print_inputs = options.inputs + print_outputs = options.outputs + SHARE_INT_DIR = options.share_int_dir + PRODUCT_DIR = options.product_dir + + if print_inputs and print_outputs: + parser.error('Please specify only one of "-i" or "-o".\n') + + if print_inputs: + return list_inputs(locales) + + if print_outputs: + return list_outputs(locales) + + return rename_locales(locales) + +if __name__ == '__main__': + results = DoMain(sys.argv[1:]) + if results: + print results diff --git a/build/gyp_chromium b/build/gyp_chromium index 3d527aa..45f3206 100755 --- a/build/gyp_chromium +++ b/build/gyp_chromium @@ -28,6 +28,7 @@ import gyp SRC_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Add paths so that pymod_do_main(...) can import files. +sys.path.insert(1, os.path.join(chrome_src, 'android_webview', 'tools')) sys.path.insert(1, os.path.join(chrome_src, 'build', 'android', 'gyp')) sys.path.insert(1, os.path.join(chrome_src, 'tools')) sys.path.insert(1, os.path.join(chrome_src, 'tools', 'generate_shim_headers')) |