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

Side by Side Diff: services/preferences/pref_service_factory_unittest.cc

Issue 2878453002: Use ScopedTaskEnvironment instead of MessageLoop in service_manager::test::ServiceTest. (Closed)
Patch Set: fix-build-error Created 3 years, 7 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
OLDNEW
1 // Copyright (c) 2017 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2017 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 "services/preferences/public/cpp/pref_service_factory.h" 5 #include "services/preferences/public/cpp/pref_service_factory.h"
6 6
7 #include "base/files/scoped_temp_dir.h" 7 #include "base/files/scoped_temp_dir.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "base/message_loop/message_loop.h"
10 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
11 #include "base/test/sequenced_worker_pool_owner.h" 10 #include "base/test/sequenced_worker_pool_owner.h"
12 #include "components/prefs/pref_change_registrar.h" 11 #include "components/prefs/pref_change_registrar.h"
13 #include "components/prefs/pref_registry_simple.h" 12 #include "components/prefs/pref_registry_simple.h"
14 #include "components/prefs/pref_service.h" 13 #include "components/prefs/pref_service.h"
15 #include "components/prefs/value_map_pref_store.h" 14 #include "components/prefs/value_map_pref_store.h"
16 #include "components/prefs/writeable_pref_store.h" 15 #include "components/prefs/writeable_pref_store.h"
17 #include "mojo/public/cpp/bindings/binding_set.h" 16 #include "mojo/public/cpp/bindings/binding_set.h"
18 #include "services/preferences/public/cpp/dictionary_value_update.h" 17 #include "services/preferences/public/cpp/dictionary_value_update.h"
19 #include "services/preferences/public/cpp/pref_service_main.h" 18 #include "services/preferences/public/cpp/pref_service_main.h"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 service_factory_bindings_; 71 service_factory_bindings_;
73 std::unique_ptr<service_manager::ServiceContext> pref_service_context_; 72 std::unique_ptr<service_manager::ServiceContext> pref_service_context_;
74 }; 73 };
75 74
76 constexpr int kInitialValue = 1; 75 constexpr int kInitialValue = 1;
77 constexpr int kUpdatedValue = 2; 76 constexpr int kUpdatedValue = 2;
78 constexpr char kKey[] = "some_key"; 77 constexpr char kKey[] = "some_key";
79 constexpr char kOtherKey[] = "some_other_key"; 78 constexpr char kOtherKey[] = "some_other_key";
80 constexpr char kDictionaryKey[] = "a.dictionary.pref"; 79 constexpr char kDictionaryKey[] = "a.dictionary.pref";
81 80
82 class PrefServiceFactoryTest : public base::MessageLoop::DestructionObserver, 81 class PrefServiceFactoryTest : public service_manager::test::ServiceTest {
83 public service_manager::test::ServiceTest {
84 public: 82 public:
85 PrefServiceFactoryTest() : ServiceTest("prefs_unittests", false) {} 83 PrefServiceFactoryTest()
84 : ServiceTest("prefs_unittests", false),
85 worker_pool_owner_(2, "PrefServiceFactoryTest") {}
86 86
87 protected: 87 protected:
88 void SetUp() override { 88 void SetUp() override {
89 ServiceTest::SetUp(); 89 ServiceTest::SetUp();
90 ASSERT_TRUE(profile_dir_.CreateUniqueTempDir()); 90 ASSERT_TRUE(profile_dir_.CreateUniqueTempDir());
91 91
92 // Init the pref service (in production Chrome startup would do this.) 92 // Init the pref service (in production Chrome startup would do this.)
93 mojom::PrefServiceControlPtr control; 93 mojom::PrefServiceControlPtr control;
94 connector()->BindInterface(mojom::kServiceName, &control); 94 connector()->BindInterface(mojom::kServiceName, &control);
95 auto config = mojom::PersistentPrefStoreConfiguration::New(); 95 auto config = mojom::PersistentPrefStoreConfiguration::New();
96 config->set_simple_configuration( 96 config->set_simple_configuration(
97 mojom::SimplePersistentPrefStoreConfiguration::New( 97 mojom::SimplePersistentPrefStoreConfiguration::New(
98 profile_dir_.GetPath().AppendASCII("Preferences"))); 98 profile_dir_.GetPath().AppendASCII("Preferences")));
99 control->Init(std::move(config)); 99 control->Init(std::move(config));
100 above_user_prefs_pref_store_ = new ValueMapPrefStore(); 100 above_user_prefs_pref_store_ = new ValueMapPrefStore();
101 below_user_prefs_pref_store_ = new ValueMapPrefStore(); 101 below_user_prefs_pref_store_ = new ValueMapPrefStore();
102 mojom::PrefStoreRegistryPtr registry; 102 mojom::PrefStoreRegistryPtr registry;
103 connector()->BindInterface(mojom::kServiceName, &registry); 103 connector()->BindInterface(mojom::kServiceName, &registry);
104 above_user_prefs_impl_ = 104 above_user_prefs_impl_ =
105 PrefStoreImpl::Create(registry.get(), above_user_prefs_pref_store_, 105 PrefStoreImpl::Create(registry.get(), above_user_prefs_pref_store_,
106 PrefValueStore::COMMAND_LINE_STORE); 106 PrefValueStore::COMMAND_LINE_STORE);
107 below_user_prefs_impl_ = 107 below_user_prefs_impl_ =
108 PrefStoreImpl::Create(registry.get(), below_user_prefs_pref_store_, 108 PrefStoreImpl::Create(registry.get(), below_user_prefs_pref_store_,
109 PrefValueStore::RECOMMENDED_STORE); 109 PrefValueStore::RECOMMENDED_STORE);
110 } 110 }
111 111
112 // service_manager::test::ServiceTest: 112 // service_manager::test::ServiceTest:
113 std::unique_ptr<service_manager::Service> CreateService() override { 113 std::unique_ptr<service_manager::Service> CreateService() override {
114 return base::MakeUnique<ServiceTestClient>(this, 114 return base::MakeUnique<ServiceTestClient>(this, worker_pool_owner_.pool());
115 worker_pool_owner_->pool());
116 } 115 }
117 116
118 std::unique_ptr<base::MessageLoop> CreateMessageLoop() override {
fdoray 2017/05/10 16:53:50 I doubt that creating the SequencedWorkerPoolOwner
119 auto loop = ServiceTest::CreateMessageLoop();
120 worker_pool_owner_ = base::MakeUnique<base::SequencedWorkerPoolOwner>(
121 2, "PrefServiceFactoryTest");
122 loop->AddDestructionObserver(this);
123 return loop;
124 }
125
126 // base::MessageLoop::DestructionObserver
127 void WillDestroyCurrentMessageLoop() override { worker_pool_owner_.reset(); }
128
129 // Create a fully initialized PrefService synchronously. 117 // Create a fully initialized PrefService synchronously.
130 std::unique_ptr<PrefService> Create() { 118 std::unique_ptr<PrefService> Create() {
131 std::unique_ptr<PrefService> pref_service; 119 std::unique_ptr<PrefService> pref_service;
132 base::RunLoop run_loop; 120 base::RunLoop run_loop;
133 auto pref_registry = make_scoped_refptr(new PrefRegistrySimple()); 121 auto pref_registry = make_scoped_refptr(new PrefRegistrySimple());
134 pref_registry->RegisterIntegerPref(kKey, kInitialValue); 122 pref_registry->RegisterIntegerPref(kKey, kInitialValue);
135 pref_registry->RegisterIntegerPref(kOtherKey, kInitialValue); 123 pref_registry->RegisterIntegerPref(kOtherKey, kInitialValue);
136 pref_registry->RegisterDictionaryPref(kDictionaryKey); 124 pref_registry->RegisterDictionaryPref(kDictionaryKey);
137 ConnectToPrefService(connector(), pref_registry, 125 ConnectToPrefService(connector(), pref_registry,
138 std::vector<PrefValueStore::PrefStoreType>(), 126 std::vector<PrefValueStore::PrefStoreType>(),
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 } 168 }
181 169
182 static void OnPrefChanged(const base::Closure& quit_closure, 170 static void OnPrefChanged(const base::Closure& quit_closure,
183 const std::string& expected_path, 171 const std::string& expected_path,
184 const std::string& path) { 172 const std::string& path) {
185 if (path == expected_path) 173 if (path == expected_path)
186 quit_closure.Run(); 174 quit_closure.Run();
187 } 175 }
188 176
189 base::ScopedTempDir profile_dir_; 177 base::ScopedTempDir profile_dir_;
190 std::unique_ptr<base::SequencedWorkerPoolOwner> worker_pool_owner_; 178 base::SequencedWorkerPoolOwner worker_pool_owner_;
191 scoped_refptr<WriteablePrefStore> above_user_prefs_pref_store_; 179 scoped_refptr<WriteablePrefStore> above_user_prefs_pref_store_;
192 std::unique_ptr<PrefStoreImpl> above_user_prefs_impl_; 180 std::unique_ptr<PrefStoreImpl> above_user_prefs_impl_;
193 scoped_refptr<WriteablePrefStore> below_user_prefs_pref_store_; 181 scoped_refptr<WriteablePrefStore> below_user_prefs_pref_store_;
194 std::unique_ptr<PrefStoreImpl> below_user_prefs_impl_; 182 std::unique_ptr<PrefStoreImpl> below_user_prefs_impl_;
195 183
196 DISALLOW_COPY_AND_ASSIGN(PrefServiceFactoryTest); 184 DISALLOW_COPY_AND_ASSIGN(PrefServiceFactoryTest);
197 }; 185 };
198 186
199 // Check that a single client can set and read back values. 187 // Check that a single client can set and read back values.
200 TEST_F(PrefServiceFactoryTest, Basic) { 188 TEST_F(PrefServiceFactoryTest, Basic) {
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 } 474 }
487 PrefChangeRegistrar registrar; 475 PrefChangeRegistrar registrar;
488 registrar.Init(pref_service2.get()); 476 registrar.Init(pref_service2.get());
489 registrar.Add(kDictionaryKey, base::Bind(&Fail, pref_service2.get())); 477 registrar.Add(kDictionaryKey, base::Bind(&Fail, pref_service2.get()));
490 pref_service->SetInteger(kKey, kUpdatedValue); 478 pref_service->SetInteger(kKey, kUpdatedValue);
491 WaitForPrefChange(pref_service2.get(), kKey); 479 WaitForPrefChange(pref_service2.get(), kKey);
492 } 480 }
493 481
494 } // namespace 482 } // namespace
495 } // namespace prefs 483 } // namespace prefs
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698