optimization_guide_permissions_util_unittest.cc 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. // Copyright 2019 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 "components/optimization_guide/core/optimization_guide_permissions_util.h"
  5. #include "base/command_line.h"
  6. #include "base/test/scoped_feature_list.h"
  7. #include "base/test/task_environment.h"
  8. #include "components/optimization_guide/core/optimization_guide_features.h"
  9. #include "components/sync_preferences/testing_pref_service_syncable.h"
  10. #include "components/unified_consent/pref_names.h"
  11. #include "components/unified_consent/unified_consent_service.h"
  12. #include "testing/gtest/include/gtest/gtest.h"
  13. namespace optimization_guide {
  14. class OptimizationGuidePermissionsUtilTest : public testing::Test {
  15. public:
  16. void SetUp() override {
  17. unified_consent::UnifiedConsentService::RegisterPrefs(
  18. pref_service_.registry());
  19. }
  20. void SetUrlKeyedAnonymizedDataCollectionEnabled(bool enabled) {
  21. pref_service_.SetBoolean(
  22. unified_consent::prefs::kUrlKeyedAnonymizedDataCollectionEnabled,
  23. enabled);
  24. }
  25. PrefService* pref_service() { return &pref_service_; }
  26. private:
  27. base::test::TaskEnvironment task_environment_;
  28. sync_preferences::TestingPrefServiceSyncable pref_service_;
  29. };
  30. TEST_F(OptimizationGuidePermissionsUtilTest,
  31. IsUserPermittedToFetchHintsDefaultUser) {
  32. base::test::ScopedFeatureList scoped_feature_list;
  33. scoped_feature_list.InitAndEnableFeature(
  34. {optimization_guide::features::kRemoteOptimizationGuideFetching});
  35. EXPECT_FALSE(IsUserPermittedToFetchFromRemoteOptimizationGuide(
  36. /*is_off_the_record=*/false, pref_service()));
  37. }
  38. TEST_F(
  39. OptimizationGuidePermissionsUtilTest,
  40. IsUserPermittedToFetchHintsDefaultUserAnonymousDataCollectionEnabledFeatureEnabled) {
  41. base::test::ScopedFeatureList scoped_feature_list;
  42. scoped_feature_list.InitWithFeatures(
  43. {optimization_guide::features::kRemoteOptimizationGuideFetching,
  44. optimization_guide::features::
  45. kRemoteOptimizationGuideFetchingAnonymousDataConsent},
  46. {});
  47. SetUrlKeyedAnonymizedDataCollectionEnabled(true);
  48. EXPECT_TRUE(IsUserPermittedToFetchFromRemoteOptimizationGuide(
  49. /*is_off_the_record=*/false, pref_service()));
  50. }
  51. TEST_F(OptimizationGuidePermissionsUtilTest,
  52. IsUserPermittedToFetchHintsDefaultUserAnonymousDataCollectionDisabled) {
  53. base::test::ScopedFeatureList scoped_feature_list;
  54. scoped_feature_list.InitWithFeatures(
  55. {optimization_guide::features::kRemoteOptimizationGuideFetching,
  56. optimization_guide::features::
  57. kRemoteOptimizationGuideFetchingAnonymousDataConsent},
  58. {});
  59. SetUrlKeyedAnonymizedDataCollectionEnabled(false);
  60. EXPECT_FALSE(IsUserPermittedToFetchFromRemoteOptimizationGuide(
  61. /*is_off_the_record=*/false, pref_service()));
  62. }
  63. TEST_F(
  64. OptimizationGuidePermissionsUtilTest,
  65. IsUserPermittedToFetchHintsDefaultUserAnonymousDataCollectionEnabledFeatureNotEnabled) {
  66. base::test::ScopedFeatureList scoped_feature_list;
  67. scoped_feature_list.InitWithFeatures(
  68. {optimization_guide::features::kRemoteOptimizationGuideFetching},
  69. {optimization_guide::features::
  70. kRemoteOptimizationGuideFetchingAnonymousDataConsent});
  71. SetUrlKeyedAnonymizedDataCollectionEnabled(true);
  72. EXPECT_FALSE(IsUserPermittedToFetchFromRemoteOptimizationGuide(
  73. /*is_off_the_record=*/false, pref_service()));
  74. }
  75. TEST_F(OptimizationGuidePermissionsUtilTest,
  76. IsUserPermittedToFetchHintsAllConsentsEnabledButHintsFetchingDisabled) {
  77. base::test::ScopedFeatureList scoped_feature_list;
  78. scoped_feature_list.InitWithFeatures(
  79. {}, {optimization_guide::features::kRemoteOptimizationGuideFetching});
  80. SetUrlKeyedAnonymizedDataCollectionEnabled(true);
  81. EXPECT_FALSE(IsUserPermittedToFetchFromRemoteOptimizationGuide(
  82. /*is_off_the_record=*/false, pref_service()));
  83. }
  84. TEST_F(OptimizationGuidePermissionsUtilTest,
  85. IsUserPermittedToFetchHintsPerformanceInfoFlagExplicitlyAllows) {
  86. base::test::ScopedFeatureList scoped_feature_list;
  87. scoped_feature_list.InitWithFeatures(
  88. {optimization_guide::features::kRemoteOptimizationGuideFetching,
  89. optimization_guide::features::
  90. kContextMenuPerformanceInfoAndRemoteHintFetching},
  91. {});
  92. SetUrlKeyedAnonymizedDataCollectionEnabled(false);
  93. EXPECT_TRUE(IsUserPermittedToFetchFromRemoteOptimizationGuide(
  94. /*is_off_the_record=*/false, pref_service()));
  95. }
  96. TEST_F(OptimizationGuidePermissionsUtilTest,
  97. IsUserPermittedToFetchHintsAllConsentsEnabledIncognitoProfile) {
  98. base::test::ScopedFeatureList scoped_feature_list;
  99. scoped_feature_list.InitWithFeatures(
  100. {optimization_guide::features::kRemoteOptimizationGuideFetching,
  101. optimization_guide::features::
  102. kRemoteOptimizationGuideFetchingAnonymousDataConsent,
  103. optimization_guide::features::
  104. kContextMenuPerformanceInfoAndRemoteHintFetching},
  105. {});
  106. SetUrlKeyedAnonymizedDataCollectionEnabled(true);
  107. EXPECT_FALSE(IsUserPermittedToFetchFromRemoteOptimizationGuide(
  108. /*is_off_the_record=*/true, pref_service()));
  109. }
  110. } // namespace optimization_guide