content: /*
   * Copyright (C) 2019 The Android Open Source Project
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  package com.android.car.setupwizardlib;
  
  import android.annotation.IntDef;
  
  /**
   * Defines the constants used for the communication between the client and service in setting
   * the initial lock.
   */
  public interface InitialLockSetupConstants {
  
      /**
       * The library version. All relevant changes should bump this version number and ensure
       * all relevant parts of the interface handle backwards compatibility.
       */
      int LIBRARY_VERSION = 1;
  
      /**
       * Lock types supported by the InitialLockSetupService.
       */
      @IntDef({
              LockTypes.PASSWORD,
              LockTypes.PIN,
              LockTypes.PATTERN
      })
      @interface LockTypes {
          int PASSWORD = 0;
          int PIN = 1;
          int PATTERN = 2;
      }
  
      /**
       * Result codes from validating a lock. No flags (0) indicates success.
       */
      @IntDef(flag = true, value = {
              ValidateLockFlags.INVALID_LENGTH,
              ValidateLockFlags.INVALID_BAD_SYMBOLS,
              ValidateLockFlags.INVALID_LACKS_COMPLEXITY,
              ValidateLockFlags.INVALID_GENERIC
      })
      @interface ValidateLockFlags {
          int INVALID_LENGTH = 1 << 0;
          int INVALID_BAD_SYMBOLS = 1 << 1;
          int INVALID_LACKS_COMPLEXITY = 1 << 2;
          int INVALID_GENERIC = 1 << 3;
      }
  
      /**
       * Result codes from attempting to set a lock.
       */
      @IntDef({
              SetLockCodes.SUCCESS,
              SetLockCodes.FAIL_LOCK_EXISTS,
              SetLockCodes.FAIL_LOCK_INVALID,
              SetLockCodes.FAIL_LOCK_GENERIC
      })
      @interface SetLockCodes {
          int SUCCESS = 1;
          int FAIL_LOCK_EXISTS = -1;
          int FAIL_LOCK_INVALID = -2;
          int FAIL_LOCK_GENERIC = -3;
      }
  }
  
  