Index: trunk/src/chrome/browser/prefs/tracked/segregated_pref_store_unittest.cc |
=================================================================== |
--- trunk/src/chrome/browser/prefs/tracked/segregated_pref_store_unittest.cc (revision 269437) |
+++ trunk/src/chrome/browser/prefs/tracked/segregated_pref_store_unittest.cc (working copy) |
@@ -57,7 +57,8 @@ |
class SegregatedPrefStoreTest : public testing::Test { |
public: |
SegregatedPrefStoreTest() |
- : read_error_delegate_data_(false, |
+ : initialization_callback_invoked_(false), |
+ read_error_delegate_data_(false, |
PersistentPrefStore::PREF_READ_ERROR_NONE), |
read_error_delegate_( |
new MockReadErrorDelegate(&read_error_delegate_data_)) {} |
@@ -72,7 +73,9 @@ |
segregated_store_ = new SegregatedPrefStore( |
default_store_, |
selected_store_, |
- selected_pref_names); |
+ selected_pref_names, |
+ base::Bind(&SegregatedPrefStoreTest::InitializationCallback, |
+ base::Unretained(this))); |
segregated_store_->AddObserver(&observer_); |
} |
@@ -89,6 +92,7 @@ |
} |
PrefStoreObserverMock observer_; |
+ bool initialization_callback_invoked_; |
scoped_refptr<TestingPrefStore> default_store_; |
scoped_refptr<TestingPrefStore> selected_store_; |
@@ -97,6 +101,12 @@ |
MockReadErrorDelegate::Data read_error_delegate_data_; |
private: |
+ void InitializationCallback() { |
+ EXPECT_FALSE(observer_.initialized); |
+ EXPECT_FALSE(initialization_callback_invoked_); |
+ initialization_callback_invoked_ = true; |
+ } |
+ |
scoped_ptr<MockReadErrorDelegate> read_error_delegate_; |
}; |
@@ -145,9 +155,26 @@ |
ASSERT_TRUE(segregated_store_->GetValue(kUnselectedPref, NULL)); |
} |
+TEST_F(SegregatedPrefStoreTest, PreviouslySelected) { |
+ selected_store_->SetValue(kUnselectedPref, new base::StringValue(kValue1)); |
+ segregated_store_->ReadPrefs(); |
+ // It will read from the selected store. |
+ ASSERT_TRUE(segregated_store_->GetValue(kUnselectedPref, NULL)); |
+ ASSERT_TRUE(selected_store_->GetValue(kUnselectedPref, NULL)); |
+ ASSERT_FALSE(default_store_->GetValue(kUnselectedPref, NULL)); |
+ |
+ // But when we update the value... |
+ segregated_store_->SetValue(kUnselectedPref, new base::StringValue(kValue2)); |
+ // ...it will be migrated. |
+ ASSERT_TRUE(segregated_store_->GetValue(kUnselectedPref, NULL)); |
+ ASSERT_FALSE(selected_store_->GetValue(kUnselectedPref, NULL)); |
+ ASSERT_TRUE(default_store_->GetValue(kUnselectedPref, NULL)); |
+} |
+ |
TEST_F(SegregatedPrefStoreTest, Observer) { |
EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_NONE, |
segregated_store_->ReadPrefs()); |
+ EXPECT_TRUE(initialization_callback_invoked_); |
EXPECT_TRUE(observer_.initialized); |
EXPECT_TRUE(observer_.initialization_success); |
EXPECT_TRUE(observer_.changed_keys.empty()); |