Index: chrome/browser/metrics/variations/variations_seed_store_unittest.cc |
diff --git a/chrome/browser/metrics/variations/variations_seed_store_unittest.cc b/chrome/browser/metrics/variations/variations_seed_store_unittest.cc |
index 3bd30351bc998b5cc0c811eb996eed8252d4e889..f9f92b0c07f7e65a501b11665c5fac3d2d6bed8f 100644 |
--- a/chrome/browser/metrics/variations/variations_seed_store_unittest.cc |
+++ b/chrome/browser/metrics/variations/variations_seed_store_unittest.cc |
@@ -23,7 +23,8 @@ class TestVariationsSeedStore : public VariationsSeedStore { |
~TestVariationsSeedStore() override {} |
bool StoreSeedForTesting(const std::string& seed_data) { |
- return StoreSeedData(seed_data, std::string(), base::Time::Now(), NULL); |
+ return StoreSeedData(seed_data, std::string(), std::string(), |
+ base::Time::Now(), false, nullptr); |
} |
VariationsSeedStore::VerifySignatureResult VerifySeedSignature( |
@@ -209,7 +210,8 @@ TEST(VariationsSeedStoreTest, StoreSeedData_ParsedSeed) { |
variations::VariationsSeed parsed_seed; |
EXPECT_TRUE(seed_store.StoreSeedData(serialized_seed, std::string(), |
- base::Time::Now(), &parsed_seed)); |
+ std::string(), base::Time::Now(), false, |
+ &parsed_seed)); |
EXPECT_EQ(serialized_seed, SerializeSeed(parsed_seed)); |
} |
@@ -268,4 +270,43 @@ TEST(VariationsSeedStoreTest, VerifySeedSignature) { |
seed_store.VerifySeedSignature(seed_data, base64_seed_signature)); |
} |
+TEST(VariationsSeedStoreTest, ApplyDeltaPatch) { |
+ // Sample seeds and the server produced delta between them to verify that the |
+ // client code is able to decode the deltas produced by the server. |
+ const std::string base64_before_seed_data = |
+ "CigxN2E4ZGJiOTI4ODI0ZGU3ZDU2MGUyODRlODY1ZDllYzg2NzU1MTE0ElgKDFVNQVN0YWJp" |
+ "bGl0eRjEyomgBTgBQgtTZXBhcmF0ZUxvZ0oLCgdEZWZhdWx0EABKDwoLU2VwYXJhdGVMb2cQ" |
+ "ZFIVEgszNC4wLjE4MDEuMCAAIAEgAiADEkQKIFVNQS1Vbmlmb3JtaXR5LVRyaWFsLTEwMC1Q" |
+ "ZXJjZW50GIDjhcAFOAFCCGdyb3VwXzAxSgwKCGdyb3VwXzAxEAFgARJPCh9VTUEtVW5pZm9y" |
+ "bWl0eS1UcmlhbC01MC1QZXJjZW50GIDjhcAFOAFCB2RlZmF1bHRKDAoIZ3JvdXBfMDEQAUoL" |
+ "CgdkZWZhdWx0EAFgAQ=="; |
+ const std::string base64_after_seed_data = |
+ "CigyNGQzYTM3ZTAxYmViOWYwNWYzMjM4YjUzNWY3MDg1ZmZlZWI4NzQwElgKDFVNQVN0YWJp" |
+ "bGl0eRjEyomgBTgBQgtTZXBhcmF0ZUxvZ0oLCgdEZWZhdWx0EABKDwoLU2VwYXJhdGVMb2cQ" |
+ "ZFIVEgszNC4wLjE4MDEuMCAAIAEgAiADEpIBCh9VTUEtVW5pZm9ybWl0eS1UcmlhbC0yMC1Q" |
+ "ZXJjZW50GIDjhcAFOAFCB2RlZmF1bHRKEQoIZ3JvdXBfMDEQARijtskBShEKCGdyb3VwXzAy" |
+ "EAEYpLbJAUoRCghncm91cF8wMxABGKW2yQFKEQoIZ3JvdXBfMDQQARimtskBShAKB2RlZmF1" |
+ "bHQQARiitskBYAESWAofVU1BLVVuaWZvcm1pdHktVHJpYWwtNTAtUGVyY2VudBiA44XABTgB" |
+ "QgdkZWZhdWx0Sg8KC25vbl9kZWZhdWx0EAFKCwoHZGVmYXVsdBABUgQoACgBYAE="; |
+ const std::string base64_delta_data = |
+ "KgooMjRkM2EzN2UwMWJlYjlmMDVmMzIzOGI1MzVmNzA4NWZmZWViODc0MAAqW+4BkgEKH1VN" |
+ "QS1Vbmlmb3JtaXR5LVRyaWFsLTIwLVBlcmNlbnQYgOOFwAU4AUIHZGVmYXVsdEoRCghncm91" |
+ "cF8wMRABGKO2yQFKEQoIZ3JvdXBfMDIQARiktskBShEKCGdyb3VwXzAzEAEYpbbJAUoRCghn" |
+ "cm91cF8wNBABGKa2yQFKEAoHZGVmYXVsdBABGKK2yQFgARJYCh9VTUEtVW5pZm9ybWl0eS1U" |
+ "cmlhbC01MC1QZXJjZW50GIDjhcAFOAFCB2RlZmF1bHRKDwoLbm9uX2RlZmF1bHQQAUoLCgdk" |
+ "ZWZhdWx0EAFSBCgAKAFgAQ=="; |
+ |
+ std::string before_seed_data; |
+ std::string after_seed_data; |
+ std::string delta_data; |
+ EXPECT_TRUE(base::Base64Decode(base64_before_seed_data, &before_seed_data)); |
+ EXPECT_TRUE(base::Base64Decode(base64_after_seed_data, &after_seed_data)); |
+ EXPECT_TRUE(base::Base64Decode(base64_delta_data, &delta_data)); |
+ |
+ std::string output; |
+ EXPECT_TRUE(VariationsSeedStore::ApplyDeltaPatch(before_seed_data, delta_data, |
+ &output)); |
+ EXPECT_EQ(after_seed_data, output); |
+} |
+ |
} // namespace chrome_variations |