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

Side by Side Diff: Source/bindings/scripts/unstable/v8_utilities.py

Issue 31933002: IDL compiler: [SetterCallWith] (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 2 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
OLDNEW
1 # Copyright (C) 2013 Google Inc. All rights reserved. 1 # Copyright (C) 2013 Google Inc. All rights reserved.
2 # 2 #
3 # Redistribution and use in source and binary forms, with or without 3 # Redistribution and use in source and binary forms, with or without
4 # modification, are permitted provided that the following conditions are 4 # modification, are permitted provided that the following conditions are
5 # met: 5 # met:
6 # 6 #
7 # * Redistributions of source code must retain the above copyright 7 # * Redistributions of source code must retain the above copyright
8 # notice, this list of conditions and the following disclaimer. 8 # notice, this list of conditions and the following disclaimer.
9 # * Redistributions in binary form must reproduce the above 9 # * Redistributions in binary form must reproduce the above
10 # copyright notice, this list of conditions and the following disclaimer 10 # copyright notice, this list of conditions and the following disclaimer
(...skipping 29 matching lines...) Expand all
40 import re 40 import re
41 import v8_types 41 import v8_types
42 42
43 ACRONYMS = ['CSS', 'HTML', 'IME', 'JS', 'SVG', 'URL', 'WOFF', 'XML', 'XSLT'] 43 ACRONYMS = ['CSS', 'HTML', 'IME', 'JS', 'SVG', 'URL', 'WOFF', 'XML', 'XSLT']
44 44
45 45
46 def has_extended_attribute(definition_or_member, extended_attribute_list): 46 def has_extended_attribute(definition_or_member, extended_attribute_list):
47 return any(extended_attribute in definition_or_member.extended_attributes 47 return any(extended_attribute in definition_or_member.extended_attributes
48 for extended_attribute in extended_attribute_list) 48 for extended_attribute in extended_attribute_list)
49 49
50 def has_extended_attribute_value(extended_attributes, key, value): 50
51 return (key in extended_attributes and 51 def extended_attribute_value_contains(extended_attribute_value, value):
52 value in re.split('[|&]', extended_attributes[key])) 52 return value in re.split('[|&]', extended_attribute_value)
53 53
54 54
55 def capitalize(name): 55 def capitalize(name):
56 """Capitalize first letter or initial acronym (used in setter names).""" 56 """Capitalize first letter or initial acronym (used in setter names)."""
57 for acronym in ACRONYMS: 57 for acronym in ACRONYMS:
58 if name.startswith(acronym.lower()): 58 if name.startswith(acronym.lower()):
59 return name.replace(acronym.lower(), acronym) 59 return name.replace(acronym.lower(), acronym)
60 return name[0].upper() + name[1:] 60 return name[0].upper() + name[1:]
61 61
62 62
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 # List because key order matters, as we want arguments in deterministic order 111 # List because key order matters, as we want arguments in deterministic order
112 CALL_WITH_VALUES = [ 112 CALL_WITH_VALUES = [
113 'ScriptState', 113 'ScriptState',
114 'ExecutionContext', 114 'ExecutionContext',
115 'ScriptArguments', 115 'ScriptArguments',
116 'ActiveWindow', 116 'ActiveWindow',
117 'FirstWindow', 117 'FirstWindow',
118 ] 118 ]
119 119
120 120
121 def call_with_arguments(member, contents): 121 def call_with_arguments(call_with, contents):
122 extended_attributes = member.extended_attributes 122 # FIXME: Implement other template values for functions
123 if 'CallWith' not in extended_attributes: 123 contents['is_call_with_script_execution_context'] = extended_attribute_value _contains(call_with, 'ExecutionContext')
124 return []
125
126 # FIXME: Implement other template values for setters and functions
127 contents['is_call_with_script_execution_context'] = has_extended_attribute_v alue(extended_attributes, 'CallWith', 'ExecutionContext')
128 124
129 return [CALL_WITH_ARGUMENTS[value] 125 return [CALL_WITH_ARGUMENTS[value]
130 for value in CALL_WITH_VALUES 126 for value in CALL_WITH_VALUES
131 if has_extended_attribute_value(extended_attributes, 'CallWith', val ue)] 127 if extended_attribute_value_contains(call_with, value)]
132 128
133 129
134 # [Conditional] 130 # [Conditional]
135 def generate_conditional_string(definition_or_member): 131 def generate_conditional_string(definition_or_member):
136 if 'Conditional' not in definition_or_member.extended_attributes: 132 if 'Conditional' not in definition_or_member.extended_attributes:
137 return None 133 return None
138 conditional = definition_or_member.extended_attributes['Conditional'] 134 conditional = definition_or_member.extended_attributes['Conditional']
139 for operator in '&|': 135 for operator in '&|':
140 if operator in conditional: 136 if operator in conditional:
141 conditions = set(conditional.split(operator)) 137 conditions = set(conditional.split(operator))
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 def cpp_name(definition_or_member): 177 def cpp_name(definition_or_member):
182 return definition_or_member.extended_attributes.get('ImplementedAs', definit ion_or_member.name) 178 return definition_or_member.extended_attributes.get('ImplementedAs', definit ion_or_member.name)
183 179
184 180
185 # [MeasureAs] 181 # [MeasureAs]
186 def generate_measure_as(definition_or_member, contents, includes): 182 def generate_measure_as(definition_or_member, contents, includes):
187 if 'MeasureAs' not in definition_or_member.extended_attributes: 183 if 'MeasureAs' not in definition_or_member.extended_attributes:
188 return 184 return
189 contents['measure_as'] = definition_or_member.extended_attributes['MeasureAs '] 185 contents['measure_as'] = definition_or_member.extended_attributes['MeasureAs ']
190 includes.add('core/page/UseCounter.h') 186 includes.add('core/page/UseCounter.h')
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698