Index: chrome/browser/safe_browsing/preference_validation_delegate_unittest.cc |
diff --git a/chrome/browser/safe_browsing/preference_validation_delegate_unittest.cc b/chrome/browser/safe_browsing/preference_validation_delegate_unittest.cc |
deleted file mode 100644 |
index 14de5392ca13134c0bad7a2747ac9de3f8e03485..0000000000000000000000000000000000000000 |
--- a/chrome/browser/safe_browsing/preference_validation_delegate_unittest.cc |
+++ /dev/null |
@@ -1,279 +0,0 @@ |
-// Copyright 2014 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/safe_browsing/preference_validation_delegate.h" |
- |
-#include <string> |
-#include <vector> |
- |
-#include "base/bind.h" |
-#include "base/compiler_specific.h" |
-#include "base/memory/scoped_vector.h" |
-#include "base/values.h" |
-#include "chrome/common/safe_browsing/csd.pb.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-// A basic test harness that creates a delegate instance for which it stores all |
-// incidents. Tests can push data to the delegate and verify that the test |
-// instance was provided with the expected data. |
-class PreferenceValidationDelegateTest : public testing::Test { |
- protected: |
- typedef ScopedVector<safe_browsing::ClientIncidentReport_IncidentData> |
- IncidentVector; |
- |
- PreferenceValidationDelegateTest() |
- : kPrefPath_("atomic.pref"), |
- null_value_(base::Value::CreateNullValue()) {} |
- |
- virtual void SetUp() OVERRIDE { |
- testing::Test::SetUp(); |
- invalid_keys_.push_back(std::string("one")); |
- invalid_keys_.push_back(std::string("two")); |
- instance_.reset(new safe_browsing::PreferenceValidationDelegate( |
- base::Bind(&PreferenceValidationDelegateTest::AddIncident, |
- base::Unretained(this)))); |
- } |
- |
- void AddIncident( |
- scoped_ptr<safe_browsing::ClientIncidentReport_IncidentData> data) { |
- incidents_.push_back(data.release()); |
- } |
- |
- static void ExpectValueStatesEquate( |
- PrefHashStoreTransaction::ValueState store_state, |
- safe_browsing:: |
- ClientIncidentReport_IncidentData_TrackedPreferenceIncident_ValueState |
- incident_state) { |
- typedef safe_browsing:: |
- ClientIncidentReport_IncidentData_TrackedPreferenceIncident TPIncident; |
- switch (store_state) { |
- case PrefHashStoreTransaction::CLEARED: |
- EXPECT_EQ(TPIncident::CLEARED, incident_state); |
- break; |
- case PrefHashStoreTransaction::CHANGED: |
- EXPECT_EQ(TPIncident::CHANGED, incident_state); |
- break; |
- case PrefHashStoreTransaction::UNTRUSTED_UNKNOWN_VALUE: |
- EXPECT_EQ(TPIncident::UNTRUSTED_UNKNOWN_VALUE, incident_state); |
- break; |
- default: |
- FAIL() << "unexpected store state"; |
- break; |
- } |
- } |
- |
- static void ExpectKeysEquate( |
- const std::vector<std::string>& store_keys, |
- const google::protobuf::RepeatedPtrField<std::string>& incident_keys) { |
- ASSERT_EQ(store_keys.size(), static_cast<size_t>(incident_keys.size())); |
- for (int i = 0; i < incident_keys.size(); ++i) { |
- EXPECT_EQ(store_keys[i], incident_keys.Get(i)); |
- } |
- } |
- |
- const std::string kPrefPath_; |
- IncidentVector incidents_; |
- scoped_ptr<base::Value> null_value_; |
- base::DictionaryValue dict_value_; |
- std::vector<std::string> invalid_keys_; |
- scoped_ptr<TrackedPreferenceValidationDelegate> instance_; |
-}; |
- |
-// Tests that a NULL value results in an incident with no value. |
-TEST_F(PreferenceValidationDelegateTest, NullValue) { |
- instance_->OnAtomicPreferenceValidation(kPrefPath_, |
- NULL, |
- PrefHashStoreTransaction::CLEARED, |
- TrackedPreferenceHelper::DONT_RESET); |
- safe_browsing::ClientIncidentReport_IncidentData* incident = |
- incidents_.back(); |
- EXPECT_FALSE(incident->tracked_preference().has_atomic_value()); |
- EXPECT_EQ( |
- safe_browsing:: |
- ClientIncidentReport_IncidentData_TrackedPreferenceIncident::CLEARED, |
- incident->tracked_preference().value_state()); |
-} |
- |
-// Tests that all supported value types can be stringified into an incident. The |
-// parameters for the test are the type of value to test and the expected value |
-// string. |
-class PreferenceValidationDelegateValues |
- : public PreferenceValidationDelegateTest, |
- public testing::WithParamInterface< |
- std::tr1::tuple<base::Value::Type, const char*> > { |
- protected: |
- virtual void SetUp() OVERRIDE { |
- PreferenceValidationDelegateTest::SetUp(); |
- value_type_ = std::tr1::get<0>(GetParam()); |
- expected_value_ = std::tr1::get<1>(GetParam()); |
- } |
- |
- static scoped_ptr<base::Value> MakeValue(base::Value::Type value_type) { |
- using base::Value; |
- switch (value_type) { |
- case Value::TYPE_NULL: |
- return make_scoped_ptr(Value::CreateNullValue()); |
- case Value::TYPE_BOOLEAN: |
- return scoped_ptr<Value>(new base::FundamentalValue(false)); |
- case Value::TYPE_INTEGER: |
- return scoped_ptr<Value>(new base::FundamentalValue(47)); |
- case Value::TYPE_DOUBLE: |
- return scoped_ptr<Value>(new base::FundamentalValue(0.47)); |
- case Value::TYPE_STRING: |
- return scoped_ptr<Value>(new base::StringValue("i have a spleen")); |
- case Value::TYPE_DICTIONARY: { |
- scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue()); |
- value->SetInteger("twenty-two", 22); |
- value->SetInteger("forty-seven", 47); |
- return value.PassAs<Value>(); |
- } |
- case Value::TYPE_LIST: { |
- scoped_ptr<base::ListValue> value(new base::ListValue()); |
- value->AppendInteger(22); |
- value->AppendInteger(47); |
- return value.PassAs<Value>(); |
- } |
- default: |
- ADD_FAILURE() << "unsupported value type " << value_type; |
- } |
- return scoped_ptr<Value>(); |
- } |
- |
- base::Value::Type value_type_; |
- const char* expected_value_; |
-}; |
- |
-TEST_P(PreferenceValidationDelegateValues, Value) { |
- instance_->OnAtomicPreferenceValidation(kPrefPath_, |
- MakeValue(value_type_).get(), |
- PrefHashStoreTransaction::CLEARED, |
- TrackedPreferenceHelper::DONT_RESET); |
- ASSERT_EQ(1U, incidents_.size()); |
- safe_browsing::ClientIncidentReport_IncidentData* incident = |
- incidents_.back(); |
- EXPECT_EQ(std::string(expected_value_), |
- incident->tracked_preference().atomic_value()); |
-} |
- |
-INSTANTIATE_TEST_CASE_P( |
- Values, |
- PreferenceValidationDelegateValues, |
- // On Android, make_tuple(..., "null") doesn't compile due to the error: |
- // testing/gtest/include/gtest/internal/gtest-tuple.h:246:48: |
- // error: array used as initializer |
- testing::Values( |
- std::tr1::make_tuple(base::Value::TYPE_NULL, |
- const_cast<char*>("null")), |
- std::tr1::make_tuple(base::Value::TYPE_BOOLEAN, |
- const_cast<char*>("false")), |
- std::tr1::make_tuple(base::Value::TYPE_INTEGER, |
- const_cast<char*>("47")), |
- std::tr1::make_tuple(base::Value::TYPE_DOUBLE, |
- const_cast<char*>("0.47")), |
- std::tr1::make_tuple(base::Value::TYPE_STRING, |
- const_cast<char*>("i have a spleen")), |
- std::tr1::make_tuple(base::Value::TYPE_DICTIONARY, |
- const_cast<char*>("{\"forty-seven\":47,\"twenty-two\":22}")), |
- std::tr1::make_tuple(base::Value::TYPE_LIST, |
- const_cast<char*>("[22,47]")))); |
- |
-// Tests that no incidents are reported for relevant combinations of ValueState. |
-class PreferenceValidationDelegateNoIncident |
- : public PreferenceValidationDelegateTest, |
- public testing::WithParamInterface<PrefHashStoreTransaction::ValueState> { |
- protected: |
- virtual void SetUp() OVERRIDE { |
- PreferenceValidationDelegateTest::SetUp(); |
- value_state_ = GetParam(); |
- } |
- |
- PrefHashStoreTransaction::ValueState value_state_; |
-}; |
- |
-TEST_P(PreferenceValidationDelegateNoIncident, Atomic) { |
- instance_->OnAtomicPreferenceValidation(kPrefPath_, |
- null_value_.get(), |
- value_state_, |
- TrackedPreferenceHelper::DONT_RESET); |
- EXPECT_EQ(0U, incidents_.size()); |
-} |
- |
-TEST_P(PreferenceValidationDelegateNoIncident, Split) { |
- instance_->OnSplitPreferenceValidation(kPrefPath_, |
- &dict_value_, |
- invalid_keys_, |
- value_state_, |
- TrackedPreferenceHelper::DONT_RESET); |
- EXPECT_EQ(0U, incidents_.size()); |
-} |
- |
-INSTANTIATE_TEST_CASE_P( |
- NoIncident, |
- PreferenceValidationDelegateNoIncident, |
- testing::Values(PrefHashStoreTransaction::UNCHANGED, |
- PrefHashStoreTransaction::SECURE_LEGACY, |
- PrefHashStoreTransaction::TRUSTED_UNKNOWN_VALUE)); |
- |
-// Tests that incidents are reported for relevant combinations of ValueState and |
-// ResetAction. |
-class PreferenceValidationDelegateWithIncident |
- : public PreferenceValidationDelegateTest, |
- public testing::WithParamInterface< |
- std::tr1::tuple<PrefHashStoreTransaction::ValueState, |
- TrackedPreferenceHelper::ResetAction> > { |
- protected: |
- virtual void SetUp() OVERRIDE { |
- PreferenceValidationDelegateTest::SetUp(); |
- value_state_ = std::tr1::get<0>(GetParam()); |
- reset_action_ = std::tr1::get<1>(GetParam()); |
- } |
- |
- PrefHashStoreTransaction::ValueState value_state_; |
- TrackedPreferenceHelper::ResetAction reset_action_; |
-}; |
- |
-TEST_P(PreferenceValidationDelegateWithIncident, Atomic) { |
- instance_->OnAtomicPreferenceValidation( |
- kPrefPath_, null_value_.get(), value_state_, reset_action_); |
- ASSERT_EQ(1U, incidents_.size()); |
- safe_browsing::ClientIncidentReport_IncidentData* incident = |
- incidents_.back(); |
- EXPECT_TRUE(incident->has_tracked_preference()); |
- const safe_browsing:: |
- ClientIncidentReport_IncidentData_TrackedPreferenceIncident& tp_incident = |
- incident->tracked_preference(); |
- EXPECT_EQ(kPrefPath_, tp_incident.path()); |
- EXPECT_EQ(0, tp_incident.split_key_size()); |
- EXPECT_TRUE(tp_incident.has_atomic_value()); |
- EXPECT_EQ(std::string("null"), tp_incident.atomic_value()); |
- EXPECT_TRUE(tp_incident.has_value_state()); |
- ExpectValueStatesEquate(value_state_, tp_incident.value_state()); |
-} |
- |
-TEST_P(PreferenceValidationDelegateWithIncident, Split) { |
- instance_->OnSplitPreferenceValidation( |
- kPrefPath_, &dict_value_, invalid_keys_, value_state_, reset_action_); |
- ASSERT_EQ(1U, incidents_.size()); |
- safe_browsing::ClientIncidentReport_IncidentData* incident = |
- incidents_.back(); |
- EXPECT_TRUE(incident->has_tracked_preference()); |
- const safe_browsing:: |
- ClientIncidentReport_IncidentData_TrackedPreferenceIncident& tp_incident = |
- incident->tracked_preference(); |
- EXPECT_EQ(kPrefPath_, tp_incident.path()); |
- EXPECT_FALSE(tp_incident.has_atomic_value()); |
- ExpectKeysEquate(invalid_keys_, tp_incident.split_key()); |
- EXPECT_TRUE(tp_incident.has_value_state()); |
- ExpectValueStatesEquate(value_state_, tp_incident.value_state()); |
-} |
- |
-INSTANTIATE_TEST_CASE_P( |
- WithIncident, |
- PreferenceValidationDelegateWithIncident, |
- testing::Combine( |
- testing::Values(PrefHashStoreTransaction::CLEARED, |
- PrefHashStoreTransaction::CHANGED, |
- PrefHashStoreTransaction::UNTRUSTED_UNKNOWN_VALUE), |
- testing::Values(TrackedPreferenceHelper::WANTED_RESET, |
- TrackedPreferenceHelper::DO_RESET))); |