Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(464)

Side by Side Diff: Source/build/scripts/make_private_script_source.py

Issue 569063002: Reland [blink-in-js] Migrate resources required for blink-in-js to grd - part 3 (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebased patch Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/bindings/core/v8/PrivateScriptRunner.cpp ('k') | Source/core/BUILD.gn » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Convert PrivateScript's sources to C++ constant strings. 5 """Convert PrivateScript's sources to C++ constant strings.
6 FIXME: We don't want to add more build scripts. Rewrite this script in grit. crb ug.com/388121 6 FIXME: We don't want to add more build scripts. Rewrite this script in grit. crb ug.com/388121
7 7
8 Usage: 8 Usage:
9 python make_private_script_source.py DESTINATION_FILE SOURCE_FILES 9 python make_private_script_source.py DESTINATION_FILE SOURCE_FILES
10 """ 10 """
11 11
12 import optparse
12 import os 13 import os
13 import re 14 import re
14 import sys 15 import sys
15 16
16 17
17 # We assume that X.js has a corresponding X.idl in the same directory. 18 # We assume that X.js has a corresponding X.idl in the same directory.
18 # If X is a partial interface, this method extracts the base name of the partial interface from X.idl. 19 # If X is a partial interface, this method extracts the base name of the partial interface from X.idl.
19 # Otherwise, this method returns None. 20 # Otherwise, this method returns None.
20 def extract_partial_interface_name(filename): 21 def extract_partial_interface_name(filename):
21 basename, ext = os.path.splitext(filename) 22 basename, ext = os.path.splitext(filename)
22 assert ext == '.js' 23 assert ext == '.js'
23 # PrivateScriptRunner.js is a special JS script to control private scripts, 24 # PrivateScriptRunner.js is a special JS script to control private scripts,
24 # and doesn't have a corresponding IDL file. 25 # and doesn't have a corresponding IDL file.
25 if os.path.basename(basename) == 'PrivateScriptRunner': 26 if os.path.basename(basename) == 'PrivateScriptRunner':
26 return None 27 return None
27 idl_filename = basename + '.idl' 28 idl_filename = basename + '.idl'
28 with open(idl_filename) as f: 29 with open(idl_filename) as f:
29 contents = f.read() 30 contents = f.read()
30 match = re.search(r'partial\s+interface\s+(\w+)\s*{', contents) 31 match = re.search(r'partial\s+interface\s+(\w+)\s*{', contents)
31 return match and match.group(1) 32 return match and match.group(1)
32 33
33 34
34 def main(): 35 def main():
35 output_filename = sys.argv[1] 36 parser = optparse.OptionParser()
36 input_filenames = sys.argv[2:] 37 parser.add_option('--for-testing', action="store_true", default=False)
38
39 options, args = parser.parse_args()
40 output_filename = args[0]
41 input_filenames = args[1:]
37 source_name, ext = os.path.splitext(os.path.basename(output_filename)) 42 source_name, ext = os.path.splitext(os.path.basename(output_filename))
38 43
39 contents = [] 44 contents = []
40 for input_filename in input_filenames: 45 contents.append('#ifndef %s_h\n' % source_name)
41 class_name, ext = os.path.splitext(os.path.basename(input_filename)) 46 contents.append('#define %s_h\n' % source_name)
42 with open(input_filename) as input_file: 47 if options.for_testing:
43 input_text = input_file.read() 48 for input_filename in input_filenames:
44 hex_values = ['0x{0:02x}'.format(ord(char)) for char in input_text] 49 class_name, ext = os.path.splitext(os.path.basename(input_filename))
45 contents.append('const unsigned char kSourceOf%s[] = {\n %s\n};\n \n' % ( 50 with open(input_filename) as input_file:
46 class_name, ', '.join(hex_values))) 51 input_text = input_file.read()
52 hex_values = ['0x{0:02x}'.format(ord(char)) for char in input_te xt]
53 contents.append('const char kSourceOf%s[] = {\n %s\n};\n\n' % (
54 class_name, ', '.join(hex_values)))
47 contents.append('struct %s {' % source_name) 55 contents.append('struct %s {' % source_name)
48 contents.append(""" 56 contents.append("""
49 const char* scriptClassName; 57 const char* scriptClassName;
50 const char* className; 58 const char* className;
51 const unsigned char* source; 59 """)
52 size_t size; 60 if options.for_testing:
61 contents.append("""
62 const char* source;
63 size_t size;""")
64 else:
65 contents.append('const char* resourceFile;')
66 contents.append("""
53 }; 67 };
54 68
55 """) 69 """)
70
56 contents.append('struct %s k%s[] = {\n' % (source_name, source_name)) 71 contents.append('struct %s k%s[] = {\n' % (source_name, source_name))
57 for input_filename in input_filenames: 72 for input_filename in input_filenames:
58 script_class_name, ext = os.path.splitext(os.path.basename(input_filenam e)) 73 script_class_name, ext = os.path.splitext(os.path.basename(input_filenam e))
59 class_name = extract_partial_interface_name(input_filename) or script_cl ass_name 74 class_name = extract_partial_interface_name(input_filename) or script_cl ass_name
60 contents.append(' { "%s", "%s", kSourceOf%s, sizeof(kSourceOf%s) },\n ' % (script_class_name, class_name, script_class_name, script_class_name)) 75 if options.for_testing:
76 contents.append(' { "%s", "%s", kSourceOf%s, sizeof(kSourceOf%s) },\n' % (script_class_name, class_name, script_class_name, script_class_name))
77 else:
78 contents.append(' { "%s", "%s", "%s.js" },\n' % (script_class_nam e, class_name, script_class_name))
61 contents.append('};\n') 79 contents.append('};\n')
62 80 contents.append('#endif // %s_h\n' % source_name)
63 with open(output_filename, 'w') as output_file: 81 with open(output_filename, 'w') as output_file:
64 output_file.write("".join(contents)) 82 output_file.write("".join(contents))
65 83
66 84
67 if __name__ == '__main__': 85 if __name__ == '__main__':
68 sys.exit(main()) 86 sys.exit(main())
OLDNEW
« no previous file with comments | « Source/bindings/core/v8/PrivateScriptRunner.cpp ('k') | Source/core/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698