| 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 13e1f9b7610d2bae1c8c19ca0a791e5ceba827be..dd49157b932620bd7277807908503c2c8eb98920 100755
|
| --- a/Source/core/scripts/make_runtime_features.py
|
| +++ b/Source/core/scripts/make_runtime_features.py
|
| @@ -33,41 +33,9 @@ import sys
|
| from in_file import InFile
|
| import in_generator
|
| import license
|
| +import template_expander
|
|
|
|
|
| -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:
|
| -%(method_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 {
|
| -
|
| -%(storage_definitions)s
|
| -
|
| -} // namespace WebCore
|
| -"""
|
| -
|
| class RuntimeFeatureWriter(in_generator.Writer):
|
| class_name = "RuntimeEnabledFeatures"
|
| defaults = {
|
| @@ -79,9 +47,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.
|
| @@ -89,7 +57,6 @@ 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)
|
|
|
| def _lower_first(self, string):
|
| lowered = string[0].lower() + string[1:]
|
| @@ -97,42 +64,19 @@ class RuntimeFeatureWriter(in_generator.Writer):
|
| lowered = lowered.replace("iME", "ime")
|
| return lowered
|
|
|
| - def _method_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,
|
| + params = {
|
| 'license' : license.license_for_generated_cpp(),
|
| - 'method_declarations' : "\n".join(map(self._method_declaration, self._all_features)),
|
| - 'storage_declarations' : "\n".join(map(self._storage_declarations, self._non_custom_features)),
|
| + 'features' : self._features
|
| }
|
| -
|
| - def _storage_definition(self, feature):
|
| - definition = "bool RuntimeEnabledFeatures::is%(name)sEnabled = %(default)s;" % feature
|
| - return self.wrap_with_condition(definition, feature['condition'])
|
| + return template_expander.applytemplate("../page/RuntimeEnabledFeatures.h.tmpl", params)
|
|
|
| def generate_implementation(self):
|
| - return IMPLEMENTATION_TEMPLATE % {
|
| - 'class_name' : self.class_name,
|
| + params = {
|
| 'license' : license.license_for_generated_cpp(),
|
| - 'storage_definitions' : "\n".join(map(self._storage_definition, self._non_custom_features)),
|
| + 'features' : self._features
|
| }
|
| + return template_expander.applytemplate("../page/RuntimeEnabledFeatures.cpp.tmpl", params)
|
|
|
|
|
| if __name__ == "__main__":
|
|
|