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

Unified Diff: chrome/browser/webdata/web_data_service_unittest.cc

Issue 12476031: Refactor notifications of chrome/browser/webdata (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 9 months 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
« no previous file with comments | « chrome/browser/webdata/web_data_service_factory.cc ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/webdata/web_data_service_unittest.cc
diff --git a/chrome/browser/webdata/web_data_service_unittest.cc b/chrome/browser/webdata/web_data_service_unittest.cc
index 8bcdac9c6ed52f2370366ae740aa49b81549f014..c3c52c484c54e90e90b238c5a7549a7effc11f4a 100644
--- a/chrome/browser/webdata/web_data_service_unittest.cc
+++ b/chrome/browser/webdata/web_data_service_unittest.cc
@@ -21,16 +21,13 @@
#include "chrome/browser/webdata/autofill_entry.h"
#include "chrome/browser/webdata/autofill_table.h"
#include "chrome/browser/webdata/autofill_web_data_service.h"
+#include "chrome/browser/webdata/autofill_web_data_service_observer.h"
#include "chrome/browser/webdata/web_data_service_test_util.h"
#include "chrome/browser/webdata/web_database_service.h"
-#include "chrome/common/chrome_notification_types.h"
-#include "chrome/test/base/thread_observer_helper.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/common/form_field_data.h"
-#include "content/public/browser/notification_details.h"
-#include "content/public/browser/notification_service.h"
#include "content/public/test/test_browser_thread.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -45,26 +42,19 @@ using testing::ElementsAreArray;
using testing::Pointee;
using testing::Property;
-typedef std::vector<AutofillChange> AutofillChangeList;
-
static const int kWebDataServiceTimeoutSeconds = 8;
ACTION_P(SignalEvent, event) {
event->Signal();
}
-class AutofillDBThreadObserverHelper : public DBThreadObserverHelper {
- protected:
- virtual ~AutofillDBThreadObserverHelper() {}
-
- virtual void RegisterObservers() OVERRIDE {
- registrar_.Add(&observer_,
- chrome::NOTIFICATION_AUTOFILL_ENTRIES_CHANGED,
- content::NotificationService::AllSources());
- registrar_.Add(&observer_,
- chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED,
- content::NotificationService::AllSources());
- }
+class MockAutofillWebDataServiceObserver
+ : public AutofillWebDataServiceObserverOnDBThread {
+ public:
+ MOCK_METHOD1(AutofillEntriesChanged,
+ void(const AutofillChangeList& changes));
+ MOCK_METHOD1(AutofillProfileChanged,
+ void(const AutofillProfileChange& change));
};
class WebDataServiceTest : public testing::Test {
@@ -84,8 +74,8 @@ class WebDataServiceTest : public testing::Test {
wdbs_->AddTable(scoped_ptr<WebDatabaseTable>(new AutofillTable()));
wdbs_->LoadDatabase(WebDatabaseService::InitCallback());
- wds_ = new AutofillWebDataService(wdbs_,
- WebDataServiceBase::ProfileErrorCallback());
+ wds_ = new AutofillWebDataService(
+ wdbs_, WebDataServiceBase::ProfileErrorCallback());
wds_->Init();
}
@@ -135,13 +125,27 @@ class WebDataServiceAutofillTest : public WebDataServiceTest {
name2_ = ASCIIToUTF16("name2");
value1_ = ASCIIToUTF16("value1");
value2_ = ASCIIToUTF16("value2");
- observer_helper_ = new AutofillDBThreadObserverHelper();
- observer_helper_->Init();
+
+ 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() {
- // Release this first so it can get destructed on the db thread.
- observer_helper_ = NULL;
+ void(AutofillWebDataService::*remove_observer_func)(
+ AutofillWebDataServiceObserverOnDBThread*) =
+ &AutofillWebDataService::RemoveObserver;
+ BrowserThread::PostTask(
+ BrowserThread::DB,
+ FROM_HERE,
+ base::Bind(remove_observer_func, wds_, &observer_));
+ WaitForDatabaseThread();
+
WebDataServiceTest::TearDown();
}
@@ -160,7 +164,7 @@ class WebDataServiceAutofillTest : public WebDataServiceTest {
string16 value2_;
int unique_id1_, unique_id2_;
const TimeDelta test_timeout_;
- scoped_refptr<AutofillDBThreadObserverHelper> observer_helper_;
+ testing::NiceMock<MockAutofillWebDataServiceObserver> observer_;
WaitableEvent done_event_;
};
@@ -199,13 +203,9 @@ TEST_F(WebDataServiceAutofillTest, FormFillAdd) {
// This will verify that the correct notification is triggered,
// passing the correct list of autofill keys in the details.
- EXPECT_CALL(
- *observer_helper_->observer(),
- Observe(int(chrome::NOTIFICATION_AUTOFILL_ENTRIES_CHANGED),
- content::Source<AutofillWebDataService>(wds_.get()),
- Property(&content::Details<const AutofillChangeList>::ptr,
- Pointee(ElementsAreArray(expected_changes))))).
- WillOnce(SignalEvent(&done_event_));
+ EXPECT_CALL(observer_,
+ AutofillEntriesChanged(ElementsAreArray(expected_changes)))
+ .WillOnce(SignalEvent(&done_event_));
std::vector<FormFieldData> form_fields;
AppendFormField(name1_, value1_, &form_fields);
@@ -231,8 +231,8 @@ TEST_F(WebDataServiceAutofillTest, FormFillAdd) {
TEST_F(WebDataServiceAutofillTest, FormFillRemoveOne) {
// First add some values to autofill.
- EXPECT_CALL(*observer_helper_->observer(), Observe(_, _, _)).
- WillOnce(SignalEvent(&done_event_));
+ EXPECT_CALL(observer_, AutofillEntriesChanged(_))
+ .WillOnce(SignalEvent(&done_event_));
std::vector<FormFieldData> form_fields;
AppendFormField(name1_, value1_, &form_fields);
wds_->AddFormFields(form_fields);
@@ -245,13 +245,9 @@ TEST_F(WebDataServiceAutofillTest, FormFillRemoveOne) {
const AutofillChange expected_changes[] = {
AutofillChange(AutofillChange::REMOVE, AutofillKey(name1_, value1_))
};
- EXPECT_CALL(
- *observer_helper_->observer(),
- Observe(int(chrome::NOTIFICATION_AUTOFILL_ENTRIES_CHANGED),
- content::Source<AutofillWebDataService>(wds_.get()),
- Property(&content::Details<const AutofillChangeList>::ptr,
- Pointee(ElementsAreArray(expected_changes))))).
- WillOnce(SignalEvent(&done_event_));
+ 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.
@@ -262,8 +258,9 @@ TEST_F(WebDataServiceAutofillTest, FormFillRemoveMany) {
TimeDelta one_day(TimeDelta::FromDays(1));
Time t = Time::Now();
- EXPECT_CALL(*observer_helper_->observer(), Observe(_, _, _)).
- WillOnce(SignalEvent(&done_event_));
+ EXPECT_CALL(observer_, AutofillEntriesChanged(_))
+ .WillOnce(SignalEvent(&done_event_));
+
std::vector<FormFieldData> form_fields;
AppendFormField(name1_, value1_, &form_fields);
AppendFormField(name2_, value2_, &form_fields);
@@ -278,13 +275,9 @@ TEST_F(WebDataServiceAutofillTest, FormFillRemoveMany) {
AutofillChange(AutofillChange::REMOVE, AutofillKey(name1_, value1_)),
AutofillChange(AutofillChange::REMOVE, AutofillKey(name2_, value2_))
};
- EXPECT_CALL(
- *observer_helper_->observer(),
- Observe(int(chrome::NOTIFICATION_AUTOFILL_ENTRIES_CHANGED),
- content::Source<AutofillWebDataService>(wds_.get()),
- Property(&content::Details<const AutofillChangeList>::ptr,
- Pointee(ElementsAreArray(expected_changes))))).
- WillOnce(SignalEvent(&done_event_));
+ 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.
@@ -297,13 +290,8 @@ TEST_F(WebDataServiceAutofillTest, ProfileAdd) {
// Check that GUID-based notification was sent.
const AutofillProfileChange expected_change(
AutofillProfileChange::ADD, profile.guid(), &profile);
- EXPECT_CALL(
- *observer_helper_->observer(),
- Observe(int(chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED),
- content::Source<AutofillWebDataService>(wds_.get()),
- Property(&content::Details<const AutofillProfileChange>::ptr,
- Pointee(expected_change)))).
- WillOnce(SignalEvent(&done_event_));
+ EXPECT_CALL(observer_, AutofillProfileChanged(expected_change))
+ .WillOnce(SignalEvent(&done_event_));
wds_->AddAutofillProfile(profile);
done_event_.TimedWait(test_timeout_);
@@ -322,9 +310,8 @@ TEST_F(WebDataServiceAutofillTest, ProfileRemove) {
AutofillProfile profile;
// Add a profile.
- EXPECT_CALL(*observer_helper_->observer(), Observe(_, _, _)).
- Times(1).
- WillOnce(SignalEvent(&done_event_));
+ EXPECT_CALL(observer_, AutofillProfileChanged(_))
+ .WillOnce(SignalEvent(&done_event_));
wds_->AddAutofillProfile(profile);
done_event_.TimedWait(test_timeout_);
@@ -340,13 +327,8 @@ TEST_F(WebDataServiceAutofillTest, ProfileRemove) {
// Check that GUID-based notification was sent.
const AutofillProfileChange expected_change(
AutofillProfileChange::REMOVE, profile.guid(), NULL);
- EXPECT_CALL(
- *observer_helper_->observer(),
- Observe(int(chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED),
- content::Source<AutofillWebDataService>(wds_.get()),
- Property(&content::Details<const AutofillProfileChange>::ptr,
- Pointee(expected_change)))).
- WillOnce(SignalEvent(&done_event_));
+ EXPECT_CALL(observer_, AutofillProfileChanged(expected_change))
+ .WillOnce(SignalEvent(&done_event_));
// Remove the profile.
wds_->RemoveAutofillProfile(profile.guid());
@@ -366,9 +348,10 @@ TEST_F(WebDataServiceAutofillTest, ProfileUpdate) {
AutofillProfile profile2;
profile2.SetRawInfo(NAME_FIRST, ASCIIToUTF16("Alice"));
- EXPECT_CALL(*observer_helper_->observer(), Observe(_, _, _)).
- WillOnce(DoDefault()).
- WillOnce(SignalEvent(&done_event_));
+ EXPECT_CALL(observer_, AutofillProfileChanged(_))
+ .WillOnce(DoDefault())
+ .WillOnce(SignalEvent(&done_event_));
+
wds_->AddAutofillProfile(profile1);
wds_->AddAutofillProfile(profile2);
done_event_.TimedWait(test_timeout_);
@@ -388,13 +371,8 @@ TEST_F(WebDataServiceAutofillTest, ProfileUpdate) {
const AutofillProfileChange expected_change(
AutofillProfileChange::UPDATE, profile1.guid(), &profile1_changed);
- EXPECT_CALL(
- *observer_helper_->observer(),
- Observe(int(chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED),
- content::Source<AutofillWebDataService>(wds_.get()),
- Property(&content::Details<const AutofillProfileChange>::ptr,
- Pointee(expected_change)))).
- WillOnce(SignalEvent(&done_event_));
+ EXPECT_CALL(observer_, AutofillProfileChanged(expected_change))
+ .WillOnce(SignalEvent(&done_event_));
// Update the profile.
wds_->UpdateAutofillProfile(profile1_changed);
@@ -495,9 +473,8 @@ TEST_F(WebDataServiceAutofillTest, CreditUpdate) {
TEST_F(WebDataServiceAutofillTest, AutofillRemoveModifiedBetween) {
// Add a profile.
- EXPECT_CALL(*observer_helper_->observer(), Observe(_, _, _)).
- Times(1).
- WillOnce(SignalEvent(&done_event_));
+ EXPECT_CALL(observer_, AutofillProfileChanged(_))
+ .WillOnce(SignalEvent(&done_event_));
AutofillProfile profile;
wds_->AddAutofillProfile(profile);
done_event_.TimedWait(test_timeout_);
@@ -529,13 +506,8 @@ TEST_F(WebDataServiceAutofillTest, AutofillRemoveModifiedBetween) {
// Check that GUID-based notification was sent for the profile.
const AutofillProfileChange expected_profile_change(
AutofillProfileChange::REMOVE, profile.guid(), NULL);
- EXPECT_CALL(
- *observer_helper_->observer(),
- Observe(int(chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED),
- content::Source<AutofillWebDataService>(wds_.get()),
- Property(&content::Details<const AutofillProfileChange>::ptr,
- Pointee(expected_profile_change)))).
- WillOnce(SignalEvent(&done_event_));
+ EXPECT_CALL(observer_, AutofillProfileChanged(expected_profile_change))
+ .WillOnce(SignalEvent(&done_event_));
// Remove the profile using time range of "all time".
wds_->RemoveAutofillDataModifiedBetween(Time(), Time());
« no previous file with comments | « chrome/browser/webdata/web_data_service_factory.cc ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698