| OLD | NEW |
| (Empty) |
| 1 // Copyright 2016 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 #include "components/previews/previews_experiments.h" | |
| 6 | |
| 7 #include <map> | |
| 8 #include <string> | |
| 9 | |
| 10 #include "base/metrics/field_trial.h" | |
| 11 #include "base/strings/string_util.h" | |
| 12 #include "components/variations/variations_associated_data.h" | |
| 13 | |
| 14 namespace { | |
| 15 | |
| 16 // The group of client-side previews experiments. | |
| 17 const char kClientSidePreviewsFieldTrial[] = "ClientSidePreviews"; | |
| 18 | |
| 19 const char kEnabled[] = "Enabled"; | |
| 20 | |
| 21 // Allow offline pages to show for prohibitively slow networks. | |
| 22 const char kOfflinePagesSlowNetwork[] = "show_offline_pages"; | |
| 23 | |
| 24 // The string that corresponds to enabled for the variation param experiments. | |
| 25 const char kExperimentEnabled[] = "true"; | |
| 26 | |
| 27 } // namespace | |
| 28 | |
| 29 namespace previews { | |
| 30 | |
| 31 bool IsIncludedInClientSidePreviewsExperimentsFieldTrial() { | |
| 32 // By convention, an experiment in the client-side previews study enables use | |
| 33 // of at least one client-side previews optimization if its name begins with | |
| 34 // "Enabled." | |
| 35 return base::StartsWith( | |
| 36 base::FieldTrialList::FindFullName(kClientSidePreviewsFieldTrial), | |
| 37 kEnabled, base::CompareCase::SENSITIVE); | |
| 38 } | |
| 39 | |
| 40 bool IsOfflinePreviewsEnabled() { | |
| 41 if (!IsIncludedInClientSidePreviewsExperimentsFieldTrial()) | |
| 42 return false; | |
| 43 std::map<std::string, std::string> experiment_params; | |
| 44 if (!variations::GetVariationParams(kClientSidePreviewsFieldTrial, | |
| 45 &experiment_params)) { | |
| 46 return false; | |
| 47 } | |
| 48 std::map<std::string, std::string>::const_iterator it = | |
| 49 experiment_params.find(kOfflinePagesSlowNetwork); | |
| 50 return it != experiment_params.end() && it->second == kExperimentEnabled; | |
| 51 } | |
| 52 | |
| 53 bool EnableOfflinePreviewsForTesting() { | |
| 54 std::map<std::string, std::string> params; | |
| 55 params[kOfflinePagesSlowNetwork] = kExperimentEnabled; | |
| 56 return variations::AssociateVariationParams(kClientSidePreviewsFieldTrial, | |
| 57 kEnabled, params) && | |
| 58 base::FieldTrialList::CreateFieldTrial(kClientSidePreviewsFieldTrial, | |
| 59 kEnabled); | |
| 60 } | |
| 61 | |
| 62 } // namespace previews | |
| OLD | NEW |