OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/autofill/core/browser/webdata/autofill_data_type_controller
.h" | 5 #include "components/autofill/core/browser/webdata/autofill_data_type_controller
.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/callback.h" | 10 #include "base/callback.h" |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 const scoped_refptr<base::SingleThreadTaskRunner> db_task_runner_; | 106 const scoped_refptr<base::SingleThreadTaskRunner> db_task_runner_; |
107 base::Callback<void(void)> db_loaded_callback_; | 107 base::Callback<void(void)> db_loaded_callback_; |
108 | 108 |
109 DISALLOW_COPY_AND_ASSIGN(FakeWebDataService); | 109 DISALLOW_COPY_AND_ASSIGN(FakeWebDataService); |
110 }; | 110 }; |
111 | 111 |
112 class SyncAutofillDataTypeControllerTest : public testing::Test { | 112 class SyncAutofillDataTypeControllerTest : public testing::Test { |
113 public: | 113 public: |
114 SyncAutofillDataTypeControllerTest() | 114 SyncAutofillDataTypeControllerTest() |
115 : db_thread_("DB_Thread"), | 115 : db_thread_("DB_Thread"), |
116 last_start_result_(sync_driver::DataTypeController::OK), | 116 last_start_result_(syncer::DataTypeController::OK), |
117 weak_ptr_factory_(this) {} | 117 weak_ptr_factory_(this) {} |
118 ~SyncAutofillDataTypeControllerTest() override {} | 118 ~SyncAutofillDataTypeControllerTest() override {} |
119 | 119 |
120 void SetUp() override { | 120 void SetUp() override { |
121 db_thread_.Start(); | 121 db_thread_.Start(); |
122 web_data_service_ = new FakeWebDataService( | 122 web_data_service_ = new FakeWebDataService( |
123 base::ThreadTaskRunnerHandle::Get(), db_thread_.task_runner()); | 123 base::ThreadTaskRunnerHandle::Get(), db_thread_.task_runner()); |
124 autofill_dtc_ = base::MakeUnique<AutofillDataTypeController>( | 124 autofill_dtc_ = base::MakeUnique<AutofillDataTypeController>( |
125 db_thread_.task_runner(), base::Bind(&base::DoNothing), &sync_client_, | 125 db_thread_.task_runner(), base::Bind(&base::DoNothing), &sync_client_, |
126 web_data_service_); | 126 web_data_service_); |
127 } | 127 } |
128 | 128 |
129 void TearDown() override { | 129 void TearDown() override { |
130 web_data_service_->ShutdownOnUIThread(); | 130 web_data_service_->ShutdownOnUIThread(); |
131 | 131 |
132 // Make sure WebDataService is shutdown properly on DB thread before we | 132 // Make sure WebDataService is shutdown properly on DB thread before we |
133 // destroy it. | 133 // destroy it. |
134 base::RunLoop run_loop; | 134 base::RunLoop run_loop; |
135 ASSERT_TRUE(db_thread_.task_runner()->PostTaskAndReply( | 135 ASSERT_TRUE(db_thread_.task_runner()->PostTaskAndReply( |
136 FROM_HERE, base::Bind(&base::DoNothing), run_loop.QuitClosure())); | 136 FROM_HERE, base::Bind(&base::DoNothing), run_loop.QuitClosure())); |
137 run_loop.Run(); | 137 run_loop.Run(); |
138 } | 138 } |
139 | 139 |
140 // Passed to AutofillDTC::Start(). | 140 // Passed to AutofillDTC::Start(). |
141 void OnStartFinished(sync_driver::DataTypeController::ConfigureResult result, | 141 void OnStartFinished(syncer::DataTypeController::ConfigureResult result, |
142 const syncer::SyncMergeResult& local_merge_result, | 142 const syncer::SyncMergeResult& local_merge_result, |
143 const syncer::SyncMergeResult& syncer_merge_result) { | 143 const syncer::SyncMergeResult& syncer_merge_result) { |
144 last_start_result_ = result; | 144 last_start_result_ = result; |
145 last_start_error_ = local_merge_result.error(); | 145 last_start_error_ = local_merge_result.error(); |
146 } | 146 } |
147 | 147 |
148 void OnLoadFinished(syncer::ModelType type, const syncer::SyncError& error) { | 148 void OnLoadFinished(syncer::ModelType type, const syncer::SyncError& error) { |
149 EXPECT_FALSE(error.IsSet()); | 149 EXPECT_FALSE(error.IsSet()); |
150 EXPECT_EQ(type, syncer::AUTOFILL); | 150 EXPECT_EQ(type, syncer::AUTOFILL); |
151 } | 151 } |
152 | 152 |
153 void BlockForDBThread() { | 153 void BlockForDBThread() { |
154 base::RunLoop run_loop; | 154 base::RunLoop run_loop; |
155 ASSERT_TRUE(db_thread_.task_runner()->PostTaskAndReply( | 155 ASSERT_TRUE(db_thread_.task_runner()->PostTaskAndReply( |
156 FROM_HERE, base::Bind(&base::DoNothing), run_loop.QuitClosure())); | 156 FROM_HERE, base::Bind(&base::DoNothing), run_loop.QuitClosure())); |
157 run_loop.Run(); | 157 run_loop.Run(); |
158 } | 158 } |
159 | 159 |
160 protected: | 160 protected: |
161 base::MessageLoop message_loop_; | 161 base::MessageLoop message_loop_; |
162 base::Thread db_thread_; | 162 base::Thread db_thread_; |
163 sync_driver::FakeSyncClient sync_client_; | 163 syncer::FakeSyncClient sync_client_; |
164 std::unique_ptr<AutofillDataTypeController> autofill_dtc_; | 164 std::unique_ptr<AutofillDataTypeController> autofill_dtc_; |
165 scoped_refptr<FakeWebDataService> web_data_service_; | 165 scoped_refptr<FakeWebDataService> web_data_service_; |
166 | 166 |
167 // Stores arguments of most recent call of OnStartFinished(). | 167 // Stores arguments of most recent call of OnStartFinished(). |
168 sync_driver::DataTypeController::ConfigureResult last_start_result_; | 168 syncer::DataTypeController::ConfigureResult last_start_result_; |
169 syncer::SyncError last_start_error_; | 169 syncer::SyncError last_start_error_; |
170 base::WeakPtrFactory<SyncAutofillDataTypeControllerTest> weak_ptr_factory_; | 170 base::WeakPtrFactory<SyncAutofillDataTypeControllerTest> weak_ptr_factory_; |
171 }; | 171 }; |
172 | 172 |
173 // Load the WDS's database, then start the Autofill DTC. It should | 173 // Load the WDS's database, then start the Autofill DTC. It should |
174 // immediately try to start association and fail (due to missing DB | 174 // immediately try to start association and fail (due to missing DB |
175 // thread). | 175 // thread). |
176 TEST_F(SyncAutofillDataTypeControllerTest, StartWDSReady) { | 176 TEST_F(SyncAutofillDataTypeControllerTest, StartWDSReady) { |
177 web_data_service_->LoadDatabase(); | 177 web_data_service_->LoadDatabase(); |
178 autofill_dtc_->LoadModels( | 178 autofill_dtc_->LoadModels( |
179 base::Bind(&SyncAutofillDataTypeControllerTest::OnLoadFinished, | 179 base::Bind(&SyncAutofillDataTypeControllerTest::OnLoadFinished, |
180 weak_ptr_factory_.GetWeakPtr())); | 180 weak_ptr_factory_.GetWeakPtr())); |
181 | 181 |
182 autofill_dtc_->StartAssociating( | 182 autofill_dtc_->StartAssociating( |
183 base::Bind(&SyncAutofillDataTypeControllerTest::OnStartFinished, | 183 base::Bind(&SyncAutofillDataTypeControllerTest::OnStartFinished, |
184 weak_ptr_factory_.GetWeakPtr())); | 184 weak_ptr_factory_.GetWeakPtr())); |
185 BlockForDBThread(); | 185 BlockForDBThread(); |
186 | 186 |
187 EXPECT_EQ(sync_driver::DataTypeController::ASSOCIATION_FAILED, | 187 EXPECT_EQ(syncer::DataTypeController::ASSOCIATION_FAILED, last_start_result_); |
188 last_start_result_); | |
189 EXPECT_TRUE(last_start_error_.IsSet()); | 188 EXPECT_TRUE(last_start_error_.IsSet()); |
190 EXPECT_EQ(sync_driver::DataTypeController::DISABLED, autofill_dtc_->state()); | 189 EXPECT_EQ(syncer::DataTypeController::DISABLED, autofill_dtc_->state()); |
191 } | 190 } |
192 | 191 |
193 // Start the autofill DTC without the WDS's database loaded, then | 192 // Start the autofill DTC without the WDS's database loaded, then |
194 // start the DB. The Autofill DTC should be in the MODEL_STARTING | 193 // start the DB. The Autofill DTC should be in the MODEL_STARTING |
195 // state until the database in loaded, when it should try to start | 194 // state until the database in loaded, when it should try to start |
196 // association and fail (due to missing DB thread). | 195 // association and fail (due to missing DB thread). |
197 TEST_F(SyncAutofillDataTypeControllerTest, StartWDSNotReady) { | 196 TEST_F(SyncAutofillDataTypeControllerTest, StartWDSNotReady) { |
198 autofill_dtc_->LoadModels( | 197 autofill_dtc_->LoadModels( |
199 base::Bind(&SyncAutofillDataTypeControllerTest::OnLoadFinished, | 198 base::Bind(&SyncAutofillDataTypeControllerTest::OnLoadFinished, |
200 weak_ptr_factory_.GetWeakPtr())); | 199 weak_ptr_factory_.GetWeakPtr())); |
201 | 200 |
202 EXPECT_EQ(sync_driver::DataTypeController::OK, last_start_result_); | 201 EXPECT_EQ(syncer::DataTypeController::OK, last_start_result_); |
203 EXPECT_FALSE(last_start_error_.IsSet()); | 202 EXPECT_FALSE(last_start_error_.IsSet()); |
204 EXPECT_EQ(sync_driver::DataTypeController::MODEL_STARTING, | 203 EXPECT_EQ(syncer::DataTypeController::MODEL_STARTING, autofill_dtc_->state()); |
205 autofill_dtc_->state()); | |
206 | 204 |
207 web_data_service_->LoadDatabase(); | 205 web_data_service_->LoadDatabase(); |
208 | 206 |
209 autofill_dtc_->StartAssociating( | 207 autofill_dtc_->StartAssociating( |
210 base::Bind(&SyncAutofillDataTypeControllerTest::OnStartFinished, | 208 base::Bind(&SyncAutofillDataTypeControllerTest::OnStartFinished, |
211 weak_ptr_factory_.GetWeakPtr())); | 209 weak_ptr_factory_.GetWeakPtr())); |
212 BlockForDBThread(); | 210 BlockForDBThread(); |
213 | 211 |
214 EXPECT_EQ(sync_driver::DataTypeController::ASSOCIATION_FAILED, | 212 EXPECT_EQ(syncer::DataTypeController::ASSOCIATION_FAILED, last_start_result_); |
215 last_start_result_); | |
216 EXPECT_TRUE(last_start_error_.IsSet()); | 213 EXPECT_TRUE(last_start_error_.IsSet()); |
217 | 214 |
218 EXPECT_EQ(sync_driver::DataTypeController::DISABLED, autofill_dtc_->state()); | 215 EXPECT_EQ(syncer::DataTypeController::DISABLED, autofill_dtc_->state()); |
219 } | 216 } |
220 | 217 |
221 } // namespace | 218 } // namespace |
222 | 219 |
223 } // namespace browser_sync | 220 } // namespace browser_sync |
OLD | NEW |