blob: d3993f271fea812014d611a4a64fe3813afcf000 [file] [log] [blame] [edit]
{% from 'macros.tmpl' import license %}
{{license()}}
#include "config.h"
#include "platform/RuntimeEnabledFeatures.h"
#include "wtf/Assertions.h"
#include "wtf/text/WTFString.h"
namespace {
bool caseInsensitiveEqual(const std::string& a, const std::string& b)
{
if (a.size() != b.size())
return false;
for (size_t i = 0; i < a.size(); ++i) {
if (tolower(a[i]) != tolower(b[i]))
return false;
}
return true;
}
} // namespace
namespace blink {
{% for feature_set in feature_sets %}
void RuntimeEnabledFeatures::set{{feature_set|capitalize}}FeaturesEnabled(bool enable)
{
{% for feature in features if feature.status == feature_set %}
set{{feature.name}}Enabled(enable);
{% endfor %}
}
{% endfor %}
void RuntimeEnabledFeatures::setFeatureEnabledFromString(const std::string& name, bool isEnabled)
{
{% for feature in features if not feature.custom %}
{% filter enable_conditional(feature.condition) %}
if (caseInsensitiveEqual(name, "{{feature.name}}")) {
set{{feature.name}}Enabled(isEnabled);
return;
}
{% endfilter %}
{% endfor %}
WTF_LOG_ERROR("RuntimeEnabledFeature not recognized: %s", name.c_str());
}
{% for feature in features if not feature.custom %}
{% filter enable_conditional(feature.condition) %}
bool RuntimeEnabledFeatures::is{{feature.name}}Enabled = {{'true' if feature.status == 'stable' else 'false'}};
{% endfilter %}
{% endfor %}
} // namespace blink