Index: components/autofill/browser/webdata/web_data_service_unittest.cc |
diff --git a/components/autofill/browser/webdata/web_data_service_unittest.cc b/components/autofill/browser/webdata/web_data_service_unittest.cc |
deleted file mode 100644 |
index 746df1b2112efbb0d48b8a7f763f8a919be2cf35..0000000000000000000000000000000000000000 |
--- a/components/autofill/browser/webdata/web_data_service_unittest.cc |
+++ /dev/null |
@@ -1,574 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include <string> |
-#include <vector> |
- |
-#include "base/basictypes.h" |
-#include "base/files/scoped_temp_dir.h" |
-#include "base/memory/ref_counted.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/memory/scoped_vector.h" |
-#include "base/message_loop.h" |
-#include "base/stl_util.h" |
-#include "base/strings/string16.h" |
-#include "base/strings/string_util.h" |
-#include "base/strings/utf_string_conversions.h" |
-#include "base/synchronization/waitable_event.h" |
-#include "base/time.h" |
-#include "chrome/browser/webdata/web_data_service.h" |
-#include "components/autofill/browser/autofill_country.h" |
-#include "components/autofill/browser/autofill_profile.h" |
-#include "components/autofill/browser/credit_card.h" |
-#include "components/autofill/browser/webdata/autofill_change.h" |
-#include "components/autofill/browser/webdata/autofill_entry.h" |
-#include "components/autofill/browser/webdata/autofill_table.h" |
-#include "components/autofill/browser/webdata/autofill_webdata_service.h" |
-#include "components/autofill/browser/webdata/autofill_webdata_service_observer.h" |
-#include "components/autofill/core/common/form_field_data.h" |
-#include "components/webdata/common/web_data_results.h" |
-#include "components/webdata/common/web_data_service_base.h" |
-#include "components/webdata/common/web_data_service_consumer.h" |
-#include "components/webdata/common/web_database_service.h" |
-#include "content/public/test/test_browser_thread.h" |
-#include "testing/gmock/include/gmock/gmock.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-using base::Time; |
-using base::TimeDelta; |
-using base::WaitableEvent; |
-using content::BrowserThread; |
-using testing::_; |
-using testing::DoDefault; |
-using testing::ElementsAreArray; |
-using testing::Pointee; |
-using testing::Property; |
- |
-namespace { |
- |
-template <class T> |
-class AutofillWebDataServiceConsumer: public WebDataServiceConsumer { |
- public: |
- AutofillWebDataServiceConsumer() : handle_(0) {} |
- virtual ~AutofillWebDataServiceConsumer() {} |
- |
- virtual void OnWebDataServiceRequestDone(WebDataService::Handle handle, |
- const WDTypedResult* result) { |
- using content::BrowserThread; |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- handle_ = handle; |
- const WDResult<T>* wrapped_result = |
- static_cast<const WDResult<T>*>(result); |
- result_ = wrapped_result->GetValue(); |
- |
- base::MessageLoop::current()->Quit(); |
- } |
- |
- WebDataService::Handle handle() { return handle_; } |
- T& result() { return result_; } |
- |
- private: |
- WebDataService::Handle handle_; |
- T result_; |
- DISALLOW_COPY_AND_ASSIGN(AutofillWebDataServiceConsumer); |
-}; |
- |
-} // namespace |
- |
-namespace autofill { |
- |
-static const int kWebDataServiceTimeoutSeconds = 8; |
- |
-ACTION_P(SignalEvent, event) { |
- event->Signal(); |
-} |
- |
-class MockAutofillWebDataServiceObserver |
- : public AutofillWebDataServiceObserverOnDBThread { |
- public: |
- MOCK_METHOD1(AutofillEntriesChanged, |
- void(const AutofillChangeList& changes)); |
- MOCK_METHOD1(AutofillProfileChanged, |
- void(const AutofillProfileChange& change)); |
-}; |
- |
-class WebDataServiceTest : public testing::Test { |
- public: |
- WebDataServiceTest() |
- : ui_thread_(BrowserThread::UI, &message_loop_), |
- db_thread_(BrowserThread::DB) {} |
- |
- protected: |
- virtual void SetUp() { |
- db_thread_.Start(); |
- |
- ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
- base::FilePath path = temp_dir_.path().AppendASCII("TestWebDB"); |
- |
- wdbs_ = new WebDatabaseService( |
- path, |
- BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI), |
- BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB)); |
- wdbs_->AddTable(scoped_ptr<WebDatabaseTable>(new AutofillTable("en-US"))); |
- wdbs_->LoadDatabase(); |
- |
- wds_ = new AutofillWebDataService( |
- wdbs_, WebDataServiceBase::ProfileErrorCallback()); |
- wds_->Init(); |
- } |
- |
- virtual void TearDown() { |
- wds_->ShutdownOnUIThread(); |
- wdbs_->ShutdownDatabase(); |
- wds_ = NULL; |
- wdbs_ = NULL; |
- WaitForDatabaseThread(); |
- |
- base::MessageLoop::current()->PostTask(FROM_HERE, |
- base::MessageLoop::QuitClosure()); |
- base::MessageLoop::current()->Run(); |
- db_thread_.Stop(); |
- } |
- |
- void WaitForDatabaseThread() { |
- base::WaitableEvent done(false, false); |
- BrowserThread::PostTask( |
- BrowserThread::DB, |
- FROM_HERE, |
- base::Bind(&base::WaitableEvent::Signal, base::Unretained(&done))); |
- done.Wait(); |
- } |
- |
- base::MessageLoopForUI message_loop_; |
- content::TestBrowserThread ui_thread_; |
- content::TestBrowserThread db_thread_; |
- base::FilePath profile_dir_; |
- scoped_refptr<AutofillWebDataService> wds_; |
- scoped_refptr<WebDatabaseService> wdbs_; |
- base::ScopedTempDir temp_dir_; |
-}; |
- |
-class WebDataServiceAutofillTest : public WebDataServiceTest { |
- public: |
- WebDataServiceAutofillTest() |
- : WebDataServiceTest(), |
- unique_id1_(1), |
- unique_id2_(2), |
- test_timeout_(TimeDelta::FromSeconds(kWebDataServiceTimeoutSeconds)), |
- done_event_(false, false) {} |
- |
- protected: |
- virtual void SetUp() { |
- WebDataServiceTest::SetUp(); |
- name1_ = ASCIIToUTF16("name1"); |
- name2_ = ASCIIToUTF16("name2"); |
- value1_ = ASCIIToUTF16("value1"); |
- value2_ = ASCIIToUTF16("value2"); |
- |
- void(AutofillWebDataService::*add_observer_func)( |
- AutofillWebDataServiceObserverOnDBThread*) = |
- &AutofillWebDataService::AddObserver; |
- BrowserThread::PostTask( |
- BrowserThread::DB, |
- FROM_HERE, |
- base::Bind(add_observer_func, wds_, &observer_)); |
- WaitForDatabaseThread(); |
- } |
- |
- virtual void TearDown() { |
- void(AutofillWebDataService::*remove_observer_func)( |
- AutofillWebDataServiceObserverOnDBThread*) = |
- &AutofillWebDataService::RemoveObserver; |
- BrowserThread::PostTask( |
- BrowserThread::DB, |
- FROM_HERE, |
- base::Bind(remove_observer_func, wds_, &observer_)); |
- WaitForDatabaseThread(); |
- |
- WebDataServiceTest::TearDown(); |
- } |
- |
- void AppendFormField(const base::string16& name, |
- const base::string16& value, |
- std::vector<FormFieldData>* form_fields) { |
- FormFieldData field; |
- field.name = name; |
- field.value = value; |
- form_fields->push_back(field); |
- } |
- |
- base::string16 name1_; |
- base::string16 name2_; |
- base::string16 value1_; |
- base::string16 value2_; |
- int unique_id1_, unique_id2_; |
- const TimeDelta test_timeout_; |
- testing::NiceMock<MockAutofillWebDataServiceObserver> observer_; |
- WaitableEvent done_event_; |
-}; |
- |
-// Simple consumer for Keywords data. Stores the result data and quits UI |
-// message loop when callback is invoked. |
-class KeywordsConsumer : public WebDataServiceConsumer { |
- public: |
- KeywordsConsumer() : load_succeeded(false) {} |
- |
- virtual void OnWebDataServiceRequestDone( |
- WebDataService::Handle h, |
- const WDTypedResult* result) OVERRIDE { |
- if (result) { |
- load_succeeded = true; |
- DCHECK(result->GetType() == KEYWORDS_RESULT); |
- keywords_result = |
- reinterpret_cast<const WDResult<WDKeywordsResult>*>( |
- result)->GetValue(); |
- } |
- |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- base::MessageLoop::current()->Quit(); |
- } |
- |
- // True if keywords data was loaded successfully. |
- bool load_succeeded; |
- // Result data from completion callback. |
- WDKeywordsResult keywords_result; |
-}; |
- |
-TEST_F(WebDataServiceAutofillTest, FormFillAdd) { |
- const AutofillChange expected_changes[] = { |
- AutofillChange(AutofillChange::ADD, AutofillKey(name1_, value1_)), |
- AutofillChange(AutofillChange::ADD, AutofillKey(name2_, value2_)) |
- }; |
- |
- // This will verify that the correct notification is triggered, |
- // passing the correct list of autofill keys in the details. |
- EXPECT_CALL(observer_, |
- AutofillEntriesChanged(ElementsAreArray(expected_changes))) |
- .WillOnce(SignalEvent(&done_event_)); |
- |
- std::vector<FormFieldData> form_fields; |
- AppendFormField(name1_, value1_, &form_fields); |
- AppendFormField(name2_, value2_, &form_fields); |
- wds_->AddFormFields(form_fields); |
- |
- // The event will be signaled when the mock observer is notified. |
- done_event_.TimedWait(test_timeout_); |
- |
- AutofillWebDataServiceConsumer<std::vector<base::string16> > consumer; |
- WebDataService::Handle handle; |
- static const int limit = 10; |
- handle = wds_->GetFormValuesForElementName( |
- name1_, base::string16(), limit, &consumer); |
- |
- // The message loop will exit when the consumer is called. |
- base::MessageLoop::current()->Run(); |
- |
- EXPECT_EQ(handle, consumer.handle()); |
- ASSERT_EQ(1U, consumer.result().size()); |
- EXPECT_EQ(value1_, consumer.result()[0]); |
-} |
- |
-TEST_F(WebDataServiceAutofillTest, FormFillRemoveOne) { |
- // First add some values to autofill. |
- EXPECT_CALL(observer_, AutofillEntriesChanged(_)) |
- .WillOnce(SignalEvent(&done_event_)); |
- std::vector<FormFieldData> form_fields; |
- AppendFormField(name1_, value1_, &form_fields); |
- wds_->AddFormFields(form_fields); |
- |
- // The event will be signaled when the mock observer is notified. |
- done_event_.TimedWait(test_timeout_); |
- |
- // This will verify that the correct notification is triggered, |
- // passing the correct list of autofill keys in the details. |
- const AutofillChange expected_changes[] = { |
- AutofillChange(AutofillChange::REMOVE, AutofillKey(name1_, value1_)) |
- }; |
- EXPECT_CALL(observer_, |
- AutofillEntriesChanged(ElementsAreArray(expected_changes))) |
- .WillOnce(SignalEvent(&done_event_)); |
- wds_->RemoveFormValueForElementName(name1_, value1_); |
- |
- // The event will be signaled when the mock observer is notified. |
- done_event_.TimedWait(test_timeout_); |
-} |
- |
-TEST_F(WebDataServiceAutofillTest, FormFillRemoveMany) { |
- TimeDelta one_day(TimeDelta::FromDays(1)); |
- Time t = Time::Now(); |
- |
- EXPECT_CALL(observer_, AutofillEntriesChanged(_)) |
- .WillOnce(SignalEvent(&done_event_)); |
- |
- std::vector<FormFieldData> form_fields; |
- AppendFormField(name1_, value1_, &form_fields); |
- AppendFormField(name2_, value2_, &form_fields); |
- wds_->AddFormFields(form_fields); |
- |
- // The event will be signaled when the mock observer is notified. |
- done_event_.TimedWait(test_timeout_); |
- |
- // This will verify that the correct notification is triggered, |
- // passing the correct list of autofill keys in the details. |
- const AutofillChange expected_changes[] = { |
- AutofillChange(AutofillChange::REMOVE, AutofillKey(name1_, value1_)), |
- AutofillChange(AutofillChange::REMOVE, AutofillKey(name2_, value2_)) |
- }; |
- EXPECT_CALL(observer_, |
- AutofillEntriesChanged(ElementsAreArray(expected_changes))) |
- .WillOnce(SignalEvent(&done_event_)); |
- wds_->RemoveFormElementsAddedBetween(t, t + one_day); |
- |
- // The event will be signaled when the mock observer is notified. |
- done_event_.TimedWait(test_timeout_); |
-} |
- |
-TEST_F(WebDataServiceAutofillTest, ProfileAdd) { |
- AutofillProfile profile; |
- |
- // Check that GUID-based notification was sent. |
- const AutofillProfileChange expected_change( |
- AutofillProfileChange::ADD, profile.guid(), &profile); |
- EXPECT_CALL(observer_, AutofillProfileChanged(expected_change)) |
- .WillOnce(SignalEvent(&done_event_)); |
- |
- wds_->AddAutofillProfile(profile); |
- done_event_.TimedWait(test_timeout_); |
- |
- // Check that it was added. |
- AutofillWebDataServiceConsumer<std::vector<AutofillProfile*> > consumer; |
- WebDataService::Handle handle = wds_->GetAutofillProfiles(&consumer); |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(handle, consumer.handle()); |
- ASSERT_EQ(1U, consumer.result().size()); |
- EXPECT_EQ(profile, *consumer.result()[0]); |
- STLDeleteElements(&consumer.result()); |
-} |
- |
-TEST_F(WebDataServiceAutofillTest, ProfileRemove) { |
- AutofillProfile profile; |
- |
- // Add a profile. |
- EXPECT_CALL(observer_, AutofillProfileChanged(_)) |
- .WillOnce(SignalEvent(&done_event_)); |
- wds_->AddAutofillProfile(profile); |
- done_event_.TimedWait(test_timeout_); |
- |
- // Check that it was added. |
- AutofillWebDataServiceConsumer<std::vector<AutofillProfile*> > consumer; |
- WebDataService::Handle handle = wds_->GetAutofillProfiles(&consumer); |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(handle, consumer.handle()); |
- ASSERT_EQ(1U, consumer.result().size()); |
- EXPECT_EQ(profile, *consumer.result()[0]); |
- STLDeleteElements(&consumer.result()); |
- |
- // Check that GUID-based notification was sent. |
- const AutofillProfileChange expected_change( |
- AutofillProfileChange::REMOVE, profile.guid(), NULL); |
- EXPECT_CALL(observer_, AutofillProfileChanged(expected_change)) |
- .WillOnce(SignalEvent(&done_event_)); |
- |
- // Remove the profile. |
- wds_->RemoveAutofillProfile(profile.guid()); |
- done_event_.TimedWait(test_timeout_); |
- |
- // Check that it was removed. |
- AutofillWebDataServiceConsumer<std::vector<AutofillProfile*> > consumer2; |
- WebDataService::Handle handle2 = wds_->GetAutofillProfiles(&consumer2); |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(handle2, consumer2.handle()); |
- ASSERT_EQ(0U, consumer2.result().size()); |
-} |
- |
-TEST_F(WebDataServiceAutofillTest, ProfileUpdate) { |
- AutofillProfile profile1; |
- profile1.SetRawInfo(NAME_FIRST, ASCIIToUTF16("Abe")); |
- AutofillProfile profile2; |
- profile2.SetRawInfo(NAME_FIRST, ASCIIToUTF16("Alice")); |
- |
- EXPECT_CALL(observer_, AutofillProfileChanged(_)) |
- .WillOnce(DoDefault()) |
- .WillOnce(SignalEvent(&done_event_)); |
- |
- wds_->AddAutofillProfile(profile1); |
- wds_->AddAutofillProfile(profile2); |
- done_event_.TimedWait(test_timeout_); |
- |
- // Check that they were added. |
- AutofillWebDataServiceConsumer<std::vector<AutofillProfile*> > consumer; |
- WebDataService::Handle handle = wds_->GetAutofillProfiles(&consumer); |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(handle, consumer.handle()); |
- ASSERT_EQ(2U, consumer.result().size()); |
- EXPECT_EQ(profile1, *consumer.result()[0]); |
- EXPECT_EQ(profile2, *consumer.result()[1]); |
- STLDeleteElements(&consumer.result()); |
- |
- AutofillProfile profile1_changed(profile1); |
- profile1_changed.SetRawInfo(NAME_FIRST, ASCIIToUTF16("Bill")); |
- const AutofillProfileChange expected_change( |
- AutofillProfileChange::UPDATE, profile1.guid(), &profile1_changed); |
- |
- EXPECT_CALL(observer_, AutofillProfileChanged(expected_change)) |
- .WillOnce(SignalEvent(&done_event_)); |
- |
- // Update the profile. |
- wds_->UpdateAutofillProfile(profile1_changed); |
- done_event_.TimedWait(test_timeout_); |
- |
- // Check that the updates were made. |
- AutofillWebDataServiceConsumer<std::vector<AutofillProfile*> > consumer2; |
- WebDataService::Handle handle2 = wds_->GetAutofillProfiles(&consumer2); |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(handle2, consumer2.handle()); |
- ASSERT_EQ(2U, consumer2.result().size()); |
- EXPECT_NE(profile1, *consumer2.result()[0]); |
- EXPECT_EQ(profile1_changed, *consumer2.result()[0]); |
- EXPECT_EQ(profile2, *consumer2.result()[1]); |
- STLDeleteElements(&consumer2.result()); |
-} |
- |
-TEST_F(WebDataServiceAutofillTest, CreditAdd) { |
- CreditCard card; |
- wds_->AddCreditCard(card); |
- WaitForDatabaseThread(); |
- |
- // Check that it was added. |
- AutofillWebDataServiceConsumer<std::vector<CreditCard*> > consumer; |
- WebDataService::Handle handle = wds_->GetCreditCards(&consumer); |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(handle, consumer.handle()); |
- ASSERT_EQ(1U, consumer.result().size()); |
- EXPECT_EQ(card, *consumer.result()[0]); |
- STLDeleteElements(&consumer.result()); |
-} |
- |
-TEST_F(WebDataServiceAutofillTest, CreditCardRemove) { |
- CreditCard credit_card; |
- |
- // Add a credit card. |
- wds_->AddCreditCard(credit_card); |
- WaitForDatabaseThread(); |
- |
- // Check that it was added. |
- AutofillWebDataServiceConsumer<std::vector<CreditCard*> > consumer; |
- WebDataService::Handle handle = wds_->GetCreditCards(&consumer); |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(handle, consumer.handle()); |
- ASSERT_EQ(1U, consumer.result().size()); |
- EXPECT_EQ(credit_card, *consumer.result()[0]); |
- STLDeleteElements(&consumer.result()); |
- |
- // Remove the credit card. |
- wds_->RemoveCreditCard(credit_card.guid()); |
- WaitForDatabaseThread(); |
- |
- // Check that it was removed. |
- AutofillWebDataServiceConsumer<std::vector<CreditCard*> > consumer2; |
- WebDataService::Handle handle2 = wds_->GetCreditCards(&consumer2); |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(handle2, consumer2.handle()); |
- ASSERT_EQ(0U, consumer2.result().size()); |
-} |
- |
-TEST_F(WebDataServiceAutofillTest, CreditUpdate) { |
- CreditCard card1; |
- card1.SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Abe")); |
- CreditCard card2; |
- card2.SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Alice")); |
- |
- wds_->AddCreditCard(card1); |
- wds_->AddCreditCard(card2); |
- WaitForDatabaseThread(); |
- |
- // Check that they got added. |
- AutofillWebDataServiceConsumer<std::vector<CreditCard*> > consumer; |
- WebDataService::Handle handle = wds_->GetCreditCards(&consumer); |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(handle, consumer.handle()); |
- ASSERT_EQ(2U, consumer.result().size()); |
- EXPECT_EQ(card1, *consumer.result()[0]); |
- EXPECT_EQ(card2, *consumer.result()[1]); |
- STLDeleteElements(&consumer.result()); |
- |
- CreditCard card1_changed(card1); |
- card1_changed.SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Bill")); |
- |
- wds_->UpdateCreditCard(card1_changed); |
- WaitForDatabaseThread(); |
- |
- // Check that the updates were made. |
- AutofillWebDataServiceConsumer<std::vector<CreditCard*> > consumer2; |
- WebDataService::Handle handle2 = wds_->GetCreditCards(&consumer2); |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(handle2, consumer2.handle()); |
- ASSERT_EQ(2U, consumer2.result().size()); |
- EXPECT_NE(card1, *consumer2.result()[0]); |
- EXPECT_EQ(card1_changed, *consumer2.result()[0]); |
- EXPECT_EQ(card2, *consumer2.result()[1]); |
- STLDeleteElements(&consumer2.result()); |
-} |
- |
-TEST_F(WebDataServiceAutofillTest, AutofillRemoveModifiedBetween) { |
- // Add a profile. |
- EXPECT_CALL(observer_, AutofillProfileChanged(_)) |
- .WillOnce(SignalEvent(&done_event_)); |
- AutofillProfile profile; |
- wds_->AddAutofillProfile(profile); |
- done_event_.TimedWait(test_timeout_); |
- |
- // Check that it was added. |
- AutofillWebDataServiceConsumer<std::vector<AutofillProfile*> > |
- profile_consumer; |
- WebDataService::Handle handle = wds_->GetAutofillProfiles(&profile_consumer); |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(handle, profile_consumer.handle()); |
- ASSERT_EQ(1U, profile_consumer.result().size()); |
- EXPECT_EQ(profile, *profile_consumer.result()[0]); |
- STLDeleteElements(&profile_consumer.result()); |
- |
- // Add a credit card. |
- CreditCard credit_card; |
- wds_->AddCreditCard(credit_card); |
- WaitForDatabaseThread(); |
- |
- // Check that it was added. |
- AutofillWebDataServiceConsumer<std::vector<CreditCard*> > card_consumer; |
- handle = wds_->GetCreditCards(&card_consumer); |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(handle, card_consumer.handle()); |
- ASSERT_EQ(1U, card_consumer.result().size()); |
- EXPECT_EQ(credit_card, *card_consumer.result()[0]); |
- STLDeleteElements(&card_consumer.result()); |
- |
- // Check that GUID-based notification was sent for the profile. |
- const AutofillProfileChange expected_profile_change( |
- AutofillProfileChange::REMOVE, profile.guid(), NULL); |
- EXPECT_CALL(observer_, AutofillProfileChanged(expected_profile_change)) |
- .WillOnce(SignalEvent(&done_event_)); |
- |
- // Remove the profile using time range of "all time". |
- wds_->RemoveAutofillDataModifiedBetween(Time(), Time()); |
- done_event_.TimedWait(test_timeout_); |
- WaitForDatabaseThread(); |
- |
- // Check that the profile was removed. |
- AutofillWebDataServiceConsumer<std::vector<AutofillProfile*> > |
- profile_consumer2; |
- WebDataService::Handle handle2 = |
- wds_->GetAutofillProfiles(&profile_consumer2); |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(handle2, profile_consumer2.handle()); |
- ASSERT_EQ(0U, profile_consumer2.result().size()); |
- |
- // Check that the credit card was removed. |
- AutofillWebDataServiceConsumer<std::vector<CreditCard*> > card_consumer2; |
- handle2 = wds_->GetCreditCards(&card_consumer2); |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(handle2, card_consumer2.handle()); |
- ASSERT_EQ(0U, card_consumer2.result().size()); |
-} |
- |
-} // namespace autofill |