| Index: components/autofill/core/browser/webdata/autofill_webdata_service.cc
|
| diff --git a/components/autofill/core/browser/webdata/autofill_webdata_service.cc b/components/autofill/core/browser/webdata/autofill_webdata_service.cc
|
| index dbf9854407d8a1cefd7df036ffb696df1773b4b5..9ba3fed5c8b31aca1e9d2db8eaebcb0b15aeece9 100644
|
| --- a/components/autofill/core/browser/webdata/autofill_webdata_service.cc
|
| +++ b/components/autofill/core/browser/webdata/autofill_webdata_service.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include "base/bind.h"
|
| #include "base/logging.h"
|
| +#include "base/message_loop/message_loop_proxy.h"
|
| #include "base/stl_util.h"
|
| #include "components/autofill/core/browser/autofill_country.h"
|
| #include "components/autofill/core/browser/autofill_profile.h"
|
| @@ -18,19 +19,20 @@
|
| #include "components/autofill/core/common/form_field_data.h"
|
| #include "components/webdata/common/web_data_service_backend.h"
|
| #include "components/webdata/common/web_database_service.h"
|
| -#include "content/public/browser/browser_thread.h"
|
|
|
| using base::Bind;
|
| using base::Time;
|
| -using content::BrowserThread;
|
|
|
| namespace autofill {
|
|
|
| AutofillWebDataService::AutofillWebDataService(
|
| scoped_refptr<WebDatabaseService> wdbs,
|
| + scoped_refptr<base::MessageLoopProxy> ui_thread,
|
| + scoped_refptr<base::MessageLoopProxy> db_thread,
|
| const ProfileErrorCallback& callback)
|
| - : WebDataServiceBase(wdbs, callback,
|
| - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)),
|
| + : WebDataServiceBase(wdbs, callback, ui_thread),
|
| + ui_thread_(ui_thread),
|
| + db_thread_(db_thread),
|
| weak_ptr_factory_(this),
|
| autofill_backend_(NULL) {
|
|
|
| @@ -39,27 +41,27 @@ AutofillWebDataService::AutofillWebDataService(
|
| weak_ptr_factory_.GetWeakPtr());
|
|
|
| autofill_backend_ = new AutofillWebDataBackendImpl(
|
| - wdbs_->GetBackend(),
|
| - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI),
|
| - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB),
|
| - on_changed_callback);
|
| + wdbs_->GetBackend(), ui_thread_, db_thread_, on_changed_callback);
|
| }
|
|
|
| -AutofillWebDataService::AutofillWebDataService()
|
| +AutofillWebDataService::AutofillWebDataService(
|
| + scoped_refptr<base::MessageLoopProxy> ui_thread,
|
| + scoped_refptr<base::MessageLoopProxy> db_thread)
|
| : WebDataServiceBase(NULL, WebDataServiceBase::ProfileErrorCallback(),
|
| - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)),
|
| + ui_thread),
|
| + ui_thread_(ui_thread),
|
| + db_thread_(db_thread),
|
| weak_ptr_factory_(this),
|
| autofill_backend_(new AutofillWebDataBackendImpl(NULL,
|
| - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI),
|
| - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB),
|
| + ui_thread_,
|
| + db_thread_,
|
| base::Closure())) {
|
| }
|
|
|
| void AutofillWebDataService::ShutdownOnUIThread() {
|
| weak_ptr_factory_.InvalidateWeakPtrs();
|
| - BrowserThread::PostTask(BrowserThread::DB, FROM_HERE,
|
| - Bind(&AutofillWebDataBackendImpl::ResetUserData,
|
| - autofill_backend_));
|
| + db_thread_->PostTask(FROM_HERE,
|
| + Bind(&AutofillWebDataBackendImpl::ResetUserData, autofill_backend_));
|
| WebDataServiceBase::ShutdownOnUIThread();
|
| }
|
|
|
| @@ -175,47 +177,45 @@ void AutofillWebDataService::RemoveOriginURLsModifiedBetween(
|
|
|
| void AutofillWebDataService::AddObserver(
|
| AutofillWebDataServiceObserverOnDBThread* observer) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
|
| + DCHECK(db_thread_->BelongsToCurrentThread());
|
| if (autofill_backend_.get())
|
| autofill_backend_->AddObserver(observer);
|
| }
|
|
|
| void AutofillWebDataService::RemoveObserver(
|
| AutofillWebDataServiceObserverOnDBThread* observer) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
|
| + DCHECK(db_thread_->BelongsToCurrentThread());
|
| if (autofill_backend_.get())
|
| autofill_backend_->RemoveObserver(observer);
|
| }
|
|
|
| void AutofillWebDataService::AddObserver(
|
| AutofillWebDataServiceObserverOnUIThread* observer) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + DCHECK(ui_thread_->BelongsToCurrentThread());
|
| ui_observer_list_.AddObserver(observer);
|
| }
|
|
|
| void AutofillWebDataService::RemoveObserver(
|
| AutofillWebDataServiceObserverOnUIThread* observer) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + DCHECK(ui_thread_->BelongsToCurrentThread());
|
| ui_observer_list_.RemoveObserver(observer);
|
| }
|
|
|
| base::SupportsUserData* AutofillWebDataService::GetDBUserData() {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
|
| + DCHECK(db_thread_->BelongsToCurrentThread());
|
| return autofill_backend_->GetDBUserData();
|
| }
|
|
|
| void AutofillWebDataService::GetAutofillBackend(
|
| const base::Callback<void(AutofillWebDataBackend*)>& callback) {
|
| - BrowserThread::PostTask(BrowserThread::DB,
|
| - FROM_HERE,
|
| - base::Bind(callback, autofill_backend_));
|
| + db_thread_->PostTask(FROM_HERE, base::Bind(callback, autofill_backend_));
|
| }
|
|
|
| AutofillWebDataService::~AutofillWebDataService() {
|
| }
|
|
|
| void AutofillWebDataService::NotifyAutofillMultipleChangedOnUIThread() {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + DCHECK(ui_thread_->BelongsToCurrentThread());
|
| FOR_EACH_OBSERVER(AutofillWebDataServiceObserverOnUIThread,
|
| ui_observer_list_,
|
| AutofillMultipleChanged());
|
|
|