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

Unified Diff: chrome/browser/prefs/tracked/pref_hash_calculator_unittest.cc

Issue 1227973003: Componentize //chrome/browser/prefs/tracked. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 5 years, 4 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/prefs/tracked/pref_hash_calculator_unittest.cc
diff --git a/chrome/browser/prefs/tracked/pref_hash_calculator_unittest.cc b/chrome/browser/prefs/tracked/pref_hash_calculator_unittest.cc
deleted file mode 100644
index 71f9a44dd3a60ff77110042f3004c3a48b60ef32..0000000000000000000000000000000000000000
--- a/chrome/browser/prefs/tracked/pref_hash_calculator_unittest.cc
+++ /dev/null
@@ -1,206 +0,0 @@
-// Copyright 2013 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 "chrome/browser/prefs/tracked/pref_hash_calculator.h"
-
-#include <string>
-
-#include "base/memory/scoped_ptr.h"
-#include "base/strings/string_util.h"
-#include "base/values.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-TEST(PrefHashCalculatorTest, TestCurrentAlgorithm) {
- base::StringValue string_value_1("string value 1");
- base::StringValue string_value_2("string value 2");
- base::DictionaryValue dictionary_value_1;
- dictionary_value_1.SetInteger("int value", 1);
- dictionary_value_1.Set("nested empty map", new base::DictionaryValue);
- base::DictionaryValue dictionary_value_1_equivalent;
- dictionary_value_1_equivalent.SetInteger("int value", 1);
- base::DictionaryValue dictionary_value_2;
- dictionary_value_2.SetInteger("int value", 2);
-
- PrefHashCalculator calc1("seed1", "deviceid");
- PrefHashCalculator calc1_dup("seed1", "deviceid");
- PrefHashCalculator calc2("seed2", "deviceid");
- PrefHashCalculator calc3("seed1", "deviceid2");
-
- // Two calculators with same seed produce same hash.
- ASSERT_EQ(calc1.Calculate("pref_path", &string_value_1),
- calc1_dup.Calculate("pref_path", &string_value_1));
- ASSERT_EQ(PrefHashCalculator::VALID,
- calc1_dup.Validate(
- "pref_path",
- &string_value_1,
- calc1.Calculate("pref_path", &string_value_1)));
-
- // Different seeds, different hashes.
- ASSERT_NE(calc1.Calculate("pref_path", &string_value_1),
- calc2.Calculate("pref_path", &string_value_1));
- ASSERT_EQ(PrefHashCalculator::INVALID,
- calc2.Validate(
- "pref_path",
- &string_value_1,
- calc1.Calculate("pref_path", &string_value_1)));
-
- // Different device IDs, different hashes.
- ASSERT_NE(calc1.Calculate("pref_path", &string_value_1),
- calc3.Calculate("pref_path", &string_value_1));
-
- // Different values, different hashes.
- ASSERT_NE(calc1.Calculate("pref_path", &string_value_1),
- calc1.Calculate("pref_path", &string_value_2));
-
- // Different paths, different hashes.
- ASSERT_NE(calc1.Calculate("pref_path", &string_value_1),
- calc1.Calculate("pref_path_2", &string_value_1));
-
- // Works for dictionaries.
- ASSERT_EQ(calc1.Calculate("pref_path", &dictionary_value_1),
- calc1.Calculate("pref_path", &dictionary_value_1));
- ASSERT_NE(calc1.Calculate("pref_path", &dictionary_value_1),
- calc1.Calculate("pref_path", &dictionary_value_2));
-
- // Empty dictionary children are pruned.
- ASSERT_EQ(calc1.Calculate("pref_path", &dictionary_value_1),
- calc1.Calculate("pref_path", &dictionary_value_1_equivalent));
-
- // NULL value is supported.
- ASSERT_FALSE(calc1.Calculate("pref_path", NULL).empty());
-}
-
-// Tests the output against a known value to catch unexpected algorithm changes.
-// The test hashes below must NEVER be updated, the serialization algorithm used
-// must always be able to generate data that will produce these exact hashes.
-TEST(PrefHashCalculatorTest, CatchHashChanges) {
- static const char kSeed[] = "0123456789ABCDEF0123456789ABCDEF";
- static const char kDeviceId[] = "test_device_id1";
-
- scoped_ptr<base::Value> null_value = base::Value::CreateNullValue();
- scoped_ptr<base::Value> bool_value(new base::FundamentalValue(false));
- scoped_ptr<base::Value> int_value(new base::FundamentalValue(1234567890));
- scoped_ptr<base::Value> double_value(
- new base::FundamentalValue(123.0987654321));
- scoped_ptr<base::Value> string_value(
- new base::StringValue("testing with special chars:\n<>{}:^^@#$\\/"));
-
- // For legacy reasons, we have to support pruning of empty lists/dictionaries
- // and nested empty ists/dicts in the hash generation algorithm.
- scoped_ptr<base::DictionaryValue> nested_empty_dict(
- new base::DictionaryValue);
- nested_empty_dict->Set("a", new base::DictionaryValue);
- nested_empty_dict->Set("b", new base::ListValue);
- scoped_ptr<base::ListValue> nested_empty_list(
- new base::ListValue);
- nested_empty_list->Append(new base::DictionaryValue);
- nested_empty_list->Append(new base::ListValue);
- nested_empty_list->Append(nested_empty_dict->DeepCopy());
-
- // A dictionary with an empty dictionary, an empty list, and nested empty
- // dictionaries/lists in it.
- scoped_ptr<base::DictionaryValue> dict_value(new base::DictionaryValue);
- dict_value->Set("a", new base::StringValue("foo"));
- dict_value->Set("d", new base::ListValue);
- dict_value->Set("b", new base::DictionaryValue);
- dict_value->Set("c", new base::StringValue("baz"));
- dict_value->Set("e", nested_empty_dict.release());
- dict_value->Set("f", nested_empty_list.release());
-
- scoped_ptr<base::ListValue> list_value(new base::ListValue);
- list_value->AppendBoolean(true);
- list_value->AppendInteger(100);
- list_value->AppendDouble(1.0);
-
- ASSERT_EQ(base::Value::TYPE_NULL, null_value->GetType());
- ASSERT_EQ(base::Value::TYPE_BOOLEAN, bool_value->GetType());
- ASSERT_EQ(base::Value::TYPE_INTEGER, int_value->GetType());
- ASSERT_EQ(base::Value::TYPE_DOUBLE, double_value->GetType());
- ASSERT_EQ(base::Value::TYPE_STRING, string_value->GetType());
- ASSERT_EQ(base::Value::TYPE_DICTIONARY, dict_value->GetType());
- ASSERT_EQ(base::Value::TYPE_LIST, list_value->GetType());
-
- // Test every value type independently. Intentionally omits TYPE_BINARY which
- // isn't even allowed in JSONWriter's input.
- static const char kExpectedNullValue[] =
- "82A9F3BBC7F9FF84C76B033C854E79EEB162783FA7B3E99FF9372FA8E12C44F7";
- EXPECT_EQ(PrefHashCalculator::VALID,
- PrefHashCalculator(kSeed, kDeviceId).Validate(
- "pref.path", null_value.get(), kExpectedNullValue));
-
- static const char kExpectedBooleanValue[] =
- "A520D8F43EA307B0063736DC9358C330539D0A29417580514C8B9862632C4CCC";
- EXPECT_EQ(PrefHashCalculator::VALID,
- PrefHashCalculator(kSeed, kDeviceId).Validate(
- "pref.path", bool_value.get(), kExpectedBooleanValue));
-
- static const char kExpectedIntegerValue[] =
- "8D60DA1F10BF5AA29819D2D66D7CCEF9AABC5DA93C11A0D2BD21078D63D83682";
- EXPECT_EQ(PrefHashCalculator::VALID,
- PrefHashCalculator(kSeed, kDeviceId).Validate(
- "pref.path", int_value.get(), kExpectedIntegerValue));
-
- static const char kExpectedDoubleValue[] =
- "C9D94772516125BEEDAE68C109D44BC529E719EE020614E894CC7FB4098C545D";
- EXPECT_EQ(PrefHashCalculator::VALID,
- PrefHashCalculator(kSeed, kDeviceId).Validate(
- "pref.path", double_value.get(), kExpectedDoubleValue));
-
- static const char kExpectedStringValue[] =
- "05ACCBD3B05C45C36CD06190F63EC577112311929D8380E26E5F13182EB68318";
- EXPECT_EQ(PrefHashCalculator::VALID,
- PrefHashCalculator(kSeed, kDeviceId).Validate(
- "pref.path", string_value.get(), kExpectedStringValue));
-
- static const char kExpectedDictValue[] =
- "7A84DCC710D796C771F789A4DA82C952095AA956B6F1667EE42D0A19ECAA3C4A";
- EXPECT_EQ(PrefHashCalculator::VALID,
- PrefHashCalculator(kSeed, kDeviceId).Validate(
- "pref.path", dict_value.get(), kExpectedDictValue));
-
- static const char kExpectedListValue[] =
- "8D5A25972DF5AE20D041C780E7CA54E40F614AD53513A0724EE8D62D4F992740";
- EXPECT_EQ(PrefHashCalculator::VALID,
- PrefHashCalculator(kSeed, kDeviceId).Validate(
- "pref.path", list_value.get(), kExpectedListValue));
-
- // Also test every value type together in the same dictionary.
- base::DictionaryValue everything;
- everything.Set("null", null_value.release());
- everything.Set("bool", bool_value.release());
- everything.Set("int", int_value.release());
- everything.Set("double", double_value.release());
- everything.Set("string", string_value.release());
- everything.Set("list", list_value.release());
- everything.Set("dict", dict_value.release());
- static const char kExpectedEverythingValue[] =
- "B97D09BE7005693574DCBDD03D8D9E44FB51F4008B73FB56A49A9FA671A1999B";
- EXPECT_EQ(PrefHashCalculator::VALID,
- PrefHashCalculator(kSeed, kDeviceId).Validate(
- "pref.path", &everything, kExpectedEverythingValue));
-}
-
-TEST(PrefHashCalculatorTest, TestCompatibilityWithLegacyPrefMetricsServiceId) {
- static const char kSeed[] = {
- 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
- 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
- 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
- 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
- 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
- 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
- 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
- 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
- };
- static const char kDeviceId[] =
- "D730D9CBD98C734A4FB097A1922275FE9F7E026A4EA1BE0E84";
- static const char kExpectedValue[] =
- "845EF34663FF8D32BE6707F40258FBA531C2BFC532E3B014AFB3476115C2A9DE";
-
- base::ListValue startup_urls;
- startup_urls.Set(0, new base::StringValue("http://www.chromium.org/"));
-
- EXPECT_EQ(PrefHashCalculator::VALID_SECURE_LEGACY,
- PrefHashCalculator(std::string(kSeed, arraysize(kSeed)), kDeviceId).
- Validate("session.startup_urls", &startup_urls, kExpectedValue));
-}
« no previous file with comments | « chrome/browser/prefs/tracked/pref_hash_calculator.cc ('k') | chrome/browser/prefs/tracked/pref_hash_filter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698