Home | History | Annotate | Download | only in variations
      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 <string>
      9 #include <vector>
     10 
     11 #include "base/metrics/field_trial.h"
     12 
     13 namespace variations {
     14 
     15 class Study;
     16 
     17 // Wrapper over Study with extra information computed during pre-processing,
     18 // such as whether the study is expired and its total probability.
     19 class ProcessedStudy {
     20  public:
     21   ProcessedStudy();
     22   ~ProcessedStudy();
     23 
     24   bool Init(const Study* study, bool is_expired);
     25 
     26   const Study* study() const { return study_; }
     27 
     28   base::FieldTrial::Probability total_probability() const {
     29     return total_probability_;
     30   }
     31 
     32   bool is_expired() const { return is_expired_; }
     33 
     34   // Gets the index of the experiment with the given |name|. Returns -1 if no
     35   // experiment is found.
     36   int GetExperimentIndexByName(const std::string& name) const;
     37 
     38   static bool ValidateAndAppendStudy(
     39       const Study* study,
     40       bool is_expired,
     41       std::vector<ProcessedStudy>* processed_studies);
     42 
     43  private:
     44   // Corresponding Study object. Weak reference.
     45   const Study* study_;
     46 
     47   // Computed total group probability for the study.
     48   base::FieldTrial::Probability total_probability_;
     49 
     50   // Whether the study is expired.
     51   bool is_expired_;
     52 };
     53 
     54 }  // namespace variations
     55 
     56 #endif  // COMPONENTS_VARIATIONS_PROCESSED_STUDY_H_
     57