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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/bind.h" | 6 #include "base/bind.h" |
7 #include "base/bind_helpers.h" | 7 #include "base/bind_helpers.h" |
8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
9 #include "base/files/scoped_temp_dir.h" | 9 #include "base/files/scoped_temp_dir.h" |
10 #include "base/platform_file.h" | 10 #include "base/platform_file.h" |
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
335 "http://bar.example.com/action", | 335 "http://bar.example.com/action", |
336 L"submit_element", | 336 L"submit_element", |
337 L"username_element", | 337 L"username_element", |
338 L"password_element", | 338 L"password_element", |
339 L"username_value", | 339 L"username_value", |
340 L"password_value", | 340 L"password_value", |
341 true, false, 1 }; | 341 true, false, 1 }; |
342 scoped_ptr<PasswordForm> form(CreatePasswordFormFromData(form_data)); | 342 scoped_ptr<PasswordForm> form(CreatePasswordFormFromData(form_data)); |
343 | 343 |
344 scoped_refptr<DBThreadObserverHelper> helper = new DBThreadObserverHelper; | 344 scoped_refptr<DBThreadObserverHelper> helper = new DBThreadObserverHelper; |
345 helper->Init(store); | 345 helper->Init(store.get()); |
346 | 346 |
347 const PasswordStoreChange expected_add_changes[] = { | 347 const PasswordStoreChange expected_add_changes[] = { |
348 PasswordStoreChange(PasswordStoreChange::ADD, *form), | 348 PasswordStoreChange(PasswordStoreChange::ADD, *form), |
349 }; | 349 }; |
350 | 350 |
351 EXPECT_CALL(helper->observer(), | 351 EXPECT_CALL( |
| 352 helper->observer(), |
352 Observe(int(chrome::NOTIFICATION_LOGINS_CHANGED), | 353 Observe(int(chrome::NOTIFICATION_LOGINS_CHANGED), |
353 content::Source<PasswordStore>(store), | 354 content::Source<PasswordStore>(store.get()), |
354 Property(&content::Details<const PasswordStoreChangeList>::ptr, | 355 Property(&content::Details<const PasswordStoreChangeList>::ptr, |
355 Pointee(ElementsAreArray( | 356 Pointee(ElementsAreArray(expected_add_changes))))); |
356 expected_add_changes))))); | |
357 | 357 |
358 // Adding a login should trigger a notification. | 358 // Adding a login should trigger a notification. |
359 store->AddLogin(*form); | 359 store->AddLogin(*form); |
360 | 360 |
361 // The PasswordStore schedules tasks to run on the DB thread so we schedule | 361 // The PasswordStore schedules tasks to run on the DB thread so we schedule |
362 // yet another task to notify us that it's safe to carry on with the test. | 362 // yet another task to notify us that it's safe to carry on with the test. |
363 WaitableEvent done(false, false); | 363 WaitableEvent done(false, false); |
364 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 364 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, |
365 base::Bind(&WaitableEvent::Signal, base::Unretained(&done))); | 365 base::Bind(&WaitableEvent::Signal, base::Unretained(&done))); |
366 done.Wait(); | 366 done.Wait(); |
367 | 367 |
368 // Change the password. | 368 // Change the password. |
369 form->password_value = WideToUTF16(L"a different password"); | 369 form->password_value = WideToUTF16(L"a different password"); |
370 | 370 |
371 const PasswordStoreChange expected_update_changes[] = { | 371 const PasswordStoreChange expected_update_changes[] = { |
372 PasswordStoreChange(PasswordStoreChange::UPDATE, *form), | 372 PasswordStoreChange(PasswordStoreChange::UPDATE, *form), |
373 }; | 373 }; |
374 | 374 |
375 EXPECT_CALL(helper->observer(), | 375 EXPECT_CALL( |
| 376 helper->observer(), |
376 Observe(int(chrome::NOTIFICATION_LOGINS_CHANGED), | 377 Observe(int(chrome::NOTIFICATION_LOGINS_CHANGED), |
377 content::Source<PasswordStore>(store), | 378 content::Source<PasswordStore>(store.get()), |
378 Property(&content::Details<const PasswordStoreChangeList>::ptr, | 379 Property(&content::Details<const PasswordStoreChangeList>::ptr, |
379 Pointee(ElementsAreArray( | 380 Pointee(ElementsAreArray(expected_update_changes))))); |
380 expected_update_changes))))); | |
381 | 381 |
382 // Updating the login with the new password should trigger a notification. | 382 // Updating the login with the new password should trigger a notification. |
383 store->UpdateLogin(*form); | 383 store->UpdateLogin(*form); |
384 | 384 |
385 // Wait for PasswordStore to send the notification. | 385 // Wait for PasswordStore to send the notification. |
386 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 386 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, |
387 base::Bind(&WaitableEvent::Signal, base::Unretained(&done))); | 387 base::Bind(&WaitableEvent::Signal, base::Unretained(&done))); |
388 done.Wait(); | 388 done.Wait(); |
389 | 389 |
390 const PasswordStoreChange expected_delete_changes[] = { | 390 const PasswordStoreChange expected_delete_changes[] = { |
391 PasswordStoreChange(PasswordStoreChange::REMOVE, *form), | 391 PasswordStoreChange(PasswordStoreChange::REMOVE, *form), |
392 }; | 392 }; |
393 | 393 |
394 EXPECT_CALL(helper->observer(), | 394 EXPECT_CALL( |
| 395 helper->observer(), |
395 Observe(int(chrome::NOTIFICATION_LOGINS_CHANGED), | 396 Observe(int(chrome::NOTIFICATION_LOGINS_CHANGED), |
396 content::Source<PasswordStore>(store), | 397 content::Source<PasswordStore>(store.get()), |
397 Property(&content::Details<const PasswordStoreChangeList>::ptr, | 398 Property(&content::Details<const PasswordStoreChangeList>::ptr, |
398 Pointee(ElementsAreArray( | 399 Pointee(ElementsAreArray(expected_delete_changes))))); |
399 expected_delete_changes))))); | |
400 | 400 |
401 // Deleting the login should trigger a notification. | 401 // Deleting the login should trigger a notification. |
402 store->RemoveLogin(*form); | 402 store->RemoveLogin(*form); |
403 | 403 |
404 // Wait for PasswordStore to send the notification. | 404 // Wait for PasswordStore to send the notification. |
405 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 405 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, |
406 base::Bind(&WaitableEvent::Signal, base::Unretained(&done))); | 406 base::Bind(&WaitableEvent::Signal, base::Unretained(&done))); |
407 done.Wait(); | 407 done.Wait(); |
408 | 408 |
409 // Public in PasswordStore, protected in PasswordStoreX. | 409 // Public in PasswordStore, protected in PasswordStoreX. |
410 static_cast<PasswordStore*>(store)->ShutdownOnUIThread(); | 410 static_cast<PasswordStore*>(store.get())->ShutdownOnUIThread(); |
411 } | 411 } |
412 | 412 |
413 TEST_P(PasswordStoreXTest, NativeMigration) { | 413 TEST_P(PasswordStoreXTest, NativeMigration) { |
414 VectorOfForms expected_autofillable; | 414 VectorOfForms expected_autofillable; |
415 InitExpectedForms(true, 50, &expected_autofillable); | 415 InitExpectedForms(true, 50, &expected_autofillable); |
416 | 416 |
417 VectorOfForms expected_blacklisted; | 417 VectorOfForms expected_blacklisted; |
418 InitExpectedForms(false, 50, &expected_blacklisted); | 418 InitExpectedForms(false, 50, &expected_blacklisted); |
419 | 419 |
420 // Get the initial size of the login DB file, before we populate it. | 420 // Get the initial size of the login DB file, before we populate it. |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
537 // larger after populating it. | 537 // larger after populating it. |
538 base::PlatformFileInfo db_file_end_info; | 538 base::PlatformFileInfo db_file_end_info; |
539 ASSERT_TRUE(file_util::GetFileInfo(login_db_file, &db_file_end_info)); | 539 ASSERT_TRUE(file_util::GetFileInfo(login_db_file, &db_file_end_info)); |
540 EXPECT_EQ(db_file_start_info.size, db_file_end_info.size); | 540 EXPECT_EQ(db_file_start_info.size, db_file_end_info.size); |
541 } | 541 } |
542 | 542 |
543 STLDeleteElements(&expected_autofillable); | 543 STLDeleteElements(&expected_autofillable); |
544 STLDeleteElements(&expected_blacklisted); | 544 STLDeleteElements(&expected_blacklisted); |
545 | 545 |
546 // Public in PasswordStore, protected in PasswordStoreX. | 546 // Public in PasswordStore, protected in PasswordStoreX. |
547 static_cast<PasswordStore*>(store)->ShutdownOnUIThread(); | 547 static_cast<PasswordStore*>(store.get())->ShutdownOnUIThread(); |
548 } | 548 } |
549 | 549 |
550 INSTANTIATE_TEST_CASE_P(NoBackend, | 550 INSTANTIATE_TEST_CASE_P(NoBackend, |
551 PasswordStoreXTest, | 551 PasswordStoreXTest, |
552 testing::Values(NO_BACKEND)); | 552 testing::Values(NO_BACKEND)); |
553 INSTANTIATE_TEST_CASE_P(FailingBackend, | 553 INSTANTIATE_TEST_CASE_P(FailingBackend, |
554 PasswordStoreXTest, | 554 PasswordStoreXTest, |
555 testing::Values(FAILING_BACKEND)); | 555 testing::Values(FAILING_BACKEND)); |
556 INSTANTIATE_TEST_CASE_P(WorkingBackend, | 556 INSTANTIATE_TEST_CASE_P(WorkingBackend, |
557 PasswordStoreXTest, | 557 PasswordStoreXTest, |
558 testing::Values(WORKING_BACKEND)); | 558 testing::Values(WORKING_BACKEND)); |
OLD | NEW |