| Index: chrome/browser/sync/syncable/syncable.cc
|
| diff --git a/chrome/browser/sync/syncable/syncable.cc b/chrome/browser/sync/syncable/syncable.cc
|
| index 903b71d22709db7b1d3c76976e0ae5bfb48ab05d..2794efababc33431c0c961bed2f3be7292ddf930 100644
|
| --- a/chrome/browser/sync/syncable/syncable.cc
|
| +++ b/chrome/browser/sync/syncable/syncable.cc
|
| @@ -179,6 +179,7 @@ Directory::PersistedKernelInfo::PersistedKernelInfo()
|
| for (int i = 0; i < MODEL_TYPE_COUNT; ++i) {
|
| last_download_timestamp[i] = 0;
|
| }
|
| + autofill_migration_state = NOT_DETERMINED;
|
| }
|
|
|
| Directory::PersistedKernelInfo::~PersistedKernelInfo() {}
|
| @@ -720,6 +721,83 @@ bool Directory::initial_sync_ended_for_type(ModelType type) const {
|
| return kernel_->persisted_info.initial_sync_ended[type];
|
| }
|
|
|
| +AutofillMigrationState Directory::get_autofill_migration_state() const {
|
| + ScopedKernelLock lock(this);
|
| + return kernel_->persisted_info.autofill_migration_state;
|
| +}
|
| +
|
| +AutofillMigrationDebugInfo
|
| + Directory::get_autofill_migration_debug_info() const {
|
| + ScopedKernelLock lock(this);
|
| + return kernel_->persisted_info.autofill_migration_debug_info;
|
| +}
|
| +
|
| +template <class T> void Directory::TestAndSet(
|
| + T* kernel_data, const T* data_to_set) {
|
| + if (*kernel_data != *data_to_set) {
|
| + *kernel_data = *data_to_set;
|
| + kernel_->info_status = KERNEL_SHARE_INFO_DIRTY;
|
| + }
|
| +}
|
| +
|
| +void Directory::set_autofill_migration_state_debug_info(
|
| + AutofillMigrationDebugInfo::PropertyToSet property_to_set,
|
| + const AutofillMigrationDebugInfo& info) {
|
| +
|
| + ScopedKernelLock lock(this);
|
| + switch (property_to_set) {
|
| + case AutofillMigrationDebugInfo::MIGRATION_TIME: {
|
| + syncable::AutofillMigrationDebugInfo&
|
| + debug_info = kernel_->persisted_info.autofill_migration_debug_info;
|
| + TestAndSet<int64>(
|
| + &debug_info.autofill_migration_time,
|
| + &info.autofill_migration_time);
|
| + break;
|
| + }
|
| + case AutofillMigrationDebugInfo::BOOKMARK_ADDED: {
|
| + AutofillMigrationDebugInfo& debug_info =
|
| + kernel_->persisted_info.autofill_migration_debug_info;
|
| + TestAndSet<int>(
|
| + &debug_info.bookmarks_added_during_migration,
|
| + &info.bookmarks_added_during_migration);
|
| + break;
|
| + }
|
| + case AutofillMigrationDebugInfo::ENTRIES_ADDED: {
|
| + AutofillMigrationDebugInfo& debug_info =
|
| + kernel_->persisted_info.autofill_migration_debug_info;
|
| + TestAndSet<int>(
|
| + &debug_info.autofill_entries_added_during_migration,
|
| + &info.autofill_entries_added_during_migration);
|
| + break;
|
| + }
|
| + case AutofillMigrationDebugInfo::PROFILES_ADDED: {
|
| + AutofillMigrationDebugInfo& debug_info =
|
| + kernel_->persisted_info.autofill_migration_debug_info;
|
| + TestAndSet<int>(
|
| + &debug_info.autofill_profile_added_during_migration,
|
| + &info.autofill_profile_added_during_migration);
|
| + break;
|
| + }
|
| + default:
|
| + NOTREACHED();
|
| + }
|
| +}
|
| +
|
| +void Directory::set_autofill_migration_state(AutofillMigrationState state) {
|
| + ScopedKernelLock lock(this);
|
| + if (state == kernel_->persisted_info.autofill_migration_state) {
|
| + return;
|
| + }
|
| + kernel_->persisted_info.autofill_migration_state = state;
|
| + if (state == MIGRATED) {
|
| + syncable::AutofillMigrationDebugInfo& debug_info =
|
| + kernel_->persisted_info.autofill_migration_debug_info;
|
| + debug_info.autofill_migration_time =
|
| + base::Time::Now().ToInternalValue();
|
| + }
|
| + kernel_->info_status = KERNEL_SHARE_INFO_DIRTY;
|
| +}
|
| +
|
| void Directory::set_initial_sync_ended_for_type(ModelType type, bool x) {
|
| ScopedKernelLock lock(this);
|
| set_initial_sync_ended_for_type_unsafe(type, x);
|
|
|