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

Unified Diff: ios/chrome/browser/ui/settings/autofill_collection_view_controller_unittest.mm

Issue 2592173002: Fix ios_chrome_unittests to crash on DCHECK failure. (Closed)
Patch Set: Address comments Created 4 years 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 side-by-side diff with in-line comments
Download patch
Index: ios/chrome/browser/ui/settings/autofill_collection_view_controller_unittest.mm
diff --git a/ios/chrome/browser/ui/settings/autofill_collection_view_controller_unittest.mm b/ios/chrome/browser/ui/settings/autofill_collection_view_controller_unittest.mm
index 9cfbadc32ab567a0b11eb26be3f00d34c258ee48..41ae1eac736aa9bcaafd2f9baab66807a2eb9d66 100644
--- a/ios/chrome/browser/ui/settings/autofill_collection_view_controller_unittest.mm
+++ b/ios/chrome/browser/ui/settings/autofill_collection_view_controller_unittest.mm
@@ -14,6 +14,7 @@
#include "ios/chrome/browser/autofill/personal_data_manager_factory.h"
#include "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
#import "ios/chrome/browser/ui/collection_view/collection_view_controller_test.h"
+#include "ios/chrome/browser/ui/settings/personal_data_manager_data_changed_observer.h"
#include "ios/web/public/test/test_web_thread_bundle.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -26,8 +27,7 @@ namespace {
class AutofillCollectionViewControllerTest
: public CollectionViewControllerTest {
protected:
- void SetUp() override {
- CollectionViewControllerTest::SetUp();
+ AutofillCollectionViewControllerTest() {
TestChromeBrowserState::Builder test_cbs_builder;
chrome_browser_state_ = test_cbs_builder.Build();
// Profile import requires a PersonalDataManager which itself needs the
@@ -44,14 +44,17 @@ class AutofillCollectionViewControllerTest
void AddProfile(const std::string& origin,
const std::string& name,
const std::string& address) {
- autofill::PersonalDataManager* personalDataManager =
+ autofill::PersonalDataManager* personal_data_manager =
autofill::PersonalDataManagerFactory::GetForBrowserState(
chrome_browser_state_.get());
- autofill::AutofillProfile autofillProfile(base::GenerateGUID(), origin);
- autofillProfile.SetRawInfo(autofill::NAME_FULL, base::ASCIIToUTF16(name));
- autofillProfile.SetRawInfo(autofill::ADDRESS_HOME_LINE1,
- base::ASCIIToUTF16(address));
- personalDataManager->SaveImportedProfile(autofillProfile);
+ PersonalDataManagerDataChangedObserver observer(personal_data_manager);
+
+ autofill::AutofillProfile autofill_profile(base::GenerateGUID(), origin);
+ autofill_profile.SetRawInfo(autofill::NAME_FULL, base::ASCIIToUTF16(name));
+ autofill_profile.SetRawInfo(autofill::ADDRESS_HOME_LINE1,
+ base::ASCIIToUTF16(address));
+ personal_data_manager->SaveImportedProfile(autofill_profile);
+ observer.Wait(); // Wait for completion of the asynchronous operation.
}
web::TestWebThreadBundle thread_bundle_;
@@ -83,16 +86,20 @@ TEST_F(AutofillCollectionViewControllerTest, TestOneProfile) {
// Adding a single credit card results in a credit card section.
TEST_F(AutofillCollectionViewControllerTest, TestOneCreditCard) {
- autofill::PersonalDataManager* personalDataManager =
+ autofill::PersonalDataManager* personal_data_manager =
autofill::PersonalDataManagerFactory::GetForBrowserState(
chrome_browser_state_.get());
- autofill::CreditCard creditCard(base::GenerateGUID(),
- "https://www.example.com/");
- creditCard.SetRawInfo(autofill::CREDIT_CARD_NAME_FULL,
- base::ASCIIToUTF16("Alan Smithee"));
- creditCard.SetRawInfo(autofill::CREDIT_CARD_NUMBER,
- base::ASCIIToUTF16("378282246310005"));
- personalDataManager->SaveImportedCreditCard(creditCard);
+ PersonalDataManagerDataChangedObserver observer(personal_data_manager);
+
+ autofill::CreditCard credit_card(base::GenerateGUID(),
+ "https://www.example.com/");
+ credit_card.SetRawInfo(autofill::CREDIT_CARD_NAME_FULL,
+ base::ASCIIToUTF16("Alan Smithee"));
+ credit_card.SetRawInfo(autofill::CREDIT_CARD_NUMBER,
+ base::ASCIIToUTF16("378282246310005"));
+ personal_data_manager->SaveImportedCreditCard(credit_card);
+ observer.Wait(); // Wait for completion of the asynchronous operation.
+
CreateController();
// Expect two sections (header and credit card section).
EXPECT_EQ(2, NumberOfSections());
@@ -117,6 +124,7 @@ TEST_F(AutofillCollectionViewControllerTest, TestOneProfileItemDeleted) {
base::mac::ObjCCastStrict<AutofillCollectionViewController>(controller());
// Put the collectionView in 'edit' mode.
[view_controller editButtonPressed];
+
// This is a bit of a shortcut, since actually clicking on the 'delete'
// button would be tough.
void (^delete_item_with_wait)(int, int) = ^(int i, int j) {
@@ -129,7 +137,16 @@ TEST_F(AutofillCollectionViewControllerTest, TestOneProfileItemDeleted) {
});
};
+ autofill::PersonalDataManager* personal_data_manager =
+ autofill::PersonalDataManagerFactory::GetForBrowserState(
+ chrome_browser_state_.get());
+ PersonalDataManagerDataChangedObserver observer(personal_data_manager);
+
+ // This call cause a modification of the PersonalDataManager, so wait until
+ // the asynchronous task complete in addition to waiting for the UI update.
delete_item_with_wait(1, 0);
+ observer.Wait(); // Wait for completion of the asynchronous operation.
+
// Exit 'edit' mode.
[view_controller editButtonPressed];

Powered by Google App Engine
This is Rietveld 408576698