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 <windows.h> | 5 #include <windows.h> |
6 #include <wincrypt.h> | 6 #include <wincrypt.h> |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 if (store_.get()) | 130 if (store_.get()) |
131 store_->ShutdownOnUIThread(); | 131 store_->ShutdownOnUIThread(); |
132 wds_->ShutdownOnUIThread(); | 132 wds_->ShutdownOnUIThread(); |
133 wdbs_->ShutdownDatabase(); | 133 wdbs_->ShutdownDatabase(); |
134 wds_ = NULL; | 134 wds_ = NULL; |
135 wdbs_ = NULL; | 135 wdbs_ = NULL; |
136 base::WaitableEvent done(false, false); | 136 base::WaitableEvent done(false, false); |
137 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 137 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, |
138 base::Bind(&base::WaitableEvent::Signal, base::Unretained(&done))); | 138 base::Bind(&base::WaitableEvent::Signal, base::Unretained(&done))); |
139 done.Wait(); | 139 done.Wait(); |
140 MessageLoop::current()->PostTask(FROM_HERE, MessageLoop::QuitClosure()); | 140 base::MessageLoop::current()->PostTask(FROM_HERE, |
141 MessageLoop::current()->Run(); | 141 base::MessageLoop::QuitClosure()); |
| 142 base::MessageLoop::current()->Run(); |
142 db_thread_.Stop(); | 143 db_thread_.Stop(); |
143 } | 144 } |
144 | 145 |
145 MessageLoopForUI message_loop_; | 146 base::MessageLoopForUI message_loop_; |
146 content::TestBrowserThread ui_thread_; | 147 content::TestBrowserThread ui_thread_; |
147 // PasswordStore, WDS schedule work on this thread. | 148 // PasswordStore, WDS schedule work on this thread. |
148 content::TestBrowserThread db_thread_; | 149 content::TestBrowserThread db_thread_; |
149 | 150 |
150 scoped_ptr<LoginDatabase> login_db_; | 151 scoped_ptr<LoginDatabase> login_db_; |
151 scoped_ptr<TestingProfile> profile_; | 152 scoped_ptr<TestingProfile> profile_; |
152 scoped_refptr<WebDataService> wds_; | 153 scoped_refptr<WebDataService> wds_; |
153 scoped_refptr<WebDatabaseService> wdbs_; | 154 scoped_refptr<WebDatabaseService> wdbs_; |
154 scoped_refptr<PasswordStore> store_; | 155 scoped_refptr<PasswordStore> store_; |
155 base::ScopedTempDir temp_dir_; | 156 base::ScopedTempDir temp_dir_; |
156 }; | 157 }; |
157 | 158 |
158 ACTION(STLDeleteElements0) { | 159 ACTION(STLDeleteElements0) { |
159 STLDeleteContainerPointers(arg0.begin(), arg0.end()); | 160 STLDeleteContainerPointers(arg0.begin(), arg0.end()); |
160 } | 161 } |
161 | 162 |
162 ACTION(QuitUIMessageLoop) { | 163 ACTION(QuitUIMessageLoop) { |
163 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 164 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
164 MessageLoop::current()->Quit(); | 165 base::MessageLoop::current()->Quit(); |
165 } | 166 } |
166 | 167 |
167 MATCHER(EmptyWDResult, "") { | 168 MATCHER(EmptyWDResult, "") { |
168 return static_cast<const WDResult<std::vector<PasswordForm*> >*>( | 169 return static_cast<const WDResult<std::vector<PasswordForm*> >*>( |
169 arg)->GetValue().empty(); | 170 arg)->GetValue().empty(); |
170 } | 171 } |
171 | 172 |
172 // Hangs flakily, http://crbug.com/71385. | 173 // Hangs flakily, http://crbug.com/71385. |
173 TEST_F(PasswordStoreWinTest, DISABLED_ConvertIE7Login) { | 174 TEST_F(PasswordStoreWinTest, DISABLED_ConvertIE7Login) { |
174 IE7PasswordInfo password_info; | 175 IE7PasswordInfo password_info; |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
227 }; | 228 }; |
228 std::vector<PasswordForm*> forms; | 229 std::vector<PasswordForm*> forms; |
229 forms.push_back(CreatePasswordFormFromData(expected_form_data)); | 230 forms.push_back(CreatePasswordFormFromData(expected_form_data)); |
230 | 231 |
231 // The IE7 password should be returned. | 232 // The IE7 password should be returned. |
232 EXPECT_CALL(consumer, | 233 EXPECT_CALL(consumer, |
233 OnGetPasswordStoreResults(ContainsAllPasswordForms(forms))) | 234 OnGetPasswordStoreResults(ContainsAllPasswordForms(forms))) |
234 .WillOnce(QuitUIMessageLoop()); | 235 .WillOnce(QuitUIMessageLoop()); |
235 | 236 |
236 store_->GetLogins(*form, &consumer); | 237 store_->GetLogins(*form, &consumer); |
237 MessageLoop::current()->Run(); | 238 base::MessageLoop::current()->Run(); |
238 | 239 |
239 STLDeleteElements(&forms); | 240 STLDeleteElements(&forms); |
240 } | 241 } |
241 | 242 |
242 // Crashy. http://crbug.com/86558 | 243 // Crashy. http://crbug.com/86558 |
243 TEST_F(PasswordStoreWinTest, DISABLED_OutstandingWDSQueries) { | 244 TEST_F(PasswordStoreWinTest, DISABLED_OutstandingWDSQueries) { |
244 store_ = new PasswordStoreWin(login_db_.release(), profile_.get(), | 245 store_ = new PasswordStoreWin(login_db_.release(), profile_.get(), |
245 wds_.get()); | 246 wds_.get()); |
246 EXPECT_TRUE(store_->Init()); | 247 EXPECT_TRUE(store_->Init()); |
247 | 248 |
(...skipping 12 matching lines...) Expand all Loading... |
260 scoped_ptr<PasswordForm> form(CreatePasswordFormFromData(form_data)); | 261 scoped_ptr<PasswordForm> form(CreatePasswordFormFromData(form_data)); |
261 | 262 |
262 MockPasswordStoreConsumer consumer; | 263 MockPasswordStoreConsumer consumer; |
263 store_->GetLogins(*form, &consumer); | 264 store_->GetLogins(*form, &consumer); |
264 | 265 |
265 // Release the PSW and the WDS before the query can return. | 266 // Release the PSW and the WDS before the query can return. |
266 store_->ShutdownOnUIThread(); | 267 store_->ShutdownOnUIThread(); |
267 store_ = NULL; | 268 store_ = NULL; |
268 wds_ = NULL; | 269 wds_ = NULL; |
269 | 270 |
270 MessageLoop::current()->RunUntilIdle(); | 271 base::MessageLoop::current()->RunUntilIdle(); |
271 } | 272 } |
272 | 273 |
273 // Hangs flakily, see http://crbug.com/43836. | 274 // Hangs flakily, see http://crbug.com/43836. |
274 TEST_F(PasswordStoreWinTest, DISABLED_MultipleWDSQueriesOnDifferentThreads) { | 275 TEST_F(PasswordStoreWinTest, DISABLED_MultipleWDSQueriesOnDifferentThreads) { |
275 IE7PasswordInfo password_info; | 276 IE7PasswordInfo password_info; |
276 ASSERT_TRUE(CreateIE7PasswordInfo(L"http://example.com/origin", | 277 ASSERT_TRUE(CreateIE7PasswordInfo(L"http://example.com/origin", |
277 base::Time::FromDoubleT(1), | 278 base::Time::FromDoubleT(1), |
278 &password_info)); | 279 &password_info)); |
279 wds_->AddIE7Login(password_info); | 280 wds_->AddIE7Login(password_info); |
280 | 281 |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
334 | 335 |
335 EXPECT_CALL(wds_consumer, | 336 EXPECT_CALL(wds_consumer, |
336 OnWebDataServiceRequestDone(_, _)) | 337 OnWebDataServiceRequestDone(_, _)) |
337 .WillOnce(QuitUIMessageLoop()); | 338 .WillOnce(QuitUIMessageLoop()); |
338 | 339 |
339 wds_->GetIE7Login(password_info, &wds_consumer); | 340 wds_->GetIE7Login(password_info, &wds_consumer); |
340 | 341 |
341 // Run the MessageLoop twice: once for the GetIE7Login that PasswordStoreWin | 342 // Run the MessageLoop twice: once for the GetIE7Login that PasswordStoreWin |
342 // schedules on the DB thread and once for the one we just scheduled on the UI | 343 // schedules on the DB thread and once for the one we just scheduled on the UI |
343 // thread. | 344 // thread. |
344 MessageLoop::current()->Run(); | 345 base::MessageLoop::current()->Run(); |
345 MessageLoop::current()->Run(); | 346 base::MessageLoop::current()->Run(); |
346 | 347 |
347 STLDeleteElements(&forms); | 348 STLDeleteElements(&forms); |
348 } | 349 } |
349 | 350 |
350 TEST_F(PasswordStoreWinTest, EmptyLogins) { | 351 TEST_F(PasswordStoreWinTest, EmptyLogins) { |
351 store_ = new PasswordStoreWin(login_db_.release(), profile_.get(), | 352 store_ = new PasswordStoreWin(login_db_.release(), profile_.get(), |
352 wds_.get()); | 353 wds_.get()); |
353 store_->Init(); | 354 store_->Init(); |
354 | 355 |
355 PasswordFormData form_data = { | 356 PasswordFormData form_data = { |
(...skipping 16 matching lines...) Expand all Loading... |
372 ON_CALL(consumer, OnGetPasswordStoreResults(_)) | 373 ON_CALL(consumer, OnGetPasswordStoreResults(_)) |
373 .WillByDefault(QuitUIMessageLoop()); | 374 .WillByDefault(QuitUIMessageLoop()); |
374 | 375 |
375 VectorOfForms expect_none; | 376 VectorOfForms expect_none; |
376 // expect that we get no results; | 377 // expect that we get no results; |
377 EXPECT_CALL(consumer, | 378 EXPECT_CALL(consumer, |
378 OnGetPasswordStoreResults(ContainsAllPasswordForms(expect_none))) | 379 OnGetPasswordStoreResults(ContainsAllPasswordForms(expect_none))) |
379 .WillOnce(DoAll(WithArg<0>(STLDeleteElements0()), QuitUIMessageLoop())); | 380 .WillOnce(DoAll(WithArg<0>(STLDeleteElements0()), QuitUIMessageLoop())); |
380 | 381 |
381 store_->GetLogins(*form, &consumer); | 382 store_->GetLogins(*form, &consumer); |
382 MessageLoop::current()->Run(); | 383 base::MessageLoop::current()->Run(); |
383 } | 384 } |
384 | 385 |
385 TEST_F(PasswordStoreWinTest, EmptyBlacklistLogins) { | 386 TEST_F(PasswordStoreWinTest, EmptyBlacklistLogins) { |
386 store_ = new PasswordStoreWin(login_db_.release(), profile_.get(), | 387 store_ = new PasswordStoreWin(login_db_.release(), profile_.get(), |
387 wds_.get()); | 388 wds_.get()); |
388 store_->Init(); | 389 store_->Init(); |
389 | 390 |
390 MockPasswordStoreConsumer consumer; | 391 MockPasswordStoreConsumer consumer; |
391 | 392 |
392 // Make sure we quit the MessageLoop even if the test fails. | 393 // Make sure we quit the MessageLoop even if the test fails. |
393 ON_CALL(consumer, OnPasswordStoreRequestDone(_, _)) | 394 ON_CALL(consumer, OnPasswordStoreRequestDone(_, _)) |
394 .WillByDefault(QuitUIMessageLoop()); | 395 .WillByDefault(QuitUIMessageLoop()); |
395 | 396 |
396 VectorOfForms expect_none; | 397 VectorOfForms expect_none; |
397 // expect that we get no results; | 398 // expect that we get no results; |
398 EXPECT_CALL( | 399 EXPECT_CALL( |
399 consumer, | 400 consumer, |
400 OnPasswordStoreRequestDone(_, ContainsAllPasswordForms(expect_none))) | 401 OnPasswordStoreRequestDone(_, ContainsAllPasswordForms(expect_none))) |
401 .WillOnce(DoAll(WithArg<1>(STLDeleteElements0()), QuitUIMessageLoop())); | 402 .WillOnce(DoAll(WithArg<1>(STLDeleteElements0()), QuitUIMessageLoop())); |
402 | 403 |
403 store_->GetBlacklistLogins(&consumer); | 404 store_->GetBlacklistLogins(&consumer); |
404 MessageLoop::current()->Run(); | 405 base::MessageLoop::current()->Run(); |
405 } | 406 } |
406 | 407 |
407 TEST_F(PasswordStoreWinTest, EmptyAutofillableLogins) { | 408 TEST_F(PasswordStoreWinTest, EmptyAutofillableLogins) { |
408 store_ = new PasswordStoreWin(login_db_.release(), profile_.get(), | 409 store_ = new PasswordStoreWin(login_db_.release(), profile_.get(), |
409 wds_.get()); | 410 wds_.get()); |
410 store_->Init(); | 411 store_->Init(); |
411 | 412 |
412 MockPasswordStoreConsumer consumer; | 413 MockPasswordStoreConsumer consumer; |
413 | 414 |
414 // Make sure we quit the MessageLoop even if the test fails. | 415 // Make sure we quit the MessageLoop even if the test fails. |
415 ON_CALL(consumer, OnPasswordStoreRequestDone(_, _)) | 416 ON_CALL(consumer, OnPasswordStoreRequestDone(_, _)) |
416 .WillByDefault(QuitUIMessageLoop()); | 417 .WillByDefault(QuitUIMessageLoop()); |
417 | 418 |
418 VectorOfForms expect_none; | 419 VectorOfForms expect_none; |
419 // expect that we get no results; | 420 // expect that we get no results; |
420 EXPECT_CALL( | 421 EXPECT_CALL( |
421 consumer, | 422 consumer, |
422 OnPasswordStoreRequestDone(_, ContainsAllPasswordForms(expect_none))) | 423 OnPasswordStoreRequestDone(_, ContainsAllPasswordForms(expect_none))) |
423 .WillOnce(DoAll(WithArg<1>(STLDeleteElements0()), QuitUIMessageLoop())); | 424 .WillOnce(DoAll(WithArg<1>(STLDeleteElements0()), QuitUIMessageLoop())); |
424 | 425 |
425 store_->GetAutofillableLogins(&consumer); | 426 store_->GetAutofillableLogins(&consumer); |
426 MessageLoop::current()->Run(); | 427 base::MessageLoop::current()->Run(); |
427 } | 428 } |
OLD | NEW |