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

Side by Side Diff: Source/core/scripts/make_internal_runtime_flags.py

Issue 15095002: Use jinja2 for make_runtime_features and make_internal_runtime_flags (Closed) Base URL: https://chromium.googlesource.com/chromium/blink@master
Patch Set: Updated for Eric's suggestions Created 7 years, 7 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/core/scripts/in_generator.py ('k') | Source/core/scripts/make_runtime_features.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 13 matching lines...) Expand all
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 os.path 30 import os.path
31 import sys 31 import sys
32 32
33 import in_generator 33 import in_generator
34 import license
35 import make_runtime_features 34 import make_runtime_features
36 35
37 36
38 IDL_TEMPLATE = """
39 %(license)s
40 [
41 ImplementationLacksVTable
42 ] interface %(class_name)s {
43 %(attribute_declarations)s
44 };
45 """
46
47 HEADER_TEMPLATE = """%(license)s
48 #ifndef %(class_name)s_h
49 #define %(class_name)s_h
50
51 #include "RuntimeEnabledFeatures.h"
52 #include "wtf/PassRefPtr.h"
53 #include "wtf/RefPtr.h"
54 #include "wtf/RefCounted.h"
55
56 namespace WebCore {
57
58 class %(class_name)s : public RefCounted<%(class_name)s> {
59 public:
60 static PassRefPtr<%(class_name)s> create()
61 {
62 return adoptRef(new %(class_name)s);
63 }
64
65 %(method_declarations)s
66
67 private:
68 %(class_name)s() { }
69 };
70
71 } // namespace WebCore
72
73 #endif // %(class_name)s_h
74 """
75
76 # We want exactly the same parsing as RuntimeFeatureWriter 37 # We want exactly the same parsing as RuntimeFeatureWriter
77 # but generate different files. 38 # but generate different files.
78 class InternalRuntimeFlagsWriter(make_runtime_features.RuntimeFeatureWriter): 39 class InternalRuntimeFlagsWriter(make_runtime_features.RuntimeFeatureWriter):
79 class_name = "InternalRuntimeFlags" 40 class_name = "InternalRuntimeFlags"
80 41
81 def __init__(self, *args, **kwargs):
82 make_runtime_features.RuntimeFeatureWriter.__init__(self, *args, **kwarg s)
83 for feature in self._all_features:
84 feature['idl_attributes'] = "[Conditional=%(condition)s]" % feature if feature['condition'] else ""
85
86 def _attribute_declaration(self, feature):
87 # Currently assuming that runtime flags cannot be changed after startup
88 # it's possible that some can be and should be conditionally readonly.
89 return " %(idl_attributes)s readonly attribute boolean %(first_lowere d_name)sEnabled;" % feature
90
91 def generate_idl(self): 42 def generate_idl(self):
92 return IDL_TEMPLATE % { 43 return {
93 'class_name' : self.class_name, 44 'features': self._features,
94 'license' : license.license_for_generated_cpp(),
95 'attribute_declarations': "\n".join(map(self._attribute_declaration, self._non_custom_features))
96 } 45 }
97 46
98 def _method_declaration(self, feature):
99 # Setting after startup does not work for most runtime flags, but we
100 # could add an option to print setters for ones which do:
101 # void set%(name)sEnabled(bool isEnabled) { RuntimeEnabledFeatures::set% (name)sEnabled(isEnabled); }
102 # If we do that, we also need to respect Internals::resetToConsistentSta te.
103 declaration = """ bool %(first_lowered_name)sEnabled() { return Runti meEnabledFeatures::%(first_lowered_name)sEnabled(); }
104 """ % feature
105 return self.wrap_with_condition(declaration, feature['condition'])
106
107 def generate_header(self): 47 def generate_header(self):
108 return HEADER_TEMPLATE % { 48 return {
109 'class_name' : self.class_name, 49 'features': self._features,
110 'license' : license.license_for_generated_cpp(), 50 'feature_sets': self._feature_sets(),
111 'method_declarations' : "\n".join(map(self._method_declaration, self ._non_custom_features)),
112 } 51 }
113 52
114 def generate_implementation(self): 53 def generate_implementation(self):
115 return None 54 return None
116 55
117 56
118 if __name__ == "__main__": 57 if __name__ == "__main__":
119 in_generator.Maker(InternalRuntimeFlagsWriter).main(sys.argv) 58 in_generator.Maker(InternalRuntimeFlagsWriter).main(sys.argv)
OLDNEW
« no previous file with comments | « Source/core/scripts/in_generator.py ('k') | Source/core/scripts/make_runtime_features.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698