text: // Copyright (c) 2012 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 SYNC_INTERNAL_API_PUBLIC_CONFIGURE_REASON_H_
  #define SYNC_INTERNAL_API_PUBLIC_CONFIGURE_REASON_H_
  
  namespace syncer {
  
  // Note: This should confirm with the enums in sync.proto for
  // GetUpdatesCallerInfo. They will have 1:1 mapping but this will only map
  // to a subset of the GetUpdatesCallerInfo enum values.
  enum ConfigureReason {
    // We should never be here during actual configure. This is for setting
    // default values.
    CONFIGURE_REASON_UNKNOWN,
  
    // The client is configuring because the user opted to sync a different set
    // of datatypes.
    CONFIGURE_REASON_RECONFIGURATION,
  
    // The client is configuring because the client is being asked to migrate.
    CONFIGURE_REASON_MIGRATION,
  
    // Setting up sync performs an initial config to download NIGORI data, and
    // also a config to download initial data once the user selects types.
    CONFIGURE_REASON_NEW_CLIENT,
  
    // A new datatype is enabled for syncing due to a client upgrade.
    CONFIGURE_REASON_NEWLY_ENABLED_DATA_TYPE,
  
    // A configuration due to enabling or disabling encrypted types due to
    // cryptographer errors/resolutions.
    CONFIGURE_REASON_CRYPTO,
  
    // The client is configuring because of a programmatic type enable/disable,
    // such as when an error is encountered/resolved.
    CONFIGURE_REASON_PROGRAMMATIC,
  
    // The client is configuring because it needs to "catch up" datatypes by
    // downloading and applying any outstanding changes. There can be multiple
    // reasons why a client performs a catch up. One reason is that the client is
    // enabling passphrase encryption and must ensure it has all data locally
    // before it clears server data.
    CONFIGURE_REASON_CATCH_UP,
  };
  
  }  // namespace syncer
  
  #endif  // SYNC_INTERNAL_API_PUBLIC_CONFIGURE_REASON_H_
  