blob: 36a7772855a13664b56804dc8fc91c4fd146ea5f [file] [log] [blame]
{% from 'macros.tmpl' import license %}
{{license()}}
#include "core/origin_trials/OriginTrials.h"
#include "core/dom/ExecutionContext.h"
#include "core/origin_trials/OriginTrialContext.h"
#include "platform/RuntimeEnabledFeatures.h"
namespace blink {
OriginTrials::OriginTrials(RawPtr<OriginTrialContext> originTrialContext)
: m_originTrialContext(originTrialContext) {}
// static
const char* OriginTrials::supplementName()
{
return "OriginTrials";
}
// static
OriginTrials* OriginTrials::from(ExecutionContext* host)
{
OriginTrials* originTrials = reinterpret_cast<OriginTrials*>(Supplement<ExecutionContext>::from(host, supplementName()));
if (!originTrials) {
originTrials = new OriginTrials(host->createOriginTrialContext());
Supplement<ExecutionContext>::provideTo(*host, supplementName(), originTrials);
}
return originTrials;
}
{% for feature in features %}
{% if feature.origin_trial_feature_name %}
// static
bool OriginTrials::{{feature.first_lowered_name}}Enabled(ExecutionContext* executionContext, String& errorMessage) {
return OriginTrials::from(executionContext)->{{feature.first_lowered_name}}EnabledImpl(&errorMessage);
}
// static
bool OriginTrials::{{feature.first_lowered_name}}Enabled(ExecutionContext* executionContext) {
return OriginTrials::from(executionContext)->{{feature.first_lowered_name}}EnabledImpl(nullptr);
}
{% endif %}
{% endfor %}
{% for feature in features %}
{% if feature.origin_trial_feature_name %}
bool OriginTrials::{{feature.first_lowered_name}}EnabledImpl(String* errorMessage) {
if (RuntimeEnabledFeatures::{{feature.first_lowered_name}}Enabled())
return true;
if (!m_originTrialContext) return false;
return m_originTrialContext->isFeatureEnabled("{{feature.origin_trial_feature_name}}", errorMessage);
}
{% endif %}
{% endfor %}
DEFINE_TRACE(OriginTrials)
{
visitor->trace(m_originTrialContext);
Supplement<ExecutionContext>::trace(visitor);
}
} // namespace blink