123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// found in the LICENSE file. 423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "chrome/browser/prefs/tracked/pref_service_hash_store_contents.h" 623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include <string> 823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "base/prefs/pref_service.h" 1023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "base/prefs/testing_pref_service.h" 1123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "base/values.h" 1223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 1323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 1423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)class PrefServiceHashStoreContentsTest : public testing::Test { 1523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) public: 1623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) virtual void SetUp() OVERRIDE { 1723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrefServiceHashStoreContents::RegisterPrefs(local_state_.registry()); 1823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) } 1923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 2023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) protected: 2123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) TestingPrefServiceSimple local_state_; 2223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}; 2323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 2423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)TEST_F(PrefServiceHashStoreContentsTest, hash_store_id) { 2523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrefServiceHashStoreContents contents("store_id", &local_state_); 2623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_EQ("store_id", contents.hash_store_id()); 2723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 2823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 2923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)TEST_F(PrefServiceHashStoreContentsTest, IsInitialized) { 3023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) { 3123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrefServiceHashStoreContents contents("store_id", &local_state_); 3223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_FALSE(contents.IsInitialized()); 3323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) (*contents.GetMutableContents())->Set("foo", new base::StringValue("bar")); 3423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_TRUE(contents.IsInitialized()); 3523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) } 3623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) { 3723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrefServiceHashStoreContents contents("store_id", &local_state_); 3823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_TRUE(contents.IsInitialized()); 3923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrefServiceHashStoreContents other_contents("other_store_id", 4023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) &local_state_); 4123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_FALSE(other_contents.IsInitialized()); 4223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) } 4323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 4423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 4523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)TEST_F(PrefServiceHashStoreContentsTest, Reset) { 46f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_FALSE(local_state_.GetUserPrefValue( 47f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) PrefServiceHashStoreContents::kProfilePreferenceHashes)); 48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 4923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) { 5023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrefServiceHashStoreContents contents("store_id", &local_state_); 5123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_FALSE(contents.IsInitialized()); 5223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) (*contents.GetMutableContents())->Set("foo", new base::StringValue("bar")); 5323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_TRUE(contents.IsInitialized()); 5423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrefServiceHashStoreContents other_contents("other_store_id", 5523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) &local_state_); 5623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) (*other_contents.GetMutableContents()) 5723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ->Set("foo", new base::StringValue("bar")); 5823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) } 59f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 60f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_TRUE(local_state_.GetUserPrefValue( 61f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) PrefServiceHashStoreContents::kProfilePreferenceHashes)); 62f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 6323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) { 6423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrefServiceHashStoreContents contents("store_id", &local_state_); 6523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_TRUE(contents.IsInitialized()); 6623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) contents.Reset(); 6723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_FALSE(contents.IsInitialized()); 6823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) } 69f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 70f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_TRUE(local_state_.GetUserPrefValue( 71f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) PrefServiceHashStoreContents::kProfilePreferenceHashes)); 72f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 7323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) { 7423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrefServiceHashStoreContents contents("store_id", &local_state_); 7523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_FALSE(contents.IsInitialized()); 7623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrefServiceHashStoreContents other_contents("other_store_id", 7723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) &local_state_); 7823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_TRUE(other_contents.IsInitialized()); 7923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) } 8023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 8123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) { 8223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrefServiceHashStoreContents other_contents("other_store_id", 8323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) &local_state_); 84f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) other_contents.Reset(); 8523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) } 86f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 87f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASSERT_FALSE(local_state_.GetUserPrefValue( 88f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) PrefServiceHashStoreContents::kProfilePreferenceHashes)); 8923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 9023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 9123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)TEST_F(PrefServiceHashStoreContentsTest, GetAndSetContents) { 9223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) { 9323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrefServiceHashStoreContents contents("store_id", &local_state_); 9423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_EQ(NULL, contents.GetContents()); 9523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) (*contents.GetMutableContents())->Set("foo", new base::StringValue("bar")); 9623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_FALSE(contents.GetContents() == NULL); 9723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) std::string actual_value; 9823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_TRUE(contents.GetContents()->GetString("foo", &actual_value)); 9923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_EQ("bar", actual_value); 10023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrefServiceHashStoreContents other_contents("other_store_id", 10123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) &local_state_); 10223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_EQ(NULL, other_contents.GetContents()); 10323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) } 10423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) { 10523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrefServiceHashStoreContents contents("store_id", &local_state_); 10623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_FALSE(contents.GetContents() == NULL); 10723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) } 10823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 10923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 11023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)TEST_F(PrefServiceHashStoreContentsTest, GetAndSetSuperMac) { 11123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) { 11223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrefServiceHashStoreContents contents("store_id", &local_state_); 11323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_TRUE(contents.GetSuperMac().empty()); 11423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) (*contents.GetMutableContents())->Set("foo", new base::StringValue("bar")); 11523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_TRUE(contents.GetSuperMac().empty()); 11623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) contents.SetSuperMac("0123456789"); 11723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_EQ("0123456789", contents.GetSuperMac()); 11823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) } 11923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) { 12023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrefServiceHashStoreContents contents("store_id", &local_state_); 12123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_EQ("0123456789", contents.GetSuperMac()); 12223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrefServiceHashStoreContents other_contents("other_store_id", 12323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) &local_state_); 12423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_TRUE(other_contents.GetSuperMac().empty()); 12523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) } 12623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 12723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 12823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)TEST_F(PrefServiceHashStoreContentsTest, ResetAllPrefHashStores) { 12923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) { 13023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrefServiceHashStoreContents contents_1("store_id_1", &local_state_); 13123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrefServiceHashStoreContents contents_2("store_id_2", &local_state_); 13223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) (*contents_1.GetMutableContents()) 13323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ->Set("foo", new base::StringValue("bar")); 13423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) (*contents_2.GetMutableContents()) 13523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ->Set("foo", new base::StringValue("bar")); 13623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) } 13723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) { 13823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrefServiceHashStoreContents contents_1("store_id_1", &local_state_); 13923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrefServiceHashStoreContents contents_2("store_id_2", &local_state_); 14023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_TRUE(contents_1.IsInitialized()); 14123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_TRUE(contents_2.IsInitialized()); 14223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) } 14323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 14423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrefServiceHashStoreContents::ResetAllPrefHashStores(&local_state_); 14523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 14623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) { 14723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrefServiceHashStoreContents contents_1("store_id_1", &local_state_); 14823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrefServiceHashStoreContents contents_2("store_id_2", &local_state_); 14923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_FALSE(contents_1.IsInitialized()); 15023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_FALSE(contents_2.IsInitialized()); 15123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) } 15223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 153