1 // Copyright 2019 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef ASH_PUBLIC_CPP_KEYBOARD_KEYBOARD_TYPES_H_
6 #define ASH_PUBLIC_CPP_KEYBOARD_KEYBOARD_TYPES_H_
7 
8 #include "ash/public/cpp/ash_public_export.h"
9 
10 namespace keyboard {
11 
12 // Flags that affect whether or not the virtual keyboard should be enabled.
13 // Enabled/Disabled flag pairs are mutually exclusive, but flags from multiple
14 // sources may be set. Precedence is determined by the implementation in
15 // KeyboardController::IsKeyboardEnableRequested.
16 enum class KeyboardEnableFlag {
17   // Enabled by policy.
18   kPolicyEnabled,
19 
20   // Disabled by policy.
21   kPolicyDisabled,
22 
23   // Disabled by the Android keyboard.
24   kAndroidDisabled,
25 
26   // Enabled by a first-party extension.
27   kExtensionEnabled,
28 
29   // Disabled by a first-party extension.
30   kExtensionDisabled,
31 
32   // Enabled by an a11y controller.
33   kAccessibilityEnabled,
34 
35   // Enabled by the shelf/launcher controller.
36   kShelfEnabled,
37 
38   // Enabled by the touch controller.
39   kTouchEnabled,
40 
41   // Enabled via the "--enable-virtual-keyboard" command line switch.
42   // Used for development and debugging.
43   kCommandLineEnabled,
44 };
45 
46 // Container types used to set and identify container behavior. Used in UMA
47 // stats gathering, so values should never be changed or reused.
48 enum class ContainerType {
49   // Corresponds to a ContainerFullWidthBehavior.
50   kFullWidth = 0,
51 
52   // Corresponds to a ContainerFloatingBehavior.
53   kFloating = 1,
54 
55   // Corresponds to a ContainerFullscreenBehavior.
56   // kFullscreen = 2,  // Deprecated; feature was abandoned.
57 
58   kMaxValue = ContainerType::kFloating,
59 };
60 
61 }  // namespace keyboard
62 
63 #endif  // ASH_PUBLIC_CPP_KEYBOARD_KEYBOARD_TYPES_H_
64