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

Side by Side Diff: components/user_prefs/tracked/segregated_pref_store_unittest.cc

Issue 2692203007: Add PrefStore::GetValues (Closed)
Patch Set: Add GetValues to FilesystemJsonPrefStore Created 3 years, 10 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 unified diff | Download patch
« no previous file with comments | « components/user_prefs/tracked/segregated_pref_store.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/user_prefs/tracked/segregated_pref_store.h" 5 #include "components/user_prefs/tracked/segregated_pref_store.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
11 11
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/callback.h" 13 #include "base/callback.h"
14 #include "base/memory/ptr_util.h" 14 #include "base/memory/ptr_util.h"
15 #include "base/memory/ref_counted.h" 15 #include "base/memory/ref_counted.h"
16 #include "base/values.h" 16 #include "base/values.h"
17 #include "components/prefs/persistent_pref_store.h" 17 #include "components/prefs/persistent_pref_store.h"
18 #include "components/prefs/pref_store_observer_mock.h" 18 #include "components/prefs/pref_store_observer_mock.h"
19 #include "components/prefs/testing_pref_store.h" 19 #include "components/prefs/testing_pref_store.h"
20 #include "components/user_prefs/tracked/segregated_pref_store.h" 20 #include "components/user_prefs/tracked/segregated_pref_store.h"
21 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
22 22
23 namespace { 23 namespace {
24 24
25 const char kSelectedPref[] = "selected_pref"; 25 const char kSelectedPref[] = "selected_pref";
26 const char kUnselectedPref[] = "unselected_pref"; 26 const char kUnselectedPref[] = "unselected_pref";
27 const char kSharedPref[] = "shared_pref";
27 28
28 const char kValue1[] = "value1"; 29 const char kValue1[] = "value1";
29 const char kValue2[] = "value2"; 30 const char kValue2[] = "value2";
30 31
31 class MockReadErrorDelegate : public PersistentPrefStore::ReadErrorDelegate { 32 class MockReadErrorDelegate : public PersistentPrefStore::ReadErrorDelegate {
32 public: 33 public:
33 struct Data { 34 struct Data {
34 Data(bool invoked_in, PersistentPrefStore::PrefReadError read_error_in) 35 Data(bool invoked_in, PersistentPrefStore::PrefReadError read_error_in)
35 : invoked(invoked_in), read_error(read_error_in) {} 36 : invoked(invoked_in), read_error(read_error_in) {}
36 37
(...skipping 26 matching lines...) Expand all
63 PersistentPrefStore::PREF_READ_ERROR_NONE), 64 PersistentPrefStore::PREF_READ_ERROR_NONE),
64 read_error_delegate_( 65 read_error_delegate_(
65 new MockReadErrorDelegate(&read_error_delegate_data_)) {} 66 new MockReadErrorDelegate(&read_error_delegate_data_)) {}
66 67
67 void SetUp() override { 68 void SetUp() override {
68 selected_store_ = new TestingPrefStore; 69 selected_store_ = new TestingPrefStore;
69 default_store_ = new TestingPrefStore; 70 default_store_ = new TestingPrefStore;
70 71
71 std::set<std::string> selected_pref_names; 72 std::set<std::string> selected_pref_names;
72 selected_pref_names.insert(kSelectedPref); 73 selected_pref_names.insert(kSelectedPref);
74 selected_pref_names.insert(kSharedPref);
73 75
74 segregated_store_ = new SegregatedPrefStore(default_store_, selected_store_, 76 segregated_store_ = new SegregatedPrefStore(default_store_, selected_store_,
75 selected_pref_names); 77 selected_pref_names);
76 78
77 segregated_store_->AddObserver(&observer_); 79 segregated_store_->AddObserver(&observer_);
78 } 80 }
79 81
80 void TearDown() override { segregated_store_->RemoveObserver(&observer_); } 82 void TearDown() override { segregated_store_->RemoveObserver(&observer_); }
81 83
82 protected: 84 protected:
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 selected_store_->SetBlockAsyncRead(true); 269 selected_store_->SetBlockAsyncRead(true);
268 default_store_->SetBlockAsyncRead(true); 270 default_store_->SetBlockAsyncRead(true);
269 EXPECT_FALSE(segregated_store_->IsInitializationComplete()); 271 EXPECT_FALSE(segregated_store_->IsInitializationComplete());
270 segregated_store_->ReadPrefsAsync(NULL); 272 segregated_store_->ReadPrefsAsync(NULL);
271 EXPECT_FALSE(segregated_store_->IsInitializationComplete()); 273 EXPECT_FALSE(segregated_store_->IsInitializationComplete());
272 selected_store_->SetBlockAsyncRead(false); 274 selected_store_->SetBlockAsyncRead(false);
273 EXPECT_FALSE(segregated_store_->IsInitializationComplete()); 275 EXPECT_FALSE(segregated_store_->IsInitializationComplete());
274 default_store_->SetBlockAsyncRead(false); 276 default_store_->SetBlockAsyncRead(false);
275 EXPECT_TRUE(segregated_store_->IsInitializationComplete()); 277 EXPECT_TRUE(segregated_store_->IsInitializationComplete());
276 } 278 }
279
280 TEST_F(SegregatedPrefStoreTest, GetValues) {
281 // To check merge behavior, create selected and default stores so each has a
282 // key the other doesn't have and they have one key in common.
283 selected_store_->SetValue(kSelectedPref,
284 base::MakeUnique<base::StringValue>(kValue1),
285 WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
286 default_store_->SetValue(kUnselectedPref,
287 base::MakeUnique<base::StringValue>(kValue2),
288 WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
289 selected_store_->SetValue(kSharedPref,
290 base::MakeUnique<base::StringValue>(kValue1),
291 WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
292
293 auto values = segregated_store_->GetValues();
294 const base::Value* value = nullptr;
295 // Check that a selected preference is returned.
296 ASSERT_TRUE(values->Get(kSelectedPref, &value));
297 EXPECT_TRUE(base::FundamentalValue(kValue1).Equals(value));
298
299 // Check that a a default preference is returned.
300 ASSERT_TRUE(values->Get(kUnselectedPref, &value));
301 EXPECT_TRUE(base::FundamentalValue(kValue2).Equals(value));
302
303 // Check that the selected preference is preferred.
304 ASSERT_TRUE(values->Get(kSharedPref, &value));
305 EXPECT_TRUE(base::FundamentalValue(kValue1).Equals(value));
306 }
OLDNEW
« no previous file with comments | « components/user_prefs/tracked/segregated_pref_store.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698