| Index: components/safe_browsing_db/safe_browsing_prefs_unittest.cc
 | 
| diff --git a/components/safe_browsing_db/safe_browsing_prefs_unittest.cc b/components/safe_browsing_db/safe_browsing_prefs_unittest.cc
 | 
| deleted file mode 100644
 | 
| index b6b3a088b455102e3f1684667242fcf6edab6d42..0000000000000000000000000000000000000000
 | 
| --- a/components/safe_browsing_db/safe_browsing_prefs_unittest.cc
 | 
| +++ /dev/null
 | 
| @@ -1,462 +0,0 @@
 | 
| -// Copyright 2016 The Chromium Authors. All rights reserved.
 | 
| -// Use of this source code is governed by a BSD-style license that can be
 | 
| -// found in the LICENSE file.
 | 
| -
 | 
| -#include <string>
 | 
| -#include <vector>
 | 
| -
 | 
| -#include "base/command_line.h"
 | 
| -#include "base/strings/string_piece.h"
 | 
| -#include "base/strings/string_util.h"
 | 
| -#include "base/test/scoped_feature_list.h"
 | 
| -#include "components/prefs/pref_registry_simple.h"
 | 
| -#include "components/prefs/testing_pref_service.h"
 | 
| -#include "components/safe_browsing_db/safe_browsing_prefs.h"
 | 
| -#include "testing/gtest/include/gtest/gtest.h"
 | 
| -
 | 
| -namespace safe_browsing {
 | 
| -
 | 
| -class SafeBrowsingPrefsTest : public ::testing::Test {
 | 
| - protected:
 | 
| -  void SetUp() override {
 | 
| -    prefs_.registry()->RegisterBooleanPref(
 | 
| -        prefs::kSafeBrowsingExtendedReportingEnabled, false);
 | 
| -    prefs_.registry()->RegisterBooleanPref(
 | 
| -        prefs::kSafeBrowsingScoutReportingEnabled, false);
 | 
| -    prefs_.registry()->RegisterBooleanPref(
 | 
| -        prefs::kSafeBrowsingScoutGroupSelected, false);
 | 
| -    prefs_.registry()->RegisterBooleanPref(
 | 
| -        prefs::kSafeBrowsingSawInterstitialExtendedReporting, false);
 | 
| -    prefs_.registry()->RegisterBooleanPref(
 | 
| -        prefs::kSafeBrowsingSawInterstitialScoutReporting, false);
 | 
| -
 | 
| -    ResetExperiments(/*can_show_scout=*/false, /*only_show_scout=*/false);
 | 
| -  }
 | 
| -
 | 
| -  void ResetPrefs(bool sber_reporting, bool scout_reporting, bool scout_group) {
 | 
| -    prefs_.SetBoolean(prefs::kSafeBrowsingExtendedReportingEnabled,
 | 
| -                      sber_reporting);
 | 
| -    prefs_.SetBoolean(prefs::kSafeBrowsingScoutReportingEnabled,
 | 
| -                      scout_reporting);
 | 
| -    prefs_.SetBoolean(prefs::kSafeBrowsingScoutGroupSelected, scout_group);
 | 
| -  }
 | 
| -
 | 
| -  void ResetExperiments(bool can_show_scout, bool only_show_scout) {
 | 
| -    std::vector<base::StringPiece> enabled_features;
 | 
| -    std::vector<base::StringPiece> disabled_features;
 | 
| -
 | 
| -    auto* target_vector =
 | 
| -        can_show_scout ? &enabled_features : &disabled_features;
 | 
| -    target_vector->push_back(kCanShowScoutOptIn.name);
 | 
| -
 | 
| -    target_vector = only_show_scout ? &enabled_features : &disabled_features;
 | 
| -    target_vector->push_back(kOnlyShowScoutOptIn.name);
 | 
| -
 | 
| -    feature_list_.reset(new base::test::ScopedFeatureList);
 | 
| -    feature_list_->InitFromCommandLine(
 | 
| -        base::JoinString(enabled_features, ","),
 | 
| -        base::JoinString(disabled_features, ","));
 | 
| -  }
 | 
| -
 | 
| -  std::string GetActivePref() { return GetExtendedReportingPrefName(prefs_); }
 | 
| -
 | 
| -  // Convenience method for explicitly setting up all combinations of prefs and
 | 
| -  // experiments.
 | 
| -  void TestGetPrefName(bool sber_reporting,
 | 
| -                       bool scout_reporting,
 | 
| -                       bool scout_group,
 | 
| -                       bool can_show_scout,
 | 
| -                       bool only_show_scout,
 | 
| -                       const std::string& expected_pref) {
 | 
| -    ResetPrefs(sber_reporting, scout_reporting, scout_group);
 | 
| -    ResetExperiments(can_show_scout, only_show_scout);
 | 
| -    EXPECT_EQ(expected_pref, GetActivePref())
 | 
| -        << "sber=" << sber_reporting << " scout=" << scout_reporting
 | 
| -        << " scout_group=" << scout_group
 | 
| -        << " can_show_scout=" << can_show_scout
 | 
| -        << " only_show_scout=" << only_show_scout;
 | 
| -  }
 | 
| -
 | 
| -  void InitPrefs() { InitializeSafeBrowsingPrefs(&prefs_); }
 | 
| -
 | 
| -  bool IsScoutGroupSelected() {
 | 
| -    return prefs_.GetBoolean(prefs::kSafeBrowsingScoutGroupSelected);
 | 
| -  }
 | 
| -
 | 
| -  void ExpectPrefs(bool sber_reporting,
 | 
| -                   bool scout_reporting,
 | 
| -                   bool scout_group) {
 | 
| -    LOG(INFO) << "Pref values: sber=" << sber_reporting
 | 
| -              << " scout=" << scout_reporting << " scout_group=" << scout_group;
 | 
| -    EXPECT_EQ(sber_reporting,
 | 
| -              prefs_.GetBoolean(prefs::kSafeBrowsingExtendedReportingEnabled));
 | 
| -    EXPECT_EQ(scout_reporting,
 | 
| -              prefs_.GetBoolean(prefs::kSafeBrowsingScoutReportingEnabled));
 | 
| -    EXPECT_EQ(scout_group,
 | 
| -              prefs_.GetBoolean(prefs::kSafeBrowsingScoutGroupSelected));
 | 
| -  }
 | 
| -
 | 
| -  void ExpectPrefsExist(bool sber_reporting,
 | 
| -                        bool scout_reporting,
 | 
| -                        bool scout_group) {
 | 
| -    LOG(INFO) << "Prefs exist: sber=" << sber_reporting
 | 
| -              << " scout=" << scout_reporting << " scout_group=" << scout_group;
 | 
| -    EXPECT_EQ(sber_reporting,
 | 
| -              prefs_.HasPrefPath(prefs::kSafeBrowsingExtendedReportingEnabled));
 | 
| -    EXPECT_EQ(scout_reporting,
 | 
| -              prefs_.HasPrefPath(prefs::kSafeBrowsingScoutReportingEnabled));
 | 
| -    EXPECT_EQ(scout_group,
 | 
| -              prefs_.HasPrefPath(prefs::kSafeBrowsingScoutGroupSelected));
 | 
| -  }
 | 
| -  TestingPrefServiceSimple prefs_;
 | 
| -
 | 
| - private:
 | 
| -  std::unique_ptr<base::test::ScopedFeatureList> feature_list_;
 | 
| -};
 | 
| -
 | 
| -// This test ensures that we correctly select between SBER and Scout as the
 | 
| -// active preference in a number of common scenarios.
 | 
| -TEST_F(SafeBrowsingPrefsTest, GetExtendedReportingPrefName_Common) {
 | 
| -  const std::string& sber = prefs::kSafeBrowsingExtendedReportingEnabled;
 | 
| -  const std::string& scout = prefs::kSafeBrowsingScoutReportingEnabled;
 | 
| -
 | 
| -  // By default (all prefs and experiment features disabled), SBER pref is used.
 | 
| -  TestGetPrefName(false, false, false, false, false, sber);
 | 
| -
 | 
| -  // Changing any prefs (including ScoutGroupSelected) keeps SBER as the active
 | 
| -  // pref because the experiment remains in the Control group.
 | 
| -  TestGetPrefName(/*sber=*/true, false, false, false, false, sber);
 | 
| -  TestGetPrefName(false, /*scout=*/true, false, false, false, sber);
 | 
| -  TestGetPrefName(false, false, /*scout_group=*/true, false, false, sber);
 | 
| -
 | 
| -  // Being in either experiment group with ScoutGroup selected makes Scout the
 | 
| -  // active pref.
 | 
| -  TestGetPrefName(false, false, /*scout_group=*/true, /*can_show_scout=*/true,
 | 
| -                  false, scout);
 | 
| -  TestGetPrefName(false, false, /*scout_group=*/true, false,
 | 
| -                  /*only_show_scout=*/true, scout);
 | 
| -
 | 
| -  // When ScoutGroup is not selected then SBER remains the active pref,
 | 
| -  // regardless which experiment is enabled.
 | 
| -  TestGetPrefName(false, false, false, /*can_show_scout=*/true, false, sber);
 | 
| -  TestGetPrefName(false, false, false, false, /*only_show_scout=*/true, sber);
 | 
| -}
 | 
| -
 | 
| -// Here we exhaustively check all combinations of pref and experiment states.
 | 
| -// This should help catch regressions.
 | 
| -TEST_F(SafeBrowsingPrefsTest, GetExtendedReportingPrefName_Exhaustive) {
 | 
| -  const std::string& sber = prefs::kSafeBrowsingExtendedReportingEnabled;
 | 
| -  const std::string& scout = prefs::kSafeBrowsingScoutReportingEnabled;
 | 
| -  TestGetPrefName(false, false, false, false, false, sber);
 | 
| -  TestGetPrefName(false, false, false, false, true, sber);
 | 
| -  TestGetPrefName(false, false, false, true, false, sber);
 | 
| -  TestGetPrefName(false, false, false, true, true, sber);
 | 
| -  TestGetPrefName(false, false, true, false, false, sber);
 | 
| -  TestGetPrefName(false, false, true, false, true, scout);
 | 
| -  TestGetPrefName(false, false, true, true, false, scout);
 | 
| -  TestGetPrefName(false, false, true, true, true, scout);
 | 
| -  TestGetPrefName(false, true, false, false, false, sber);
 | 
| -  TestGetPrefName(false, true, false, false, true, sber);
 | 
| -  TestGetPrefName(false, true, false, true, false, sber);
 | 
| -  TestGetPrefName(false, true, false, true, true, sber);
 | 
| -  TestGetPrefName(false, true, true, false, false, sber);
 | 
| -  TestGetPrefName(false, true, true, false, true, scout);
 | 
| -  TestGetPrefName(false, true, true, true, false, scout);
 | 
| -  TestGetPrefName(false, true, true, true, true, scout);
 | 
| -  TestGetPrefName(true, false, false, false, false, sber);
 | 
| -  TestGetPrefName(true, false, false, false, true, sber);
 | 
| -  TestGetPrefName(true, false, false, true, false, sber);
 | 
| -  TestGetPrefName(true, false, false, true, true, sber);
 | 
| -  TestGetPrefName(true, false, true, false, false, sber);
 | 
| -  TestGetPrefName(true, false, true, false, true, scout);
 | 
| -  TestGetPrefName(true, false, true, true, false, scout);
 | 
| -  TestGetPrefName(true, false, true, true, true, scout);
 | 
| -  TestGetPrefName(true, true, false, false, false, sber);
 | 
| -  TestGetPrefName(true, true, false, false, true, sber);
 | 
| -  TestGetPrefName(true, true, false, true, false, sber);
 | 
| -  TestGetPrefName(true, true, false, true, true, sber);
 | 
| -  TestGetPrefName(true, true, true, false, false, sber);
 | 
| -  TestGetPrefName(true, true, true, false, true, scout);
 | 
| -  TestGetPrefName(true, true, true, true, false, scout);
 | 
| -  TestGetPrefName(true, true, true, true, true, scout);
 | 
| -}
 | 
| -
 | 
| -// Basic test that command-line flags can force the ScoutGroupSelected pref on
 | 
| -// or off.
 | 
| -TEST_F(SafeBrowsingPrefsTest, InitPrefs_ForceScoutGroupOnOff) {
 | 
| -  // By default ScoutGroupSelected is off.
 | 
| -  EXPECT_FALSE(IsScoutGroupSelected());
 | 
| -
 | 
| -  // Command-line flag can force it on during initialization.
 | 
| -  base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
 | 
| -      kSwitchForceScoutGroup, "true");
 | 
| -  InitPrefs();
 | 
| -  EXPECT_TRUE(IsScoutGroupSelected());
 | 
| -
 | 
| -  // ScoutGroup remains on if switches are cleared, but only if an experiment
 | 
| -  // is active (since being in the Control group automatically clears the
 | 
| -  // Scout prefs).
 | 
| -  base::CommandLine::StringVector empty;
 | 
| -  base::CommandLine::ForCurrentProcess()->InitFromArgv(empty);
 | 
| -  ResetExperiments(/*can_show_scout=*/true, /*only_show_scout=*/false);
 | 
| -  EXPECT_TRUE(IsScoutGroupSelected());
 | 
| -
 | 
| -  // Nonsense values are ignored and ScoutGroup is unchanged.
 | 
| -  base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
 | 
| -      kSwitchForceScoutGroup, "foo");
 | 
| -  InitPrefs();
 | 
| -  EXPECT_TRUE(IsScoutGroupSelected());
 | 
| -
 | 
| -  // ScoutGroup can also be forced off during initialization.
 | 
| -  base::CommandLine::ForCurrentProcess()->InitFromArgv(empty);
 | 
| -  base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
 | 
| -      kSwitchForceScoutGroup, "false");
 | 
| -  InitPrefs();
 | 
| -  EXPECT_FALSE(IsScoutGroupSelected());
 | 
| -}
 | 
| -
 | 
| -// Test all combinations of prefs during initialization when neither experiment
 | 
| -// is on (ie: control group). In all cases the Scout prefs should be cleared,
 | 
| -// and the SBER pref may get switched.
 | 
| -TEST_F(SafeBrowsingPrefsTest, InitPrefs_Control) {
 | 
| -  // Turn both experiments off.
 | 
| -  ResetExperiments(/*can_show_scout=*/false, /*only_show_scout=*/false);
 | 
| -
 | 
| -  // Default case (everything off) - no change on init.
 | 
| -  ResetPrefs(false, false, false);
 | 
| -  InitPrefs();
 | 
| -  ExpectPrefs(false, false, false);
 | 
| -  // SBER pref exists because it was set to false above.
 | 
| -  ExpectPrefsExist(true, false, false);
 | 
| -
 | 
| -  // ScoutGroup on - SBER cleared since Scout opt-in was shown but Scout pref
 | 
| -  // was not chosen. Scout prefs cleared.
 | 
| -  ResetPrefs(false, false, true);
 | 
| -  InitPrefs();
 | 
| -  ExpectPrefs(false, false, false);
 | 
| -  ExpectPrefsExist(true, false, false);
 | 
| -
 | 
| -  // ScoutReporting on without ScoutGroup - SBER turns on since user opted-in to
 | 
| -  // broader Scout reporting, we can continue collecting the SBER subset. Scout
 | 
| -  // prefs cleared.
 | 
| -  ResetPrefs(false, true, false);
 | 
| -  InitPrefs();
 | 
| -  ExpectPrefs(true, false, false);
 | 
| -  ExpectPrefsExist(true, false, false);
 | 
| -
 | 
| -  // ScoutReporting and ScoutGroup on - SBER turns on since user opted-in to
 | 
| -  // broader Scout reporting, we can continue collecting the SBER subset. Scout
 | 
| -  // prefs cleared.
 | 
| -  ResetPrefs(false, true, true);
 | 
| -  InitPrefs();
 | 
| -  ExpectPrefs(true, false, false);
 | 
| -  ExpectPrefsExist(true, false, false);
 | 
| -
 | 
| -  // SBER on - no change on init since ScoutGroup is off implying that user
 | 
| -  // never saw Scout opt-in text. Scout prefs remain cleared.
 | 
| -  ResetPrefs(true, false, false);
 | 
| -  InitPrefs();
 | 
| -  ExpectPrefs(true, false, false);
 | 
| -  ExpectPrefsExist(true, false, false);
 | 
| -
 | 
| -  // SBER and ScoutGroup on - SBER cleared. User previously opted-in to SBER
 | 
| -  // and they saw Scout opt-in text (ie. ScoutGroup on), but chose not to opt-in
 | 
| -  // to Scout reporting. We want them to re-evaluate their choice of SBER since
 | 
| -  // the lack of Scout opt-in was a conscious choice. Scout cleared.
 | 
| -  ResetPrefs(true, false, true);
 | 
| -  InitPrefs();
 | 
| -  ExpectPrefs(false, false, false);
 | 
| -  ExpectPrefsExist(true, false, false);
 | 
| -
 | 
| -  // SBER and ScoutReporting on. User has opted-in to broader level of reporting
 | 
| -  // so SBER stays on. Scout prefs cleared.
 | 
| -  ResetPrefs(true, true, false);
 | 
| -  InitPrefs();
 | 
| -  ExpectPrefs(true, false, false);
 | 
| -  ExpectPrefsExist(true, false, false);
 | 
| -
 | 
| -  // Everything on. User has opted-in to broader level of reporting so SBER
 | 
| -  // stays on. Scout prefs cleared.
 | 
| -  ResetPrefs(true, true, true);
 | 
| -  InitPrefs();
 | 
| -  ExpectPrefs(true, false, false);
 | 
| -  ExpectPrefs(true, false, false);
 | 
| -}
 | 
| -
 | 
| -// Tests a unique case where the Extended Reporting pref will be Cleared instead
 | 
| -// of set to False in order to mimic the state of the Scout reporting pref.
 | 
| -// This happens when a user is in the OnlyShowScoutOptIn experiment but never
 | 
| -// encounters a security issue so never sees the Scout opt-in. This user then
 | 
| -// returns to the Control group having never seen the Scout opt-in, so their
 | 
| -// Scout Reporting pref is un-set. We want to return their SBER pref to the
 | 
| -// unset state as well.
 | 
| -TEST_F(SafeBrowsingPrefsTest, InitPrefs_Control_SberPrefCleared) {
 | 
| -  // Turn both experiments off.
 | 
| -  ResetExperiments(/*can_show_scout=*/false, /*only_show_scout=*/false);
 | 
| -
 | 
| -  // Set the user's old SBER pref to on to be explicit.
 | 
| -  prefs_.SetBoolean(prefs::kSafeBrowsingExtendedReportingEnabled, true);
 | 
| -  // User is in the OnlyShowScoutOptIn experiment so they go directly to the
 | 
| -  // Scout Group.
 | 
| -  prefs_.SetBoolean(prefs::kSafeBrowsingScoutGroupSelected, true);
 | 
| -  // But they never see a security popup or change the setting manually so the
 | 
| -  // Scout pref remains unset.
 | 
| -  prefs_.ClearPref(prefs::kSafeBrowsingScoutReportingEnabled);
 | 
| -
 | 
| -  InitPrefs();
 | 
| -
 | 
| -  // All pref values should be false and unset.
 | 
| -  ExpectPrefs(false, false, false);
 | 
| -  ExpectPrefsExist(false, false, false);
 | 
| -}
 | 
| -
 | 
| -// Test all combinations of prefs during initialization when the CanShowScout
 | 
| -// experiment is on.
 | 
| -TEST_F(SafeBrowsingPrefsTest, InitPrefs_CanShowScout) {
 | 
| -  // Turn the CanShowScout experiment on.
 | 
| -  ResetExperiments(/*can_show_scout=*/true, /*only_show_scout=*/false);
 | 
| -
 | 
| -  // Default case (everything off) - ScoutGroup turns on because SBER is off.
 | 
| -  ResetPrefs(false, false, false);
 | 
| -  InitPrefs();
 | 
| -  ExpectPrefs(false, false, true);
 | 
| -
 | 
| -  // ScoutGroup on - no change on init since ScoutGroup is already on.
 | 
| -  ResetPrefs(false, false, true);
 | 
| -  InitPrefs();
 | 
| -  ExpectPrefs(false, false, true);
 | 
| -
 | 
| -  // ScoutReporting on without ScoutGroup - ScoutGroup turns on because SBER is
 | 
| -  // off.
 | 
| -  ResetPrefs(false, true, false);
 | 
| -  InitPrefs();
 | 
| -  ExpectPrefs(false, true, true);
 | 
| -
 | 
| -  // ScoutReporting and ScoutGroup on - no change on init since ScoutGroup is
 | 
| -  // already on.
 | 
| -  ResetPrefs(false, true, true);
 | 
| -  InitPrefs();
 | 
| -  ExpectPrefs(false, true, true);
 | 
| -
 | 
| -  // SBER on - no change on init. Will wait for first security incident before
 | 
| -  // turning on ScoutGroup and displaying the Scout opt-in.
 | 
| -  ResetPrefs(true, false, false);
 | 
| -  InitPrefs();
 | 
| -  ExpectPrefs(true, false, false);
 | 
| -
 | 
| -  // SBER and ScoutGroup on - no change on init since ScoutGroup is already on.
 | 
| -  ResetPrefs(true, false, true);
 | 
| -  InitPrefs();
 | 
| -  ExpectPrefs(true, false, true);
 | 
| -
 | 
| -  // SBER and ScoutReporting on - no change on init because SBER is on.
 | 
| -  // ScoutGroup will turn on on next security incident.
 | 
| -  ResetPrefs(true, true, false);
 | 
| -  InitPrefs();
 | 
| -  ExpectPrefs(true, true, false);
 | 
| -
 | 
| -  // Everything on - no change on init since ScoutGroup is already on.
 | 
| -  ResetPrefs(true, true, true);
 | 
| -  InitPrefs();
 | 
| -  ExpectPrefs(true, true, true);
 | 
| -}
 | 
| -
 | 
| -// Test all combinations of prefs during initialization when the OnlyShowScout
 | 
| -// experiment is on.
 | 
| -TEST_F(SafeBrowsingPrefsTest, InitPrefs_OnlyShowScout) {
 | 
| -  // Turn the OnlyShowScout experiment on.
 | 
| -  ResetExperiments(/*can_show_scout=*/false, /*only_show_scout=*/true);
 | 
| -
 | 
| -  // Default case (everything off) - ScoutGroup turns on.
 | 
| -  ResetPrefs(false, false, false);
 | 
| -  InitPrefs();
 | 
| -  ExpectPrefs(false, false, true);
 | 
| -
 | 
| -  // ScoutGroup on - no change on init since ScoutGroup is already on.
 | 
| -  ResetPrefs(false, false, true);
 | 
| -  InitPrefs();
 | 
| -  ExpectPrefs(false, false, true);
 | 
| -
 | 
| -  // ScoutReporting on without ScoutGroup - ScoutGroup turns on.
 | 
| -  ResetPrefs(false, true, false);
 | 
| -  InitPrefs();
 | 
| -  ExpectPrefs(false, true, true);
 | 
| -
 | 
| -  // ScoutReporting and ScoutGroup on - no change on init since ScoutGroup is
 | 
| -  // already on.
 | 
| -  ResetPrefs(false, true, true);
 | 
| -  InitPrefs();
 | 
| -  ExpectPrefs(false, true, true);
 | 
| -
 | 
| -  // SBER on - ScoutGroup turns on immediately, not waiting for first security
 | 
| -  // incident.
 | 
| -  ResetPrefs(true, false, false);
 | 
| -  InitPrefs();
 | 
| -  ExpectPrefs(true, false, true);
 | 
| -
 | 
| -  // SBER and ScoutGroup on - no change on init since ScoutGroup is already on.
 | 
| -  ResetPrefs(true, false, true);
 | 
| -  InitPrefs();
 | 
| -  ExpectPrefs(true, false, true);
 | 
| -
 | 
| -  // SBER and ScoutReporting on - ScoutGroup turns on immediately, not waiting
 | 
| -  // for first security incident.
 | 
| -  ResetPrefs(true, true, false);
 | 
| -  InitPrefs();
 | 
| -  ExpectPrefs(true, true, true);
 | 
| -
 | 
| -  // Everything on - no change on init since ScoutGroup is already on.
 | 
| -  ResetPrefs(true, true, true);
 | 
| -  InitPrefs();
 | 
| -  ExpectPrefs(true, true, true);
 | 
| -}
 | 
| -
 | 
| -TEST_F(SafeBrowsingPrefsTest, ChooseOptInText) {
 | 
| -  const int kSberResource = 100;
 | 
| -  const int kScoutResource = 500;
 | 
| -  // By default, SBER opt-in is used
 | 
| -  EXPECT_EQ(kSberResource,
 | 
| -            ChooseOptInTextResource(prefs_, kSberResource, kScoutResource));
 | 
| -
 | 
| -  // Enabling Scout switches to the Scout opt-in text.
 | 
| -  ResetExperiments(/*can_show_scout=*/false, /*only_show_scout=*/true);
 | 
| -  ResetPrefs(/*sber=*/false, /*scout=*/false, /*scout_group=*/true);
 | 
| -  EXPECT_EQ(kScoutResource,
 | 
| -            ChooseOptInTextResource(prefs_, kSberResource, kScoutResource));
 | 
| -}
 | 
| -
 | 
| -TEST_F(SafeBrowsingPrefsTest, GetSafeBrowsingExtendedReportingLevel) {
 | 
| -  // By Default, SBER is off
 | 
| -  EXPECT_EQ(SBER_LEVEL_OFF, GetExtendedReportingLevel(prefs_));
 | 
| -
 | 
| -  // Opt-in to Legacy SBER gives Legacy reporting leve.
 | 
| -  ResetPrefs(/*sber=*/true, /*scout_reporting=*/false, /*scout_group=*/false);
 | 
| -  EXPECT_EQ(SBER_LEVEL_LEGACY, GetExtendedReportingLevel(prefs_));
 | 
| -
 | 
| -  // The value of the Scout pref doesn't change the reporting level if the user
 | 
| -  // is outside of the Scout Group and/or no experiment is running.
 | 
| -  // No scout group.
 | 
| -  ResetPrefs(/*sber=*/true, /*scout_reporting=*/true, /*scout_group=*/false);
 | 
| -  EXPECT_EQ(SBER_LEVEL_LEGACY, GetExtendedReportingLevel(prefs_));
 | 
| -  // Scout group but no experiment.
 | 
| -  ResetPrefs(/*sber=*/true, /*scout_reporting=*/true, /*scout_group=*/true);
 | 
| -  EXPECT_EQ(SBER_LEVEL_LEGACY, GetExtendedReportingLevel(prefs_));
 | 
| -
 | 
| -  // Remaining in the Scout Group and adding an experiment will switch to the
 | 
| -  // Scout pref to determine reporting level.
 | 
| -  ResetExperiments(/*can_show_scout=*/false, /*only_show_scout=*/true);
 | 
| -  // Both reporting prefs off, so reporting is off.
 | 
| -  ResetPrefs(/*sber=*/false, /*scout_reporting=*/false, /*scout_group=*/true);
 | 
| -  EXPECT_EQ(SBER_LEVEL_OFF, GetExtendedReportingLevel(prefs_));
 | 
| -  // Legacy pref on when we're using Scout - reporting remains off.
 | 
| -  ResetPrefs(/*sber=*/true, /*scout_reporting=*/false, /*scout_group=*/true);
 | 
| -  EXPECT_EQ(SBER_LEVEL_OFF, GetExtendedReportingLevel(prefs_));
 | 
| -  // Turning on Scout gives us Scout level reporting
 | 
| -  ResetPrefs(/*sber=*/false, /*scout_reporting=*/true, /*scout_group=*/true);
 | 
| -  EXPECT_EQ(SBER_LEVEL_SCOUT, GetExtendedReportingLevel(prefs_));
 | 
| -  // .. and the legacy pref doesn't affect this.
 | 
| -  ResetPrefs(/*sber=*/true, /*scout_reporting=*/true, /*scout_group=*/true);
 | 
| -  EXPECT_EQ(SBER_LEVEL_SCOUT, GetExtendedReportingLevel(prefs_));
 | 
| -}
 | 
| -
 | 
| -}  // namespace safe_browsing
 | 
| 
 |