| // Copyright 2025 The Chromium Authors | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "components/variations/feature_overrides.h" | 
 |  | 
 | namespace variations { | 
 |  | 
 | FeatureOverrides::FeatureOverrides(base::FeatureList& feature_list) | 
 |     : feature_list_(feature_list) {} | 
 |  | 
 | FeatureOverrides::~FeatureOverrides() { | 
 |   // TODO(crbug.com/379864779): This doesn't play well with potential server- | 
 |   // side overrides. | 
 |   for (const auto& field_trial_override : field_trial_overrides_) { | 
 |     feature_list_->RegisterFieldTrialOverride( | 
 |         field_trial_override.feature->name, field_trial_override.override_state, | 
 |         field_trial_override.field_trial); | 
 |   } | 
 |   feature_list_->RegisterExtraFeatureOverrides( | 
 |       std::move(overrides_), /*replace_use_default_overrides=*/true); | 
 | } | 
 |  | 
 | void FeatureOverrides::EnableFeature(const base::Feature& feature) { | 
 |   overrides_.emplace_back( | 
 |       std::cref(feature), | 
 |       base::FeatureList::OverrideState::OVERRIDE_ENABLE_FEATURE); | 
 | } | 
 |  | 
 | void FeatureOverrides::DisableFeature(const base::Feature& feature) { | 
 |   overrides_.emplace_back( | 
 |       std::cref(feature), | 
 |       base::FeatureList::OverrideState::OVERRIDE_DISABLE_FEATURE); | 
 | } | 
 |  | 
 | void FeatureOverrides::OverrideFeatureWithFieldTrial( | 
 |     const base::Feature& feature, | 
 |     base::FeatureList::OverrideState override_state, | 
 |     base::FieldTrial* field_trial) { | 
 |   field_trial_overrides_.emplace_back(FieldTrialOverride{ | 
 |       .feature = raw_ref(feature), | 
 |       .override_state = override_state, | 
 |       .field_trial = field_trial, | 
 |   }); | 
 | } | 
 |  | 
 | }  // namespace variations |