12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- // Copyright 2020 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef COMPONENTS_VARIATIONS_VARIATIONS_LAYERS_H_
- #define COMPONENTS_VARIATIONS_VARIATIONS_LAYERS_H_
- #include <map>
- #include "base/component_export.h"
- #include "base/metrics/field_trial.h"
- #include "components/variations/proto/variations_seed.pb.h"
- #include "third_party/abseil-cpp/absl/types/optional.h"
- namespace variations {
- // Parses out the Variations Layers data from the provided seed and
- // chooses which member within each layer should be the active one.
- class COMPONENT_EXPORT(VARIATIONS) VariationsLayers {
- public:
- VariationsLayers(
- const VariationsSeed& seed,
- const base::FieldTrial::EntropyProvider* low_entropy_provider);
- VariationsLayers();
- ~VariationsLayers();
- VariationsLayers(const VariationsLayers&) = delete;
- VariationsLayers& operator=(const VariationsLayers&) = delete;
- // Return whether the given layer has the given member active.
- bool IsLayerMemberActive(uint32_t layer_id, uint32_t member_id) const;
- // Return whether the layer should use the default entropy source
- // (usually the high entropy source).
- bool IsLayerUsingDefaultEntropy(uint32_t layer_id) const;
- private:
- void ConstructLayer(
- const base::FieldTrial::EntropyProvider& low_entropy_provider,
- const Layer& layer_proto);
- struct LayerInfo {
- LayerInfo(absl::optional<uint32_t> active_member_id,
- Layer::EntropyMode entropy_mode);
- ~LayerInfo();
- LayerInfo(const LayerInfo& other); // = delete;
- LayerInfo& operator=(const LayerInfo&) = delete;
- absl::optional<uint32_t> active_member_id;
- Layer::EntropyMode entropy_mode;
- };
- std::map<uint32_t, LayerInfo> active_member_for_layer_;
- };
- } // namespace variations
- #endif // COMPONENTS_VARIATIONS_VARIATIONS_LAYERS_H_
|