Index: chrome/browser/component_updater/origin_trials_component_installer_unittest.cc |
diff --git a/chrome/browser/component_updater/origin_trials_component_installer_unittest.cc b/chrome/browser/component_updater/origin_trials_component_installer_unittest.cc |
index 34cbbf0694ed0115cd156d5232226ece4eb1fe9f..2ec11317a4601c27ac60bcddb4efe5e337123ccf 100644 |
--- a/chrome/browser/component_updater/origin_trials_component_installer_unittest.cc |
+++ b/chrome/browser/component_updater/origin_trials_component_installer_unittest.cc |
@@ -30,6 +30,8 @@ static const char kManifestOriginTrialsKey[] = "origin-trials"; |
static const char kManifestPublicKeyPath[] = "origin-trials.public-key"; |
static const char kManifestDisabledFeaturesPath[] = |
"origin-trials.disabled-features"; |
+static const char kManifestDisabledTokensPath[] = |
+ "origin-trials.disabled-tokens"; |
static const char kTestUpdateVersion[] = "1.0"; |
static const char kExistingPublicKey[] = "existing public key"; |
@@ -41,6 +43,13 @@ static const char kNewDisabledFeature1[] = "newly disabled 1"; |
static const char kNewDisabledFeature2[] = "newly disabled 2"; |
static const std::vector<std::string> kNewDisabledFeatures = { |
kNewDisabledFeature1, kNewDisabledFeature2}; |
+static const char kExistingDisabledToken[] = "already disabled token"; |
+static const std::vector<std::string> kExistingDisabledTokens = { |
+ kExistingDisabledToken}; |
+static const char kNewDisabledToken1[] = "newly disabled token 1"; |
+static const char kNewDisabledToken2[] = "newly disabled token 2"; |
+static const std::vector<std::string> kNewDisabledTokens = {kNewDisabledToken1, |
+ kNewDisabledToken2}; |
} // namespace |
@@ -101,6 +110,36 @@ class OriginTrialsComponentInstallerTest : public PlatformTest { |
} |
} |
+ void AddDisabledTokensToPrefs(const std::vector<std::string>& tokens) { |
+ base::ListValue disabled_token_list; |
+ disabled_token_list.AppendStrings(tokens); |
+ ListPrefUpdate update(local_state(), prefs::kOriginTrialDisabledTokens); |
+ update->Swap(&disabled_token_list); |
+ } |
+ |
+ void CheckDisabledTokensPrefs(const std::vector<std::string>& tokens) { |
+ ASSERT_FALSE(tokens.empty()); |
+ |
+ ASSERT_TRUE(local_state()->HasPrefPath(prefs::kOriginTrialDisabledTokens)); |
+ |
+ const base::ListValue* disabled_token_list = |
+ local_state()->GetList(prefs::kOriginTrialDisabledTokens); |
+ ASSERT_TRUE(disabled_token_list); |
+ |
+ ASSERT_EQ(tokens.size(), disabled_token_list->GetSize()); |
+ |
+ std::string disabled_token; |
+ for (size_t i = 0; i < tokens.size(); ++i) { |
+ const bool found = disabled_token_list->GetString(i, &disabled_token); |
+ EXPECT_TRUE(found) << "Entry not found or not a string at index " << i; |
+ if (!found) { |
+ continue; |
+ } |
+ EXPECT_EQ(tokens[i], disabled_token) |
+ << "Token lists differ at index " << i; |
+ } |
+ } |
+ |
PrefService* local_state() { return g_browser_process->local_state(); } |
protected: |
@@ -193,4 +232,58 @@ TEST_F(OriginTrialsComponentInstallerTest, |
CheckDisabledFeaturesPrefs(kNewDisabledFeatures); |
} |
+TEST_F(OriginTrialsComponentInstallerTest, |
+ DisabledTokensResetToDefaultWhenListMissing) { |
+ AddDisabledTokensToPrefs(kExistingDisabledTokens); |
+ ASSERT_TRUE(local_state()->HasPrefPath(prefs::kOriginTrialDisabledTokens)); |
+ |
+ // Load with empty section in manifest |
+ LoadUpdates(nullptr); |
+ |
+ EXPECT_FALSE(local_state()->HasPrefPath(prefs::kOriginTrialDisabledTokens)); |
+} |
+ |
+TEST_F(OriginTrialsComponentInstallerTest, |
+ DisabledTokensResetToDefaultWhenListEmpty) { |
+ AddDisabledTokensToPrefs(kExistingDisabledTokens); |
+ ASSERT_TRUE(local_state()->HasPrefPath(prefs::kOriginTrialDisabledTokens)); |
+ |
+ auto manifest = base::MakeUnique<base::DictionaryValue>(); |
+ auto disabled_token_list = base::MakeUnique<base::ListValue>(); |
+ manifest->Set(kManifestDisabledTokensPath, std::move(disabled_token_list)); |
+ |
+ LoadUpdates(std::move(manifest)); |
+ |
+ EXPECT_FALSE(local_state()->HasPrefPath(prefs::kOriginTrialDisabledTokens)); |
+} |
+ |
+TEST_F(OriginTrialsComponentInstallerTest, DisabledTokensSetWhenListExists) { |
+ ASSERT_FALSE(local_state()->HasPrefPath(prefs::kOriginTrialDisabledTokens)); |
+ |
+ auto manifest = base::MakeUnique<base::DictionaryValue>(); |
+ auto disabled_token_list = base::MakeUnique<base::ListValue>(); |
+ disabled_token_list->AppendString(kNewDisabledToken1); |
+ manifest->Set(kManifestDisabledTokensPath, std::move(disabled_token_list)); |
+ |
+ LoadUpdates(std::move(manifest)); |
+ |
+ std::vector<std::string> tokens = {kNewDisabledToken1}; |
+ CheckDisabledTokensPrefs(tokens); |
+} |
+ |
+TEST_F(OriginTrialsComponentInstallerTest, |
+ DisabledTokensReplacedWhenListExists) { |
+ AddDisabledTokensToPrefs(kExistingDisabledTokens); |
+ ASSERT_TRUE(local_state()->HasPrefPath(prefs::kOriginTrialDisabledTokens)); |
+ |
+ auto manifest = base::MakeUnique<base::DictionaryValue>(); |
+ auto disabled_token_list = base::MakeUnique<base::ListValue>(); |
+ disabled_token_list->AppendStrings(kNewDisabledTokens); |
+ manifest->Set(kManifestDisabledTokensPath, std::move(disabled_token_list)); |
+ |
+ LoadUpdates(std::move(manifest)); |
+ |
+ CheckDisabledTokensPrefs(kNewDisabledTokens); |
+} |
+ |
} // namespace component_updater |