// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_BROWSER_SYNC_SYNCABLE_AUTOFILL_MIGRATION_H_
#define CHROME_BROWSER_SYNC_SYNCABLE_AUTOFILL_MIGRATION_H_
#pragma once

namespace syncable {
enum AutofillMigrationState {

  // Indicates the default state. After first run the state would change to
  // one of the following.
  NOT_DETERMINED,

  // The autofill profile is not migrated. Current sync should migrate the data
  // by syncing down the old autofill and syncing profiles back up to the server
  // as new autofill.
  NOT_MIGRATED,

  // We have migrated the autofill profile data. From now on autofill and
  // autofill profiles are 2 seperate data types.
  MIGRATED,

  // The autofill datatype is being synced new.(either because this is a new
  // client or the user just enabled them for syncing). In which case if
  // someother client had migrated the data already then our new state after
  // first sync would be MIGRATED. Else we would be responsible for migrating
  // the data.
  INSUFFICIENT_INFO_TO_DETERMINE
};

struct AutofillMigrationDebugInfo {
  enum PropertyToSet {
    MIGRATION_TIME,
    ENTRIES_ADDED,
    PROFILES_ADDED
  };
  int64 autofill_migration_time;
  // NOTE(akalin): We don't increment
  // |bookmarks_added_during_migration| anymore, although it's not
  // worth the effort to remove it from the code.  Eventually, this
  // will go away once we remove all the autofill migration code.
  int bookmarks_added_during_migration;
  int autofill_entries_added_during_migration;
  int autofill_profile_added_during_migration;
};

}  // namespace syncable

#endif  // CHROME_BROWSER_SYNC_SYNCABLE_AUTOFILL_MIGRATION_H_