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

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

Issue 2571063002: Remove Blink-in-JS (Closed)
Patch Set: Created 4 years 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
OLDNEW
(Empty)
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
3 # found in the LICENSE file.
4
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
7
8 Usage:
9 python make_private_script_source.py DESTINATION_FILE SOURCE_FILES
10 """
11
12 import optparse
13 import os
14 import re
15 import sys
16
17
18 # We assume that X.js has a corresponding X.idl in the same directory.
19 # If X is a partial interface, this method extracts the base name of the partial interface from X.idl.
20 # Otherwise, this method returns None.
21 def extract_partial_interface_name(filename):
22 basename, ext = os.path.splitext(filename)
23 assert ext == '.js'
24 # PrivateScriptRunner.js is a special JS script to control private scripts,
25 # and doesn't have a corresponding IDL file.
26 if os.path.basename(basename) == 'PrivateScriptRunner':
27 return None
28 idl_filename = basename + '.idl'
29 with open(idl_filename) as f:
30 contents = f.read()
31 match = re.search(r'partial\s+interface\s+(\w+)\s*{', contents)
32 return match and match.group(1)
33
34
35 def main():
36 parser = optparse.OptionParser()
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:]
42 source_name, ext = os.path.splitext(os.path.basename(output_filename))
43
44 contents = []
45 contents.append('#ifndef %s_h\n' % source_name)
46 contents.append('#define %s_h\n' % source_name)
47 if options.for_testing:
48 for input_filename in input_filenames:
49 class_name, ext = os.path.splitext(os.path.basename(input_filename))
50 with open(input_filename) as input_file:
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)))
55 contents.append('struct %s {' % source_name)
56 contents.append("""
57 const char* scriptClassName;
58 const char* className;
59 """)
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("""
67 };
68
69 """)
70
71 contents.append('struct %s k%s[] = {\n' % (source_name, source_name))
72 for input_filename in input_filenames:
73 script_class_name, ext = os.path.splitext(os.path.basename(input_filenam e))
74 class_name = extract_partial_interface_name(input_filename) or script_cl ass_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))
79 contents.append('};\n')
80 contents.append('#endif // %s_h\n' % source_name)
81 with open(output_filename, 'w') as output_file:
82 output_file.write("".join(contents))
83
84
85 if __name__ == '__main__':
86 sys.exit(main())
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698