processed_study.h revision f2477e01787aa58f445919b809d89e252beef54f
1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef COMPONENTS_VARIATIONS_PROCESSED_STUDY_H_
6#define COMPONENTS_VARIATIONS_PROCESSED_STUDY_H_
7
8#include <vector>
9
10#include "base/metrics/field_trial.h"
11
12namespace chrome_variations {
13
14class Study;
15
16// Wrapper over Study with extra information computed during pre-processing,
17// such as whether the study is expired and its total probability.
18class ProcessedStudy {
19 public:
20  ProcessedStudy();
21  ~ProcessedStudy();
22
23  bool Init(const Study* study, bool is_expired);
24
25  const Study* study() const { return study_; }
26
27  base::FieldTrial::Probability total_probability() const {
28    return total_probability_;
29  }
30
31  bool is_expired() const { return is_expired_; }
32
33  static bool ValidateAndAppendStudy(
34      const Study* study,
35      bool is_expired,
36      std::vector<ProcessedStudy>* processed_studies);
37
38 private:
39  // Corresponding Study object. Weak reference.
40  const Study* study_;
41
42  // Computed total group probability for the study.
43  base::FieldTrial::Probability total_probability_;
44
45  // Whether the study is expired.
46  bool is_expired_;
47};
48
49}  // namespace chrome_variations
50
51#endif  // COMPONENTS_VARIATIONS_PROCESSED_STUDY_H_
52