| Index: components/autofill/core/browser/webdata/autofill_webdata_backend_impl.h
|
| diff --git a/components/autofill/core/browser/webdata/autofill_webdata_backend_impl.h b/components/autofill/core/browser/webdata/autofill_webdata_backend_impl.h
|
| index 8015dd4212c88878c87ad3a3432bcc96c908d1aa..6db3f99d9c8d8fb53b4bb3508255c203405d2f57 100644
|
| --- a/components/autofill/core/browser/webdata/autofill_webdata_backend_impl.h
|
| +++ b/components/autofill/core/browser/webdata/autofill_webdata_backend_impl.h
|
| @@ -6,6 +6,7 @@
|
| #define COMPONENTS_AUTOFILL_CORE_BROWSER_WEBDATA_AUTOFILL_WEBDATA_BACKEND_IMPL_H_
|
|
|
| #include "base/memory/ref_counted.h"
|
| +#include "base/memory/ref_counted_delete_on_message_loop.h"
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/observer_list.h"
|
| #include "base/supports_user_data.h"
|
| @@ -16,7 +17,10 @@
|
| #include "components/webdata/common/web_data_service_base.h"
|
| #include "components/webdata/common/web_data_service_consumer.h"
|
| #include "components/webdata/common/web_database.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| +
|
| +namespace base {
|
| +class MessageLoopProxy;
|
| +}
|
|
|
| class WebDataServiceBackend;
|
|
|
| @@ -32,17 +36,21 @@ class CreditCard;
|
| // in it should only be called from that thread. Most functions here are just
|
| // the implementations of the corresponding functions in the Autofill
|
| // WebDataService.
|
| +// This class is destroyed on the DB thread.
|
| class AutofillWebDataBackendImpl
|
| - : public base::RefCountedThreadSafe<AutofillWebDataBackendImpl,
|
| - content::BrowserThread::DeleteOnDBThread>,
|
| + : public base::RefCountedDeleteOnMessageLoop<AutofillWebDataBackendImpl>,
|
| public AutofillWebDataBackend {
|
| public:
|
| // |web_database_backend| is used to access the WebDatabase directly for
|
| - // Sync-related operations. |on_changed_callback| is a closure which can be
|
| - // used to notify the UI thread of changes initiated by Sync (this callback
|
| - // may be called multiple times).
|
| + // Sync-related operations. |ui_thread| and |db_thread| are the threads that
|
| + // this class uses as its UI and DB threads respectively.
|
| + // |on_changed_callback| is a closure which can be used to notify the UI
|
| + // thread of changes initiated by Sync (this callback may be called multiple
|
| + // times).
|
| AutofillWebDataBackendImpl(
|
| scoped_refptr<WebDataServiceBackend> web_database_backend,
|
| + scoped_refptr<base::MessageLoopProxy> ui_thread,
|
| + scoped_refptr<base::MessageLoopProxy> db_thread,
|
| const base::Closure& on_changed_callback);
|
|
|
| // AutofillWebDataBackend implementation.
|
| @@ -137,13 +145,8 @@ class AutofillWebDataBackendImpl
|
| virtual ~AutofillWebDataBackendImpl();
|
|
|
| private:
|
| - friend struct content::BrowserThread::DeleteOnThread<
|
| - content::BrowserThread::DB>;
|
| + friend class base::RefCountedDeleteOnMessageLoop<AutofillWebDataBackendImpl>;
|
| friend class base::DeleteHelper<AutofillWebDataBackendImpl>;
|
| - // We have to friend RCTS<> so WIN shared-lib build is happy
|
| - // (http://crbug/112250).
|
| - friend class base::RefCountedThreadSafe<AutofillWebDataBackendImpl,
|
| - content::BrowserThread::DeleteOnDBThread>;
|
|
|
| // This makes the destructor public, and thus allows us to aggregate
|
| // SupportsUserData. It is private by default to prevent incorrect
|
| @@ -157,6 +160,12 @@ class AutofillWebDataBackendImpl
|
| DISALLOW_COPY_AND_ASSIGN(SupportsUserDataAggregatable);
|
| };
|
|
|
| + // The MessageLoopProxy that this class uses as its UI thread.
|
| + scoped_refptr<base::MessageLoopProxy> ui_thread_;
|
| +
|
| + // The MessageLoopProxy that this class uses as its DB thread.
|
| + scoped_refptr<base::MessageLoopProxy> db_thread_;
|
| +
|
| // Storage for user data to be accessed only on the DB thread. May
|
| // be used e.g. for SyncableService subclasses that need to be owned
|
| // by this object. Is created on first call to |GetDBUserData()|.
|
|
|