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

Unified Diff: Source/core/scripts/make_runtime_features.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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/scripts/make_internal_runtime_flags.py ('k') | Source/core/scripts/template_expander.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/scripts/make_runtime_features.py
diff --git a/Source/core/scripts/make_runtime_features.py b/Source/core/scripts/make_runtime_features.py
index 6b108926df2730b982a81021f70b7d9971124a90..940843bfcffaadc558ca3641232587b7df1cdbfe 100755
--- a/Source/core/scripts/make_runtime_features.py
+++ b/Source/core/scripts/make_runtime_features.py
@@ -32,45 +32,8 @@ import sys
from in_file import InFile
import in_generator
-import license
-HEADER_TEMPLATE = """%(license)s
-#ifndef %(class_name)s_h
-#define %(class_name)s_h
-
-namespace WebCore {
-
-// A class that stores static enablers for all experimental features.
-
-class %(class_name)s {
-public:
-%(set_toggle_declarations)s
-
-%(accessor_declarations)s
-private:
- %(class_name)s() { }
-
-%(storage_declarations)s
-};
-
-} // namespace WebCore
-
-#endif // %(class_name)s_h
-"""
-
-IMPLEMENTATION_TEMPLATE = """%(license)s
-#include "config.h"
-#include "%(class_name)s.h"
-
-namespace WebCore {
-
-%(set_toggle_definitions)s
-%(storage_definitions)s
-
-} // namespace WebCore
-"""
-
class RuntimeFeatureWriter(in_generator.Writer):
class_name = 'RuntimeEnabledFeatures'
@@ -87,9 +50,9 @@ class RuntimeFeatureWriter(in_generator.Writer):
def __init__(self, in_file_path):
super(RuntimeFeatureWriter, self).__init__(in_file_path)
- self._all_features = self.in_file.name_dictionaries
+ self._features = self.in_file.name_dictionaries
# Make sure the resulting dictionaries have all the keys we expect.
- for feature in self._all_features:
+ for feature in self._features:
feature['first_lowered_name'] = self._lower_first(feature['name'])
# Most features just check their isFooEnabled bool
# but some depend on more than one bool.
@@ -97,7 +60,7 @@ class RuntimeFeatureWriter(in_generator.Writer):
for dependant_name in feature['depends_on']:
enabled_condition += " && is%sEnabled" % dependant_name
feature['enabled_condition'] = enabled_condition
- self._non_custom_features = filter(lambda feature: not feature['custom'], self._all_features)
+ self._non_custom_features = filter(lambda feature: not feature['custom'], self._features)
def _lower_first(self, string):
lowered = string[0].lower() + string[1:]
@@ -105,67 +68,21 @@ class RuntimeFeatureWriter(in_generator.Writer):
lowered = lowered.replace("iME", "ime")
return lowered
- def _feature_set_declaration(self, feature_set):
- return " static void set%sFeaturesEnabled(bool);" % feature_set.capitalize()
-
- def _feature_accessor_declaration(self, feature):
- if feature['custom']:
- return " static bool %(first_lowered_name)sEnabled();\n" % feature
- unconditional = """ static void set%(name)sEnabled(bool isEnabled) { is%(name)sEnabled = isEnabled; }
- static bool %(first_lowered_name)sEnabled() { return %(enabled_condition)s; }
-"""
- conditional = "#if ENABLE(%(condition)s)\n" + unconditional + """#else
- static void set%(name)sEnabled(bool) { }
- static bool %(first_lowered_name)sEnabled() { return false; }
-#endif
-"""
- template = conditional if feature['condition'] else unconditional
- return template % feature
-
- def _storage_declarations(self, feature):
- declaration = " static bool is%(name)sEnabled;" % feature
- return self.wrap_with_condition(declaration, feature['condition'])
-
- def generate_header(self):
- return HEADER_TEMPLATE % {
- 'class_name' : self.class_name,
- 'license' : license.license_for_generated_cpp(),
- 'set_toggle_declarations' : "\n".join(map(self._feature_set_declaration, self._feature_sets())),
- 'accessor_declarations' : "\n".join(map(self._feature_accessor_declaration, self._all_features)),
- 'storage_declarations' : "\n".join(map(self._storage_declarations, self._non_custom_features)),
- }
-
def _feature_sets(self):
# Another way to think of the status levels is as "sets of features"
# which is how we're referring to them in this generator.
return self.valid_values['status']
- def _feature_toggle(self, feature):
- return " set%(name)sEnabled(enable);" % feature
-
- def _feature_set_definition(self, feature_set):
- features_in_set = filter(lambda feature: feature['status'] == feature_set, self._all_features)
- template = """void %(class_name)s::set%(feature_set)sFeaturesEnabled(bool enable)
-{
-%(feature_toggles)s
-}
-"""
- return template % {
- 'class_name': self.class_name,
- 'feature_set': feature_set.capitalize(),
- 'feature_toggles': "\n".join(map(self._feature_toggle, features_in_set)),
+ def generate_header(self):
+ return {
+ 'features': self._features,
+ 'feature_sets': self._feature_sets(),
}
- def _storage_definition(self, feature):
- definition = "bool RuntimeEnabledFeatures::is%(name)sEnabled = false;" % feature
- return self.wrap_with_condition(definition, feature['condition'])
-
def generate_implementation(self):
- return IMPLEMENTATION_TEMPLATE % {
- 'class_name' : self.class_name,
- 'license' : license.license_for_generated_cpp(),
- 'set_toggle_definitions' : '\n'.join(map(self._feature_set_definition, self._feature_sets())),
- 'storage_definitions' : '\n'.join(map(self._storage_definition, self._non_custom_features)),
+ return {
+ 'features': self._features,
+ 'feature_sets': self._feature_sets(),
}
« no previous file with comments | « Source/core/scripts/make_internal_runtime_flags.py ('k') | Source/core/scripts/template_expander.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698