| #!/usr/bin/env python |
| # Copyright (c) 2012 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. |
| |
| """Embeds standalone JavaScript snippets in C++ code. |
| |
| Each argument to the script must be a file containing an associated JavaScript |
| function (e.g., evaluate_script.js should contain an evaluateScript function). |
| This is called the exported function of the script. The entire script will be |
| put into a C-style string in the form of an anonymous function which invokes |
| the exported function when called. |
| """ |
| |
| import optparse |
| import os |
| import sys |
| |
| import cpp_source |
| |
| |
| def main(): |
| parser = optparse.OptionParser() |
| parser.add_option( |
| '', '--directory', type='string', default='.', |
| help='Path to directory where the cc/h js file should be created') |
| options, args = parser.parse_args() |
| |
| global_string_map = {} |
| for js_file in args: |
| base_name = os.path.basename(js_file)[:-3].title().replace('_', '') |
| func_name = base_name[0].lower() + base_name[1:] |
| script_name = 'k%sScript' % base_name |
| with open(js_file, 'r') as f: |
| contents = f.read() |
| script = 'function() { %s; return %s.apply(null, arguments) }' % ( |
| contents, func_name) |
| global_string_map[script_name] = script |
| |
| cpp_source.WriteSource('js', 'chrome/test/chromedriver/chrome', |
| options.directory, global_string_map) |
| |
| |
| if __name__ == '__main__': |
| sys.exit(main()) |