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

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

Issue 454773002: Blink-in-JS: Support private scripts in partial interfaces (PrivateScriptRunner part) (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « Source/bindings/core/v8/PrivateScriptRunner.js ('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 os 12 import os
13 import re
13 import sys 14 import sys
14 15
15 16
17 # 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 # Otherwise, this method returns None.
20 def extract_partial_interface_name(filename):
21 basename, ext = os.path.splitext(filename)
22 assert ext == '.js'
23 # PrivateScriptRunner.js is a special JS script to control private scripts,
24 # and doesn't have a corresponding IDL file.
25 if os.path.basename(basename) == 'PrivateScriptRunner':
26 return None
27 idl_filename = basename + '.idl'
28 with open(idl_filename) as f:
29 contents = f.read()
30 match = re.search(r'partial\s+interface\s+(\w+)\s*{', contents)
31 return match and match.group(1)
32
33
16 def main(): 34 def main():
17 output_filename = sys.argv[1] 35 output_filename = sys.argv[1]
18 input_filenames = sys.argv[2:] 36 input_filenames = sys.argv[2:]
19 source_name, ext = os.path.splitext(os.path.basename(output_filename)) 37 source_name, ext = os.path.splitext(os.path.basename(output_filename))
20 38
21 contents = [] 39 contents = []
22 for input_filename in input_filenames: 40 for input_filename in input_filenames:
23 class_name, ext = os.path.splitext(os.path.basename(input_filename)) 41 class_name, ext = os.path.splitext(os.path.basename(input_filename))
24 with open(input_filename) as input_file: 42 with open(input_filename) as input_file:
25 input_text = input_file.read() 43 input_text = input_file.read()
26 hex_values = ['0x{0:02x}'.format(ord(char)) for char in input_text] 44 hex_values = ['0x{0:02x}'.format(ord(char)) for char in input_text]
27 contents.append('const unsigned char kSourceOf%s[] = {\n %s\n};\n ' % ( 45 contents.append('const unsigned char kSourceOf%s[] = {\n %s\n};\n \n' % (
28 class_name, ', '.join(hex_values))) 46 class_name, ', '.join(hex_values)))
29 contents.append('struct %s {' % source_name) 47 contents.append('struct %s {' % source_name)
30 contents.append(""" 48 contents.append("""
31 const char* name; 49 const char* className;
50 const char* dependencyClassName;
32 const unsigned char* source; 51 const unsigned char* source;
33 size_t size; 52 size_t size;
34 }; 53 };
35 54
36 """) 55 """)
37 contents.append('struct %s k%s[] = {\n' % (source_name, source_name)) 56 contents.append('struct %s k%s[] = {\n' % (source_name, source_name))
38 for input_filename in input_filenames: 57 for input_filename in input_filenames:
39 class_name, ext = os.path.splitext(os.path.basename(input_filename)) 58 class_name, ext = os.path.splitext(os.path.basename(input_filename))
40 contents.append(' { "%s", kSourceOf%s, sizeof(kSourceOf%s) },\n' % (c lass_name, class_name, class_name)) 59 dependency_class_name = extract_partial_interface_name(input_filename) o r class_name
60 contents.append(' { "%s", "%s", kSourceOf%s, sizeof(kSourceOf%s) },\n ' % (class_name, dependency_class_name, class_name, class_name))
41 contents.append('};\n') 61 contents.append('};\n')
42 62
43 with open(output_filename, 'w') as output_file: 63 with open(output_filename, 'w') as output_file:
44 output_file.write("".join(contents)) 64 output_file.write("".join(contents))
45 65
46 66
47 if __name__ == '__main__': 67 if __name__ == '__main__':
48 sys.exit(main()) 68 sys.exit(main())
OLDNEW
« no previous file with comments | « Source/bindings/core/v8/PrivateScriptRunner.js ('k') | Source/core/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698