chromium/ash/public/cpp/keyboard/keyboard_types.h

// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef ASH_PUBLIC_CPP_KEYBOARD_KEYBOARD_TYPES_H_
#define ASH_PUBLIC_CPP_KEYBOARD_KEYBOARD_TYPES_H_

#include "ash/public/cpp/ash_public_export.h"

namespace keyboard {

// Flags that affect whether or not the virtual keyboard should be enabled.
// Enabled/Disabled flag pairs are mutually exclusive, but flags from multiple
// sources may be set. Precedence is determined by the implementation in
// KeyboardController::IsKeyboardEnableRequested.
enum class KeyboardEnableFlag {
  // Enabled by policy.
  kPolicyEnabled,

  // Disabled by policy.
  kPolicyDisabled,

  // Disabled by the Android keyboard.
  kAndroidDisabled,

  // Enabled by a first-party extension.
  kExtensionEnabled,

  // Disabled by a first-party extension.
  kExtensionDisabled,

  // Enabled by an a11y controller.
  kAccessibilityEnabled,

  // Enabled by the shelf/launcher controller.
  kShelfEnabled,

  // Enabled by the touch controller.
  kTouchEnabled,

  // Enabled via the "--enable-virtual-keyboard" command line switch.
  // Used for development and debugging.
  kCommandLineEnabled,

  // Enabled via the "--disable-virtual-keyboard" command line switch,
  // or chrome flag. Used as workaround when VK keeps popping up.
  kCommandLineDisabled,
};

// Container types used to set and identify container behavior. Used in UMA
// stats gathering, so values should never be changed or reused.
enum class ContainerType {
  // Corresponds to a ContainerFullWidthBehavior.
  kFullWidth = 0,

  // Corresponds to a ContainerFloatingBehavior.
  kFloating = 1,

  // Corresponds to a ContainerFullscreenBehavior.
  // kFullscreen = 2,  // Deprecated; feature was abandoned.

  kMaxValue = ContainerType::kFloating,
};

}  // namespace keyboard

#endif  // ASH_PUBLIC_CPP_KEYBOARD_KEYBOARD_TYPES_H_