{% from 'templates/macros.tmpl' import license, source_files_for_generated_file %}
{{license()}}

{{source_files_for_generated_file(template_file, input_files)}}

#ifndef {{header_guard}}
#define {{header_guard}}

#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
#include "third_party/blink/renderer/platform/wtf/assertions.h"

namespace blink {

// Don't use this class directly. Use Scoped*ForTest instead.
class RuntimeEnabledFeaturesTestHelpers {
 public:
  template <bool& data_member>
  class ScopedRuntimeEnabledFeature {
   public:
    ScopedRuntimeEnabledFeature(bool enabled)
        : enabled_(enabled), original_(data_member) { data_member = enabled; }
    ~ScopedRuntimeEnabledFeature() {
      CHECK_EQ(enabled_, data_member);
      data_member = original_;
    }
   private:
    bool enabled_;
    bool original_;
  };

  {% for feature in features %}
  using Scoped{{feature.name}} = ScopedRuntimeEnabledFeature<
      RuntimeEnabledFeatures::{{feature.data_member_name}}>;
  {% endfor %}
};

{% for feature in features %}
using Scoped{{feature.name}}ForTest =
    RuntimeEnabledFeaturesTestHelpers::Scoped{{feature.name}};
{% endfor %}
}  // namespace blink

#endif  // {{header_guard}}
