| Index: chrome/browser/webdata/autocomplete_syncable_service.cc
|
| diff --git a/chrome/browser/webdata/autocomplete_syncable_service.cc b/chrome/browser/webdata/autocomplete_syncable_service.cc
|
| index f039075cf83f2cfd69efb5373f1a1c92794ad1c5..88a7bc5c3ea9592846707dc501194dfd6931cd46 100644
|
| --- a/chrome/browser/webdata/autocomplete_syncable_service.cc
|
| +++ b/chrome/browser/webdata/autocomplete_syncable_service.cc
|
| @@ -79,6 +79,26 @@ bool MergeTimestamps(const sync_pb::AutofillSpecifics& autofill,
|
| }
|
| }
|
|
|
| +class DataObject : public base::SupportsUserData::Data {
|
| + public:
|
| + explicit DataObject(scoped_ptr<AutocompleteSyncableService> service)
|
| + : service_(service.Pass()) {
|
| + }
|
| +
|
| + AutocompleteSyncableService* service() {
|
| + return service_.get();
|
| + }
|
| +
|
| + private:
|
| + scoped_ptr<AutocompleteSyncableService> service_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(DataObject);
|
| +};
|
| +
|
| +void* DataKey() {
|
| + return reinterpret_cast<void*>(&AutocompleteSyncableService::AttachToWebData);
|
| +}
|
| +
|
| } // namespace
|
|
|
| AutocompleteSyncableService::AutocompleteSyncableService(
|
| @@ -96,6 +116,21 @@ AutocompleteSyncableService::~AutocompleteSyncableService() {
|
| DCHECK(CalledOnValidThread());
|
| }
|
|
|
| +// static
|
| +AutocompleteSyncableService* AutocompleteSyncableService::FromWebData(
|
| + WebDataServiceBase* service) {
|
| + return static_cast<DataObject*>(
|
| + service->GetDBUserData()->GetUserData(DataKey()))->service();
|
| +}
|
| +
|
| +// static
|
| +void AutocompleteSyncableService::AttachToWebData(
|
| + scoped_ptr<AutocompleteSyncableService> service,
|
| + WebDataServiceBase* web_data) {
|
| + web_data->GetDBUserData()->SetUserData(DataKey(),
|
| + new DataObject(service.Pass()));
|
| +}
|
| +
|
| AutocompleteSyncableService::AutocompleteSyncableService()
|
| : web_data_service_(NULL),
|
| cull_expired_entries_(false) {
|
|
|