chrome_browser_field_trials_unittest.cc 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // Copyright 2022 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. #include "chrome/browser/chrome_browser_field_trials.h"
  5. #include <memory>
  6. #include "base/feature_list.h"
  7. #include "components/prefs/testing_pref_service.h"
  8. #include "components/ukm/ukm_recorder_impl.h"
  9. #include "testing/gtest/include/gtest/gtest.h"
  10. #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID)
  11. TEST(ChromeBrowserFieldTrialsTest, SamplingTrials) {
  12. TestingPrefServiceSimple local_state;
  13. ChromeBrowserFieldTrials chrome_browser_field_trials(&local_state);
  14. const char kSamplingTrialName[] = "MetricsAndCrashSampling";
  15. #if BUILDFLAG(IS_ANDROID)
  16. const char kPostFREFixSamplingTrialName[] =
  17. "PostFREFixMetricsAndCrashSampling";
  18. #endif // BUILDFLAG(IS_ANDROID)
  19. const char kUkmSamplingTrialName[] = "UkmSamplingRate";
  20. // Verify that initially, sampling trials do not exist.
  21. EXPECT_FALSE(base::FieldTrialList::TrialExists(kSamplingTrialName));
  22. #if BUILDFLAG(IS_ANDROID)
  23. EXPECT_FALSE(base::FieldTrialList::TrialExists(kPostFREFixSamplingTrialName));
  24. #endif // BUILDFLAG(IS_ANDROID)
  25. EXPECT_FALSE(base::FieldTrialList::TrialExists(kUkmSamplingTrialName));
  26. // Call SetUpFeatureControllingFieldTrials(), which should create fallback
  27. // sampling trials since they do not exist yet.
  28. auto feature_list = std::make_unique<base::FeatureList>();
  29. chrome_browser_field_trials.SetUpFeatureControllingFieldTrials(
  30. /*has_seed=*/false, /*low_entropy_provider=*/nullptr, feature_list.get());
  31. // Verify that the sampling trials were created.
  32. EXPECT_TRUE(base::FieldTrialList::TrialExists(kSamplingTrialName));
  33. #if BUILDFLAG(IS_ANDROID)
  34. EXPECT_TRUE(base::FieldTrialList::TrialExists(kPostFREFixSamplingTrialName));
  35. #endif // BUILDFLAG(IS_ANDROID)
  36. EXPECT_TRUE(base::FieldTrialList::TrialExists(kUkmSamplingTrialName));
  37. // Call SetUpFeatureControllingFieldTrials() again. This should be a no-op,
  38. // since the sampling trials already exist. If the trials are created again,
  39. // a CHECK will be triggered and this will crash.
  40. chrome_browser_field_trials.SetUpFeatureControllingFieldTrials(
  41. /*has_seed=*/false, /*low_entropy_provider=*/nullptr, feature_list.get());
  42. }
  43. #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID)