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

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

Issue 66643004: Remove QualifiedName argument from most HTMLElement::create functions (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Hack for XML prefix Created 7 years, 1 month 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 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (C) 2013 Google Inc. All rights reserved. 2 # Copyright (C) 2013 Google Inc. All rights reserved.
3 # 3 #
4 # Redistribution and use in source and binary forms, with or without 4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions are 5 # modification, are permitted provided that the following conditions are
6 # met: 6 # met:
7 # 7 #
8 # * Redistributions of source code must retain the above copyright 8 # * Redistributions of source code must retain the above copyright
9 # notice, this list of conditions and the following disclaimer. 9 # notice, this list of conditions and the following disclaimer.
10 # * Redistributions in binary form must reproduce the above 10 # * Redistributions in binary form must reproduce the above
(...skipping 10 matching lines...) Expand all
21 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 21 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 29
30 import sys 30 import sys
31 from collections import defaultdict
31 32
32 import in_generator 33 import in_generator
33 import template_expander 34 import template_expander
34 import name_utilities 35 import name_utilities
35 36
36 from make_qualified_names import MakeQualifiedNamesWriter 37 from make_qualified_names import MakeQualifiedNamesWriter
37 38
38 39
39 class MakeElementFactoryWriter(MakeQualifiedNamesWriter): 40 class MakeElementFactoryWriter(MakeQualifiedNamesWriter):
40 defaults = dict(MakeQualifiedNamesWriter.default_parameters, **{ 41 defaults = dict(MakeQualifiedNamesWriter.default_parameters, **{
(...skipping 20 matching lines...) Expand all
61 self._outputs.update({ 62 self._outputs.update({
62 (self.namespace + 'ElementFactory.h'): self.generate_factory_header, 63 (self.namespace + 'ElementFactory.h'): self.generate_factory_header,
63 (self.namespace + 'ElementFactory.cpp'): self.generate_factory_imple mentation, 64 (self.namespace + 'ElementFactory.cpp'): self.generate_factory_imple mentation,
64 ('V8' + self.namespace + 'ElementWrapperFactory.h'): self.generate_w rapper_factory_header, 65 ('V8' + self.namespace + 'ElementWrapperFactory.h'): self.generate_w rapper_factory_header,
65 ('V8' + self.namespace + 'ElementWrapperFactory.cpp'): self.generate _wrapper_factory_implementation, 66 ('V8' + self.namespace + 'ElementWrapperFactory.cpp'): self.generate _wrapper_factory_implementation,
66 }) 67 })
67 68
68 fallback_interface = self.tags_in_file.parameters['fallbackInterfaceName '].strip('"') 69 fallback_interface = self.tags_in_file.parameters['fallbackInterfaceName '].strip('"')
69 fallback_js_interface = self.tags_in_file.parameters['fallbackJSInterfac eName'].strip('"') or fallback_interface 70 fallback_js_interface = self.tags_in_file.parameters['fallbackJSInterfac eName'].strip('"') or fallback_interface
70 71
71 for tag in self._template_context['tags']: 72 interface_counts = defaultdict(int)
73 tags = self._template_context['tags']
74 for tag in tags:
72 tag['has_js_interface'] = self._has_js_interface(tag) 75 tag['has_js_interface'] = self._has_js_interface(tag)
73 tag['js_interface'] = self._js_interface(tag) 76 tag['js_interface'] = self._js_interface(tag)
74 tag['interface'] = self._interface(tag) 77 tag['interface'] = self._interface(tag)
78 interface_counts[tag['interface']] += 1
79
80 for tag in tags:
81 tag['multipleTagNames'] = interface_counts[tag['interface']] > 1
75 82
76 self._template_context.update({ 83 self._template_context.update({
77 'fallback_interface': fallback_interface, 84 'fallback_interface': fallback_interface,
78 'fallback_js_interface': fallback_js_interface, 85 'fallback_js_interface': fallback_js_interface,
79 }) 86 })
80 87
81 @template_expander.use_jinja('ElementFactory.h.tmpl', filters=filters) 88 @template_expander.use_jinja('ElementFactory.h.tmpl', filters=filters)
82 def generate_factory_header(self): 89 def generate_factory_header(self):
83 return self._template_context 90 return self._template_context
84 91
(...skipping 26 matching lines...) Expand all
111 if tag['JSInterfaceName']: 118 if tag['JSInterfaceName']:
112 return tag['JSInterfaceName'] 119 return tag['JSInterfaceName']
113 return self._interface(tag) 120 return self._interface(tag)
114 121
115 def _has_js_interface(self, tag): 122 def _has_js_interface(self, tag):
116 return not tag['noConstructor'] and self._js_interface(tag) != ('%sEleme nt' % self.namespace) 123 return not tag['noConstructor'] and self._js_interface(tag) != ('%sEleme nt' % self.namespace)
117 124
118 125
119 if __name__ == "__main__": 126 if __name__ == "__main__":
120 in_generator.Maker(MakeElementFactoryWriter).main(sys.argv) 127 in_generator.Maker(MakeElementFactoryWriter).main(sys.argv)
OLDNEW
« no previous file with comments | « no previous file | Source/build/scripts/templates/ElementFactory.cpp.tmpl » ('j') | Source/core/dom/Element.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698