Index: components/variations/study_filtering.h |
diff --git a/components/variations/study_filtering.h b/components/variations/study_filtering.h |
index 9917ec7e82826b86cb0240593e64bda3a8bd9297..a5667cdb6cb5dd0440155c3b3226e9d74d7b47bd 100644 |
--- a/components/variations/study_filtering.h |
+++ b/components/variations/study_filtering.h |
@@ -17,70 +17,67 @@ |
namespace variations { |
+struct ClientFilterableState; |
+ |
// Internal functions exposed for testing purposes only. |
namespace internal { |
// Checks whether a study is applicable for the given |channel| per |filter|. |
-bool CheckStudyChannel(const Study_Filter& filter, Study_Channel channel); |
+bool CheckStudyChannel(const Study::Filter& filter, Study::Channel channel); |
// Checks whether a study is applicable for the given |form_factor| per |
// |filter|. |
-bool CheckStudyFormFactor(const Study_Filter& filter, |
- Study_FormFactor form_factor); |
+bool CheckStudyFormFactor(const Study::Filter& filter, |
+ Study::FormFactor form_factor); |
// Checks whether a study is applicable for the given |hardware_class| per |
// |filter|. |
-bool CheckStudyHardwareClass(const Study_Filter& filter, |
+bool CheckStudyHardwareClass(const Study::Filter& filter, |
const std::string& hardware_class); |
// Checks whether a study is applicable for the given |locale| per |filter|. |
-bool CheckStudyLocale(const Study_Filter& filter, const std::string& locale); |
+bool CheckStudyLocale(const Study::Filter& filter, const std::string& locale); |
// Checks whether a study is applicable for the given |platform| per |filter|. |
-bool CheckStudyPlatform(const Study_Filter& filter, Study_Platform platform); |
+bool CheckStudyPlatform(const Study::Filter& filter, Study::Platform platform); |
// Checks whether a study is applicable for the given date/time per |filter|. |
-bool CheckStudyStartDate(const Study_Filter& filter, |
+bool CheckStudyStartDate(const Study::Filter& filter, |
const base::Time& date_time); |
// Checks whether a study is applicable for the given date/time per |filter|. |
-bool CheckStudyEndDate(const Study_Filter& filter, const base::Time& date_time); |
+bool CheckStudyEndDate(const Study::Filter& filter, |
+ const base::Time& date_time); |
// Checks whether a study is applicable for the given version per |filter|. |
-bool CheckStudyVersion(const Study_Filter& filter, |
+bool CheckStudyVersion(const Study::Filter& filter, |
const base::Version& version); |
// Checks whether a study is applicable for the given |country| per |filter|. |
-bool CheckStudyCountry(const Study_Filter& filter, const std::string& country); |
+bool CheckStudyCountry(const Study::Filter& filter, const std::string& country); |
+ |
+// Returns the country that should be used for filtering this study, depending |
+// on whether the study has session or permanent consistency. |
+const std::string& GetClientCountryForStudy( |
+ const Study& study, |
+ const ClientFilterableState& client_state); |
// Checks whether |study| is expired using the given date/time. |
bool IsStudyExpired(const Study& study, const base::Time& date_time); |
-// Returns whether |study| should be disabled according to its restriction |
-// parameters. |
+// Returns whether |study| should be disabled according to the restriction |
+// parameters in the |config|. |
bool ShouldAddStudy(const Study& study, |
- const std::string& locale, |
- const base::Time& reference_date, |
- const base::Version& version, |
- Study_Channel channel, |
- Study_FormFactor form_factor, |
- const std::string& hardware_class, |
- const std::string& country); |
+ const ClientFilterableState& client_state); |
} // namespace internal |
-// Filters the list of studies in |seed| and validates and pre-processes them, |
-// adding any kept studies to |filtered_studies| list. Ensures that the |
-// resulting list will not have more than one study with the same name. |
+// Filters the list of studies in |seed| according ot the |client_state|, and |
+// validates and pre-processes them, adding any kept studies to the |
+// |filtered_studies| list. Ensures that the resulting list will not have more |
+// than one study with the same name. |
void FilterAndValidateStudies(const VariationsSeed& seed, |
- const std::string& locale, |
- const base::Time& reference_date, |
- const base::Version& version, |
- Study_Channel channel, |
- Study_FormFactor form_factor, |
- const std::string& hardware_class, |
- const std::string& session_consistency_country, |
- const std::string& permanent_consistency_country, |
+ const ClientFilterableState& client_state, |
std::vector<ProcessedStudy>* filtered_studies); |
} // namespace variations |