Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(880)

Unified Diff: chrome/browser/component_updater/origin_trials_component_installer_unittest.cc

Issue 2733023002: [Origin Trials] Support updates of disabled token list (Closed)
Patch Set: Address comments Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 6fe5938b3f02cbcaf220032b040257e337df5ba8..b9c17c197b5d589dd8b9ad2eebff6d79ee12f495 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,10 @@ 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 kManifestDisabledTokenSignaturesPath[] =
+ "origin-trials.disabled-tokens.signatures";
static const char kTestUpdateVersion[] = "1.0";
static const char kExistingPublicKey[] = "existing public key";
@@ -41,6 +45,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
@@ -62,7 +73,7 @@ class OriginTrialsComponentInstallerTest : public PlatformTest {
void LoadUpdates(std::unique_ptr<base::DictionaryValue> manifest) {
if (!manifest) {
manifest = base::MakeUnique<base::DictionaryValue>();
- manifest->SetString(kManifestOriginTrialsKey, "");
+ manifest->Set(kManifestOriginTrialsKey, base::MakeUnique<base::Value>());
}
ASSERT_TRUE(traits_->VerifyInstallation(*manifest, temp_dir_.GetPath()));
const base::Version expected_version(kTestUpdateVersion);
@@ -101,6 +112,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:
@@ -114,8 +155,7 @@ class OriginTrialsComponentInstallerTest : public PlatformTest {
TEST_F(OriginTrialsComponentInstallerTest,
PublicKeyResetToDefaultWhenOverrideMissing) {
- local_state()->Set(prefs::kOriginTrialPublicKey,
- base::Value(kExistingPublicKey));
+ local_state()->SetString(prefs::kOriginTrialPublicKey, kExistingPublicKey);
ASSERT_EQ(kExistingPublicKey,
local_state()->GetString(prefs::kOriginTrialPublicKey));
@@ -193,4 +233,75 @@ 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,
+ DisabledTokensResetToDefaultWhenKeyExistsAndListMissing) {
+ AddDisabledTokensToPrefs(kExistingDisabledTokens);
+ ASSERT_TRUE(local_state()->HasPrefPath(prefs::kOriginTrialDisabledTokens));
+
+ // Load with disabled tokens key in manifest, but no list values
+ auto manifest = base::MakeUnique<base::DictionaryValue>();
+ manifest->Set(kManifestDisabledTokensPath, base::MakeUnique<base::Value>());
+
+ LoadUpdates(std::move(manifest));
+
+ 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(kManifestDisabledTokenSignaturesPath,
+ 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(kManifestDisabledTokenSignaturesPath,
+ 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(kManifestDisabledTokenSignaturesPath,
+ std::move(disabled_token_list));
+
+ LoadUpdates(std::move(manifest));
+
+ CheckDisabledTokensPrefs(kNewDisabledTokens);
+}
+
} // namespace component_updater
« no previous file with comments | « chrome/browser/component_updater/origin_trials_component_installer.cc ('k') | chrome/browser/prefs/origin_trial_prefs.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698