Index: chrome/browser/metrics/variations_service.cc |
=================================================================== |
--- chrome/browser/metrics/variations_service.cc (revision 142948) |
+++ chrome/browser/metrics/variations_service.cc (working copy) |
@@ -240,19 +240,13 @@ |
} |
if (filter.has_min_version()) { |
- const Version min_version(filter.min_version()); |
- if (!min_version.IsValid()) |
+ if (version.CompareToWildcard(filter.min_version()) < 0) |
return false; |
- if (version.CompareTo(min_version) < 0) |
- return false; |
} |
if (filter.has_max_version()) { |
- const Version max_version(filter.max_version()); |
- if (!max_version.IsValid()) |
+ if (version.CompareToWildcard(filter.max_version()) > 0) |
return false; |
- if (version.CompareTo(max_version) > 0) |
- return false; |
} |
return true; |
@@ -291,6 +285,16 @@ |
DVLOG(1) << study.name() << " has no default experiment defined."; |
return false; |
} |
+ if (study.filter().has_min_version() && |
+ !Version::IsValidWildcard(study.filter().min_version())) { |
+ DVLOG(1) << study.filter().min_version() << " invalid min version."; |
+ return false; |
+ } |
+ if (study.filter().has_max_version() && |
+ !Version::IsValidWildcard(study.filter().max_version())) { |
+ DVLOG(1) << study.filter().max_version() << " invalid max version."; |
+ return false; |
+ } |
const std::string& default_group_name = study.default_experiment_name(); |
base::FieldTrial::Probability divisor = 0; |
@@ -302,6 +306,7 @@ |
DVLOG(1) << study.name() << " is missing experiment " << i << " name"; |
return false; |
} |
+ |
if (!experiment_names.insert(study.experiment(i).name()).second) { |
DVLOG(1) << study.name() << " has a repeated experiment name " |
<< study.experiment(i).name(); |