{
# policy_templates.json - Metafile for policy templates
#
# The content of this file is evaluated as a Python expression.
#
# This file is used as input to generate the following policy templates:
# ADM, ADMX+ADML, MCX/plist and html documentation.
#
# Policy templates are user interface definitions or documents about the
# policies that can be used to configure Chrome. Each policy is a name-value
# pair where the value has a given type. Chrome looks up the values using the
# names of the policies. In the user interface where the values can be set,
# related policies might appear together in policy groups. The grouping is not
# visible to Chrome.
#
# This file contains a list of policies and groups. Each group contains a list
# of policies under the key 'policies'. All the policies and groups must have
# unique names. Group names are not exposed to Chrome at all.
#
# Each policy has a type. The currently implemented types:
#   'group': - not a real policy, contains a list of policies
#     NOTE: Currently nesting groups inside other groups is not supported.
#   'string' - a string value
#   'int' - an integer value
#   'int-enum' - the user can select an integer value from a collection of
#     items
#   'string-enum' - the user can select a string value from a collection of
#     items
#   'string-enum-list' - the user can select a set of string values from a
#     collection of items
#   'main' - a boolean value
#   'list' - a list of string values. Using this for a list of JSON strings
#     is now discouraged, because the 'dict' is better for JSON.
#   'dict' - perhaps should be named JSON. An arbitrarily complex object or
#     array, nested objects/arrays, etc. The user defines the value with JSON.
#   'external' - a policy that references external data.
#     NOTE: This type is currently supported on Chrome OS only.
#
# NOTE to 'dict' vs 'list' - in the past, 'list' has been used for a policy
# that is an array of objects. The user supplied a list of strings, and each
# of those strings was parsed as JSON, resulting in an array of objects.
# However, there are a couple of reasons why 'dict' is better for these sorts
# of policies. Some interfaces (eg the GPO editor) only allow each list item
# to be a single-line string, which is not great for inputting a complex JSON
# object. It also means any example values shown in the documentation will
# have a hybrid syntax, with both commas and new-lines being used to delimit
# array elements - and these examples will be harder to copy and paste.
# To conclude, prefer 'dict' to 'list' if JSON is involved.
#
# Each policy is tagged with risk tags that indicate potential privacy or
# security risks. They are defined at the beginning of this file (tag
# 'risk_tag_definitions').
# Each risk tag contains the following information:
#   - name: The name of the risk tag. May not contain spaces.
#   - description: Description for developers so they know which tags apply to
#       newly added policies.
#   - user-description: A text that helps users understand what a policy with
#       this tag means for their privacy and/or security.
# TODO(fhorschig|tnagel): Revisit policy tags after reviews.
#
# Policy group descriptions, policy captions and similar texts are localized
# strings taken from the <message> nodes of the .grd file. Their name attributes
# are generated from the JSON keys.
# Each item (policy or group) may have the following messages:
#   - description:
#     Describes the item it applies to.
#   - caption
#     A short, one-line summary of the item it applies to. This can appear
#     both in policy or group listings or on title bars of policy-setting
#     windows. (The caption should not end with a punctuation mark.)
#   - label (Optional, defaults to caption if not specified.)
#     A short, one-line summary of the item it applies to. The difference
#     from caption is that label always appears next to the entry field
#     where the value of the policy can be entered. 'main' policies on
#     Windows ignore this. Policies on Mac are using this instead of caption.
#
# As a reference for translators, non-translateable strings must be tagged using
# <ph name="..."></ph> as described in [1]. As these tags are pruned before
# generating the comments for .proto files, paragraphs containing such tags
# should not be line-wrapped (use one long line per paragraph instead) to allow
# for correct re-flowing of the text.
# [1] https://www.chromium.org/developers/tools-we-use-in-chromium/grit/grit-users-guide.
#
# Generated grd names:
#   Each name has two parts: the second part is either CAPTION, DESC or LABEL,
#   and the first part identifies the item the text applies to:
#   -For policies and groups:
#     IDS_POLICY_<NAME OF THE POLICY OR GROUP>
#     e.g. the name of the caption of policy HomepageLocation:
#       IDS_POLICY_HOMEPAGELOCATION_CAPTION
#     or other messages of the policy HomepageLocation:
#       IDS_POLICY_HOMEPAGELOCATION_LABEL
#       IDS_POLICY_HOMEPAGELOCATION_DESC
#   -For enum items:
#     IDS_POLICY_ENUM_<NAME OF THE ITEM>
#     e.g. the name of the caption of ProxyServerDisabled:
#       IDS_POLICY_ENUM_PROXYSERVERDISABLED_CAPTION
#
# Products and versions:
#   Each policy has the list of products and version numbers where it is
#   supported under the key 'supported_on'. Each item of this list has the
#   form of 'product:since_version-until_version', which means that support
#   for the policy in 'product' was introduced in 'since_version' and removed
#   after 'until_version'. Product names may contain a suffix specifying a
#   platform name, e.g.: 'chrome.win' is read as 'Chrome on Windows'. Version
#   numbers can be any string that does not contain ':' or '-' characters.
#
#   Currently supported product names:
#       'chrome_frame', 'chrome_os', 'android', 'webview_android',
#       'chrome.win', 'chrome.linux', 'chrome.mac', 'chrome.*'
#     For example if 'chrome.*:5-10' is specified for a policy, then it should
#     be read as:
#       'chrome.linux:5-10', 'chrome.mac:5-10', 'chrome.win:5-10'
#
#   The product name also affects in which templates the policy is included:
#     chrome.*, chrome.win, chrome_frame -> ADM, ADMX, ADML, doc
#     chrome.*, chrome.linux -> JSON, doc
#     chrome.*, chrome.mac -> plist, plist_strings, doc
#     everything else -> doc
#
#   The default list of policies supported by Chrome is also generated based
#   on the product names:
#     chrome.* -> Chrome policy definition list
#     chrome_os -> Chrome policy definition list, when building OS_CHROMEOS
#
# Annotations:
#   Additional information is specified under keys 'features' and
#   'example_value'. These are used in the generated documentation and example
#   policy configuration files. Examples must cover the entire schema, i.e. use
#   every defined property at least once.
#   'dynamic_refresh' controls if the generated documentation should state that
#   the policy supports dynamic refresh or not. Supporting dynamic refresh means
#   that Chrome respects the changes to the policy immediately, without the need
#   for restart.
#   'can_be_mandatory' Set to False to suppress the policy in the generated
#   mandatory policy templates. The generated documentation for the policy
#   will contain a suitable hint for administrators.
#   'can_be_recommended' Set to True to include the policy in the generated
#   recommended policy templates. The generated documentation for the policy
#   will contain a suitable hint for administrators.
#   Policies settings in the mandatory template override user preferences, while
#   recommended policies provide a default setting that may be overridden by the
#   user. By default, each policy is mandatory and not recommended.
#   'per_profile' controls whether a user policy applies to every user logging
#   into the browser or only one profile.
#
#   The 'max_size' key is used to specify the maximal size of the external data
#   that a policy can reference, in bytes. This annotation is compulsory for
#   policies of type 'external'. It is ignored for all other policy types.
#
#   The 'future' key is used to indicate that a policy isn't yet ready for
#   usage. It defaults to False, and currently affects the generated policy
#   templates and documentation. The policy definition list that Chrome sees
#   will include policies marked with 'future'. If a WIP policy isn't meant to
#   be seen by the policy providers either, the 'supported_on' key should be set
#   to an empty list.
#
# Schemas:
#   All policies have a key 'schema' which describes the schema of the policy.
#   This schema supports a subset of the JSON Schema standard
#   (https://json-schema.org/understanding-json-schema/index.html). For more
#   information see //components/policy/tools/schema_validator.py. This
#   validator is also used during presubmit to validate all schemas,
#   validation_schemas and the example_values. On the client-side we use
#   //components/policy/core/common/schema.h to validate policy values against
#   the provided schemas in this file. This validator supports the same subset
#   of features supported by the python schema validator used during presubmit.
#
#   For many policies this is simply a type eg 'boolean' or 'string', but for
#   'dict' policies this describes the types of not only the root object, but
#   also all of its descendants. This schema data is used to validate 'dict'
#   policies, if a SchemaValidatingPolicyHandler is configured appropriately in
#   configuration_policy_handler_list_factory.cc
#
#   Some policies at first seem to have simple schema e.g. a string or a list of
#   strings, but those strings are actually JSON strings, and this JSON has
#   another schema. This type of policy is deprecated. When adding new policies,
#   make sure the entire schema is described by the 'schema' field and that
#   there are no strings which contain JSON.
#   The legacy policies which contain JSON strings have an extra field, the
#   'validation_schema' which is used to validate not only the schema of the
#   policy itself, but also the content of the JSON strings inside the policy.
#   Do not use this field when adding new policies.
#
#   In order to hide sensitive policy values from the user, you can use
#   'sensitiveValue': True (default 'False') in the associated schema. Those
#   values will be masked with '********' in the chrome://policy UI and policy
#   exports. 'sensitiveValue' can be applied to all schema types.
#
# IDs:
#   Since a Protocol Buffer definition is generated from this file, unique and
#   persistent IDs for all fields (but not for groups!) are needed. These are
#   specified by the 'id' keys of each policy. NEVER CHANGE EXISTING IDs,
#   because doing so would break the deployed wire format!
#   For your editing convenience:
#   The highest ID currently used is always set in the
#   'highest_id_currently_used' value at the end of this file.
#   And don't forget to also update the EnterprisePolicies enum of
#   histograms.xml (run 'python tools/metrics/histograms/update_policies.py').
#   A policy can be deleted from this file if and only if it is never launched;
#   in which case its id must be added to the 'deleted_policy_ids' list to
#   prevent reuse.
#
# Placeholders:
#   The following placeholder strings are automatically substituted:
#     $1 -> Google Chrome / Chromium
#     $2 -> Google Chrome OS / Chromium OS
#     $3 -> Google Chrome Frame / Chromium Frame
#     $6 is reserved for doc_writer
#
# Device Policy:
#   An additional flag 'device_only' (optional, defaults to False) indicates
#   that this policy is only supported as a device-level Cloud Policy. In that
#   case no entry in the UserPolicy Protobuf is generated and it is assumed that
#   it will be added to the DevicePolicy Protobuf manually. Device policy only
#   exists on Chrome OS.
#
# Management Type:
#   Chrome OS devices can either be managed through the Google cloud or through
#   Active Directory. Most policies are supported for both management types, but
#   some are not. To indicate supported management types, use
#     'supported_chrome_os_management': ['google_cloud', 'active_directory'],
#   where
#     'google_cloud' = Policy is supported for Google cloud management.
#     'active_directory' = Policy is supported for Active Directory management.
#   This setting applies to Chrome OS only. If the setting is missing, both
#   types are assumed. The array must not be empty.
#
# Enterprise defaults for user policy:
#   For managed users on Chrome OS (i.e. users receiving user policy from the
#   cloud), if the optional key 'default_for_enterprise_users' is set, its value
#   is applied as mandatory policy unless a different setting is received from
#   the cloud. This default value handling is automatically enforced by the
#   policy stack when filling the PolicyMap (specifically, by the generated
#   function SetEnterpriseUsersDefaults).
#
# Enterprise defaults for device policy:
#   The optional key 'default_for_managed_devices_doc_only' can be used to
#   document a differing default value for devices enrolled into enterprise
#   management. This is for documentation only - the enrollment-dependent
#   handling must be manually implemented.

  'risk_tag_definitions' : [
    # All following tags are ordered by severity of their impact.
    # TODO(fhorschig|tnagel): Revisit user-descriptions after reviews.
    {
      'name': 'full-admin-access',
      'description': '''Policies with this tag enable an administrator to
      execute arbitrary code or configure a machine in a way that a
      man-in-the-middle situation can occur.''',
      'user-description': '''Your administrator has set up certificates or applications that could potentially access all of your data.
      This could possibly allow inspecting and modifying all data sent and received by Chrome.'''
    },
    {
      'name': 'system-security',
      'description': '''Policies with this tag can make the user vulnerable
      against attacks which are not possible when the policies are unset.
      This includes execution of deprecated code or unsafe configuration of
      network settings and proxies.''',
      'user-description': '''Policy set by your administrator could enable functionality that is outdated or that could reduce the security of the system in other ways.'''
    },
    {
      'name': 'website-sharing',
      'description': '''Setting Policies with this tag will allow sharing
      information with a server that would normally not be allowed.
      Those information can include geolocation, audio/video device inputs or
      data that can be used to identify the user.''',
      'user-description': '''Policy set by your administrator could enable sharing of data with websites.
      Some of these data might suffice to identify you or could be used to record private information.'''
    },
    {
      'name': 'admin-sharing',
      'description': '''Policies with this tag enable an administrator to log
      the user's activity or traffic.''',
      'user-description': '''Policy configured by your administrator might allow them to gather general information about your device and your activity.'''
    },
    {
      'name': 'filtering',
      'description': '''Policies with this tag can restrict the information a
      user can query from the world-wide web. This includes blocked websites,
      enforced search settings and partly data synchronization.''',
      'user-description': '''Your administrator has set up policy that may restrict your access to websites, services or search results.'''
    },
    {
      'name': 'local-data-access',
      'description': '''Policies with this tag can cause storing data to or
      reading data from a local file system without the user's knowledge. This
      includes import of existing settings to the cloud or avoiding clean-up of
      local history data.''',
      'user-description': '''Your administrator has set up policy that could cause private data to be imported from your system or could cause private data to be written to an admin-specified place.'''
    },
    {
      'name': 'google-sharing',
      'description': '''Set policies might enforce sharing data with google,
      like crash reports or history.''',
      'user-description': '''There are policies set by your administrator which can affect the communication with Google services.
      Therefore, some services could either be unreachable or you might not be able to restrict sent data.'''
    }
  ],
  'policy_definitions': [
    {
      'name': 'Homepage',
      'type': 'group',
      'caption': '''Home page''',
      'desc': '''Configure the default home page in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> and prevents users from changing it.

      The user's home page settings are only completely locked down, if you either select the home page to be the new tab page, or set it to be a URL and specify a home page URL. If you don't specify the home page URL, then the user is still able to set the home page to the new tab page by specifying 'chrome://newtab'.''',
      'policies': [
        'HomepageLocation',
        'HomepageIsNewTabPage',
      ],
    },
    {
      'name': 'NewTabPage',
      'type': 'group',
      'caption': '''New Tab Page''',
      'desc': '''Configure the default New Tab page in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.''',
      'policies': [
        'NewTabPageLocation',
      ],
    },
    {
      'name': 'RemoteAccess',
      'type': 'group',
      'caption': '''Configure remote access options''',
      'desc': '''Configure remote access options in Chrome Remote Desktop host.

      Chrome Remote Desktop host is a native service that runs on the target machine that a user can connect to using Chrome Remote Desktop application.  The native service is packaged and executed separately from the <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> browser.

      These policies are ignored unless the
      Chrome Remote Desktop host is installed.''',
      'policies': [
        'RemoteAccessClientFirewallTraversal',
        'RemoteAccessHostClientDomain',
        'RemoteAccessHostClientDomainList',
        'RemoteAccessHostFirewallTraversal',
        'RemoteAccessHostDomain',
        'RemoteAccessHostDomainList',
        'RemoteAccessHostRequireTwoFactor',
        'RemoteAccessHostTalkGadgetPrefix',
        'RemoteAccessHostRequireCurtain',
        'RemoteAccessHostAllowClientPairing',
        'RemoteAccessHostAllowGnubbyAuth',
        'RemoteAccessHostAllowRelayedConnection',
        'RemoteAccessHostUdpPortRange',
        'RemoteAccessHostMatchUsername',
        'RemoteAccessHostTokenUrl',
        'RemoteAccessHostTokenValidationUrl',
        'RemoteAccessHostTokenValidationCertificateIssuer',
        'RemoteAccessHostDebugOverridePolicies',
        'RemoteAccessHostAllowUiAccessForRemoteAssistance',
      ],
    },
    {
      'name': 'PasswordManager',
      'type': 'group',
      'caption': '''Password manager''',
      'desc': '''Configures the password manager.''',
      'policies': [
        'PasswordManagerEnabled',
        'PasswordManagerAllowShowPasswords',
      ],
    },
    {
      'name': 'Proxy',
      'type': 'group',
      'caption': '''Proxy server''',
      'desc': '''Allows you to specify the proxy server used by <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> and prevents users from changing proxy settings.

      If you choose to never use a proxy server and always connect directly, all other options are ignored.

      If you choose to auto detect the proxy server, all other options are ignored.

      For detailed examples, visit:
      <ph name="PROXY_HELP_URL">https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett<ex>https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett</ex></ph>.

      If you enable this setting, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> and ARC-apps ignore all proxy-related options specified from the command line.

      Leaving these policies not set will allow the users to choose the proxy settings on their own.''',
      'policies': [
        'ProxyMode',
        'ProxyServerMode',
        'ProxyServer',
        'ProxyPacUrl',
        'ProxyBypassList',
      ],
    },
    {
      'name': 'HTTPAuthentication',
      'type': 'group',
      'caption': '''Policies for HTTP authentication''',
      'desc': '''Policies related to integrated HTTP authentication.''',
      'policies': [
        'AuthSchemes',
        'DisableAuthNegotiateCnameLookup',
        'EnableAuthNegotiatePort',
        'AuthServerWhitelist',
        'AuthNegotiateDelegateWhitelist',
        'UseKDCConstrainedDelegation',
        'GSSAPILibraryName',
        'AuthAndroidNegotiateAccountType',
        'AllowCrossOriginAuthPrompt',
        'NtlmV2Enabled',
      ],
    },
    {
      'name': 'Extensions',
      'type': 'group',
      'caption': '''Extensions''',
      'desc': '''Configures extension-related policies. The user is not allowed to install blacklisted extensions unless they are whitelisted. You can also force <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> to automatically install extensions by specifying them in <ph name="EXTENSION_INSTALL_FORCELIST_POLICY_NAME">ExtensionInstallForcelist</ph>. Force-installed extensions are installed regardless whether they are present in the blacklist.''',
      'policies': [
        'ExtensionInstallBlacklist',
        'ExtensionInstallWhitelist',
        'ExtensionInstallForcelist',
        'ExtensionInstallSources',
        'ExtensionAllowedTypes',
        'ExtensionAllowInsecureUpdates',
        'ExtensionSettings',
      ],
    },
    {
      'name': 'RestoreOnStartupGroup',
      'type': 'group',
      'caption': '''Startup pages''',
      'desc': '''Allows you to configure the pages that are loaded on startup.

      The contents of the list 'URLs to open at startup' are ignored unless you select 'Open a list of URLs' in 'Action on startup'.''',
      'policies': [
        'RestoreOnStartup',
        'RestoreOnStartupURLs',
      ],
    },
    {
      # TODO(joaodasilva): Flag these policies with 'can_be_recommended'
      # after fixing https://crbug.com/106683
      'name': 'DefaultSearchProvider',
      'type': 'group',
      'caption': '''Default search provider''',
      'desc': '''Configures the default search provider. You can specify the default search provider that the user will use or choose to disable default search.''',
      'policies': [
        'DefaultSearchProviderEnabled',
        'DefaultSearchProviderName',
        'DefaultSearchProviderKeyword',
        'DefaultSearchProviderSearchURL',
        'DefaultSearchProviderSuggestURL',
        'DefaultSearchProviderInstantURL',
        'DefaultSearchProviderIconURL',
        'DefaultSearchProviderEncodings',
        'DefaultSearchProviderAlternateURLs',
        'DefaultSearchProviderSearchTermsReplacementKey',
        'DefaultSearchProviderImageURL',
        'DefaultSearchProviderNewTabURL',
        'DefaultSearchProviderSearchURLPostParams',
        'DefaultSearchProviderSuggestURLPostParams',
        'DefaultSearchProviderInstantURLPostParams',
        'DefaultSearchProviderImageURLPostParams',
      ],
    },
    {
      # TODO(joaodasilva): Flag these policies with 'can_be_recommended'
      # after fixing https://crbug.com/106682
      'name': 'ContentSettings',
      'type': 'group',
      'caption': '''Content Settings''',
      'desc': '''Content Settings allow you to specify how contents of a specific type (for example Cookies, Images or JavaScript) is handled.''',
      'policies': [
        'DefaultCookiesSetting',
        'DefaultImagesSetting',
        'DefaultJavaScriptSetting',
        'DefaultPluginsSetting',
        'DefaultPopupsSetting',
        'DefaultNotificationsSetting',
        'DefaultGeolocationSetting',
        'DefaultMediaStreamSetting',
        'DefaultWebBluetoothGuardSetting',
        'DefaultKeygenSetting',
        'DefaultWebUsbGuardSetting',
        'AutoSelectCertificateForUrls',
        'CookiesAllowedForUrls',
        'CookiesBlockedForUrls',
        'CookiesSessionOnlyForUrls',
        'ImagesAllowedForUrls',
        'ImagesBlockedForUrls',
        'JavaScriptAllowedForUrls',
        'JavaScriptBlockedForUrls',
        'KeygenAllowedForUrls',
        'KeygenBlockedForUrls',
        'PluginsAllowedForUrls',
        'PluginsBlockedForUrls',
        'PopupsAllowedForUrls',
        'RegisteredProtocolHandlers',
        'PopupsBlockedForUrls',
        'NotificationsAllowedForUrls',
        'NotificationsBlockedForUrls',
        "WebUsbAllowDevicesForUrls",
        'WebUsbAskForUrls',
        'WebUsbBlockedForUrls',
      ],
    },
    {
      'name': 'NativeMessaging',
      'type': 'group',
      'caption': '''Native Messaging''',
      'desc': '''Configures policies for Native Messaging. Blacklisted native messaging hosts won't be allowed unless they are whitelisted.''',
      'policies': [
        'NativeMessagingBlacklist',
        'NativeMessagingWhitelist',
        'NativeMessagingUserLevelHosts',
      ],
    },
    {
      'name': 'ChromeFrameRendererSettings',
      'type': 'group',
      'caption': '''Default HTML renderer for <ph name="PRODUCT_FRAME_NAME">$3<ex>Google Chrome Frame</ex></ph>''',
      'desc': '''Allows you to configure the default HTML renderer when <ph name="PRODUCT_FRAME_NAME">$3<ex>Google Chrome Frame</ex></ph> is installed.
      The default setting is to allow the host browser do the rendering, but you can optionally override this and have <ph name="PRODUCT_FRAME_NAME">$3<ex>Google Chrome Frame</ex></ph> render HTML pages by default.''',
      'policies': [
        'ChromeFrameRendererSettings',
        'RenderInChromeFrameList',
        'RenderInHostList',
        'AdditionalLaunchParameters',
        'SkipMetadataCheck',
      ],
    },
    {
      'name': 'ChromeFrameContentTypes',
      'type': 'group',
      'caption': '''Allow <ph name="PRODUCT_FRAME_NAME">$3<ex>Google Chrome Frame</ex></ph> to handle the following content types''',
      'desc': '''Allow <ph name="PRODUCT_FRAME_NAME">$3<ex>Google Chrome Frame</ex></ph> to handle the following content types.''',
      'policies': [
        'ChromeFrameContentTypes',
      ],
    },
    {
      'name': 'Drive',
      'type': 'group',
      'caption': '''Configure Google Drive options''',
      'desc': '''Configure Google Drive in <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph>.''',
      'policies': [
        'DriveDisabled',
        'DriveDisabledOverCellular',
      ],
    },
    {
      'name': 'PowerManagement',
      'type': 'group',
      'caption': '''Power management''',
      'desc': '''Configure power management in <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph>.

      These policies let you configure how <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> behaves when the user remains idle for some amount of time.''',
      'policies': [
        'ScreenDimDelayAC',
        'ScreenOffDelayAC',
        'ScreenLockDelayAC',
        'IdleWarningDelayAC',
        'IdleDelayAC',
        'ScreenDimDelayBattery',
        'ScreenOffDelayBattery',
        'ScreenLockDelayBattery',
        'IdleWarningDelayBattery',
        'IdleDelayBattery',
        'IdleAction',
        'IdleActionAC',
        'IdleActionBattery',
        'LidCloseAction',
        'PowerManagementUsesAudioActivity',
        'PowerManagementUsesVideoActivity',
        'PresentationIdleDelayScale',
        'PresentationScreenDimDelayScale',
        'AllowWakeLocks',
        'AllowScreenWakeLocks',
        'UserActivityScreenDimDelayScale',
        'WaitForInitialUserActivity',
        'PowerManagementIdleSettings',
        'ScreenLockDelays',
        'PowerSmartDimEnabled',
        'ScreenBrightnessPercent',
      ],
    },
    {
      'name': 'Accessibility',
      'type': 'group',
      'caption': '''Accessibility settings''',
      'desc': '''Configure <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> accessibility features.''',
      'policies': [
        'ShowAccessibilityOptionsInSystemTrayMenu',
        'LargeCursorEnabled',
        'SpokenFeedbackEnabled',
        'HighContrastEnabled',
        'VirtualKeyboardEnabled',
        'KeyboardDefaultToFunctionKeys',
        'ScreenMagnifierType',
        'DeviceLoginScreenDefaultLargeCursorEnabled',
        'DeviceLoginScreenDefaultSpokenFeedbackEnabled',
        'DeviceLoginScreenDefaultHighContrastEnabled',
        'DeviceLoginScreenDefaultVirtualKeyboardEnabled',
        'DeviceLoginScreenDefaultScreenMagnifierType',
      ],
    },
    {
      'name': 'Attestation',
      'type': 'group',
      'caption': 'Remote Attestation',
      'desc': 'Configure the remote attestation with TPM mechanism.',
      'policies': [
        'AttestationEnabledForDevice',
        'AttestationEnabledForUser',
        'AttestationExtensionWhitelist',
        'AttestationForContentProtectionEnabled',
      ],
    },
    {
      'name': 'LocallyManagedUsers',
      'type': 'group',
      'caption': '''Locally managed users settings''',
      'desc': '''Configure settings for managed users.''',
      'policies': [
        'ContentPackDefaultFilteringBehavior',
        'ContentPackManualBehaviorHosts',
        'ContentPackManualBehaviorURLs',
        'SupervisedUsersEnabled',
        'SupervisedUserCreationEnabled',
        'SupervisedUserContentProviderEnabled',
      ],
    },
    {
      'name': 'GoogleCast',
      'type': 'group',
      'caption': '''<ph name="PRODUCT_NAME">Google Cast</ph>''',
      'desc': '''Configure policies for <ph name="PRODUCT_NAME">Google Cast</ph>, a feature that allows users to send the contents of tabs, sites or the desktop from the browser to remote displays and sound systems.''',
      'policies': [
        'EnableMediaRouter',
        'ShowCastIconInToolbar',
      ],
    },

    {
      'name': 'QuickUnlock',
      'type': 'group',
      'caption': '''Quick unlock policies''',
      'desc': '''Configures quick unlock related policies.''',
      'policies': [
        'QuickUnlockModeWhitelist',
        'QuickUnlockTimeout',
        'PinUnlockMinimumLength',
        'PinUnlockMaximumLength',
        'PinUnlockWeakPinsAllowed',
      ],
    },
    {
      'name': 'CastReceiver',
      'type': 'group',
      'caption': '''Cast Receiver''',
      'desc': '''Configure the Cast Receiver in <ph name="PRODUCT_NAME">$2<ex>Google Chrome OS</ex></ph>.''',
      'policies': [
        'CastReceiverEnabled',
        'CastReceiverName',
      ]
    },
    {
      'name': 'SafeBrowsing',
      'type': 'group',
      'caption': '''Safe Browsing settings''',
      'desc': '''Configure Safe Browsing related policies.''',
      'policies': [
        'SafeBrowsingEnabled',
        'SafeBrowsingExtendedReportingEnabled',
        'SafeBrowsingExtendedReportingOptInAllowed',
        'SafeBrowsingWhitelistDomains',
        'PasswordProtectionWarningTrigger',
        'PasswordProtectionLoginURLs',
        'PasswordProtectionChangePasswordURL',
      ],
    },
    {
      'name': 'NetworkFileShares',
      'type': 'group',
      'caption': '''Network File Shares settings''',
      'desc': '''Configure Network File Share related policies.''',
      'policies': [
        'NetworkFileSharesAllowed',
        'NetBiosShareDiscoveryEnabled',
        'NTLMShareAuthenticationEnabled',
        'NetworkFileSharesPreconfiguredShares',
      ],
    },
    {
      'name': 'ChromeReportingExtension',
      'type': 'group',
      'caption': '''Chrome Reporting Extension''',
      'desc': '''Configure Chrome Reporting Extension related policies.

      This policy is only effective when the <ph name="CHROME_REPORTING_EXTENSION_NAME">Chrome Reporting Extension</ph> is enabled, and the machine is enrolled with <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME">MachineLevelUserCloudPolicyEnrollmentToken</ph>.''',
      'policies': [
        'ReportVersionData',
        'ReportPolicyData',
        'ReportMachineIDData',
        'ReportUserIDData',
        'ReportExtensionsAndPluginsData',
        'ReportSafeBrowsingData',
        'CloudReportingEnabled',
      ],
    },
    {
      'name': 'BrowserSwitcher',
      'type': 'group',
      'caption': '''<ph name="LBS_PRODUCT_NAME">Legacy Browser Support</ph>''',
      'desc': '''Configure policies to switch between browsers.

      Configured websites will automatically open in another browser than <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.''',
      'policies': [
        'AlternativeBrowserPath',
        'AlternativeBrowserParameters',
        'BrowserSwitcherDelay',
        'BrowserSwitcherEnabled',
        'BrowserSwitcherExternalSitelistUrl',
        'BrowserSwitcherUrlList',
        'BrowserSwitcherUrlGreylist',
        'BrowserSwitcherUseIeSitelist',
      ],
    },
    {
      'name': 'PluginVm',
      'type': 'group',
      'caption': '''PluginVm''',
      'policies': [
        'PluginVmAllowed',
        'PluginVmLicenseKey',
        'PluginVmImage',
      ],
      'desc': '''Configure <ph name="PLUGIN_VM_NAME">PluginVm</ph> related policies.''',
    },
    {
      'name': 'Signin',
      'type': 'group',
      'caption': '''Sign-in settings''',
      'desc': '''Controls the behavior of the sign-in screen, where users log into their accounts. Settings include who can log in, what type of accounts are allowed, what authentication methods should be used, as well as general accessibility, input method and locale settings.''',
      'policies': [
        'DeviceGuestModeEnabled',
        'DeviceUserWhitelist',
        'DeviceAllowNewUsers',
        'DeviceLoginScreenDomainAutoComplete',
        'DeviceShowUserNamesOnSignin',
        'DeviceWallpaperImage',
        'DeviceEphemeralUsersEnabled',
        'LoginAuthenticationBehavior',
        'DeviceSamlLoginAuthenticationType',
        'DeviceTransferSAMLCookies',
        'LoginVideoCaptureAllowedUrls',
        'DeviceStartUpFlags',
        'DeviceLoginScreenAppInstallList',
        'DeviceLoginScreenLocales',
        'DeviceLoginScreenInputMethods',
        'DeviceSecondFactorAuthentication',
        'DeviceLoginScreenIsolateOrigins',
        'DeviceLoginScreenSitePerProcess',
        'DeviceLoginScreenAutoSelectCertificateForUrls',
      ],
    },
    {
      'name': 'UserAndDeviceReporting',
      'type': 'group',
      'caption': '''User and device reporting''',
      'desc': '''Controls what kind of user and device information is reported.''',
      'policies': [
        'ReportDeviceVersionInfo',
        'ReportDeviceBootMode',
        'ReportDeviceUsers',
        'ReportDeviceActivityTimes',
        'ReportDeviceLocation',
        'ReportDeviceNetworkInterfaces',
        'ReportDeviceHardwareStatus',
        'ReportDeviceSessionStatus',
        'ReportDeviceBoardStatus',
        'ReportDevicePowerStatus',
        'ReportDeviceStorageStatus',
        'ReportUploadFrequency',
        'ReportArcStatusEnabled',
        'HeartbeatEnabled',
        'HeartbeatFrequency',
        'LogUploadEnabled',
        'DeviceMetricsReportingEnabled',
      ],
    },
    {
      'name': 'Network',
      'type': 'group',
      'caption': '''Network settings''',
      'desc': '''Controls device-wide network configuration.''',
      'policies': [
        'DeviceOpenNetworkConfiguration',
        'DeviceDataRoamingEnabled',
        'NetworkThrottlingEnabled',
        'DeviceHostnameTemplate',
        'DeviceWiFiFastTransitionEnabled'
      ],
    },
    {
      'name': 'DeviceUpdate',
      'type': 'group',
      'caption': '''Device update settings''',
      'desc': '''Controls how and when Chrome OS updates are applied.''',
      'policies': [
        'ChromeOsReleaseChannel',
        'ChromeOsReleaseChannelDelegated',
        'DeviceAutoUpdateDisabled',
        'DeviceAutoUpdateP2PEnabled',
        'DeviceAutoUpdateTimeRestrictions',
        'DeviceTargetVersionPrefix',
        'DeviceUpdateStagingSchedule',
        'DeviceUpdateScatterFactor',
        'DeviceUpdateAllowedConnectionTypes',
        'DeviceUpdateHttpDownloadsEnabled',
        'RebootAfterUpdate',
        'MinimumRequiredChromeVersion',
        'DeviceRollbackToTargetVersion',
        'DeviceRollbackAllowedMilestones',
      ],
    },
    {
      'name': 'PowerAndShutdown',
      'type': 'group',
      'caption': '''Power and shutdown''',
      'desc': '''Controls settings related to power management and rebooting.''',
      'policies': [
        'DeviceLoginScreenPowerManagement',
        'UptimeLimit',
        'DeviceRebootOnShutdown',
      ],
    },
    {
      'name': 'Kiosk',
      'type': 'group',
      'caption': '''Kiosk settings''',
      'desc': '''Controls public session and kiosk account types.''',
      'policies': [
        'DeviceLocalAccounts',
        'DeviceLocalAccountAutoLoginId',
        'DeviceLocalAccountAutoLoginDelay',
        'DeviceLocalAccountAutoLoginBailoutEnabled',
        'DeviceLocalAccountPromptForNetworkWhenOffline',
        'AllowKioskAppControlChromeVersion',
      ],
    },
    {
      'name': 'Other',
      'type': 'group',
      'caption': '''Other''',
      'desc': '''Controls miscellaneous settings including USB, bluetooth, policy refresh, developer mode and others.''',
      'policies': [
        'UsbDetachableWhitelist',
        'DeviceAllowBluetooth',
        'TPMFirmwareUpdateSettings',
        'DeviceEcryptfsMigrationStrategy',
        'DevicePolicyRefreshRate',
        'DeviceBlockDevmode',
        'DeviceAllowRedeemChromeOsRegistrationOffers',
        'DeviceQuirksDownloadEnabled',
        'ExtensionCacheSize',
        'DeviceOffHours'
      ],
    },
    {
      'name': 'DateAndTime',
      'type': 'group',
      'caption': '''Date and time''',
      'desc': '''Controls clock and time zone settings.''',
      'policies': [
        'SystemTimezone',
        'SystemTimezoneAutomaticDetection',
        'SystemUse24HourClock',
      ]
    },
    {
      'name': 'Display',
      'type': 'group',
      'caption': '''Display''',
      'desc': '''Controls display settings.''',
      'policies': [
        'DeviceDisplayResolution',
        'DisplayRotationDefault',
      ]
    },
    {
      'name': 'Printing',
      'type': 'group',
      'caption': '''Printing''',
      'desc': '''Controls printing settings.''',
      'policies': [
        'PrintingEnabled',
        'CloudPrintProxyEnabled',
        'PrintingAllowedColorModes',
        'PrintingAllowedDuplexModes',
        'PrintingAllowedPinModes',
        'PrintingAllowedPageSizes',
        'PrintingColorDefault',
        'PrintingDuplexDefault',
        'PrintingPinDefault',
        'PrintingSizeDefault',
        'PrintingSendUsernameAndFilenameEnabled',
        'CloudPrintSubmitEnabled',
        'DisablePrintPreview',
        'PrintHeaderFooter',
        'DefaultPrinterSelection',
        'NativePrinters',
        'NativePrintersBulkConfiguration',
        'NativePrintersBulkAccessMode',
        'NativePrintersBulkBlacklist',
        'NativePrintersBulkWhitelist',
        'DeviceNativePrinters',
        'DeviceNativePrintersAccessMode',
        'DeviceNativePrintersBlacklist',
        'DeviceNativePrintersWhitelist',
        'PrintPreviewUseSystemDefaultPrinter',
        'UserNativePrintersAllowed',
      ]
    },
    {
      'name': 'ActiveDirectoryManagement',
      'type': 'group',
      'caption': '''<ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> management settings''',
      'desc': '''Controls settings specific to <ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> managed <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> devices.''',
      'policies': [
        'DeviceMachinePasswordChangeRate',
        'DeviceUserPolicyLoopbackProcessingMode',
        'DeviceKerberosEncryptionTypes',
        'DeviceGpoCacheLifetime',
        'DeviceAuthDataCacheLifetime',
      ]
    },
    {
      'name': 'Arc',
      'type': 'group',
      'caption': '''Android settings''',
      'desc': '''Controls settings for the Android container (ARC) and Android apps.''',
      'policies': [
        'ArcEnabled',
        'UnaffiliatedArcAllowed',
        'ArcPolicy',
        'ArcAppInstallEventLoggingEnabled',
        'ArcBackupRestoreServiceEnabled',
        'ArcGoogleLocationServicesEnabled',
        'ArcCertificatesSyncMode',
        'ArcBackupRestoreEnabled',
        'ArcLocationServiceEnabled'
      ]
    },
    {
      'name': 'Crostini',
      'type': 'group',
      'caption': '''Linux container''',
      'desc': '''Controls settings for the Linux container (Crostini).''',
      'policies': [
        'VirtualMachinesAllowed',
        'CrostiniAllowed',
        'DeviceUnaffiliatedCrostiniAllowed',
        'CrostiniExportImportUIAllowed',
      ]
    },
    {
      'name': 'GoogleAssistant',
      'type': 'group',
      'caption': '''Google Assistant''',
      'desc': '''Controls settings for Google Assistant.''',
      'policies': [
        'VoiceInteractionContextEnabled',
      ]
    },
    {
      'name': 'HomepageLocation',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:8-', 'chrome_os:11-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'https://www.chromium.org',
      'id': 1,
      'caption': '''Configure the home page URL''',
      'tags': [],
      'desc': '''Configures the default home page URL in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> and prevents users from changing it.

          The home page is the page opened by the Home button. The pages that open on startup are controlled by the RestoreOnStartup policies.

          The home page type can either be set to a URL you specify here or set to the New Tab Page. If you select the New Tab Page, then this policy does not take effect.

          If you enable this setting, users cannot change their home page URL in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>, but they can still choose the New Tab Page as their home page.

          Leaving this policy not set will allow the user to choose their home page on their own if HomepageIsNewTabPage is not set too.

          This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> domain. or Windows 10 Pro or Enterprise instances that enrolled for device management.''',
      'label': '''Home page URL''',
    },
    {
      'name': 'HomepageIsNewTabPage',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:8-', 'chrome_os:11-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 2,
      'caption': '''Use New Tab Page as homepage''',
      'tags': [],
      'desc': '''Configures the type of the default home page in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> and prevents users from changing home page preferences. The home page can either be set to a URL you specify or set to the New Tab Page.

          If you enable this setting, the New Tab Page is always used for the home page, and the home page URL location is ignored.

          If you disable this setting, the user's homepage will never be the New Tab Page, unless its URL is set to 'chrome://newtab'.

          If you enable or disable this setting, users cannot change their homepage type in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

          Leaving this policy not set will allow the user to choose whether the new tab page is their home page on their own.

          This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> domain. or Windows 10 Pro or Enterprise instances that enrolled for device management.''',
    },
    {
      'name': 'NewTabPageLocation',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:58-', 'chrome_os:58-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'https://www.chromium.org',
      'id': 360,
      'caption': '''Configure the New Tab page URL''',
      'tags': [],
      'desc': '''Configures the default New Tab page URL and prevents users from changing it.

          The New Tab page is the page opened when new tabs are created (including the one opened in new windows).

          This policy does not decide which pages are to be opened on start up. Those are controlled by the <ph name="RESTORE_ON_STARTUP_POLICY_NAME">RestoreOnStartup</ph> policies. Yet this policy does affect the Home Page if that is set to open the New Tab page, as well as the startup page if that is set to open the New Tab page.

          If the policy is not set or left empty the default new tab page is used.

          This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> domain. or Windows 10 Pro or Enterprise instances that enrolled for device management.''',
      'label': '''New Tab page URL''',
    },
    {
      'name': 'DefaultBrowserSettingEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:11-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': True,
      'id': 3,
      'caption': '''Set <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> as Default Browser''',
      'tags': [],
      'desc': '''Configures the default browser checks in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> and prevents users from changing them.

      If you enable this setting, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will always check on startup whether it is the default browser and automatically register itself if possible.

      If this setting is disabled, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will never check if it is the default browser and will disable user controls for setting this option.

      If this setting is not set, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will allow the user to control whether it is the default browser and whether user notifications should be shown when it isn't.

      Note for administrators of <ph name="MS_WIN_NAME">Microsoft® Windows</ph>: Enabling this setting will only work for machines running Windows 7. For versions of Windows starting with Windows 8, you must deploy a "default application associations" file that makes <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> the handler for the <ph name="HHTPS_PROTOCOL">https</ph> and <ph name="HTTP_PROTOCOL">http</ph> protocols (and, optionally, the <ph name="FTP_PROTOCOL">ftp</ph> protocol and file formats such as <ph name="HTML_EXTENSION">.html</ph>, <ph name="HTM_EXTENSION">.htm</ph>, <ph name="PDF_EXTENSION">.pdf</ph>, <ph name="SVG_EXTENSION">.svg</ph>, <ph name="WEBP_EXTENSION">.webp</ph>, etc...). See <ph name="SUPPORT_URL">https://support.google.com/chrome?p=make_chrome_default_win</ph> for more information.''',
      'label': '''Set <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> as Default Browser''',
    },
    {
      'name': 'ApplicationLocaleValue',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.win:8-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': 'en',
      'id': 4,
      'caption': '''Application locale''',
      'tags': [],
      'desc': '''Configures the application locale in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> and prevents users from changing the locale.

      If you enable this setting, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> uses the specified locale. If the configured locale is not supported, 'en-US' is used instead.

      If this setting is disabled or not set, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> uses either the user-specified preferred locale (if configured), the system locale or the fallback locale 'en-US'.''',
      'label': '''Application locale''',
    },
    {
      'name': 'AlternateErrorPagesEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': [
        'chrome.*:8-',
        'chrome_os:11-',
        'android:30-',
      ],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 5,
      'caption': '''Enable alternate error pages''',
      'tags': [],
      'desc': '''Enables the use of alternate error pages that are built into <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> (such as 'page not found') and prevents users from changing this setting.

      If you enable this setting, alternate error pages are used.

      If you disable this setting, alternate error pages are never used.

      If you enable or disable this setting, users cannot change or override this setting in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      If this policy is left not set, this will be enabled but the user will be able to change it.''',
    },
    {
      'name': 'SearchSuggestEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': [
        'chrome.*:8-',
        'chrome_os:11-',
        'android:30-',
      ],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 6,
      'caption': '''Enable search suggestions''',
      'tags': [],
      'desc': '''Enables search suggestions in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>'s omnibox and prevents users from changing this setting.

      If you enable this setting, search suggestions are used.

      If you disable this setting, search suggestions are never used.

      If you enable or disable this setting, users cannot change or override this setting in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      If this policy is left not set, this will be enabled but the user will be able to change it.''',
    },
    {
      'name': 'DnsPrefetchingEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:8-53', 'chrome_os:11-53', 'android:30-53'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'deprecated': True,
      'example_value': True,
      'id': 7,
      'caption': '''Enable network prediction''',
      'tags': [],
      'desc': '''This policy is deprecated in M48 in favor of <ph name="NETWORK_PREDICTION_OPTIONS_POLICY_NAME">NetworkPredictionOptions</ph>, and removed in M54.

      Enables network prediction in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> and prevents users from changing this setting.

      This controls not only DNS prefetching but also TCP and SSL preconnection and prerendering of web pages. The policy name refers to DNS prefetching for historical reasons.

      If you enable or disable this setting, users cannot change or override this setting in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      If this policy is left not set, this will be enabled but the user will be able to change it.''',
    },
    {
      'name': 'NetworkPredictionOptions',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1, 2 ],
      },
      'items': [
        {
          'name': 'NetworkPredictionAlways',
          'value': 0,
          'caption': '''Predict network actions on any network connection''',
        },
        {
          'name': 'NetworkPredictionWifiOnly',
          'value': 1,
          'caption': '''Predict network actions on any network that is not cellular.
          (Deprecated in 50, removed in 52. After 52, if value 1 is set, it will be treated as 0 - predict network actions on any network connection.)''',
        },
        {
          'name': 'NetworkPredictionNever',
          'value': 2,
          'caption': '''Do not predict network actions on any network connection''',
        },
      ],
      'supported_on': ['chrome.*:38-', 'chrome_os:38-', 'android:38-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 1,
      'id': 273,
      'caption': '''Enable network prediction''',
      'tags': [],
      'desc': '''Enables network prediction in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> and prevents users from changing this setting.

      This controls DNS prefetching, TCP and SSL preconnection and prerendering of web pages.

      If you set this policy, users cannot change or override this setting in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      If this policy is left not set, network prediction will be enabled but the user will be able to change it.''',
    },
    {
      'name': 'WPADQuickCheckEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': [ 'chrome.*:35-', 'chrome_os:35-' ],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': True,
      'id': 261,
      'caption': '''Enable WPAD optimization''',
      'tags': ['system-security'],
      'desc': '''Allows to turn off WPAD (Web Proxy Auto-Discovery) optimization in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      If this policy is set to false, WPAD optimization is disabled causing <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> to wait longer for DNS-based WPAD servers.  If the policy is not set or is enabled, WPAD optimization is enabled.

      Independent of whether or how this policy is set, the WPAD optimization setting cannot be changed by users.''',
    },
    {
      'name': 'DisableSpdy',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:8-53', 'chrome_os:11-53', 'android:30-53'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'deprecated': True,
      'example_value': True,
      'id': 8,
      'caption': '''Disable SPDY protocol''',
      'tags': [],
      'desc': '''This policy is deprecated in M53 and removed in M54, because SPDY/3.1 support is removed.

      Disables use of the SPDY protocol in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      If this policy is enabled the SPDY protocol will not be available in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      Setting this policy to disabled will allow the usage of SPDY.

      If this policy is left not set, SPDY will be available.''',
    },
    {
      'name': 'DisabledSchemes',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:12-', 'chrome_os:12-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'deprecated': True,
      'example_value': ['file', 'https'],
      'id': 85,
      'caption': '''Disable URL protocol schemes''',
      'tags': [],
      'desc': '''This policy is deprecated, please use URLBlacklist instead.

      Disables the listed protocol schemes in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      URLs using a scheme from this list will not load and can not be navigated to.

      If this policy is left not set or the list is empty all schemes will be accessible in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.''',
      'label': '''List of disabled protocol schemes''',
    },
    {
      'name': 'Http09OnNonDefaultPortsEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:54-', 'chrome_os:54-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': False,
      'id': 345,
      'caption': '''Enable HTTP/0.9 support on non-default ports''',
      'tags': [],
      'desc': '''This policy enables HTTP/0.9 on ports other than 80 for HTTP and 443 for HTTPS.

      This policy is disabled by default, and if enabled, leaves users open to the security issue https://crbug.com/600352.

      This policy is intended to give enterprises a chance to migrate exising servers off of HTTP/0.9, and will be removed in the future.

      If this policy is not set, HTTP/0.9 will be disabled on non-default ports.''',
    },
    {
      'name': 'JavascriptEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:8-', 'chrome_os:11-', 'android:30-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'deprecated': True,
      'example_value': True,
      'id': 9,
      'caption': '''Enable JavaScript''',
      'tags': [],
      'desc': '''This policy is deprecated, please use DefaultJavaScriptSetting instead.

      Can be used to disabled JavaScript in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      If this setting is disabled, web pages cannot use JavaScript and the user cannot change that setting.

      If this setting is enabled or not set, web pages can use JavaScript but the user can change that setting.''',
    },
    {
      'name': 'IncognitoEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:11-', 'chrome_os:11-', 'android:30-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'deprecated': True,
      'example_value': False,
      'id': 10,
      'caption': '''Enable Incognito mode''',
      'tags': [],
      'desc': '''This policy is deprecated. Please, use IncognitoModeAvailability instead.
      Enables Incognito mode in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      If this setting is enabled or not configured, users can open web pages in incognito mode.

      If this setting is disabled, users cannot open web pages in incognito mode.

      If this policy is left not set, this will be enabled and the user will be able to use incognito mode.''',
    },
    {
      'name': 'IncognitoModeAvailability',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1, 2 ],
      },
      'items': [
        {
          'name': 'Enabled',
          'value': 0,
          'caption': '''Incognito mode available''',
        },
        {
          'name': 'Disabled',
          'value': 1,
          'caption': '''Incognito mode disabled''',
        },
        {
          'name': 'Forced',
          'value': 2,
          'caption': '''Incognito mode forced''',
        },
      ],
      'supported_on': [
        'chrome.*:14-',
        'chrome_os:14-',
        'android:30-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 1,
      'id': 93,
      'caption': '''Incognito mode availability''',
      'tags': ['filtering'],
      'desc': '''Specifies whether the user may open pages in Incognito mode in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      If 'Enabled' is selected or the policy is left unset, pages may be opened in Incognito mode.

      If 'Disabled' is selected, pages may not be opened in Incognito mode.

      If 'Forced' is selected, pages may be opened ONLY in Incognito mode.''',
    },
    {
      'name': 'SavingBrowserHistoryDisabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:8-', 'chrome_os:11-', 'android:30-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 11,
      'caption': '''Disable saving browser history''',
      'tags': [],
      'desc': '''Disables saving browser history in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> and prevents users from changing this setting.

      If this setting is enabled, browsing history is not saved. This setting also disables tab syncing.

      If this setting is disabled or not set, browsing history is saved.''',
    },
    {
      'name': 'AllowDeletingBrowserHistory',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:57-', 'chrome_os:57-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 187,
      'caption': '''Enable deleting browser and download history''',
      'tags': ['local-data-access', 'admin-sharing'],
      'desc': '''Enables deleting browser history and download history in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> and prevents users from changing this setting.

      Note that even with this policy disabled, the browsing and download history are not guaranteed to be retained: users may be able to edit or delete the history database files directly, and the browser itself may expire or archive any or all history items at any time.

      If this setting is enabled or not set, browsing and download history can be deleted.

      If this setting is disabled, browsing and download history cannot be deleted.''',
    },
    {
      'name': 'AllowDinosaurEasterEgg',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:48-', 'chrome.*:48-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': True,
      },
      'example_value': False,
      'id': 309,
      'default_for_enterprise_users': False,
      'caption': '''Allow Dinosaur Easter Egg Game''',
      'tags': [],
      'desc': '''Allow users to play dinosaur easter egg game when device is offline.

      If this policy is set to False, users will not be able to play the dinosaur easter egg game when device is offline. If this setting is set to True, users are allowed to play the dinosaur game. If this policy is not set, users are not allowed to play the dinosaur easter egg game on enrolled Chrome OS, but are allowed to play it under other circumstances.''',
    },
    {
      'name': 'RemoteAccessClientFirewallTraversal',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:14-16', 'chrome_os:14-16'],
      'features': {
        'dynamic_refresh': True,
      },
      # Mark this 'removed' when https://crbug.com/100216 is resolved.
      'deprecated': True,
      'example_value': False,
      'id': 94,
      'caption': '''Enable firewall traversal from remote access client''',
      'tags': [],
      'desc': '''This policy is no longer supported.
          Enables usage of STUN and relay servers when connecting to a remote client.

          If this setting is enabled, then this machine can discover and connect to remote host machines even if they are separated by a firewall.

          If this setting is disabled and outgoing UDP connections are filtered by the firewall, then this machine can only connect to host machines within the local network.''',
    },
    {
      'name': 'RemoteAccessHostClientDomain',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:22-', 'chrome_os:41-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'deprecated': True,
      'example_value': 'my-awesome-domain.com',
      'id': 316,
      'caption': '''Configure the required domain name for remote access clients''',
      'tags': [],
      'desc': '''This policy is deprecated. Please use RemoteAccessHostClientDomainList instead.''',
    },
    {
      'name': 'RemoteAccessHostClientDomainList',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:60-', 'chrome_os:60-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': ['my-awesome-domain.com', 'my-auxiliary-domain.com'],
      'id': 369,
      'caption': '''Configure the required domain names for remote access clients''',
      'tags': [],
      'desc': '''Configures the required client domain names that will be imposed on remote access clients and prevents users from changing it.

          If this setting is enabled, then only clients from one of the specified domains can connect to the host.

          If this setting is disabled or not set, then the default policy for the connection type is applied. For remote assistance, this allows clients from any domain to connect to the host; for anytime remote access, only the host owner can connect.

          This setting will override RemoteAccessHostClientDomain, if present.

          See also RemoteAccessHostDomainList.''',
    },
    {
      'name': 'RemoteAccessHostFirewallTraversal',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:14-', 'chrome_os:41-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': False,
      'id': 95,
      'caption': '''Enable firewall traversal from remote access host''',
      'tags': [],
      'desc': '''Enables usage of STUN servers when remote clients are trying to establish a connection to this machine.

          If this setting is enabled, then remote clients can discover and connect to this machines even if they are separated by a firewall.

          If this setting is disabled and outgoing UDP connections are filtered by the firewall, then this machine will only allow connections from client machines within the local network.

          If this policy is left not set the setting will be enabled.''',
    },
    {
      'name': 'RemoteAccessHostDomain',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:22-', 'chrome_os:41-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'deprecated': True,
      'example_value': 'my-awesome-domain.com',
      'id': 154,
      'caption': '''Configure the required domain name for remote access hosts''',
      'tags': [],
      'desc': '''This policy is deprecated. Please use RemoteAccessHostDomainList instead.''',
    },
    {
      'name': 'RemoteAccessHostDomainList',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': {'type': 'string' },
      },
      'supported_on': ['chrome.*:60-', 'chrome_os:60-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': ['my-awesome-domain.com', 'my-auxiliary-domain.com'],
      'id': 368,
      'caption': '''Configure the required domain names for remote access hosts''',
      'tags': [],
      'desc': '''Configures the required host domain names that will be imposed on remote access hosts and prevents users from changing it.

          If this setting is enabled, then hosts can be shared only using accounts registered on one of the specified domain names.

          If this setting is disabled or not set, then hosts can be shared using any account.

          This setting will override RemoteAccessHostDomain, if present.

          See also RemoteAccessHostClientDomainList.''',
    },
    {
      'name': 'RemoteAccessHostRequireTwoFactor',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:22-22'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      # Mark this 'removed' when https://crbug.com/100216 is resolved.
      'deprecated': True,
      'example_value': False,
      'id': 155,
      'caption': '''Enable two-factor authentication for remote access hosts''',
      'tags': [],
      'desc': '''Enables two-factor authentication for remote access hosts instead of a user-specified PIN.

          If this setting is enabled, then users must provide a valid two-factor code when accessing a host.

          If this setting is disabled or not set, then two-factor will not be enabled and the default behavior of having a user-defined PIN will be used.''',
    },
    {
      'name': 'RemoteAccessHostTalkGadgetPrefix',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:22-', 'chrome_os:41-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': 'chromoting-host',
      'id': 156,
      'caption': '''Configure the TalkGadget prefix for remote access hosts''',
      'tags': [],
      'desc': '''Configures the TalkGadget prefix that will be used by remote access hosts and prevents users from changing it.

          If specified, this prefix is prepended to the base TalkGadget name to create a full domain name for the TalkGadget. The base TalkGadget domain name is '.talkgadget.google.com'.

          If this setting is enabled, then hosts will use the custom domain name when accessing the TalkGadget instead of the default domain name.

          If this setting is disabled or not set, then the default TalkGadget domain name ('chromoting-host.talkgadget.google.com') will be used for all hosts.

          Remote access clients are not affected by this policy setting. They will always use 'chromoting-client.talkgadget.google.com' to access the TalkGadget.''',
    },
    {
      'name': 'RemoteAccessHostRequireCurtain',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:23-', 'chrome_os:41-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': False,
      'id': 157,
      'caption': '''Enable curtaining of remote access hosts''',
      'tags': ['system-security'],
      'desc': '''Enables curtaining of remote access hosts while a connection is in progress.

          If this setting is enabled, then hosts' physical input and output devices are disabled while a remote connection is in progress.

          If this setting is disabled or not set, then both local and remote users can interact with the host when it is being shared.''',
    },
    {
      'name': 'RemoteAccessHostAllowClientPairing',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:30-', 'chrome_os:41-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': False,
      'id': 234,
      'caption': '''Enable or disable PIN-less authentication for remote access hosts''',
      'tags': [],
      'desc': '''If this setting is enabled or not configured, then users can opt to pair clients and hosts at connection time, eliminating the need to enter a PIN every time.

          If this setting is disabled, then this feature will not be available.''',
    },
    {
      'name': 'RemoteAccessHostAllowGnubbyAuth',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:35-', 'chrome_os:41-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': True,
      'id': 257,
      'caption': '''Allow gnubby authentication for remote access hosts''',
      'tags': [],
      'desc': '''If this setting is enabled, then gnubby authentication requests will be proxied across a remote host connection.

          If this setting is disabled or not configured, gnubby authentication requests will not be proxied.''',
    },
    {
      'name': 'RemoteAccessHostAllowRelayedConnection',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:36-', 'chrome_os:41-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': False,
      'id': 263,
      'caption': '''Enable the use of relay servers by the remote access host''',
      'tags': [],
      'desc': '''Enables usage of relay servers when remote clients are trying to establish a connection to this machine.

          If this setting is enabled, then remote clients can use relay servers to connect to this machine when a direct connection is not available (e.g. due to firewall restrictions).

          Note that if the policy <ph name="REMOTE_ACCESS_HOST_FIREWALL_TRAVERSAL_POLICY_NAME">RemoteAccessHostFirewallTraversal</ph> is disabled, this policy will be ignored.

          If this policy is left not set the setting will be enabled.''',
    },
    {
      'name': 'RemoteAccessHostUdpPortRange',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:36-', 'chrome_os:41-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': '12400-12409',
      'id': 264,
      'caption': '''Restrict the UDP port range used by the remote access host''',
      'tags': [],
      'desc': '''Restricts the UDP port range used by the remote access host in this machine.

          If this policy is left not set, or if it is set to an empty string, the remote access host will be allowed to use any available port, unless the policy <ph name="REMOTE_ACCESS_HOST_FIREWALL_TRAVERSAL_POLICY_NAME">RemoteAccessHostFirewallTraversal</ph> is disabled, in which case the remote access host will use UDP ports in the 12400-12409 range.''',
    },
    {
      'name': 'RemoteAccessHostMatchUsername',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.linux:25-', 'chrome.mac:25-', 'chrome_os:42-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': False,
      'id': 285,
      'caption': '''Require that the name of the local user and the remote access host owner match''',
      'tags': [],
      'desc': '''If this setting is enabled, then the remote access host compares the name of the local user (that the host is associated with) and the name of the Google account registered as the host owner (i.e. "johndoe" if the host is owned by "johndoe@example.com" Google account).  The remote access host will not start if the name of the host owner is different from the name of the local user that the host is associated with.  RemoteAccessHostMatchUsername policy should be used together with RemoteAccessHostDomain to also enforce that the Google account of the host owner is associated with a specific domain (i.e. "example.com").

          If this setting is disabled or not set, then the remote access host can be associated with any local user.''',
    },
    {
      'name': 'RemoteAccessHostTokenUrl',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:28-','chrome_os:42-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': 'https://example.com/issue',
      'id': 286,
      'caption': '''URL where remote access clients should obtain their authentication token''',
      'tags': ['website-sharing'],
      'desc': '''If this policy is set, the remote access host will require authenticating clients to obtain an authentication token from this URL in order to connect. Must be used in conjunction with RemoteAccessHostTokenValidationUrl.

          This feature is currently disabled server-side.''',
    },
    {
      'name': 'RemoteAccessHostTokenValidationUrl',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:28-','chrome_os:42-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': 'https://example.com/validate',
      'id': 287,
      'caption': '''URL for validating remote access client authentication token''',
      'tags': ['website-sharing'],
      'desc': '''If this policy is set, the remote access host will use this URL to validate authentication tokens from remote access clients, in order to accept connections. Must be used in conjunction with RemoteAccessHostTokenUrl.

          This feature is currently disabled server-side.''',
    },
    {
      'name': 'RemoteAccessHostTokenValidationCertificateIssuer',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:28-','chrome_os:42-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': 'Example Certificate Authority',
      'id': 288,
      'caption': '''Client certificate for connecting to RemoteAccessHostTokenValidationUrl''',
      'tags': [],
      'desc': '''If this policy is set, the host will use a client certificate with the given issuer CN to authenticate to RemoteAccessHostTokenValidationUrl. Set it to "*" to use any available client certificate.

          This feature is currently disabled server-side.''',
    },
    {
      'name': 'RemoteAccessHostDebugOverridePolicies',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:25-47','chrome_os:42-47'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': '{ "RemoteAccessHostMatchUsername": true }',
      'id': 289,
      'caption': '''Policy overrides for Debug builds of the remote access host''',
      'tags': [],
      'desc': '''Overrides policies on Debug builds of the remote access host.

          The value is parsed as a JSON dictionary of policy name to policy value mappings.''',
    },
    {
      'name': 'RemoteAccessHostAllowUiAccessForRemoteAssistance',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.win:55-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': True,
      'id': 344,
      'caption': '''Allow remote users to interact with elevated windows in remote assistance sessions''',
      'tags': ['system-security'],
      'desc': '''If this setting is enabled, the remote assistance host will be run in a process with <ph name="UIACCESS_PERMISSION_NAME">uiAccess</ph> permissions.  This will allow remote users to interact with elevated windows on the local user's desktop.

          If this setting is disabled or not configured, the remote assistance host will run in the user's context and remote users cannot interact with elevated windows on the desktop.''',
    },
    {
      'name': 'PrintingEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:8-', 'chrome_os:11-', 'android:39-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 12,
      'caption': '''Enable printing''',
      'tags': [],
      'desc': '''Enables printing in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> and prevents users from changing this setting.

      If this setting is enabled or not configured, users can print.

      If this setting is disabled, users cannot print from <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>. Printing is disabled in the wrench menu, extensions, JavaScript applications, etc. It is still possible to print from plugins that bypass <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> while printing. For example, certain Flash applications have the print option in their context menu, which is not covered by this policy.''',
      'arc_support': 'This policy has no effect on Android apps.',
    },
    {
      'name': 'CloudPrintProxyEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:17-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 13,
      'caption': '''Enable <ph name="CLOUD_PRINT_NAME">Google Cloud Print</ph> proxy''',
      'tags': [],
      'desc': '''Enables <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> to act as a proxy between <ph name="CLOUD_PRINT_NAME">Google Cloud Print</ph> and legacy printers connected to the machine.

      If this setting is enabled or not configured, users can enable the cloud print proxy by authentication with their Google account.

      If this setting is disabled, users cannot enable the proxy, and the machine will not be allowed to share it's printers with <ph name="CLOUD_PRINT_NAME">Google Cloud Print</ph>.''',
    },
    {
      'name': 'PrintingAllowedColorModes',
      'type': 'string-enum',
      'schema': {
        'type': 'string',
        'enum': [
          'any',
          'color',
          'monochrome',
        ],
      },
      'items': [
        {
          'name': 'any',
          'value': 'any',
          'caption': '''Allow all color modes''',
        },
        {
          'name': 'color',
          'value': 'color',
          'caption': '''Color printing only''',
        },
        {
          'name': 'monochrome',
          'value': 'monochrome',
          'caption': '''Monochrome printing only''',
        },
      ],
      'supported_on': ['chrome_os:71-'],
      'features': {
        'can_be_recommended': False,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'monochrome',
      'id': 474,
      'caption': '''Restrict printing color mode''',
      'tags': [],
      'desc': '''Sets printing to color only, monochrome only or no color mode restriction. Unset policy is treated as no restriction.''',
    },
    {
      'name': 'PrintingAllowedDuplexModes',
      'type': 'string-enum',
      'schema': {
        'type': 'string',
        'enum': [
          'any',
          'simplex',
          'duplex',
        ],
      },
      'items': [
        {
          'name': 'any',
          'value': 'any',
          'caption': '''Allow all duplex modes''',
        },
        {
          'name': 'simplex',
          'value': 'simplex',
          'caption': '''Simplex printing only''',
        },
        {
          'name': 'duplex',
          'value': 'duplex',
          'caption': '''Duplex printing only''',
        },
      ],
      'supported_on': ['chrome_os:71-'],
      'features': {
        'can_be_recommended': False,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'duplex',
      'id': 475,
      'caption': '''Restrict printing duplex mode''',
      'tags': [],
      'desc': '''Restricts printing duplex mode. Unset policy and empty set are treated as no restriction.''',
    },
    {
      'name': 'PrintingAllowedPinModes',
      'type': 'string-enum',
      'schema': {
        'type': 'string',
        'enum': [
          'any',
          'secure',
          'unsecure',
        ],
      },
      'items': [
        {
          'name': 'any',
          'value': 'any',
          'caption': '''Allow printing both with and without PIN''',
        },
        {
          'name': 'secure',
          'value': 'secure',
          'caption': '''Allow printing only with PIN''',
        },
        {
          'name': 'unsecure',
          'value': 'unsecure',
          'caption': '''Allow printing only without PIN''',
        },
      ],
      'supported_on': ['chrome_os:74-'],
      'future': True,
      'features': {
        'can_be_recommended': False,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'secure',
      'id': 525,
      'caption': '''Restrict PIN printing mode''',
      'tags': [],
      'desc': '''Restricts PIN printing mode. Unset policy is treated as no restriction. If the mode is unavailable this policy is ignored.''',
    },
    {
      'name': 'PrintingAllowedPageSizes',
      'type': 'dict',
      'schema': {
        'type': 'array',
        'items': {
          'type': 'object',
          'properties': {
            'WidthUm': {
              'description': '''Width of the page in micrometers''',
              'type': 'integer',
            },
            'HeightUm': {
              'description': '''Height of the page in micrometers''',
              'type': 'integer',
            },
          },
          'required': ['WidthUm', 'HeightUm'],
        },
      },
      'supported_on': ['chrome_os:72-'],
      'future': True,
      'features': {
        'can_be_recommended': False,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': [{'WidthUm': 210000, 'HeightUm': 297000}],
      'id': 476,
      'caption': '''Restrict printing page size''',
      'tags': [],
      'desc': '''Restricts printing page size. Unset policy and empty set are treated as no restriction.''',
    },
    {
      'name': 'PrintingColorDefault',
      'type': 'string-enum',
      'schema': {
        'type': 'string',
        'enum': [
          'color',
          'monochrome',
        ],
      },
      'items': [
        {
          'name': 'color',
          'value': 'color',
          'caption': '''Enable color printing''',
        },
        {
          'name': 'monochrome',
          'value': 'monochrome',
          'caption': '''Enable monochrome printing''',
        },
      ],
      'supported_on': ['chrome_os:72-'],
      'features': {
        'can_be_recommended': False,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'monochrome',
      'id': 477,
      'caption': '''Default printing color mode''',
      'tags': [],
      'desc': '''Overrides default printing color mode. If the mode is unavailable this policy is ignored.''',
    },
    {
      'name': 'PrintingDuplexDefault',
      'type': 'string-enum',
      'schema': {
        'type': 'string',
        'enum': [
          'simplex',
          'short-edge',
          'long-edge',
        ],
      },
      'items': [
        {
          'name': 'simplex',
          'value': 'simplex',
          'caption': '''Enable simplex printing''',
        },
        {
          'name': 'short-edge',
          'value': 'short-edge',
          'caption': '''Enable short edge duplex printing''',
        },
        {
          'name': 'long-edge',
          'value': 'long-edge',
          'caption': '''Enable long edge duplex printing''',
        },
      ],
      'supported_on': ['chrome_os:72-'],
      'features': {
        'can_be_recommended': False,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'long-edge',
      'id': 478,
      'caption': '''Default printing duplex mode''',
      'tags': [],
      'desc': '''Overrides default printing duplex mode. If the mode is unavailable this policy is ignored.''',
    },
    {
      'name': 'PrintingPinDefault',
      'type': 'string-enum',
      'schema': {
        'type': 'string',
        'enum': [
          'secure',
          'unsecure',
        ],
      },
      'items': [
        {
          'name': 'secure',
          'value': 'secure',
          'caption': '''Enable PIN printing by default''',
        },
        {
          'name': 'unsecure',
          'value': 'unsecure',
          'caption': '''Disable PIN printing by default''',
        },
      ],
      'supported_on': ['chrome_os:74-'],
      'future': True,
      'features': {
        'can_be_recommended': False,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'secure',
      'id': 526,
      'caption': '''Default PIN printing mode''',
      'tags': [],
      'desc': '''Overrides default PIN printing mode. If the mode is unavailable this policy is ignored.''',
    },
    {
      'name': 'PrintingSizeDefault',
      'type': 'dict',
      'schema': {
        'type': 'object',
        'properties': {
          'WidthUm': {
            'description': '''Width of the page in micrometers''',
            'type': 'integer',
          },
          'HeightUm': {
            'description': '''Height of the page in micrometers''',
            'type': 'integer',
          },
        },
        'required': ['WidthUm', 'HeightUm'],
      },
      'supported_on': ['chrome_os:72-'],
      'future': True,
      'features': {
        'can_be_recommended': False,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': {'WidthUm': 210000, 'HeightUm': 297000},
      'id': 479,
      'caption': '''Default printing page size''',
      'tags': [],
      'desc': '''Overrides default printing page size. If the page size is unavailable this policy is ignored.''',
    },
    {
      'name': 'PrintingSendUsernameAndFilenameEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:72-'],
      'future': True,
      'features': {
        'can_be_recommended': False,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 506,
      'caption': '''Send username and filename to native printers''',
      'tags': [],
      'desc': '''Send username and filename to native printers server with every print job. The default is not to send.

      Setting this policy to true also disables printers that use protocols other than IPPS, USB, or IPP-over-USB since username and filename shouldn't be sent over the network openly.''',
    },
    {
      'name': 'ForceSafeSearch',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:25-', 'chrome_os:25-', 'android:30-'],
      'features': {
        'can_be_recommended': False,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'deprecated': True,
      'example_value': False,
      'id': 162,
      'caption': '''Force SafeSearch''',
      'tags': ['filtering'],
      'desc': '''This policy is deprecated, please use <ph name="FORCE_GOOGLE_SAFE_SEARCH_POLICY_NAME">ForceGoogleSafeSearch</ph> and <ph name="FORCE_YOUTUBE_RESTRICT_POLICY_NAME">ForceYouTubeRestrict</ph> instead. This policy is ignored if either the <ph name="FORCE_GOOGLE_SAFE_SEARCH_POLICY_NAME">ForceGoogleSafeSearch</ph>, the <ph name="FORCE_YOUTUBE_RESTRICT_POLICY_NAME">ForceYouTubeRestrict</ph> or the (deprecated) <ph name="FORCE_YOUTUBE_SAFETY_MODE_POLICY_NAME">ForceYouTubeSafetyMode</ph> policies are set.

      Forces queries in Google Web Search to be done with SafeSearch set to active and prevents users from changing this setting. This setting also forces Moderate Restricted Mode on YouTube.

      If you enable this setting, SafeSearch in Google Search and Moderate Restricted Mode YouTube is always active.

      If you disable this setting or do not set a value, SafeSearch in Google Search and Restricted Mode in YouTube is not enforced.''',
    },
    {
      'name': 'ForceGoogleSafeSearch',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:41-', 'chrome_os:41-', 'android:41-'],
      'features': {
        'can_be_recommended': False,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': False,
      'id': 282,
      'caption': '''Force Google SafeSearch''',
      'tags': ['filtering'],
      'desc': '''Forces queries in Google Web Search to be done with SafeSearch set to active and prevents users from changing this setting.

      If you enable this setting, SafeSearch in Google Search is always active.

      If you disable this setting or do not set a value, SafeSearch in Google Search is not enforced.''',
    },
    {
      'name': 'ForceYouTubeSafetyMode',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:41-', 'chrome_os:41-', 'android:41-'],
      'features': {
        'can_be_recommended': False,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'deprecated': True,
      'example_value': False,
      'id': 283,
      'caption': '''Force YouTube Safety Mode''',
      'tags': ['filtering'],
      'desc': '''This policy is deprecated. Consider using <ph name="FORCE_YOUTUBE_RESTRICT_POLICY_NAME">ForceYouTubeRestrict</ph>, which overrides this policy and allows more fine-grained tuning.

      Forces YouTube Moderate Restricted Mode and prevents users from changing this setting.

      If this setting is enabled, Restricted Mode on YouTube is always enforced to be at least Moderate.

      If this setting is disabled or no value is set, Restricted Mode on YouTube is not enforced by <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>. External policies such as YouTube policies might still enforce Restricted Mode, though.''',
      'arc_support': 'This policy has no effect on the Android YouTube app. If Safety Mode on YouTube should be enforced, installation of the Android YouTube app should be disallowed.',
    },
    {
      'name': 'ForceYouTubeRestrict',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1, 2 ],
      },
      'items': [
        {
          'name': 'Off',
          'value': 0,
          'caption': '''Do not enforce Restricted Mode on YouTube''',
        },
        {
          'name': 'Moderate',
          'value': 1,
          'caption': '''Enforce at least Moderate Restricted Mode on YouTube''',
        },
        {
          'name': 'Strict',
          'value': 2,
          'caption': '''Enforce Strict Restricted Mode for YouTube''',
        },
      ],
      'supported_on': ['chrome.*:55-', 'chrome_os:55-', 'android:55-'],
      'features': {
        'can_be_recommended': False,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 0,
      'id': 348,
      'caption': '''Force minimum YouTube Restricted Mode''',
      'tags': ['filtering'],
      'desc': '''Enforces a minimum Restricted Mode on YouTube and prevents users from
      picking a less restricted mode.

      If this setting is set to Strict, Strict Restricted Mode on YouTube is always active.

      If this setting is set to Moderate, the user may only pick Moderate Restricted Mode
      and Strict Restricted Mode on YouTube, but cannot disable Restricted Mode.

      If this setting is set to Off or no value is set, Restricted Mode on YouTube is not enforced by <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>. External policies such as YouTube policies might still enforce Restricted Mode, though.''',
      'arc_support': 'This policy has no effect on the Android YouTube app. If Safety Mode on YouTube should be enforced, installation of the Android YouTube app should be disallowed.',
    },
    {
      'name': 'SafeBrowsingEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:8-', 'chrome_os:11-', 'android:30-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 14,
      'caption': '''Enable Safe Browsing''',
      'tags': ['system-security'],
      'desc': '''Enables <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>'s Safe Browsing feature and prevents users from changing this setting.

      If you enable this setting, Safe Browsing is always active.

      If you disable this setting, Safe Browsing is never active.

      If you enable or disable this setting, users cannot change or override the "Enable phishing and malware protection" setting in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      If this policy is left not set, this will be enabled but the user will be able to change it.

      See https://developers.google.com/safe-browsing for more info on Safe Browsing.

      This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> domain. or Windows 10 Pro or Enterprise instances that enrolled for device management.''',
    },
    {
      'name': 'MetricsReportingEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:8-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': True,
      'id': 15,
      'caption': '''Enable reporting of usage and crash-related data''',
      'tags': ['google-sharing'],
      'desc': '''Enables anonymous reporting of usage and crash-related data about <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> to Google and prevents users from changing this setting.

      If this setting is enabled, anonymous reporting of usage and crash-related
      data is sent to Google.  If it is disabled, this information is not sent
      to Google.  In both cases, users cannot change or override the setting.
      If this policy is left not set, the setting will be what the user chose
      upon installation / first run.

      This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> domain. or Windows 10 Pro or Enterprise instances that enrolled for device management.
      (For Chrome OS, see DeviceMetricsReportingEnabled.)''',
    },
    {
      'name': 'PasswordManagerEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': [
        'chrome.*:8-',
        'chrome_os:11-',
        'android:30-',
      ],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 16,
      'caption': '''Enable saving passwords to the password manager''',
      'tags': [],
      'desc': '''If this setting is enabled, users can have <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> memorize passwords and provide them automatically the next time they log in to a site.

          If this settings is disabled, users cannot save new passwords but they
          may still use passwords that have been saved previously.

          If this policy is enabled or disabled, users cannot change or override it in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>. If this policy is unset, password saving is allowed (but can be turned off by the user).''',
      'arc_support': 'This policy has no effect on Android apps.',
    },
    {
      'name': 'PasswordManagerAllowShowPasswords',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:8-50', 'chrome_os:11-50'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'deprecated': True,
      'example_value': False,
      'id': 17,
      'caption': '''Allow users to show passwords in Password Manager (deprecated)''',
      'tags': [],
      'desc': '''The associated setting was used before reauthentication on viewing passwords was introduced. Since then, the setting and hence this policy had no effect on the behavior of Chrome. The current behavior of Chrome is now the same as if the policy was set to disable showing passwords in clear text in the password manager settings page. That means that the settings page contains just a placeholder, and only upon the user clicking "Show" (and reauthenticating, if applicable) Chrome shows the password. Original description of the policy follows below.

          Controls whether the user may show passwords in clear text in the password manager.

          If you disable this setting, the password manager does not allow showing stored passwords in clear text in the password manager window.

          If you enable or do not set this policy, users can view their passwords in clear text in the password manager.''',
    },
    {
      'name': 'AutoFillEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': [
        'chrome.*:8-',
        'chrome_os:11-',
        'android:30-',
      ],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'deprecated': True,
      'example_value': False,
      'id': 18,
      'caption': '''Enable AutoFill''',
      'tags': [],
      'desc': '''This policy is deprecated in M70, please use AutofillAddressEnabled and AutofillCreditCardEnabled instead.

      Enables <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>'s AutoFill feature and allows users to auto complete web forms using previously stored information such as address or credit card information.

      If you disable this setting, AutoFill will be inaccessible to users.

      If you enable this setting or do not set a value, AutoFill will remain under the control of the user. This will allow them to configure AutoFill profiles and to switch AutoFill on or off at their own discretion.''',
    },
    {
      'name': 'AutofillAddressEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': [
        'chrome.*:69-',
        'chrome_os:69-',
        'android:69-',
      ],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': False,
      'id': 459,
      'caption': '''Enable AutoFill for addresses''',
      'tags': [],
      'desc': '''Enables <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>'s AutoFill feature and allows users to auto complete address information in web forms using previously stored information.

      If this setting is disabled, Autofill will never suggest, or fill address information, nor will it save additional address information that the user might submit while browsing the web.

      If this setting is enabled or has no value, the user will be able to control Autofill for addresses in the UI.''',
    },
    {
      'name': 'AutofillCreditCardEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': [
        'chrome.*:63-',
        'chrome_os:63-',
        'android:63-',
      ],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': False,
      'id': 392,
      'caption': '''Enable AutoFill for credit cards''',
      'tags': [],
      'desc': '''Enables <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>'s AutoFill feature and allows users to auto complete credit card information in web forms using previously stored information.

      If this setting is disabled, Autofill will never suggest, or fill credit card information, nor will it save additional credit card information that the user might submit while browsing the web.

      If this setting is enabled or has no value, the user will be able to control Autofill for credit cards in the UI.''',
    },
    {
      'name': 'DisabledPlugins',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:8-', 'chrome_os:11-'],
      'deprecated': True,
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['Java', 'Shockwave Flash', 'Chrome PDF Viewer'],
      'id': 19,
      'caption': '''Specify a list of disabled plugins''',
      'tags': [],
      'desc': '''This policy is deprecated. Please use the <ph name="DEFAULT_PLUGINS_SETTING_POLICY_NAME">DefaultPluginsSetting</ph> to control the avalability of the Flash plugin and <ph name="ALWAYS_OPEN_PDF_EXTERNALLY_POLICY_NAME">AlwaysOpenPdfExternally</ph> to control whether the integrated PDF viewer should be used for opening PDF files.

      Specifies a list of plugins that are disabled in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> and prevents users from changing this setting.

      The wildcard characters '*' and '?' can be used to match sequences of arbitrary characters. '*' matches an arbitrary number of characters while '?' specifies an optional single character, i.e. matches zero or one characters. The escape character is '\\', so to match actual '*', '?', or '\\' characters, you can put a '\\' in front of them.

      If you enable this setting, the specified list of plugins is never used in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>. The plugins are marked as disabled in 'about:plugins' and users cannot enable them.

      Note that this policy can be overridden by EnabledPlugins and DisabledPluginsExceptions.

      If this policy is left not set the user can use any plugin installed on the system except for hard-coded incompatible, outdated or dangerous plugins.''',
      'label': '''List of disabled plugins''',
    },
    {
      'name': 'EnabledPlugins',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:11-', 'chrome_os:11-'],
      'deprecated': True,
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['Java', 'Shockwave Flash', 'Chrome PDF Viewer'],
      'id': 78,
      'caption': '''Specify a list of enabled plugins''',
      'tags': ['system-security'],
      'desc': '''This policy is deprecated. Please use the <ph name="DEFAULT_PLUGINS_SETTING_POLICY_NAME">DefaultPluginsSetting</ph> to control the avalability of the Flash plugin and <ph name="ALWAYS_OPEN_PDF_EXTERNALLY_POLICY_NAME">AlwaysOpenPdfExternally</ph> to control whether the integrated PDF viewer should be used for opening PDF files.

      Specifies a list of plugins that are enabled in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> and prevents users from changing this setting.

      The wildcard characters '*' and '?' can be used to match sequences of arbitrary characters. '*' matches an arbitrary number of characters while '?' specifies an optional single character, i.e. matches zero or one characters. The escape character is '\\', so to match actual '*', '?', or '\\' characters, you can put a '\\' in front of them.

      The specified list of plugins is always used in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> if they are installed. The plugins are marked as enabled in 'about:plugins' and users cannot disable them.

      Note that this policy overrides both DisabledPlugins and DisabledPluginsExceptions.

      If this policy is left not set the user can disable any plugin installed on the system.''',
      'label': '''List of enabled plugins''',
    },
    {
      'name': 'DisabledPluginsExceptions',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:11-', 'chrome_os:11-'],
      'deprecated': True,
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['Java', 'Shockwave Flash', 'Chrome PDF Viewer'],
      'id': 79,
      'caption': '''Specify a list of plugins that the user can enable or disable''',
      'tags': [],
      'desc': '''This policy is deprecated. Please use the <ph name="DEFAULT_PLUGINS_SETTING_POLICY_NAME">DefaultPluginsSetting</ph> to control the avalability of the Flash plugin and <ph name="ALWAYS_OPEN_PDF_EXTERNALLY_POLICY_NAME">AlwaysOpenPdfExternally</ph> to control whether the integrated PDF viewer should be used for opening PDF files.

      Specifies a list of plugins that user can enable or disable in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      The wildcard characters '*' and '?' can be used to match sequences of arbitrary characters. '*' matches an arbitrary number of characters while '?' specifies an optional single character, i.e. matches zero or one characters. The escape character is '\\', so to match actual '*', '?', or '\\' characters, you can put a '\\' in front of them.

      If you enable this setting, the specified list of plugins can be used in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>. Users can enable or disable them in 'about:plugins', even if the plugin also matches a pattern in DisabledPlugins. Users can also enable and disable plugins that don't match any patterns in DisabledPlugins, DisabledPluginsExceptions and EnabledPlugins.

      This policy is meant to allow for strict plugin blacklisting where the 'DisabledPlugins' list contains wildcarded entries like disable all plugins '*' or disable all Java plugins '*Java*' but the administrator wishes to enable some particular version like 'IcedTea Java 2.3'. This particular versions can be specified in this policy.

      Note that both the plugin name and the plugin's group name have to be exempted. Each plugin group is shown in a separate section in about:plugins; each section may have one or more plugins. For example, the "Shockwave Flash" plugin belongs to the "Adobe Flash Player" group, and both names have to have a match in the exceptions list if that plugin is to be exempted from the blacklist.

      If this policy is left not set any plugin that matches the patterns in the 'DisabledPlugins' will be locked disabled and the user won't be able to enable them.''',
      'label': '''List of exceptions to the list of disabled plugins''',
    },
    {
      'name': 'AlwaysOpenPdfExternally',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:55-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 347,
      'caption': '''Always Open PDF files externally''',
      'tags': [],
      'desc': '''Disables the internal PDF viewer in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>. Instead it treats it as download and allows the user to open PDF files with the default application.

      If this policy is left not set or disabled the PDF plugin will be used to open PDF files unless the user disables it.''',
    },
    {
      'name': 'DisablePluginFinder',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:11-64', 'chrome_os:11-64'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'deprecated': True,
      'example_value': True,
      'id': 66,
      'caption': '''Specify whether the plugin finder should be disabled (deprecated)''',
      'tags': [],
      'desc': '''This policy has been removed as of <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> 64.

      Automatic search and installation of missing plugins is no longer supported.''',
      'label': '''Disable plugin finder (deprecated)''',
    },
    {
      'name': 'SyncDisabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:8-', 'chrome_os:11-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 20,
      'caption': '''Disable synchronization of data with Google''',
      'tags': ['filtering', 'google-sharing'],
      'desc': '''Disables data synchronization in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> using Google-hosted synchronization services and prevents users from changing this setting.

      If you enable this setting, users cannot change or override this setting in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      If this policy is left not set Google Sync will be available for the user to choose whether to use it or not.

      To fully disable Google Sync, it is recommended that you disable the Google Sync service in the Google Admin console.

      This policy should not be enabled when <ph name="ROAMING_PROFILE_SUPPORT_ENABLED_POLICY_NAME">RoamingProfileSupportEnabled</ph> policy is set to enabled as that feature shares the same client side functionality. The Google-hosted synchronization is disabled in this case completely.''',
      'arc_support': 'Disabling Google Sync will cause Android Backup and Restore to not function properly.',
    },
    {
      'name': 'RoamingProfileSupportEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.win:57-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': True,
      'id': 358,
      'caption': '''Enable the creation of roaming copies for <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> profile data''',
      'tags': ['local-data-access'],
      'desc': '''If you enable this setting, the settings stored in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> profiles like bookmarks, autofill data, passwords, etc. will also be written to a file stored in the Roaming user profile folder or a location specified by the Administrator through the <ph name="ROAMING_PROFILE_LOCATION_POLICY_NAME">RoamingProfileLocation</ph> policy. Enabling this policy disables cloud sync.

      If this policy is disabled or left not set only the regular local profiles will be used.

      The <ph name="SYNC_DISABLED_POLICY_NAME">SyncDisabled</ph> policy disables all data synchronization, overriding <ph name="ROAMING_PROFILE_SUPPORT_ENABLED_POLICY_NAME">RoamingProfileSupportEnabled</ph>.''',
      'label': '''Enable the creation of roaming copies for <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> profile data.''',
    },
    {
      'name': 'RoamingProfileLocation',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.win:57-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': '${roaming_app_data}\\chrome-profile',
      'id': 359,
      'caption': '''Set the roaming profile directory''',
      'tags': ['local-data-access'],
      'desc': '''Configures the directory that <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will use for storing the roaming copy of the profiles.

      If you set this policy, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will use the provided directory to store the roaming copy of the profiles if the <ph name="ROAMING_PROFILE_SUPPORT_ENABLED_POLICY_NAME">RoamingProfileSupportEnabled</ph> policy has been enabled. If the <ph name="ROAMING_PROFILE_SUPPORT_ENABLED_POLICY_NAME">RoamingProfileSupportEnabled</ph> policy is disabled or left unset the value stored in this policy is not used.

      See https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables for a list of variables that can be used.

      If this policy is left not set the default roaming profile path will be used.''',
      'label': '''Set the roaming profile directory''',
    },
    {
      'name': 'SigninAllowed',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:27-', 'android:38-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'deprecated': True,
      'example_value': True,
      'id': 190,
      'caption': '''Allow sign in to <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>''',
      'tags': [],
      'desc': '''This policy is deprecated, consider using BrowserSignin instead.

      Allows the user to sign in to <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      If you set this policy, you can configure whether a user is allowed to sign in to <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>. Setting this policy to 'False' will prevent apps and extensions that use the chrome.identity API from functioning, so you may want to use SyncDisabled instead.''',
    },
    {
      'name': 'EnableDeprecatedWebBasedSignin',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:35-42'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'deprecated': True,
      'example_value': False,
      'id': 265,
      'caption': '''Enable the old web-based signin flow''',
      'tags': [],
      'desc': '''This setting was named EnableWebBasedSignin prior to Chrome 42, and support for it will be removed entirely in Chrome 43.

      This setting is useful for enterprise customers who are using SSO solutions that are not compatible with the new inline signin flow yet.
      If you enable this setting, the old web-based signin flow would be used.
      If you disable this setting or leave it not set, the new inline signin flow would be used by default. Users may still enable the old web-based signin flow through the command line flag --enable-web-based-signin.

      The experimental setting will be removed in the future when the inline signin fully supports all SSO signin flows.''',
    },
    {
      'name': 'UserDataDir',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.win:11-', 'chrome.mac:11-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': '${users}/${user_name}/Chrome',
      'id': 63,
      'caption': '''Set user data directory''',
      'tags': ['local-data-access'],
      'desc': '''Configures the directory that <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will use for storing user data.

      If you set this policy, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will use the provided directory regardless whether the user has specified the '--user-data-dir' flag or not. To avoid data loss or other unexpected errors this policy should not be set to a volume's root directory or to a directory used for other purposes, because <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> manages its contents.

      See https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables for a list of variables that can be used.

      If this policy is left not set the default profile path will be used and the user will be able to override it with the '--user-data-dir' command line flag.''',
      'label': '''Set user data directory''',
    },
    {
      'name': 'DiskCacheDir',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:13-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': '${user_home}/Chrome_cache',
      'id': 88,
      'caption': '''Set disk cache directory''',
      'tags': [],
      'desc': '''Configures the directory that <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will use for storing cached files on the disk.

      If you set this policy, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will use the provided directory regardless whether the user has specified the '--disk-cache-dir' flag or not. To avoid data loss or other unexpected errors this policy should not be set to a volume's root directory or to a directory used for other purposes, because <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> manages its contents.

      See https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables for a list of variables that can be used.

      If this policy is left not set the default cache directory will be used and the user will be able to override it with the '--disk-cache-dir' command line flag.''',
      'label': '''Set disk cache directory''',
    },
    {
      'name': 'DiskCacheSize',
      'type': 'int',
      'schema': { 'type': 'integer' },
      'supported_on': ['chrome.*:17-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': 104857600,
      'id': 110,
      'caption': '''Set disk cache size in bytes''',
      'tags': [],
      'desc': '''Configures the cache size that <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will use for storing cached files on the disk.

      If you set this policy, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will use the provided cache size regardless whether the user has specified the '--disk-cache-size' flag or not. The value specified in this policy is not a hard boundary but rather a suggestion to the caching system, any value below a few megabytes is too small and will be rounded up to a sane minimum.

      If the value of this policy is 0, the default cache size will be used but the user will not be able to change it.

      If this policy is not set the default size will be used and the user will be able to override it with the --disk-cache-size flag.''',
      'label': '''Set disk cache size''',
    },
    {
      'name': 'MediaCacheSize',
      'type': 'int',
      'schema': { 'type': 'integer' },
      'supported_on': ['chrome.*:17-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': 104857600,
      'id': 111,
      'caption': '''Set media disk cache size in bytes''',
      'tags': [],
      'desc': '''Configures the cache size that <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will use for storing cached media files on the disk.

      If you set this policy, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will use the provided cache size regardless whether the user has specified the '--media-cache-size' flag or not. The value specified in this policy is not a hard boundary but rather a suggestion to the caching system, any value below a few megabytes is too small and will be rounded up to a sane minimum.

      If the value of this policy is 0, the default cache size will be used but the user will not be able to change it.

      If this policy is not set the default size will be used and the user will be able to override it with the --media-cache-size flag.''',
      'label': '''Set media disk cache size''',
    },
    {
      'name': 'DownloadRestrictions',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1, 2, 3 ],
      },
      'items': [
        {
          'name': 'DefaultDownloadSecurity',
          'value': 0,
          'caption': '''No special restrictions''',
        },
        {
          'name': 'BlockDangerousDownloads',
          'value': 1,
          'caption': '''Block dangerous downloads''',
        },
        {
          'name': 'BlockPotentiallyDangerousDownloads',
          'value': 2,
          'caption': '''Block potentially dangerous downloads''',
        },
        {
          'name': 'BlockAllDownloads',
          'value': 3,
          'caption': '''Block all downloads''',
        },
      ],
      'supported_on': ['chrome.*:61-', 'chrome_os:61-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 2,
      'id': 371,
      'caption': '''Allow download restrictions''',
      'tags': ['local-data-access'],
      'desc': '''Configures the type of downloads that <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will completely block, without letting users override the security decision.

      If you set this policy, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will prevent certain types of downloads, and won't let user bypass the security warnings.

      When the 'Block dangerous downloads' option is chosen, all downloads are allowed, except for those that carry Safe Browsing warnings.

      When the 'Block potentially dangerous downloads' option is chosen, all downloads allowed, except for those that carry Safe Browsing warnings of potentially dangerous downloads.

      When the 'Block all downloads' option is chosen, all downloads are blocked.

      When this policy is not set, (or the 'No special restrictions' option is chosen), the downloads will go through the usual security restrictions based on Safe Browsing analysis results.

      Note that these restrictions apply to downloads triggered from web page content, as well as the 'download link...' context menu option. These restrictions do not apply to the save / download of the currently displayed page, nor does it apply to saving as PDF from the printing options.

      See https://developers.google.com/safe-browsing for more info on Safe Browsing.''',
      'label': '''Download restrictions''',
    },
    {
      'name': 'DownloadDirectory',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:11-', 'chrome_os:35-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': '/home/${user_name}/Downloads',
      'id': 64,
      'caption': '''Set download directory''',
      'tags': ['local-data-access'],
      'desc': '''Configures the directory that <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will use for downloading files.

      If you set this policy, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will use the provided directory regardless whether the user has specified one or enabled the flag to be prompted for download location every time.

      See https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables for a list of variables that can be used.

      If this policy is left not set the default download directory will be used and the user will be able to change it.''',
      'label': '''Set download directory''',
      'arc_support': 'This policy has no effect on Android apps. Android apps always use the default downloads directory and cannot access any files downloaded by <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> into a non-default downloads directory.',
    },
    {
      'name': 'SafeBrowsingForTrustedSourcesEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.win:61-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': False,
      'id': 375,
      'caption': '''Enable Safe Browsing for trusted sources''',
      'tags': ['local-data-access'],
      'desc': '''Identify if <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> can allow download without Safe Browsing checks when it's from a trusted source.

      When False, downloaded files will not be sent to be analyzed by Safe Browsing when it's from a trusted source.

      When not set (or set to True), downloaded files are sent to be analyzed by Safe Browsing, even when it's from a trusted source.

      Note that these restrictions apply to downloads triggered from web page content, as well as the 'download link...' context menu option. These restrictions do not apply to the save / download of the currently displayed page, nor does it apply to saving as PDF from the printing options.

      This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> domain. or Windows 10 Pro or Enterprise instances that enrolled for device management.''',
      'label': '''Safe Browsing enable state for trusted sources''',
    },
    {
      'name': 'ClearSiteDataOnExit',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:11-28', 'chrome_os:11-28'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'deprecated': True,
      'example_value': True,
      'id': 65,
      'caption': '''Clear site data on browser shutdown (deprecated)''',
      'tags': [],
      'desc': '''This policy has been retired as of <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> version 29.''',
      'label': '''Clear site data on browser shutdown (deprecated)''',
    },
    {
      'name': 'CaptivePortalAuthenticationIgnoresProxy',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:41-'],
      'features': {
        'can_be_recommended': False,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'default_for_enterprise_users': False,
      'id': 295,
      'caption': '''Captive portal authentication ignores proxy''',
      'tags': [],
      'desc': '''This policy allows <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> to bypass any proxy for captive portal authentication.

      This policy only takes effect if a proxy is configured (for example through policy, by the user in chrome://settings, or by extensions).

      If you enable this setting, any captive portal authentication pages (i.e. all web pages starting from captive portal signin page until <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> detects successful internet connection) will be displayed in a separate window ignoring all policy settings and restrictions for the current user.

      If you disable this setting or leave it unset, any captive portal authentication pages will be shown in a (regular) new browser tab, using the current user's proxy settings.''',
    },
    {
      'name': 'ProxyMode',
      'type': 'string-enum',
      'schema': {
        'type': 'string',
        'enum': [
          'direct',
          'auto_detect',
          'pac_script',
          'fixed_servers',
          'system'
        ],
      },
      'items': [
        {
          'name': 'ProxyDisabled',
          'value': 'direct',
          'caption': '''Never use a proxy''',
        },
        {
          'name': 'ProxyAutoDetect',
          'value': 'auto_detect',
          'caption': '''Auto detect proxy settings''',
        },
        {
          'name': 'ProxyPacScript',
          'value': 'pac_script',
          'caption': '''Use a .pac proxy script''',
        },
        {
          'name': 'ProxyFixedServers',
          'value': 'fixed_servers',
          'caption': '''Use fixed proxy servers''',
        },
        {
          'name': 'ProxyUseSystem',
          'value': 'system',
          'caption': '''Use system proxy settings''',
        },
      ],
      'supported_on': [
        'chrome.*:10-',
        'chrome_os:11-',
        'android:30-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'direct',
      'id': 21,
      'caption': '''Choose how to specify proxy server settings''',
      'tags': [],
      'desc': '''Allows you to specify the proxy server used by <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> and prevents users from changing proxy settings.

          If you choose to never use a proxy server and always connect directly, all other options are ignored.

          If you choose to use system proxy settings, all other options are ignored.

          If you choose to auto detect the proxy server, all other options are ignored.

          If you choose fixed server proxy mode, you can specify further options in 'Address or URL of proxy server' and 'Comma-separated list of proxy bypass rules'. Only the HTTP proxy server with the highest priority is available for ARC-apps.

          If you choose to use a .pac proxy script, you must specify the URL to the script in 'URL to a proxy .pac file'.

          For detailed examples, visit:
          <ph name="PROXY_HELP_URL">https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett<ex>https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett</ex></ph>.

          If you enable this setting, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> and ARC-apps ignore all proxy-related options specified from the command line.

          Leaving this policy not set will allow the users to choose the proxy settings on their own.''',
      'arc_support': '''You cannot force Android apps to use a proxy. A subset of proxy settings is made available to Android apps, which they may voluntarily choose to honor:

          If you choose to never use a proxy server, Android apps are informed that no proxy is configured.

          If you choose to use system proxy settings or a fixed server proxy, Android apps are provided with the http proxy server address and port.

          If you choose to auto detect the proxy server, the script URL "http://wpad/wpad.dat" is provided to Android apps. No other part of the proxy auto-detection protocol is used.

          If you choose to use a .pac proxy script, the script URL is provided to Android apps.''',
    },
    {
      'name': 'ProxyServerMode',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1, 2, 3 ],
        'id': 'ProxyServerMode',
      },
      'items': [
        {
          'name': 'ProxyServerDisabled',
          'value': 0,
          'caption': '''Never use a proxy''',
        },
        {
          'name': 'ProxyServerAutoDetect',
          'value': 1,
          'caption': '''Auto detect proxy settings''',
        },
        {
          'name': 'ProxyServerManual',
          'value': 2,
          'caption': '''Manually specify proxy settings''',
        },
        {
          'name': 'ProxyServerUseSystem',
          'value': 3,
          'caption': '''Use system proxy settings''',
        },
      ],
      'supported_on': [
        'chrome.*:8-',
        'chrome_os:11-',
        'android:30-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'deprecated': True,
      'example_value': 2,
      'id': 22,
      'caption': '''Choose how to specify proxy server settings''',
      'tags': [],
      'desc': '''This policy is deprecated, use ProxyMode instead.

          Allows you to specify the proxy server used by <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> and prevents users from changing proxy settings.

          If you choose to never use a proxy server and always connect directly, all other options are ignored.

          If you choose to use system proxy settings or auto detect the proxy server, all other options are ignored.

          If you choose manual proxy settings, you can specify further options in 'Address or URL of proxy server', 'URL to a proxy .pac file' and 'Comma-separated list of proxy bypass rules'. Only the HTTP proxy server with the highest priority is available for ARC-apps.

          For detailed examples, visit:
          <ph name="PROXY_HELP_URL">https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett<ex>https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett</ex></ph>.

          If you enable this setting, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> ignores all proxy-related options specified from the command line.

          Leaving this policy not set will allow the users to choose the proxy settings on their own.''',
      'arc_support': 'You cannot force Android apps to use a proxy. A subset of proxy settings is made available to Android apps, which they may voluntarily choose to honor. See the <ph name="PROXY_MODE_POLICY_NAME">ProxyMode</ph> policy for more details.',
    },
    {
      'name': 'ProxyServer',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': [
        'chrome.*:8-',
        'chrome_os:11-',
        'android:30-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': '123.123.123.123:8080',
      'id': 23,
      'caption': '''Address or URL of proxy server''',
      'tags': [],
      'desc': '''You can specify the URL of the proxy server here.

          This policy only takes effect if you have selected manual proxy settings at 'Choose how to specify proxy server settings'.

          You should leave this policy not set if you have selected any other mode for setting proxy policies.

          For more options and detailed examples, visit:
          <ph name="PROXY_HELP_URL">https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett<ex>https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett</ex></ph>.''',
      'arc_support': 'You cannot force Android apps to use a proxy. A subset of proxy settings is made available to Android apps, which they may voluntarily choose to honor. See the <ph name="PROXY_MODE_POLICY_NAME">ProxyMode</ph> policy for more details.',
    },
    {
      'name': 'ProxyPacUrl',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': [
        'chrome.*:8-',
        'chrome_os:11-',
        'android:30-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'https://internal.site/example.pac',
      'id': 24,
      'caption': '''URL to a proxy .pac file''',
      'tags': [],
      'desc': '''You can specify a URL to a proxy .pac file here.

          This policy only takes effect if you have selected manual proxy settings at 'Choose how to specify proxy server settings'.

          You should leave this policy not set if you have selected any other mode for setting proxy policies.

          For detailed examples, visit:
          <ph name="PROXY_HELP_URL">https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett<ex>https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett</ex></ph>.''',
      'arc_support': 'You cannot force Android apps to use a proxy. A subset of proxy settings is made available to Android apps, which they may voluntarily choose to honor. See the <ph name="PROXY_MODE_POLICY_NAME">ProxyMode</ph> policy for more details.',
    },
    {
      'name': 'ProxyBypassList',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': [
        'chrome.*:8-',
        'chrome_os:11-',
        'android:30-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'https://www.example1.com,https://www.example2.com,https://internalsite/',
      'id': 25,
      'caption': '''Proxy bypass rules''',
      'tags': [],
      'desc': '''<ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will bypass any proxy for the list of hosts given here.

          This policy only takes effect if you have selected manual proxy settings at 'Choose how to specify proxy server settings'.

          You should leave this policy not set if you have selected any other mode for setting proxy policies.

          For more detailed examples, visit:
          <ph name="PROXY_HELP_URL">https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett<ex>https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett</ex></ph>.''',
      'label': '''Comma-separated list of proxy bypass rules''',
      'arc_support': 'You cannot force Android apps to use a proxy. A subset of proxy settings is made available to Android apps, which they may voluntarily choose to honor. See the <ph name="PROXY_MODE_POLICY_NAME">ProxyMode</ph> policy for more details.',
    },
    {
      'name': 'ProxySettings',
      'type': 'dict',
      'schema': {
        'type': 'object',
        'properties': {
          'ProxyMode': { 'type': 'string' },
          'ProxyPacUrl': { 'type': 'string' },
          'ProxyServer': { 'type': 'string' },
          'ProxyBypassList': { 'type': 'string' },
          'ProxyServerMode': { '$ref': 'ProxyServerMode' },
        },
      },
      'supported_on': [
        'chrome.*:18-',
        'chrome_os:18-',
        'android:30-',
      ],
      'future': True,
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': { "ProxyMode": "direct", "ProxyPacUrl": "https://internal.site/example.pac", "ProxyServer": "123.123.123.123:8080", "ProxyBypassList": "https://www.example1.com,https://www.example2.com,https://internalsite/", "ProxyServerMode": 2 },
      'id': 116,
      'caption': '''Proxy settings''',
      'tags': ['system-security'],
      'desc': '''Configures the proxy settings for <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>. These proxy settings will be available for ARC-apps too.

      This policy isn't ready for usage yet, please don't use it.''',
      'arc_support': 'Only a subset of proxy configuration options are made available to Android apps. Android apps may voluntarily choose to use the proxy. You cannot force them to use a proxy.',
    },
    {
      'name': 'AuthSchemes',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:9-','android:46-','chrome_os:62-'],
      'supported_chrome_os_management': ['active_directory'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': 'basic,digest,ntlm,negotiate',
      'id': 26,
      'caption': '''Supported authentication schemes''',
      'tags': [],
      'desc': '''Specifies which HTTP authentication schemes are supported by <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

          Possible values are 'basic', 'digest', 'ntlm' and 'negotiate'. Separate multiple values with commas.

          If this policy is left not set, all four schemes will be used.''',
    },
    {
      'name': 'DisableAuthNegotiateCnameLookup',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:9-','android:46-','chrome_os:62-'],
      'supported_chrome_os_management': ['active_directory'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': False,
      'id': 27,
      'caption': '''Disable CNAME lookup when negotiating Kerberos authentication''',
      'tags': [],
      'desc': '''Specifies whether the generated Kerberos SPN is based on the canonical DNS name or the original name entered.

          If you enable this setting, CNAME lookup will be skipped and the server name will be used as entered.

          If you disable this setting or leave it not set, the canonical name of the server will be determined via CNAME lookup.''',
    },
    {
      'name': 'EnableAuthNegotiatePort',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:9-','chrome_os:62-'],
      'supported_chrome_os_management': ['active_directory'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': False,
      'id': 28,
      'caption': '''Include non-standard port in Kerberos SPN''',
      'tags': [],
      'desc': '''Specifies whether the generated Kerberos SPN should include a non-standard port.

          If you enable this setting, and a non-standard port (i.e., a port other than 80 or 443) is entered, it will be included in the generated Kerberos SPN.

          If you disable this setting or leave it not set, the generated Kerberos SPN will not include a port in any case.''',
    },
    {
      'name': 'AuthServerWhitelist',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:9-','android:46-','webview_android:49-','chrome_os:62-'],
      'supported_chrome_os_management': ['active_directory'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': '*example.com,foobar.com,*baz',
      'id': 29,
      'caption': '''Authentication server whitelist''',
      'tags': [],
      'desc': '''Specifies which servers should be whitelisted for integrated authentication. Integrated authentication is only enabled when <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> receives an authentication challenge from a proxy or from a server which is in this permitted list.

          Separate multiple server names with commas. Wildcards (*) are allowed.

          If you leave this policy not set <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will try to detect if a server is on the Intranet and only then will it respond to IWA requests.  If a server is detected as Internet then IWA requests from it will be ignored by <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.''',
    },
    {
      'name': 'AuthNegotiateDelegateWhitelist',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:9-','android:46-','chrome_os:62-'],
      'supported_chrome_os_management': ['active_directory'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': 'foobar.example.com',
      'id': 30,
      'caption': '''Kerberos delegation server whitelist''',
      'tags': [],
      'desc': '''Servers that <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> may delegate to.

          Separate multiple server names with commas. Wildcards (*) are allowed.

          If you leave this policy not set <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will not delegate user credentials even if a server is detected as Intranet.

          This policy is ignored if the 'UseKDCConstrainedDelegation' policy is true.''',
    },
    {
      'name': 'UseKDCConstrainedDelegation',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.linux:74-','chrome.mac:74-','chrome_os:74-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': True,
      'id': 528,
      'caption': '''Use KDC constrained delegation''',
      'tags': ['website-sharing'],
      'desc': '''Controls whether OK-AS-DELEGATE flag from KDC is respected or whether 'AuthNegotiateDelegateWhitelist' is used to constrain delegation of Kerberos tickets.

          If this policy is true, HTTP authentication respects constrained delegation settings on the KDC. 'AuthNegotiateDelegateWhitelist' policy is ignored in that case. Please see https://tools.ietf.org/html/rfc5896.html for more information.

          If this policy is not set or set to false, constrained delegation settings from KDC are ignored and 'AuthNegotiateDelegateWhitelist' policy is respected.''',
    },
    {
      'name': 'GSSAPILibraryName',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.linux:9-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': 'libgssapi_krb5.so.2',
      'id': 31,
      'caption': '''GSSAPI library name''',
      'tags': [],
      'desc': '''Specifies which GSSAPI library to use for HTTP authentication. You can set either just a library name, or a full path.

          If no setting is provided, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will fall back to using a default library name.''',
    },
    {
      'name': 'AuthAndroidNegotiateAccountType',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['android:46-','webview_android:49-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': 'com.example.spnego',
      'id': 305,
      'caption': '''Account type for <ph name="HTTP_NEGOTIATE">HTTP Negotiate</ph> authentication''',
      'tags': [],
      'desc': '''Specifies the account type of the accounts provided by the Android authentication app that supports <ph name="HTTP_NEGOTIATE">HTTP Negotiate</ph> authentication (e.g. Kerberos authentication). This information should be available from the supplier of the authentication app. For more details see https://goo.gl/hajyfN.

          If no setting is provided, <ph name="HTTP_NEGOTIATE">HTTP Negotiate</ph> authentication is disabled on Android.''',
    },
    {
      'name': 'AllowCrossOriginAuthPrompt',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:13-','chrome_os:62-'],
      'supported_chrome_os_management': ['active_directory'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': False,
      'id': 89,
      'caption': '''Cross-origin HTTP Basic Auth prompts''',
      'tags': ['website-sharing'],
      'desc': '''Controls whether third-party sub-content on a page is allowed to pop-up an HTTP Basic Auth dialog box.

          Typically this is disabled as a phishing defense. If this policy is not set, this is disabled and third-party sub-content will not be allowed to pop up a HTTP Basic Auth dialog box.''',
    },
    {
      'name': 'NtlmV2Enabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.linux:63-','chrome.mac:63-','chrome_os:63-','android:63-','webview_android:63-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': True,
      'id': 393,
      'caption': '''Whether NTLMv2 authentication is enabled.''',
      'tags': ['website-sharing'],
      'desc': '''Controls whether NTLMv2 is enabled.

          All recent versions of Samba and Windows servers support NTLMv2. This should only be disabled for backwards compatibility and reduces the security of authentication.

          If this policy is not set, the default is true and NTLMv2 is enabled.''',
    },
    {
      'name': 'ExtensionInstallBlacklist',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:8-', 'chrome_os:11-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['extension_id1', 'extension_id2'],
      'id': 32,
      'caption': '''Configure extension installation blacklist''',
      'tags': [],
      'desc': '''Allows you to specify which extensions the users can NOT install. Extensions already installed will be disabled if blacklisted, without a way for the user to enable them. Once an extension disabled due to the blacklist is removed from it, it will automatically get re-enabled.

          A blacklist value of '*' means all extensions are blacklisted unless they are explicitly listed in the whitelist.

          If this policy is left not set the user can install any extension in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.''',
      'label': '''Extension IDs the user should be prevented from installing (or * for all)''',
    },
    {
      'name': 'ExtensionInstallWhitelist',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:8-', 'chrome_os:11-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['extension_id1', 'extension_id2'],
      'id': 33,
      'caption': '''Configure extension installation whitelist''',
      'tags': [],
      'desc': '''Allows you to specify which extensions are not subject to the blacklist.

          A blacklist value of * means all extensions are blacklisted and users can only install extensions listed in the whitelist.

          By default, all extensions are whitelisted, but if all extensions have been blacklisted by policy, the whitelist can be used to override that policy.''',
      'label': '''Extension IDs to exempt from the blacklist''',
    },
    {
      'name': 'ExtensionInstallForcelist',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:9-', 'chrome_os:11-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['gbchcmhmhahfdphkhkmpfmihenigjmpp;https://clients2.google.com/service/update2/crx', 'abcdefghijklmnopabcdefghijklmnop'],
      'id': 34,
      'caption': '''Configure the list of force-installed apps and extensions''',
      'tags': ['full-admin-access'],
      'desc': '''Specifies a list of apps and extensions that are installed silently,
          without user interaction, and which cannot be uninstalled nor
          disabled by the user. All permissions requested by the
          apps/extensions are granted implicitly, without user interaction,
          including any additional permissions requested by future versions of
          the app/extension. Furthermore, permissions are granted for the
          enterprise.deviceAttributes and enterprise.platformKeys extension
          APIs. (These two APIs are not available to apps/extensions that are
          not force-installed.)

          This policy takes precedence over a potentially conflicting <ph name="EXTENSION_INSTALL_BLACKLIST_POLICY_NAME">ExtensionInstallBlacklist</ph> policy. If an app or extension that previously had been force-installed is removed from this list, it is automatically uninstalled by <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

          For Windows instances that are not joined to a <ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> domain, forced installation is limited to apps and extensions listed in the Chrome Web Store.

          Note that the source code of any extension may be altered by users via Developer Tools (potentially rendering the extension dysfunctional). If this is a concern, the <ph name="DEVELOPER_TOOLS_POLICY_NAME">DeveloperToolsDisabled</ph> policy should be set.

          Each list item of the policy is a string that contains an extension ID and, optionally, an "update" URL separated by a semicolon (<ph name="SEMICOLON">;</ph>). The extension ID is the 32-letter string found e.g. on <ph name="CHROME_EXTENSIONS_LINK">chrome://extensions</ph> when in developer mode. The "update" URL, if specified, should point to an Update Manifest XML document as described at <ph name="LINK_TO_EXTENSION_DOC1">https://developer.chrome.com/extensions/autoupdate</ph>. By default, the Chrome Web Store's update URL is used (which currently is "https://clients2.google.com/service/update2/crx"). Note that the "update" URL set in this policy is only used for the initial installation; subsequent updates of the extension employ the update URL indicated in the extension's manifest. Note also that specifying the "update" URL explicitly was mandatory in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> versions up to and including 67.

          For example, <ph name="EXTENSION_POLICY_EXAMPLE">gbchcmhmhahfdphkhkmpfmihenigjmpp;https://clients2.google.com/service/update2/crx</ph> installs the <ph name="EXTENSION_POLICY_EXAMPLE_EXTENSION_NAME">Chrome Remote Desktop</ph> app from the standard Chrome Web Store "update" URL. For more information about hosting extensions, see: <ph name="LINK_TO_EXTENSION_DOC2">https://developer.chrome.com/extensions/hosting</ph>.

          If this policy is left not set, no apps or extensions are installed automatically and the user can uninstall any app or extension in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

          Note that this policy doesn't apply to incognito mode.''',
      'label': '''Extension/App IDs and update URLs to be silently installed''',
      'arc_support': 'Android apps can be force-installed from the Google Admin console using Google Play. They do not use this policy.',
    },
    {
      'name': 'ExtensionInstallSources',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
        'id': 'ExtensionInstallSources',
      },
      'supported_on': ['chrome.*:21-', 'chrome_os:21-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['https://corp.mycompany.com/*'],
      'id': 148,
      'caption': '''Configure extension, app, and user script install sources''',
      'tags': ['full-admin-access', 'system-security'],
      'desc': '''Allows you to specify which URLs are allowed to install extensions, apps, and themes.

          Starting in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> 21, it is more difficult to install extensions, apps, and user scripts from outside the Chrome Web Store. Previously, users could click on a link to a *.crx file, and <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> would offer to install the file after a few warnings. After <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> 21, such files must be downloaded and dragged onto the <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> settings page. This setting allows specific URLs to have the old, easier installation flow.

          Each item in this list is an extension-style match pattern (see https://developer.chrome.com/extensions/match_patterns). Users will be able to easily install items from any URL that matches an item in this list. Both the location of the *.crx file and the page where the download is started from (i.e. the referrer) must be allowed by these patterns.

          <ph name="EXTENSION_INSTALL_BLACKLIST_POLICY_NAME">ExtensionInstallBlacklist</ph> takes precedence over this policy. That is, an extension on the blacklist won't be installed, even if it happens from a site on this list.''',
      'label': '''URL patterns to allow extension, app, and user script installs from''',
    },
    {
      'name': 'ExtensionAllowInsecureUpdates',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:73-', 'chrome_os:73-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': False,
      'id': 516,
      'caption': '''Allow insecure algorithms in integrity checks on extension updates and installs''',
      'tags': ['system-security'],
      'desc': '''<ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> provides for the secure update and installation of extensions. However, the content of some extensions hosted outside of the Chrome Web Store may only be protected by insecure signing or hashing algorithms such as SHA1. When this policy is disabled, fresh installation of and updates to such extensions will not be permitted by Chrome (until the extension developers rebuild the extension with stronger algorithms). When this policy is enabled, installation and updates for such extensions will be permitted.

          This will default to the enabled behavior when unset.
          Starting in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> 75, this will default to the disabled behavior when unset.

          Starting in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> 77, this policy will be ignored and treated as disabled.''',
    },
    {
      'name': 'ExtensionAllowedTypes',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': {
          'type': 'string',
          'enum': [
            'extension',
            'theme',
            'user_script',
            'hosted_app',
            'legacy_packaged_app',
            'platform_app'
          ],
        },
        'id': 'ExtensionAllowedTypes',
      },
      'supported_on': ['chrome.*:25-', 'chrome_os:25-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['hosted_app'],
      'id': 168,
      'caption': '''Configure allowed app/extension types''',
      'tags': [],
      'desc': '''Controls which app/extension types are allowed to be installed and limits runtime access.

          This setting white-lists the allowed types of extension/apps that can be installed in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> and which hosts they can interact with. The value is a list of strings, each of which should be one of the following: "extension", "theme", "user_script", "hosted_app", "legacy_packaged_app", "platform_app". See the <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> extensions documentation for more information on these types.

          Note that this policy also affects extensions and apps to be force-installed via ExtensionInstallForcelist.

          If this setting is configured, extensions/apps which have a type that is not on the list will not be installed.

          If this settings is left not-configured, no restrictions on the acceptable extension/app types are enforced.''',
      'label': '''Types of extensions/apps that are allowed to be installed''',
    },
    {
      'name': 'ExtensionSettings',
      'type': 'dict',
      'schema': {
        'type': 'object',
        'patternProperties': {
          '^[a-p]{32}$': {
            'type': 'object',
            'properties': {
              'installation_mode': {
                'type': 'string',
                'enum': ['blocked', 'allowed', 'force_installed', 'normal_installed']
              },
              'update_url': { 'type': 'string' },
              'blocked_permissions': {
                'type': 'array',
                'items': {
                  'type': 'string',
                  'pattern': '^[a-z][a-zA-Z.]*$',
                },
                'id': 'ListOfPermissions',
              },
              'allowed_permissions': {
                '$ref': 'ListOfPermissions',
              },
              'minimum_version_required': {
                'type': 'string',
                'pattern': '^[0-9]+([.][0-9]+)*$',
              },
              'runtime_blocked_hosts': {
                'type': 'array',
                'items': {
                  'type': 'string'
                },
                'id': 'ListOfUrlPatterns'
              },
              'runtime_allowed_hosts': {
                '$ref': 'ListOfUrlPatterns'
              },
              'blocked_install_message': {
                'type': 'string'
              }
            },
          },
          '^update_url:': {
            'type': 'object',
            'properties': {
              'installation_mode': {
                'type': 'string',
                'enum': ['blocked', 'allowed']
              },
              'blocked_permissions': {
                '$ref': 'ListOfPermissions',
              },
              'allowed_permissions': {
                '$ref': 'ListOfPermissions',
              },
            },
          },
        },
        'properties': {
          '*': {
            'type': 'object',
            'properties': {
              'installation_mode': {
                'type': 'string',
                'enum': ['blocked', 'allowed']
              },
              'blocked_permissions': {
                '$ref': 'ListOfPermissions',
              },
              'install_sources': {
                '$ref': 'ExtensionInstallSources',
              },
              'allowed_types': {
                '$ref': 'ExtensionAllowedTypes',
              },
              'runtime_blocked_hosts': {
                '$ref': 'ListOfUrlPatterns'
              },
              'runtime_allowed_hosts': {
                '$ref': 'ListOfUrlPatterns'
              },
              'blocked_install_message': {
                'type': 'string'
              }
            },
          },
        },
      },
      'supported_on': ['chrome.*:62-', 'chrome_os:62-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': {
        'abcdefghijklmnopabcdefghijklmnop' : {
          'installation_mode': 'allowed',
          'blocked_permissions': ['history'],
          'minimum_version_required': '1.0.1',
        },
        'bcdefghijklmnopabcdefghijklmnopa' : {
          'installation_mode': 'force_installed',
          'update_url': 'https://example.com/update_url',
          'allowed_permissions': ['downloads'],
          'runtime_blocked_hosts': ['*://*.example.com'],
          'runtime_allowed_hosts': ['*://good.example.com'],
        },
        'cdefghijklmnopabcdefghijklmnopab' : {
          'installation_mode': 'blocked',
          'blocked_install_message': 'Custom error message.',
        },
        'update_url:https://www.example.com/update.xml': {
          'blocked_permissions': ['wallpaper'],
          'allowed_permissions': ['downloads'],
          'installation_mode': 'allowed',
        },
        '*': {
          'installation_mode': 'blocked',
          'blocked_permissions': ['downloads', 'bookmarks'],
          'install_sources': ['https://company-intranet/chromeapps'],
          'allowed_types': ['hosted_app'],
          'runtime_blocked_hosts': ['*://*.example.com'],
          'runtime_allowed_hosts': ['*://good.example.com'],
          'blocked_install_message': 'Custom error message.',
        },
      },
      'id': 278,
      'caption': 'Extension management settings',
      'tags': [],
      'desc': '''Configures extension management settings for <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

          This policy controls multiple settings, including settings controlled by any existing extension-related policies. This policy will override any legacy policies if both are set.

          This policy maps an extension ID or an update URL to its configuration. With an extension ID, configuration will be applied to the specified extension only. A default configuration can be set for the special ID <ph name="DEFAULT_SCOPE">"*"</ph>, which will apply to all extensions that don't have a custom configuration set in this policy. With an update URL, configuration will be applied to all extensions with the exact update URL stated in manifest of this extension, as described at <ph name="LINK_TO_EXTENSION_DOC1">https://developer.chrome.com/extensions/autoupdate</ph>.

          For a full description of possible settings and structure of this policy please visit https://www.chromium.org/administrators/policy-list-3/extension-settings-full
          ''',
    },
    {
      'name': 'ShowHomeButton',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:8-', 'chrome_os:11-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 35,
      'caption': '''Show Home button on toolbar''',
      'tags': [],
      'desc': '''Shows the Home button on <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>'s toolbar.

      If you enable this setting, the Home button is always shown.

      If you disable this setting, the Home button is never shown.

      If you enable or disable this setting, users cannot change or override this setting in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      Leaving this policy not set will allow the user to choose whether to show the home button.''',
    },
    {
      'name': 'DeveloperToolsDisabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:9-', 'chrome_os:11-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'deprecated': True,
      'example_value': False,
      'id': 36,
      'caption': '''Disable Developer Tools''',
      'tags': [],
      'desc': '''This policy is deprecated in M68, please use DeveloperToolsAvailability instead.

      Disables the Developer Tools and the JavaScript console.

      If you enable this setting, the Developer Tools can not be accessed and web-site elements can not be inspected anymore. Any keyboard shortcuts and any menu or context menu entries to open the Developer Tools or the JavaScript Console will be disabled.

      Setting this option to disabled or leaving it not set allows the user to use the Developer Tools and the JavaScript console.

      If the policy DeveloperToolsAvailability is set, the value of the policy DeveloperToolsDisabled is ignored.''',
      'arc_support': 'This policy also controls access to Android Developer Options. If you set this policy to true, users cannot access Developer Options. If you set this policy to false or leave it unset, users can access Developer Options by tapping seven times on the build number in the Android settings app.',
    },
    {
      'name': 'DeveloperToolsAvailability',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [0, 1, 2],
      },
      'items': [
        {
          'name': 'DeveloperToolsDisallowedForForceInstalledExtensions',
          'value': 0,
          'caption': '''Disallow usage of the Developer Tools on extensions installed by enterprise policy, allow usage of the Developer Tools in other contexts''',
        },
        {
          'name': 'DeveloperToolsAllowed',
          'value': 1,
          'caption': '''Allow usage of the Developer Tools''',
        },
        {
          'name': 'DeveloperToolsDisallowed',
          'value': 2,
          'caption': '''Disallow usage of the Developer Tools''',
        },
      ],
      'supported_on': ['chrome.*:68-', 'chrome_os:68-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 2,
      'id': 443,
      'caption': '''Control where Developer Tools can be used''',
      'tags': [],
      'desc': '''Allows you to control where Developer Tools can be used.

      If this policy is set to 'DeveloperToolsDisallowedForForceInstalledExtensions' (value 0, which is the default value), the Developer Tools and the JavaScript console can be accessed in general, but they can not be accessed in the context of extensions installed by enterprise policy.
      If this policy is set to 'DeveloperToolsAllowed' (value 1), the Developer Tools and the JavaScript console can be accessed and used in all contexts, including the context of extensions installed by enterprise policy.
      If this policy is set to 'DeveloperToolsDisallowed' (value 2), the Developer Tools can not be accessed and web-site elements can not be inspected anymore. Any keyboard shortcuts and any menu or context menu entries to open the Developer Tools or the JavaScript Console will be disabled.''',
      'arc_support': '''This policy also controls access to Android Developer Options. If you set this policy to 'DeveloperToolsDisallowed' (value 2), users cannot access Developer Options. If you set this policy to another value or leave it unset, users can access Developer Options by tapping seven times on the build number in the Android settings app.''',
    },
    {
      'name': 'RestoreOnStartup',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 1, 4, 5 ],
      },
      'items': [
        {
          'name': 'RestoreOnStartupIsNewTabPage',
          'value': 5,
          'caption': '''Open New Tab Page''',
        },
        {
          'name': 'RestoreOnStartupIsLastSession',
          'value': 1,
          'caption': '''Restore the last session''',
        },
        {
          'name': 'RestoreOnStartupIsURLs',
          'value': 4,
          'caption': '''Open a list of URLs''',
        },
      ],
      'supported_on': ['chrome.*:8-', 'chrome_os:11-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 4,
      'id': 37,
      'caption': '''Action on startup''',
      'tags': [],
      'desc': '''Allows you to specify the behavior on startup.

          If you choose 'Open New Tab Page' the New Tab Page will always be opened when you start <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

          If you choose 'Restore the last session', the URLs that were open last time <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> was closed will be reopened and the browsing session will be restored as it was left.
          Choosing this option disables some settings that rely on sessions or that perform actions on exit (such as Clear browsing data on exit or session-only cookies).

          If you choose 'Open a list of URLs', the list of 'URLs to open on startup' will be opened when a user starts <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

          If you enable this setting, users cannot change or override it in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

          Disabling this setting is equivalent to leaving it not configured. The user will still be able to change it in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

          This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> domain. or Windows 10 Pro or Enterprise instances that enrolled for device management.''',
    },
    {
      'name': 'RestoreOnStartupURLs',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:8-', 'chrome_os:11-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['https://example.com', 'https://www.chromium.org'],
      'id': 38,
      'caption': '''URLs to open on startup''',
      'tags': [],
      'desc': '''If 'Open a list of URLs' is selected as the startup action, this allows you to specify the list of URLs that are opened. If left not set no URL will be opened on start up.

          This policy only works if the 'RestoreOnStartup' policy is set to 'RestoreOnStartupIsURLs'.

          This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> domain. or Windows 10 Pro or Enterprise instances that enrolled for device management.''',
    },
    {
      'name': 'BlockThirdPartyCookies',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:10-', 'chrome_os:11-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': False,
      'id': 39,
      'caption': '''Block third party cookies''',
      'tags': [],
      'desc': '''Enabling this setting prevents cookies from being set by web page elements that are not from the domain that is in the browser's address bar.

      Disabling this setting allows cookies to be set by web page elements that are not from the domain that is in the browser's address bar and prevents users from changing this setting.

      If this policy is left not set, third party cookies will be enabled but the user will be able to change that.''',
    },
    {
      'name': 'DefaultSearchProviderEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': [
        'chrome.*:8-',
        'chrome_os:11-',
        'android:30-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 40,
      'caption': '''Enable the default search provider''',
      'tags': [],
      'desc': '''Enables the use of a default search provider.

          If you enable this setting, a default search is performed when the user types text in the omnibox that is not a URL.

          You can specify the default search provider to be used by setting the rest of the default search policies. If these are left empty, the user can choose the default provider.

          If you disable this setting, no search is performed when the user enters non-URL text in the omnibox.

          If you enable or disable this setting, users cannot change or override this setting in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

          If this policy is left not set, the default search provider is enabled, and the user will be able to set the search provider list.

          This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> domain. or Windows 10 Pro or Enterprise instances that enrolled for device management.''',
    },
    {
      'name': 'DefaultSearchProviderName',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': [
        'chrome.*:8-',
        'chrome_os:11-',
        'android:30-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'My Intranet Search',
      'id': 41,
      'caption': '''Default search provider name''',
      'tags': ['website-sharing'],
      'desc': '''Specifies the name of the default search provider. If left empty or not set, the host name specified by the search URL will be used.

          This policy is only considered if the 'DefaultSearchProviderEnabled' policy is enabled.''',
    },
    {
      'name': 'DefaultSearchProviderKeyword',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': [
        'chrome.*:8-',
        'chrome_os:11-',
        'android:30-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'mis',
      'id': 42,
      'caption': '''Default search provider keyword''',
      'tags': [],
      'desc': '''Specifies the keyword, which is the shortcut used in the omnibox to trigger the search for this provider.

          This policy is optional. If not set, no keyword will activate the search provider.

          This policy is only considered if the 'DefaultSearchProviderEnabled' policy is enabled.''',
    },
    {
      'name': 'DefaultSearchProviderSearchURL',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': [
        'chrome.*:8-',
        'chrome_os:11-',
        'android:30-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'https://search.my.company/search?q={searchTerms}',
      'id': 43,
      'caption': '''Default search provider search URL''',
      'tags': ['website-sharing'],
      'desc': '''Specifies the URL of the search engine used when doing a default search. The URL should contain the string '<ph name="SEARCH_TERM_MARKER">{searchTerms}</ph>', which will be replaced at query time by the terms the user is searching for.

          Google's search URL can be specified as: <ph name="GOOGLE_SEARCH_URL">'{google:baseURL}search?q={searchTerms}&amp;{google:RLZ}{google:originalQueryForSuggestion}{google:assistedQueryStats}{google:searchFieldtrialParameter}{google:searchClient}{google:sourceId}ie={inputEncoding}'</ph>.

          This option must be set when the 'DefaultSearchProviderEnabled' policy is enabled and will only be respected if this is the case.''',
    },
    {
      'name': 'DefaultSearchProviderSuggestURL',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:8-', 'chrome_os:11-', 'android:30-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'https://search.my.company/suggest?q={searchTerms}',
      'id': 44,
      'caption': '''Default search provider suggest URL''',
      'tags': [],
      'desc': '''Specifies the URL of the search engine used to provide search suggestions. The URL should contain the string '<ph name="SEARCH_TERM_MARKER">{searchTerms}</ph>', which will be replaced at query time by the text the user has entered so far.

          This policy is optional. If not set, no suggest URL will be used.

          Google's suggest URL can be specified as: <ph name="GOOGLE_SUGGEST_SEARCH_URL">'{google:baseURL}complete/search?output=chrome&amp;q={searchTerms}'</ph>.

          This policy is only respected if the 'DefaultSearchProviderEnabled' policy is enabled.''',
    },
    {
      'name': 'DefaultSearchProviderInstantURL',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:10-63', 'chrome_os:11-63', 'android:30-63'],
      'deprecated': True,
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'https://search.my.company/suggest?q={searchTerms}',
      'id': 45,
      'caption': '''Default search provider instant URL''',
      'tags': [],
      'desc': '''Specifies the URL of the search engine used to provide instant results. The URL should contain the string <ph name="SEARCH_TERM_MARKER">'{searchTerms}'</ph>, which will be replaced at query time by the text the user has entered so far.

          This policy is optional. If not set, no instant search results will be provided.

          Google's instant results URL can be specified as: <ph name="GOOGLE_INSTANT_SEARCH_URL">'{google:baseURL}suggest?q={searchTerms}'</ph>.

          This policy is only respected if the 'DefaultSearchProviderEnabled' policy is enabled.''',
    },
    {
      'name': 'DefaultSearchProviderIconURL',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:8-', 'chrome_os:11-', 'android:30-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'https://search.my.company/favicon.ico',
      'id': 46,
      'caption': '''Default search provider icon''',
      'tags': [],
      'desc': '''Specifies the favorite icon URL of the default search provider.

          This policy is optional. If not set, no icon will be present for the search provider.

          This policy is only respected if the 'DefaultSearchProviderEnabled' policy is enabled.''',
    },
    {
      'name': 'DefaultSearchProviderEncodings',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:8-', 'chrome_os:11-', 'android:30-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['UTF-8', 'UTF-16', 'GB2312', 'ISO-8859-1'],
      'id': 47,
      'caption': '''Default search provider encodings''',
      'tags': [],
      'desc': '''Specifies the character encodings supported by the search provider. Encodings are code page names like UTF-8, GB2312, and ISO-8859-1. They are tried in the order provided.

          This policy is optional. If not set, the default will be used which is UTF-8.

          This policy is only respected if the 'DefaultSearchProviderEnabled' policy is enabled.''',
    },
    {
      'name': 'DefaultSearchProviderAlternateURLs',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:24-', 'chrome_os:24-', 'android:30-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['https://search.my.company/suggest#q={searchTerms}', 'https://search.my.company/suggest/search#q={searchTerms}'],
      'id': 161,
      'caption': '''List of alternate URLs for the default search provider''',
      'tags': [],
      'desc': '''Specifies a list of alternate URLs that can be used to extract search terms from the search engine. The URLs should contain the string <ph name="SEARCH_TERM_MARKER">'{searchTerms}'</ph>, which will be used to extract the search terms.

          This policy is optional. If not set, no alternate urls will be used to extract search terms.

          This policy is only respected if the 'DefaultSearchProviderEnabled' policy is enabled.''',
    },
    {
      'name': 'DefaultSearchProviderSearchTermsReplacementKey',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:25-63', 'chrome_os:25-63', 'android:30-63'],
      'deprecated': True,
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'espv',
      'id': 171,
      'caption': '''Parameter controlling search term placement for the default search provider''',
      'tags': [],
      'desc': '''If this policy is set and a search URL suggested from the omnibox contains this parameter in the query string or in the fragment identifier, then the suggestion will show the search terms and search provider instead of the raw search URL.

          This policy is optional. If not set, no search term replacement will be performed.

          This policy is only respected if the 'DefaultSearchProviderEnabled' policy is enabled.''',
    },
    {
      'name': 'DefaultSearchProviderImageURL',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:29-', 'chrome_os:29-', 'android:30-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'https://search.my.company/searchbyimage/upload',
      'id': 229,
      'caption': '''Parameter providing search-by-image feature for the default search provider''',
      'tags': [],
      'desc': '''Specifies the URL of the search engine used to provide image search. Search requests will be sent using the GET method. If the DefaultSearchProviderImageURLPostParams policy is set then image search requests will use the POST method instead.

          This policy is optional. If not set, no image search will be used.

          This policy is only respected if the 'DefaultSearchProviderEnabled' policy is enabled.''',
    },
    {
      'name': 'DefaultSearchProviderNewTabURL',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:30-', 'chrome_os:30-', 'android:30-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'https://search.my.company/newtab',
      'id': 237,
      'caption': '''Default search provider new tab page URL''',
      'tags': [],
      'desc': '''Specifies the URL that a search engine uses to provide a new tab page.

          This policy is optional. If not set, no new tab page will be provided.

          This policy is only respected if the 'DefaultSearchProviderEnabled' policy is enabled.''',
    },
    {
      'name': 'DefaultSearchProviderSearchURLPostParams',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:29-', 'chrome_os:29-', 'android:30-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'q={searchTerms},ie=utf-8,oe=utf-8',
      'id': 230,
      'caption': '''Parameters for search URL which uses POST''',
      'tags': [],
      'desc': '''Specifies the parameters used when searching a URL with POST. It consists of comma-separated name/value pairs. If a value is a template parameter, like {searchTerms} in above example, it will be replaced with real search terms data.

          This policy is optional. If not set, search request will be sent using the GET method.

          This policy is only respected if the 'DefaultSearchProviderEnabled' policy is enabled.''',
    },
    {
      'name': 'DefaultSearchProviderSuggestURLPostParams',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:29-', 'chrome_os:29-', 'android:30-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'q={searchTerms},ie=utf-8,oe=utf-8',
      'id': 231,
      'caption': '''Parameters for suggest URL which uses POST''',
      'tags': [],
      'desc': '''Specifies the parameters used when doing suggestion search with POST. It consists of comma-separated name/value pairs. If a value is a template parameter, like {searchTerms} in above example, it will be replaced with real search terms data.

          This policy is optional. If not set, suggest search request will be sent using the GET method.

          This policy is only respected if the 'DefaultSearchProviderEnabled' policy is enabled.''',
    },
    {
      'name': 'DefaultSearchProviderInstantURLPostParams',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:29-63', 'chrome_os:29-63', 'android:30-63'],
      'deprecated': True,
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'q={searchTerms},ie=utf-8,oe=utf-8',
      'id': 232,
      'caption': '''Parameters for instant URL which uses POST''',
      'tags': [],
      'desc': '''Specifies the parameters used when doing instant search with POST. It consists of comma-separated name/value pairs. If a value is a template parameter, like {searchTerms} in above example, it will be replaced with real search terms data.

          This policy is optional. If not set, instant search request will be sent using the GET method.

          This policy is only respected if the 'DefaultSearchProviderEnabled' policy is enabled.''',
    },
    {
      'name': 'DefaultSearchProviderImageURLPostParams',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:29-', 'chrome_os:29-', 'android:30-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'content={imageThumbnail},url={imageURL},sbisrc={SearchSource}',
      'id': 233,
      'caption': '''Parameters for image URL which uses POST''',
      'tags': [],
      'desc': '''Specifies the parameters used when doing image search with POST. It consists of comma-separated name/value pairs. If a value is a template parameter, like {imageThumbnail} in above example, it will be replaced with real image thumbnail data.

          This policy is optional. If not set, image search request will be sent using the GET method.

          This policy is only respected if the 'DefaultSearchProviderEnabled' policy is enabled.''',
    },
    {
      'name': 'DefaultCookiesSetting',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 1, 2, 4 ],
      },
      'items': [
        {
          'name': 'AllowCookies',
          'value': 1,
          'caption': '''Allow all sites to set local data''',
        },
        {
          'name': 'BlockCookies',
          'value': 2,
          'caption': '''Do not allow any site to set local data''',
        },
        {
          'name': 'SessionOnly',
          'value': 4,
          'caption': '''Keep cookies for the duration of the session''',
        },
      ],
      'supported_on': [
        'chrome.*:10-',
        'chrome_os:11-',
        'android:30-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 1,
      'id': 48,
      'caption': '''Default cookies setting''',
      'tags': [],
      'desc': '''Allows you to set whether websites are allowed to set local data. Setting local data can be either allowed for all websites or denied for all websites.

          If this policy is set to 'Keep cookies for the duration of the session' then cookies will be cleared when the session closes. Note that if <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> is running in 'background mode', the session may not close when the last window is closed. Please see the 'BackgroundModeEnabled' policy for more information about configuring this behavior.

          If this policy is left not set, 'AllowCookies' will be used and the user will be able to change it.''',
    },
    {
      'name': 'DefaultImagesSetting',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 1, 2 ],
      },
      'items': [
        {
          'name': 'AllowImages',
          'value': 1,
          'caption': '''Allow all sites to show all images''',
        },
        {
          'name': 'BlockImages',
          'value': 2,
          'caption': '''Do not allow any site to show images''',
        },
      ],
      'supported_on': ['chrome.*:10-', 'chrome_os:11-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 1,
      'id': 49,
      'caption': '''Default images setting''',
      'tags': [],
      'desc': '''Allows you to set whether websites are allowed to display images. Displaying images can be either allowed for all websites or denied for all websites.

          If this policy is left not set, 'AllowImages' will be used and the user will be able to change it.

          Note that previously this policy was erroneously enabled on Android, but this functionality has never been fully supported on Android.''',
    },
    {
      'name': 'DefaultJavaScriptSetting',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 1, 2 ],
      },
      'items': [
        {
          'name': 'AllowJavaScript',
          'value': 1,
          'caption': '''Allow all sites to run JavaScript''',
        },
        {
          'name': 'BlockJavaScript',
          'value': 2,
          'caption': '''Do not allow any site to run JavaScript''',
        },
      ],
      'supported_on': ['chrome.*:10-', 'chrome_os:11-', 'android:30-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 1,
      'id': 50,
      'caption': '''Default JavaScript setting''',
      'tags': [],
      'desc': '''Allows you to set whether websites are allowed to run JavaScript. Running JavaScript can be either allowed for all websites or denied for all websites.

          If this policy is left not set, 'AllowJavaScript' will be used and the user will be able to change it.''',
    },
    {
      'name': 'DefaultPluginsSetting',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 1, 2, 3 ],
      },
      'items': [
        {
          'name': 'AllowPlugins',
          'value': 1,
          'caption': '''Allow all sites to automatically run the <ph name="FLASH_PLUGIN_NAME">Flash</ph> plugin''',
        },
        {
          'name': 'BlockPlugins',
          'value': 2,
          'caption': '''Block the <ph name="FLASH_PLUGIN_NAME">Flash</ph> plugin''',
        },
        {
          'name': 'ClickToPlay',
          'value': 3,
          'caption': '''Click to play''',
        },
      ],
      'supported_on': ['chrome.*:10-', 'chrome_os:11-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 1,
      'id': 51,
      'caption': '''Default <ph name="FLASH_PLUGIN_NAME">Flash</ph> setting''',
      'tags': [],
      'desc': '''Allows you to set whether websites are allowed to automatically run the <ph name="FLASH_PLUGIN_NAME">Flash</ph> plugin. Automatically running the <ph name="FLASH_PLUGIN_NAME">Flash</ph> plugin can be either allowed for all websites or denied for all websites.

          Click to play allows the <ph name="FLASH_PLUGIN_NAME">Flash</ph> plugin to run but the user must click on the placeholder to start its execution.

          Automatic playback is only allowed for domains explictly listed in the <ph name="PLUGINS_ALLOWED_FOR_URLS_POLICY_NAME">PluginsAllowedForUrls</ph> policy. If you want to enabled automatic playback for all sites consider adding http://* and https://* to this list.

          If this policy is left not set, the user will be able to change this setting manually.''',
    },
    {
      'name': 'DefaultPopupsSetting',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 1, 2 ],
      },
      'items': [
        {
          'name': 'AllowPopups',
          'value': 1,
          'caption': '''Allow all sites to show pop-ups''',
        },
        {
          'name': 'BlockPopups',
          'value': 2,
          'caption': '''Do not allow any site to show popups''',
        },
      ],
      'supported_on': [
        'chrome.*:10-',
        'chrome_os:11-',
        'android:33-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 1,
      'id': 52,
      'caption': '''Default popups setting''',
      'tags': [],
      'desc': '''Allows you to set whether websites are allowed to show pop-ups. Showing popups can be either allowed for all websites or denied for all websites.

          If this policy is left not set, 'BlockPopups' will be used and the user will be able to change it.''',
    },
    {
      'name': 'DefaultNotificationsSetting',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 1, 2, 3 ],
      },
      'items': [
        {
          'name': 'AllowNotifications',
          'value': 1,
          'caption': '''Allow sites to show desktop notifications''',
        },
        {
          'name': 'BlockNotifications',
          'value': 2,
          'caption': '''Do not allow any site to show desktop notifications''',
        },
        {
          'name': 'AskNotifications',
          'value': 3,
          'caption': '''Ask every time a site wants to show desktop notifications''',
        },
      ],
      'supported_on': ['chrome.*:10-', 'chrome_os:11-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 2,
      'id': 53,
      'caption': '''Default notification setting''',
      'tags': [],
      'desc': '''Allows you to set whether websites are allowed to display desktop notifications. Displaying desktop notifications can be allowed by default, denied by default or the user can be asked every time a website wants to show desktop notifications.

          If this policy is left not set, 'AskNotifications' will be used and the user will be able to change it.''',
    },
    {
      'name': 'DefaultGeolocationSetting',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 1, 2, 3 ],
      },
      'items': [
        {
          'name': 'AllowGeolocation',
          'value': 1,
          'caption': '''Allow sites to track the users' physical location''',
        },
        {
          'name': 'BlockGeolocation',
          'value': 2,
          'caption': '''Do not allow any site to track the users' physical location''',
        },
        {
          'name': 'AskGeolocation',
          'value': 3,
          'caption': '''Ask whenever a site wants to track the users' physical location''',
        },
      ],
      'supported_on': ['chrome.*:10-', 'chrome_os:11-', 'android:30-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 1,
      'id': 54,
      'caption': '''Default geolocation setting''',
      'tags': ['website-sharing'],
      'desc': '''Allows you to set whether websites are allowed to track the users' physical location. Tracking the users' physical location can be allowed by default, denied by default or the user can be asked every time a website requests the physical location.

          If this policy is left not set, 'AskGeolocation' will be used and the user will be able to change it.''',
      'arc_support': 'If this policy is set to <ph name="BLOCK_GEOLOCATION_SETTING">BlockGeolocation</ph>, Android apps cannot access location information. If you set this policy to any other value or leave it unset, the user is asked to consent when an Android app wants to access location information.',
    },
    {
      'name': 'DefaultMediaStreamSetting',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 2, 3 ],
      },
      'items': [
        {
          'name': 'BlockAccess',
          'value': 2,
          'caption': '''Do not allow any site to access the camera and microphone''',
        },
        {
          'name': 'PromptOnAccess',
          'value': 3,
          'caption': '''Ask every time a site wants to access the camera and/or microphone''',
        },
      ],
      'supported_on': ['chrome.*:22-', 'chrome_os:22-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'deprecated': True,
      'example_value': 2,
      'id': 149,
      'caption': '''Default mediastream setting''',
      'tags': ['website-sharing'],
      'desc': '''Allows you to set whether websites are allowed to get access to media capture devices. Access to media capture devices can be allowed by default, or the user can be asked every time a website wants to get access to media capture devices.

          If this policy is left not set, 'PromptOnAccess' will be used and the user will be able to change it.''',
    },
    {
      'name': 'DefaultWebBluetoothGuardSetting',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 2, 3 ],
      },
      'items': [
        {
          'name': 'BlockWebBluetooth',
          'value': 2,
          'caption': '''Do not allow any site to request access to Bluetooth devices via the Web Bluetooth API''',
        },
        {
          'name': 'AskWebBluetooth',
          'value': 3,
          'caption': '''Allow sites to ask the user to grant access to a nearby Bluetooth device''',
        },
      ],
      'supported_on': ['chrome_os:50-', 'android:50-', 'chrome.*:50-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 2,
      'id': 320,
      'caption': '''Control use of the Web Bluetooth API''',
      'tags': ['website-sharing'],
      'desc': '''Allows you to set whether websites are allowed to get access to nearby Bluetooth devices. Access can be completely blocked, or the user can be asked every time a website wants to get access to nearby Bluetooth devices.

          If this policy is left not set, '3' will be used, and the user will be able to change it.''',
    },
    {
      'name': 'DefaultKeygenSetting',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 1, 2 ],
      },
      'items': [
        {
          'name': 'AllowKeygen',
          'value': 1,
          'caption': '''Allow all sites to use key generation''',
        },
        {
          'name': 'BlockKeygen',
          'value': 2,
          'caption': '''Do not allow any site to use key generation''',
        },
      ],
      'supported_on': ['chrome.*:49-56', 'chrome_os:49-56', 'android:49-56'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 2,
      'id': 313,
      'caption': '''Default key generation setting''',
      'tags': ['system-security', 'website-sharing', 'local-data-access'],
      'desc': '''Allows you to set whether websites are allowed to use key generation. Using key generation can be either allowed for all websites or denied for all websites.

          If this policy is left not set, 'BlockKeygen' will be used and the user will be able to change it.''',
    },
    {
      'name': 'DefaultWebUsbGuardSetting',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 2, 3 ],
      },
      'items': [
        {
          'name': 'BlockWebUsb',
          'value': 2,
          'caption': '''Do not allow any site to request access to USB devices via the WebUSB API''',
        },
        {
          'name': 'AskWebUsb',
          'value': 3,
          'caption': '''Allow sites to ask the user to grant access to a connected USB device''',
        },
      ],
      'supported_on': ['chrome_os:67-', 'android:67-', 'chrome.*:67-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 2,
      'id': 434,
      'caption': '''Control use of the WebUSB API''',
      'tags': ['website-sharing'],
      'desc': '''Allows you to set whether websites are allowed to get access to connected USB devices. Access can be completely blocked, or the user can be asked every time a website wants to get access to connected USB devices.

          This policy can be overridden for specific URL patterns using the 'WebUsbAskForUrls' and 'WebUsbBlockedForUrls' policies.

          If this policy is left not set, '3' will be used, and the user will be able to change it.''',
    },
    {
      'name': 'WebUsbAllowDevicesForUrls',
      'type': 'dict',
      'schema': {
        'type': 'array',
        'items': {
          'type': 'object',
          'properties': {
            'devices': {
              'type': 'array',
              'items': {
                'type': 'object',
                'properties': {
                  'vendor_id': { 'type': 'integer' },
                  'product_id': { 'type': 'integer' }
                }
              }
            },
            'urls': {
              'type': 'array',
              'items': { 'type': 'string' }
            }
          },
          'required': ['devices', 'urls']
        }
      },
      'supported_on': ['chrome_os:74-', 'chrome.*:74-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': [{
        'devices': [{'vendor_id': 1234, 'product_id': 5678}],
        'urls': ['https://google.com', 'https://requesting.com,https://embedded.com'],
      }],
      'id': 486,
      'caption': '''Automatically grant permission to these sites to connect to USB devices with the given vendor and product IDs.''',
      'tags': ['website-sharing'],
      'desc': '''Allows you to set a list of urls that specify which sites will automatically be granted permission to access a USB device with the given vendor and product IDs. Each item in the list must contain both devices and urls in order for the policy to be valid. Each item in devices can contain a vendor ID and product ID field. Any ID that is omitted is treated as a wildcard with one exception, and that exception is that a product ID cannot be specified without a vendor ID also being specified. Otherwise, the policy will not be valid and will be ignored.

        The USB permission model uses the URL of the requesting site ("requesting URL") and the URL of the top-level frame site ("embedding URL") to grant permission to the requesting URL to access the USB device. The requesting URL may be different than the embedding URL when the requesting site is loaded in an iframe. Therefore, the "urls" field can contain up to two URL strings delimited by a comma to specify the requesting and embedding URL respectively. If only one URL is specified, then access to the corresponding USB devices will be granted when the requesting site's URL matches this URL regardless of embedding status. The URLs in "urls" must be valid URLs, otherwise the policy will be ignored.

        If this policy is left not set, the global default value will be used for all sites either from the 'DefaultWebUsbGuardSetting' policy if it is set, or the user's personal configuration otherwise.

        URL patterns in this policy should not clash with the ones configured via WebUsbBlockedForUrls. If there is a clash, this policy will take precedence over WebUsbBlockedForUrls and WebUsbAskForUrls.''',
    },
    {
      'name': 'WebUsbAskForUrls',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome_os:68-', 'android:68-', 'chrome.*:68-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['https://www.example.com', '[*.]example.edu'],
      'id': 439,
      'caption': '''Allow WebUSB on these sites''',
      'tags': ['website-sharing'],
      'desc': '''Allows you to set a list of url patterns that specify sites which are allowed to ask the user to grant them access to a USB device.

          If this policy is left not set the global default value will be used for all sites either from the 'DefaultWebUsbGuardSetting' policy if it is set, or the user's personal configuration otherwise.

          URL patterns in this policy should not clash with ones configured via WebUsbBlockedForUrls. It is unspecified which of the two policies takes precedence if a URL matches with both.''',
    },
    {
      'name': 'WebUsbBlockedForUrls',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome_os:68-', 'android:68-', 'chrome.*:68-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['https://www.example.com', '[*.]example.edu'],
      'id': 440,
      'caption': '''Block WebUSB on these sites''',
      'tags': [],
      'desc': '''Allows you to set a list of url patterns that specify sites which are prevented from asking the user to grant them access to a USB device.

          If this policy is left not set the global default value will be used for all sites either from the 'DefaultWebUsbGuardSetting' policy if it is set, or the user's personal configuration otherwise.

          URL patterns in this policy should not clash with ones configured via WebUsbAskForUrls. It is unspecified which of the two policies takes precedence if a URL matches with both.''',
    },
    {
      'name': 'AutoSelectCertificateForUrls',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'validation_schema': {
        'type': 'array',
        'items': {
          'type': 'object',
          'properties': {
            'pattern': { 'type': 'string'},
            'filter': {
              'type': 'object',
              'properties': {
                'ISSUER': {
                  'type': 'object',
                  'id': 'CertPrincipalFields',
                  'properties': {
                    'CN': { 'type': 'string'},
                    'L': { 'type': 'string'},
                    'O': { 'type': 'string'},
                    'OU': { 'type': 'string'},
                  }
                },
                'SUBJECT': {
                  '$ref': 'CertPrincipalFields',
                }
              }
            }
          }
        }
      },
      'supported_on': ['chrome.*:15-', 'chrome_os:15-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['{"pattern":"https://www.example.com","filter":{"ISSUER":{"CN":"certificate issuer name", "L": "certificate issuer location", "O": "certificate issuer org", "OU": "certificate issuer org unit"}, "SUBJECT":{"CN":"certificate subject name", "L": "certificate subject location", "O": "certificate subject org", "OU": "certificate subject org unit"}}}'],
      'id': 102,
      'caption': '''Automatically select client certificates for these sites''',
      'tags': ['website-sharing'],
      'desc': '''Allows you to specify a list of url patterns that specify sites for which <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> should automatically select a client certificate, if the site requests a certificate.

          The value must be an array of stringified JSON dictionaries. Each dictionary must have the form { "pattern": "$URL_PATTERN", "filter" : $FILTER }, where $URL_PATTERN is a content setting pattern. $FILTER restricts from which client certificates the browser will automatically select. Independent of the filter, only certificates will be selected that match the server's certificate request. For example, if $FILTER has the form { "ISSUER": { "CN": "$ISSUER_CN" } }, additionally only client certificates are selected that are issued by a certificate with the CommonName $ISSUER_CN. If $FILTER contains an "ISSUER" and a "SUBJECT" section, a client certificate must satisfy both conditions to be selected. If $FILTER specifies an organization ("O"), a certificate must have at least one organization which matches the specified value to be selected. If $FILTER specifies an organization unit ("OU"), a certificate must have at least one organization unit which matches the specified value to be selected. If $FILTER is the empty dictionary {}, the selection of client certificates is not additionally restricted.

          If this policy is left not set, no auto-selection will be done for any site.''',
    },
    {
      'name': 'DeviceLoginScreenAutoSelectCertificateForUrls',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'validation_schema': {
        'type': 'array',
        'items': {
          'type': 'object',
          'properties': {
            'pattern': { 'type': 'string'},
            'filter': {
              'type': 'object',
              'properties': {
                'ISSUER': {
                  'type': 'object',
                  'properties': {
                    'CN': { 'type': 'string'},
                  }
                }
              }
            }
          }
        }
      },
      'supported_on': ['chrome_os:65-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': ['{"pattern":"https://www.example.com","filter":{"ISSUER":{"CN":"certificate issuer name"}}}'],
      'id': 396,
      'caption': '''Automatically select client certificates for these sites on the sign-in screen''',
      'tags': ['website-sharing'],
      'desc': '''Allows you to specify a list of url patterns that specify sites for which a client certificate is automatically selected on the sign-in screen in the frame hosting the SAML flow, if the site requests a certificate. An example usage is to configure a device-wide certificate to be presented to the SAML IdP.

      The value must be an array of stringified JSON dictionaries. Each dictionary must have the form { "pattern": "$URL_PATTERN", "filter" : $FILTER }, where $URL_PATTERN is a content setting pattern. $FILTER restricts from which client certificates the browser will automatically select. Independent of the filter, only certificates will be selected that match the server's certificate request. If $FILTER has the form { "ISSUER": { "CN": "$ISSUER_CN" } }, additionally only client certificates are selected that are issued by a certificate with the CommonName $ISSUER_CN. If $FILTER is the empty dictionary {}, the selection of client certificates is not additionally restricted.

      If this policy is left not set, no auto-selection will be done for any site.''',
    },
    {
      'name': 'CookiesAllowedForUrls',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': [
        'chrome.*:11-',
        'chrome_os:11-',
        'android:30-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['https://www.example.com', '[*.]example.edu'],
      'id': 77,
      'caption': '''Allow cookies on these sites''',
      'tags': [],
      'desc': '''Allows you to set a list of url patterns that specify sites which are allowed to set cookies.

          If this policy is left not set the global default value will be used for all sites either from the 'DefaultCookiesSetting' policy if it is set, or the user's personal configuration otherwise.

          See also policies 'CookiesBlockedForUrls' and 'CookiesSessionOnlyForUrls'. Note that there must be no conflicting URL patterns between these three policies - it is unspecified which policy takes precedence.''',
    },
    {
      'name': 'CookiesBlockedForUrls',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': [
        'chrome.*:11-',
        'chrome_os:11-',
        'android:30-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['https://www.example.com', '[*.]example.edu'],
      'id': 67,
      'caption': '''Block cookies on these sites''',
      'tags': [],
      'desc': '''Allows you to set a list of url patterns that specify sites which are not allowed to set cookies.

          If this policy is left not set the global default value will be used for all sites either from the 'DefaultCookiesSetting' policy if it is set, or the user's personal configuration otherwise.

          See also policies 'CookiesAllowedForUrls' and 'CookiesSessionOnlyForUrls'. Note that there must be no conflicting URL patterns between these three policies - it is unspecified which policy takes precedence.''',
    },
    {
      'name': 'CookiesSessionOnlyForUrls',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': [
        'chrome.*:11-',
        'chrome_os:11-',
        'android:30-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['https://www.example.com', '[*.]example.edu'],
      'id': 68,
      'caption': '''Limit cookies from matching URLs to the current session''',
      'tags': [],
      'desc': '''Cookies set by pages matching these URL patterns will be limited to the current session, i.e. they will be deleted when the browser exits.

          For URLs not covered by the patterns specified here, or for all URLs if this policy is not set, the global default value will be used either from the 'DefaultCookiesSetting' policy, if it is set, or the user's personal configuration otherwise.

          Note that if <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> is running in 'background mode', the session may not be closed when the last browser window is closed, but will instead stay active until the browser exits. Please see the 'BackgroundModeEnabled' policy for more information about configuring this behavior.

          See also policies 'CookiesAllowedForUrls' and 'CookiesBlockedForUrls'. Note that there must be no conflicting URL patterns between these three policies - it is unspecified which policy takes precedence.

          If the "RestoreOnStartup" policy is set to restore URLs from previous sessions this policy will not be respected and cookies will be stored permanently for those sites.''',
    },
    {
      'name': 'ImagesAllowedForUrls',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:11-', 'chrome_os:11-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['https://www.example.com', '[*.]example.edu'],
      'id': 69,
      'caption': '''Allow images on these sites''',
      'tags': [],
      'desc': '''Allows you to set a list of url patterns that specify sites which are allowed to display images.

          If this policy is left not set the global default value will be used for all sites either from the 'DefaultImagesSetting' policy if it is set, or the user's personal configuration otherwise.

          Note that previously this policy was erroneously enabled on Android, but this functionality has never been fully supported on Android.''',
    },
    {
      'name': 'ImagesBlockedForUrls',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:11-', 'chrome_os:11-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['https://www.example.com', '[*.]example.edu'],
      'id': 70,
      'caption': '''Block images on these sites''',
      'tags': [],
      'desc': '''Allows you to set a list of url patterns that specify sites which are not allowed to display images.

          If this policy is left not set the global default value will be used for all sites either from the 'DefaultImagesSetting' policy if it is set, or the user's personal configuration otherwise.

          Note that previously this policy was erroneously enabled on Android, but this functionality has never been fully supported on Android.''',
    },
    {
      'name': 'JavaScriptAllowedForUrls',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:11-', 'chrome_os:11-', 'android:30-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['https://www.example.com', '[*.]example.edu'],
      'id': 71,
      'caption': '''Allow JavaScript on these sites''',
      'tags': [],
      'desc': '''Allows you to set a list of url patterns that specify sites which are allowed to run JavaScript.

          If this policy is left not set the global default value will be used for all sites either from the 'DefaultJavaScriptSetting' policy if it is set, or the user's personal configuration otherwise.''',
    },
    {
      'name': 'JavaScriptBlockedForUrls',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:11-', 'chrome_os:11-', 'android:30-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['https://www.example.com', '[*.]example.edu'],
      'id': 72,
      'caption': '''Block JavaScript on these sites''',
      'tags': [],
      'desc': '''Allows you to set a list of url patterns that specify sites which are not allowed to run JavaScript.

          If this policy is left not set the global default value will be used for all sites either from the 'DefaultJavaScriptSetting' policy if it is set, or the user's personal configuration otherwise.''',
    },
    {
      'name': 'KeygenAllowedForUrls',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:49-56', 'chrome_os:49-56', 'android:49-56'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['https://www.example.com', '[*.]example.edu'],
      'id': 314,
      'caption': '''Allow key generation on these sites''',
      'tags': ['system-security', 'website-sharing', 'local-data-access'],
      'desc': '''Allows you to set a list of url patterns that specify sites which are allowed to use key generation. If a url pattern is in 'KeygenBlockedForUrls', that overrides these exceptions.

          If this policy is left not set the global default value will be used for all sites either from the 'DefaultKeygenSetting' policy if it is set, or the user's personal configuration otherwise.''',
    },
    {
      'name': 'KeygenBlockedForUrls',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:49-56', 'chrome_os:49-56', 'android:49-56'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['https://www.example.com', '[*.]example.edu'],
      'id': 315,
      'caption': '''Block key generation on these sites''',
      'tags': ['system-security', 'website-sharing', 'local-data-access'],
      'desc': '''Allows you to set a list of url patterns that specify sites which are not allowed to use key generation. If a url pattern is in 'KeygenAllowedForUrls', this policy overrides these exceptions.

          If this policy is left not set the global default value will be used for all sites either from the 'DefaultKeygenSetting' policy if it is set, or the user's personal configuration otherwise.''',
    },
    {
      'name': 'PluginsAllowedForUrls',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:11-', 'chrome_os:11-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['https://www.example.com', '[*.]example.edu'],
      'id': 73,
      'caption': '''Allow the <ph name="FLASH_PLUGIN_NAME">Flash</ph> plugin on these sites''',
      'tags': [],
      'desc': '''Allows you to set a list of url patterns that specify sites which are allowed to run the <ph name="FLASH_PLUGIN_NAME">Flash</ph> plugin.

          If this policy is left not set the global default value will be used for all sites either from the 'DefaultPluginsSetting' policy if it is set, or the user's personal configuration otherwise.''',
    },
    {
      'name': 'PluginsBlockedForUrls',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:11-', 'chrome_os:11-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['https://www.example.com', '[*.]example.edu'],
      'id': 74,
      'caption': '''Block the <ph name="FLASH_PLUGIN_NAME">Flash</ph> plugin on these sites''',
      'tags': [],
      'desc': '''Allows you to set a list of url patterns that specify sites which are not allowed to run the <ph name="FLASH_PLUGIN_NAME">Flash</ph> plugin.

          If this policy is left not set the global default value will be used for all sites either from the 'DefaultPluginsSetting' policy if it is set, or the user's personal configuration otherwise.''',
    },
    {
      'name': 'PopupsAllowedForUrls',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': [
        'chrome.*:11-',
        'chrome_os:11-',
        'android:34-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['https://www.example.com', '[*.]example.edu'],
      'id': 75,
      'caption': '''Allow popups on these sites''',
      'tags': [],
      'desc': '''Allows you to set a list of url patterns that specify sites which are allowed to open popups.

          If this policy is left not set the global default value will be used for all sites either from the 'DefaultPopupsSetting' policy if it is set, or the user's personal configuration otherwise.''',
    },
    {
      'name': 'RegisteredProtocolHandlers',
      'type': 'dict',
      'schema': {
        'type': 'array',
        'items': {
          'type': 'object',
          'properties': {
            'default': {
              'description': 'A boolean flag indicating if the protocol handler should be set as the default.',
              'type': 'boolean'
            },
            'protocol': {
              'description': 'The protocol for the protocol handler.',
              'type': 'string'
            },
            'url': {
              'description': 'The URL of the protocol handler.',
              'type': 'string'
            }
          },
          'required': ['protocol', 'url']
        }
      },
      'supported_on': ['chrome.*:37-', 'chrome_os:37-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': True,
        'can_be_recommended': True,
        'can_be_mandatory' : False,
      },
      'example_value': [{'protocol': 'mailto', 'url': 'https://mail.google.com/mail/?extsrc=mailto&url=%s', 'default': True}],
      'id': 268,
      'caption': '''Register protocol handlers''',
      'tags': [],
      'desc': '''Allows you to register a list of protocol handlers. This can only be a recommended policy. The property |protocol| should be set to the scheme such as 'mailto' and the property |url| should be set to the URL pattern of the application that handles the scheme. The pattern can include a '%s', which if present will be replaced by the handled URL.

          The protocol handlers registered by policy are merged with the ones registered by the user and both are available for use. The user can override the protocol handlers installed by policy by installing a new default handler, but cannot remove a protocol handler registered by policy.''',
      'arc_support': 'The protocol handlers set via this policy are not used when handling Android intents.',
    },
    {
      'name': 'PopupsBlockedForUrls',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': [
        'chrome.*:11-',
        'chrome_os:11-',
        'android:34-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['https://www.example.com', '[*.]example.edu'],
      'id': 76,
      'caption': '''Block popups on these sites''',
      'tags': [],
      'desc': '''Allows you to set a list of url patterns that specify sites which are not allowed to open popups.

          If this policy is left not set the global default value will be used for all sites either from the 'DefaultPopupsSetting' policy if it is set, or the user's personal configuration otherwise.''',
    },
    {
      'name': 'NotificationsAllowedForUrls',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:16-', 'chrome_os:16-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['https://www.example.com', '[*.]example.edu'],
      'id': 105,
      'caption': '''Allow notifications on these sites''',
      'tags': [],
      'desc': '''Allows you to set a list of url patterns that specify sites which are allowed to display notifications.

          If this policy is left not set the global default value will be used for all sites either from the 'DefaultNotificationsSetting' policy if it is set, or the user's personal configuration otherwise.''',
    },
    {
      'name': 'NotificationsBlockedForUrls',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:16-', 'chrome_os:16-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['https://www.example.com', '[*.]example.edu'],
      'id': 106,
      'caption': '''Block notifications on these sites''',
      'tags': [],
      'desc': '''Allows you to set a list of url patterns that specify sites which are not allowed to display notifications.

          If this policy is left not set the global default value will be used for all sites either from the 'DefaultNotificationsSetting' policy if it is set, or the user's personal configuration otherwise.''',
    },
    {
      'name': 'NativeMessagingBlacklist',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:34-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': [
        'com.native.messaging.host.name1',
        'com.native.messaging.host.name2',
      ],
      'id': 251,
      'caption': '''Configure native messaging blacklist''',
      'tags': [],
      'desc': '''Allows you to specify which native messaging hosts that should not be loaded.

          A blacklist value of '*' means all native messaging hosts are blacklisted unless they are explicitly listed in the whitelist.

          If this policy is left not set <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will load all installed native messaging hosts.''',
      'label': '''Names of the forbidden native messaging hosts (or * for all)''',
    },
    {
      'name': 'NativeMessagingWhitelist',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:34-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': [
        'com.native.messaging.host.name1',
        'com.native.messaging.host.name2',
      ],
      'id': 252,
      'caption': '''Configure native messaging whitelist''',
      'tags': [],
      'desc': '''Allows you to specify which native messaging hosts are not subject to the blacklist.

          A blacklist value of * means all native messaging hosts are blacklisted and only native messaging hosts listed in the whitelist will be loaded.

          By default, all native messaging hosts are whitelisted, but if all native messaging hosts have been blacklisted by policy, the whitelist can be used to override that policy.''',
      'label': '''Names of the native messaging hosts to exempt from the blacklist''',
    },
    {
      'name': 'NativeMessagingUserLevelHosts',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:34-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': False,
      'id': 253,
      'caption': '''Allow user-level Native Messaging hosts (installed without admin permissions)''',
      'tags': [],
      'desc': '''Enables user-level installation of Native Messaging hosts.

          If this setting is enabled then <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> allows usage of Native Messaging hosts installed on user level.

          If this setting is disabled then <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will only use Native Messaging hosts installed on system level.

          If this setting is left not set <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will allow usage of user-level Native Messaging hosts.''',
    },
    {
      'name': 'Disable3DAPIs',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:9-', 'chrome_os:11-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': False,
      'id': 55,
      'caption': '''Disable support for 3D graphics APIs''',
      'tags': [],
      'desc': '''Enabling this setting prevents web pages from accessing the graphics processing unit (GPU). Specifically, web pages can not access the WebGL API and plugins can not use the Pepper 3D API.

      Disabling this setting or leaving it not set potentially allows web pages to use the WebGL API and plugins to use the Pepper 3D API. The default settings of the browser may still require command line arguments to be passed in order to use these APIs.

      If HardwareAccelerationModeEnabled is set to false, Disable3DAPIs is ignored and it is equivalent to Disable3DAPIs being set to true.''',
    },
    {
      'name': 'PolicyRefreshRate',
      'type': 'int',
      'schema': { 'type': 'integer' },
      'supported_on': ['chrome_os:11-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 3600000,
      'id': 56,
      'caption': '''Refresh rate for user policy''',
      'tags': [],
      'desc': '''Specifies the period in milliseconds at which the device management service is queried for user policy information.

      Setting this policy overrides the default value of 3 hours. Valid values for this policy are in the range from 1800000 (30 minutes) to 86400000 (1 day). Any values not in this range will be clamped to the respective boundary. If the platform supports policy notifications, the refresh delay will be set to 24 hours because it is expected that policy notifications will force a refresh automatically whenever policy changes.

      Leaving this policy not set will make <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> use the default value of 3 hours.

      Note that if the platform supports policy notifications, the refresh delay will be set to 24 hours (ignoring all defaults and the value of this policy) because it is expected that policy notifications will force a refresh automatically whenever policy changes, making more frequent refreshes unnecessary.''',
    },
    {
      'name': 'MaxInvalidationFetchDelay',
      'type': 'int',
      'schema': { 'type': 'integer' },
      'supported_on': ['chrome.*:30-', 'chrome_os:30-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 10000,
      'id': 228,
      'caption': '''Maximum fetch delay after a policy invalidation''',
      'tags': [],
      'desc': '''Specifies the maximum delay in milliseconds between receiving a policy invalidation and fetching the new policy from the device management service.

      Setting this policy overrides the default value of 5000 milliseconds. Valid values for this policy are in the range from 1000 (1 second) to 300000 (5 minutes). Any values not in this range will be clamped to the respective boundary.

      Leaving this policy not set will make <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> use the default value of 5000 milliseconds.''',
    },
    {
      'name': 'ChromeFrameRendererSettings',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1 ],
      },
      'items': [
        {
          'name': 'RenderInHost',
          'value': 0,
          'caption': '''Use the host browser by default''',
        },
        {
          'name': 'RenderInChromeFrame',
          'value': 1,
          'caption': '''Use <ph name="PRODUCT_FRAME_NAME">$3<ex>Google Chrome Frame</ex></ph> by default''',
        },
      ],
      'supported_on': ['chrome_frame:8-32'],
      'features': {
        'dynamic_refresh': False,
      },
      'example_value': 1,
      'id': 57,
      'caption': '''Default HTML renderer for <ph name="PRODUCT_FRAME_NAME">$3<ex>Google Chrome Frame</ex></ph>''',
      'tags': [],
      'desc': '''Allows you to configure the default HTML renderer when <ph name="PRODUCT_FRAME_NAME">$3<ex>Google Chrome Frame</ex></ph> is installed.
          The default setting used when this policy is left not set is to allow the host browser do the rendering, but you can optionally override this and have <ph name="PRODUCT_FRAME_NAME">$3<ex>Google Chrome Frame</ex></ph> render HTML pages by default.''',
    },
    {
      'name': 'RenderInChromeFrameList',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome_frame:8-32'],
      'features': {
        'dynamic_refresh': False,
      },
      'example_value': ['https://www.example.com', 'https://www.example.edu'],
      'id': 58,
      'caption': '''Always render the following URL patterns in <ph name="PRODUCT_FRAME_NAME">$3<ex>Google Chrome Frame</ex></ph>''',
      'tags': [],
      'desc': '''Customize the list of URL patterns that should always be rendered by <ph name="PRODUCT_FRAME_NAME">$3<ex>Google Chrome Frame</ex></ph>.

          If this policy is not set the default renderer will be used for all sites as specified by the 'ChromeFrameRendererSettings' policy.

          For example patterns see https://www.chromium.org/developers/how-tos/chrome-frame-getting-started.''',
    },
    {
      'name': 'RenderInHostList',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome_frame:8-32'],
      'features': {
        'dynamic_refresh': False,
      },
      'example_value': ['https://www.example.com', 'https://www.example.edu'],
      'id': 59,
      'caption': '''Always render the following URL patterns in the host browser''',
      'tags': [],
      'desc': '''Customize the list of URL patterns that should always be rendered by the host browser.

          If this policy is not set the default renderer will be used for all sites as specified by the 'ChromeFrameRendererSettings' policy.

          For example patterns see https://www.chromium.org/developers/how-tos/chrome-frame-getting-started.''',
    },
    {
      'name': 'AdditionalLaunchParameters',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome_frame:19-32'],
      'features': {
        'dynamic_refresh': False,
      },
      'example_value': '--enable-media-stream --enable-media-source',
      'id': 141,
      'caption': '''Additional command line parameters for <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>''',
      'tags': [],
      'desc': '''Allows you to specify additional parameters that are used when <ph name="PRODUCT_FRAME_NAME">$3<ex>Google Chrome Frame</ex></ph> launches <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

          If this policy is not set the default command line will be used.''',
    },
    {
      'name': 'SkipMetadataCheck',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_frame:31-32'],
      'features': {
        'dynamic_refresh': False,
      },
      'example_value': False,
      'id': 238,
      'caption': '''Skip the meta tag check in <ph name="PRODUCT_FRAME_NAME">$3<ex>Google Chrome Frame</ex></ph>''',
      'tags': [],
      'desc': '''Normally pages with X-UA-Compatible set to chrome=1 will be rendered in <ph name="PRODUCT_FRAME_NAME">$3<ex>Google Chrome Frame</ex></ph> regardless of the 'ChromeFrameRendererSettings' policy.

          If you enable this setting, pages will not be scanned for meta tags.

          If you disable this setting, pages will be scanned for meta tags.

          If this policy is not set, pages will be scanned for meta tags.'''
    },
    {
      'name': 'ChromeFrameContentTypes',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome_frame:8-32'],
      'features': {
        'dynamic_refresh': False,
      },
      'example_value': ['text/xml', 'application/xml'],
      'id': 60,
      'caption': '''Allow <ph name="PRODUCT_FRAME_NAME">$3<ex>Google Chrome Frame</ex></ph> to handle the listed content types''',
      'tags': [],
      'desc': '''If this policy is set, the specified content types are handled by <ph name="PRODUCT_FRAME_NAME">$3<ex>Google Chrome Frame</ex></ph>.

          If this policy is not set, the default renderer is used for all sites. (The <ph name="CHROME_FRAME_RENDERER_SETTINGS_POLICY_NAME">ChromeFrameRendererSettings</ph> policy may be used to configure the default renderer.)''',
    },
    {
      'name': 'ChromeOsLockOnIdleSuspend',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:9-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 61,
      'caption': '''Enable lock when the device become idle or suspended''',
      'tags': [],
      'desc': '''Enable lock when <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> devices become idle or suspended.

      If you enable this setting, users will be asked for a password to unlock the device from sleep.

      If you disable this setting, users will not be asked for a password to unlock the device from sleep.

      If you enable or disable this setting, users cannot change or override it.

      If the policy is left not set the user can choose whether they want to be asked for password to unlock the device or not.''',
    },
    {
      'name': 'ChromeOsMultiProfileUserBehavior',
      'type': 'string-enum',
      'schema': {
        'type': 'string',
        'enum': [
          'unrestricted',
          'primary-only',
          'not-allowed',
        ],
      },
      'items': [
        {
          'name': 'MultiProfileUserBehaviorUnrestricted',
          'value': 'unrestricted',
          'caption': '''Allow enterprise user to be both primary and secondary  (Default behavior for non-managed users)''',
        },
        {
          'name': 'MultiProfileUserBehaviorMustBePrimary',
          'value': 'primary-only',
          'caption': '''Allow enterprise user to be primary multiprofile user only (Default behavior for enterprise-managed users)''',
        },
        {
          'name': 'MultiProfileUserBehaviorNotAllowed',
          'value': 'not-allowed',
          'caption': '''Do not allow enterprise user to be part of multiprofile (primary or secondary)''',
        },
      ],
      'supported_on': ['chrome_os:31-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'unrestricted',
      'default_for_enterprise_users': 'primary-only',
      'id': 244,
      'caption': '''Control the user behavior in a multiprofile session''',
      'tags': [],
      'desc': '''Control the user behavior in a multiprofile session on <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> devices.

      If this policy is set to 'MultiProfileUserBehaviorUnrestricted', the user can be either primary or secondary user in a multiprofile session.

      If this policy is set to 'MultiProfileUserBehaviorMustBePrimary', the user can only be the primary user in a multiprofile session.

      If this policy is set to 'MultiProfileUserBehaviorNotAllowed', the user cannot be part of a multiprofile session.

      If you set this setting, users cannot change or override it.

      If the setting is changed while the user is signed into a multiprofile session, all users in the session will be checked against their corresponding settings. The session will be closed if any one of the users is no longer allowed to be in the session.

      If the policy is left not set, the default value 'MultiProfileUserBehaviorMustBePrimary' applies for enterprise-managed users and 'MultiProfileUserBehaviorUnrestricted' will be used for non-managed users.''',
      'arc_support': 'When multiple users are logged in, only the primary user can use Android apps.',
    },
    {
      'name': 'SecondaryGoogleAccountSigninAllowed',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:65-'],
      'features': {
        # The case where a user is already signed into an unmanaged account from the content area cannot be handled right now and hence this is not dynamic.
        'dynamic_refresh': False,
        'per_profile': True,
      },
      'example_value': False,
      'id': 406,
      'caption': '''Allow Multiple Sign-in Within the Browser''',
      'tags': [],
      'desc': '''This setting allows users to switch between Google accounts within the content area of their browser window after they sign into their <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> device.

      If this policy is set to false, signing in to a different account from non-Incognito browser content area will not be allowed.

      If this policy is unset or set to true, the default behavior will be used: signing in to a different account from the browser content area will be allowed, except for child accounts where it will be blocked for non-Incognito content area.

      In case signing in to a different account shouldn't be allowed via the Incognito mode, consider blocking that mode using the IncognitoModeAvailability policy.

      Note that users will be able to access Google services in an unauthenticated state by blocking their cookies.''',
    },
    {
      'name': 'InstantEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:11-28', 'chrome_os:11-28'],
      'deprecated': True,
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 62,
      'caption': '''Enable Instant''',
      'tags': [],
      'desc': '''Enables <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>'s Instant feature and prevents users from changing this setting.

      If you enable this setting, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> Instant is enabled.

      If you disable this setting, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> Instant is disabled.

      If you enable or disable this setting, users cannot change or override this setting.

      If this setting is left not set the user can decide to use this function or not.

      This setting has been removed from <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> 29 and higher versions.''',
    },
    {
      'name': 'TranslateEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': [
        'chrome.*:12-',
        'chrome_os:12-',
        'android:30-',
      ],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 80,
      'caption': '''Enable Translate''',
      'tags': [],
      'desc': '''Enables the integrated Google Translate service on <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      If you enable this setting, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will offer translation functionality to the user by showing an integrated translate toolbar (when appropriate) and a translate option on the right-click context menu.

      If you disable this setting, all built-in translate features will be disabled.

      If you enable or disable this setting, users cannot change or override this setting in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      If this setting is left not set the user can decide to use this function or not.''',
    },
    {
      'name': 'AllowOutdatedPlugins',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:12-', 'chrome_os:12-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 81,
      'caption': '''Allow running plugins that are outdated''',
      'tags': ['system-security'],
      'desc': '''If you enable this setting, outdated plugins are used as normal plugins.

      If you disable this setting, outdated plugins will not be used and users will not be asked for permission to run them.

      If this setting is not set, users will be asked for permission to run outdated plugins.''',
    },
    {
      'name': 'AlwaysAuthorizePlugins',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:13-64', 'chrome_os:13-64'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'deprecated': True,
      'example_value': True,
      'id': 86,
      'caption': '''Always runs plugins that require authorization (deprecated)''',
      'tags': ['system-security'],
      'desc': '''If you enable this setting, plugins that are not outdated always run.

      If this setting is disabled or not set, users will be asked for permission to run plugins that require authorization. These are plugins that can compromise security.''',
    },
    {
      'name': 'RunAllFlashInAllowMode',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:63-', 'chrome_os:63-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 391,
      'caption': '''Extend Flash content setting to all content''',
      'tags': ['system-security'],
      'desc': '''If you enable this setting, all Flash content embedded on websites that have been set to allow Flash in content settings -- either by the user or by enterprise policy -- will be run, including content from other origins or small content.

      To control which websites are allowed to run Flash, see the "DefaultPluginsSetting", "PluginsAllowedForUrls", and "PluginsBlockedForUrls" policies.

      If this setting is disabled or not set, Flash content from other origins or small content might be blocked.''',
    },
    {
      'name': 'BookmarkBarEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:12-', 'chrome_os:12-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 82,
      'caption': '''Enable Bookmark Bar''',
      'tags': [],
      'desc': '''If you enable this setting, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will show a bookmark bar.

      If you disable this setting, users will never see the bookmark bar.

      If you enable or disable this setting, users cannot change or override it in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      If this setting is left not set the user can decide to use this function or not.''',
    },
    {
      'name': 'EditBookmarksEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:12-', 'chrome_os:12-', 'android:30-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': False,
      'id': 83,
      'caption': '''Enable or disable bookmark editing''',
      'tags': [],
      'desc': '''If you enable this setting, bookmarks can be added, removed or modified. This is the default also when this policy is not set.

      If you disable this setting, bookmarks can not be added, removed or modified. Existing bookmarks are still available.''',
    },
    {
      'name': 'ShowAppsShortcutInBookmarkBar',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:37-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': False,
      'id': 267,
      'caption': '''Show the apps shortcut in the bookmark bar''',
      'tags': [],
      'desc': '''Enables or disables the apps shortcut in the bookmark bar.

      If this policy is not set then the user can choose to show or hide the apps shortcut from the bookmark bar context menu.

      If this policy is configured then the user can't change it, and the apps shortcut is always shown or never shown.''',
    },
    {
      'name': 'AllowFileSelectionDialogs',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:12-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': True,
      'id': 84,
      'caption': '''Allow invocation of file selection dialogs''',
      'tags': [],
      'desc': '''Allows access to local files on the machine by allowing <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> to display file selection dialogs.

      If you enable this setting, users can open file selection dialogs as normal.

      If you disable this setting, whenever the user performs an action which would provoke a file selection dialog (like importing bookmarks, uploading files, saving links, etc.) a message is displayed instead and the user is assumed to have clicked Cancel on the file selection dialog.

      If this setting is not set, users can open file selection dialogs as normal.''',
    },
    {
      'name': 'SecurityKeyPermitAttestation',
      'tags': ['website-sharing'],
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:65-', 'chrome_os:65-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['https://example.com'],
      'id': 402,
      'caption': '''URLs/domains automatically permitted direct Security Key attestation''',
      'desc': '''Specifies URLs and domains for which no prompt will be shown when attestation certificates from Security Keys are requested. Additionally, a signal will be sent to the Security Key indicating that individual attestation may be used. Without this, users will be prompted in Chrome 65+ when sites request attestation of Security Keys.

      URLs (like https://example.com/some/path) will only match as U2F appIDs. Domains (like example.com) only match as webauthn RP IDs. Thus, to cover both U2F and webauthn APIs for a given site, both the appID URL and domain would need to be listed.''',
    },
    {
      'name': 'GCFUserDataDir',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome_frame:12-32'],
      'features': {
        'dynamic_refresh': False,
      },
      'example_value': '${user_home}/Chrome Frame',
      'id': 87,
      'caption': '''Set <ph name="PRODUCT_FRAME_NAME">$3<ex>Google Chrome Frame</ex></ph> user data directory''',
      'tags': [],
      'desc': '''Configures the directory that <ph name="PRODUCT_FRAME_NAME">$3<ex>Google Chrome Frame</ex></ph> will use for storing user data.

      If you set this policy, <ph name="PRODUCT_FRAME_NAME">$3<ex>Google Chrome Frame</ex></ph> will use the provided directory.

      See https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables for a list of variables that can be used.

      If this setting is left not set the default profile directory will be used.''',
      'label': '''Set user data directory''',
    },
    {
      'name': 'DevicePolicyRefreshRate',
      'type': 'int',
      'schema': { 'type': 'integer' },
      'supported_on': ['chrome_os:11-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': 3600000,
      'id': 90,
      'caption': '''Refresh rate for Device Policy''',
      'tags': [],
      'desc': '''Specifies the period in milliseconds at which the device management service is queried for device policy information.

      Setting this policy overrides the default value of 3 hours. Valid values for this policy are in the range from 1800000 (30 minutes) to 86400000 (1 day). Any values not in this range will be clamped to the respective boundary.

      Leaving this policy not set will make <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> use the default value of 3 hours.

      Note that if the platform supports policy notifications, the refresh delay will be set to 24 hours (ignoring all defaults and the value of this policy) because it is expected that policy notifications will force a refresh automatically whenever policy changes, making more frequent refreshes unnecessary.''',
    },
    {
      'name': 'ImportBookmarks',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:15-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 97,
      'caption': '''Import bookmarks from default browser on first run''',
      'tags': ['local-data-access'],
      'desc': '''This policy forces bookmarks to be imported from the current default browser if enabled. If enabled, this policy also affects the import dialog.

      If disabled, no bookmarks are imported.

      If it is not set, the user may be asked whether to import, or importing may happen automatically.''',
      'label': '''Import bookmarks from default browser on first run''',
    },
    {
      'name': 'ImportHistory',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:15-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 98,
      'caption': '''Import browsing history from default browser on first run''',
      'tags': ['local-data-access'],
      'desc': '''This policy forces the browsing history to be imported from the current default browser if enabled. If enabled, this policy also affects the import dialog.

      If disabled, no browsing history is imported.

      If it is not set, the user may be asked whether to import, or importing may happen automatically.''',
      'label': '''Import browsing history from default browser on first run''',
    },
    {
      'name': 'ImportHomepage',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:15-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 99,
      'caption': '''Import of homepage from default browser on first run''',
      'tags': ['local-data-access'],
      'desc': '''This policy forces the home page to be imported from the current default browser if enabled.

      If disabled, the home page is not imported.

      If it is not set, the user may be asked whether to import, or importing may happen automatically.''',
      'label': '''Import of homepage from default browser on first run''',
    },
    {
      'name': 'ImportSearchEngine',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:15-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 100,
      'caption': '''Import search engines from default browser on first run''',
      'tags': ['local-data-access'],
      'desc': '''This policy forces search engines to be imported from the current default browser if enabled. If enabled, this policy also affects the import dialog.

      If disabled, the default search engine is not imported.

      If it is not set, the user may be asked whether to import, or importing may happen automatically.''',
      'label': '''Import search engines from default browser on first run''',
    },
    {
      'name': 'ImportSavedPasswords',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:15-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 101,
      'caption': '''Import saved passwords from default browser on first run''',
      'tags': ['local-data-access'],
      'desc': '''This policy forces the saved passwords to be imported from the previous default browser if enabled. If enabled, this policy also affects the import dialog.

      If disabled, the saved passwords are not imported.

      If it is not set, the user may be asked whether to import, or importing may happen automatically.''',
      'label': '''Import saved passwords from default browser on first run''',
    },
    {
      'name': 'ImportAutofillFormData',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:39-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 277,
      'caption': '''Import autofill form data from default browser on first run''',
      'tags': ['local-data-access'],
      'desc': '''This policy forces the autofill form data to be imported from the previous default browser if enabled. If enabled, this policy also affects the import dialog.

      If disabled, the autofill form data is not imported.

      If it is not set, the user may be asked whether to import, or importing may happen automatically.''',
      'label': '''Import autofill form data from default browser on first run''',
    },
    {
      'name': 'MaxConnectionsPerProxy',
      'type': 'int',
      'schema': { 'type': 'integer' },
      'supported_on': ['chrome.*:14-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': 32,
      'id': 92,
      'caption': '''Maximal number of concurrent connections to the proxy server''',
      'tags': [],
      'desc': '''Specifies the maximal number of simultaneous connections to the proxy server.

      Some proxy servers can not handle high number of concurrent connections per client and this can be solved by setting this policy to a lower value.

      The value of this policy should be lower than 100 and higher than 6 and the default value is 32.

      Some web apps are known to consume many connections with hanging GETs, so lowering below 32 may lead to browser networking hangs if too many such web apps are open. Lower below the default at your own risk.

      If this policy is left not set the default value will be used which is 32.''',
    },
    {
      'name': 'HideWebStorePromo',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:15-21', 'chrome_os:15-21'],
      'deprecated': True,
      'features': {
        'dynamic_refresh': False,
      },
      'example_value': False,
      'id': 96,
      'caption': '''Prevent app promotions from appearing on the new tab page''',
      'tags': [],
      'desc': '''When set to True, promotions for Chrome Web Store apps will not appear on the new tab page.

      Setting this option to False or leaving it not set will make the promotions for Chrome Web Store apps appear on the new tab page''',
    },
    {
      'name': 'URLBlacklist',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': [
        'chrome.*:15-',
        'chrome_os:15-',
        'android:30-',
        'webview_android:47-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['example.com', 'https://ssl.server.com', 'hosting.com/bad_path', 'https://server:8080/path', '.exact.hostname.com', 'file://*', 'custom_scheme:*', '*'],
      'id': 103,
      'caption': '''Block access to a list of URLs''',
      'tags': ['filtering'],
      'desc': '''This policy prevents the user from loading web pages from blacklisted URLs. The blacklist provides a list of URL patterns that specify which URLs will be blacklisted.

      A URL pattern has to be formatted according to https://www.chromium.org/administrators/url-blacklist-filter-format.

      Exceptions can be defined in the URL whitelist policy. These policies are limited to 1000 entries; subsequent entries will be ignored.

      Note that it is not recommended to block internal 'chrome://*' URLs since this may lead to unexpected errors.

      From M73 you can block 'javascript://*' URLs. However, it affects only JavaScript typed in address bar (or, for example, bookmarklets). Note that in-page JavaScript URLs, as long as dynamically loaded data, are not subject to this policy. For example, if you block 'example.com/abc', page 'example.com' will still be able to load 'example.com/abc' via XMLHTTPRequest.

      If this policy is not set no URL will be blacklisted in the browser.''',
      'arc_support': 'Android apps may voluntarily choose to honor this list. You cannot force them to honor it.',
    },
    {
      'name': 'URLWhitelist',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': [
        'chrome.*:15-',
        'chrome_os:15-',
        'android:30-',
        'webview_android:47-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['example.com', 'https://ssl.server.com', 'hosting.com/good_path', 'https://server:8080/path', '.exact.hostname.com'],
      'id': 104,
      'caption': '''Allow access to a list of URLs''',
      'tags': [],
      'desc': '''Allows access to the listed URLs, as exceptions to the URL blacklist.

      See the description of the URL blacklist policy for the format of entries of this list.

      This policy can be used to open exceptions to restrictive blacklists. For example, '*' can be blacklisted to block all requests, and this policy can be used to allow access to a limited list of URLs. It can be used to open exceptions to certain schemes, subdomains of other domains, ports, or specific paths.

      The most specific filter will determine if a URL is blocked or allowed. The whitelist takes precedence over the blacklist.

      This policy is limited to 1000 entries; subsequent entries will be ignored.

      If this policy is not set there will be no exceptions to the blacklist from the 'URLBlacklist' policy.''',
      'arc_support': 'Android apps may voluntarily choose to honor this list. You cannot force them to honor it.',
    },
    {
      'name': 'OpenNetworkConfiguration',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome_os:16-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': '{ "NetworkConfigurations": [ { "GUID": "{4b224dfd-6849-7a63-5e394343244ae9c9}", "Name": "my WiFi", "Type": "WiFi", "WiFi": { "SSID": "my WiFi", "HiddenSSID": false, "Security": "None", "AutoConnect": true } } ] }',
      'id': 107,
      'caption': '''User-level network configuration''',
      'tags': ['full-admin-access'],
      'desc': '''Allows pushing network configuration to be applied per-user to a <ph name="PRODUCT_OS_NAME">$2<ex>Chromium OS</ex></ph> device. The network configuration is a JSON-formatted string as defined by the Open Network Configuration format described at <ph name="ONC_SPEC_URL">https://sites.google.com/a/chromium.org/dev/chromium-os/chromiumos-design-docs/open-network-configuration</ph>''',
      'arc_support': 'Android apps can use the network configurations and CA certificates set via this policy, but do not have access to some configuration options.',
    },
    {
      'name': 'DeviceOpenNetworkConfiguration',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome_os:16-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': '{ "NetworkConfigurations": [ { "GUID": "{4b224dfd-6849-7a63-5e394343244ae9c9}", "Name": "my WiFi", "Type": "WiFi", "WiFi": { "SSID": "my WiFi", "HiddenSSID": false, "Security": "None", "AutoConnect": true } } ] }',
      'id': 108,
      'caption': '''Device-level network configuration''',
      'tags': ['full-admin-access'],
      'desc': '''Allows pushing network configuration to be applied for all users of a <ph name="PRODUCT_OS_NAME">$2<ex>Chromium OS</ex></ph> device. The network configuration is a JSON-formatted string as defined by the Open Network Configuration format described at <ph name="ONC_SPEC_URL">https://sites.google.com/a/chromium.org/dev/chromium-os/chromiumos-design-docs/open-network-configuration</ph>''',
      'arc_support': 'Android apps can use the network configurations and CA certificates set via this policy, but do not have access to some configuration options.',
    },
    {
      'name': 'DeviceKerberosEncryptionTypes',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1, 2 ],
      },
      'items': [
        {
          'name': 'All',
          'value': 0,
          'caption': '''All (insecure)''',
        },
        {
          'name': 'Strong',
          'value': 1,
          'caption': '''Strong''',
        },
        {
          'name': 'Legacy',
          'value': 2,
          'caption': '''Legacy (insecure)''',
        },
      ],
      'supported_on': ['chrome_os:66-'],
      'supported_chrome_os_management': ['active_directory'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': 1,
      'id': 415,
      'caption': '''Allowed Kerberos encryption types''',
      'tags': ['system-security'],
      'desc': '''Sets encryption types that are allowed when requesting Kerberos tickets from an <ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> server.

      If the policy is set to 'All', both the AES encryption types 'aes256-cts-hmac-sha1-96' and 'aes128-cts-hmac-sha1-96' as well as the RC4 encryption type 'rc4-hmac' are allowed. AES encryption takes preference if the server supports both types. Note that RC4 is insecure and the server should be reconfigured if possible to support AES encryption.

      If the policy is set to 'Strong' or if it is unset, only the AES encryption types are allowed.

      If the policy is set to 'Legacy', only the RC4 encryption type is allowed. This option is insecure and should only be needed in very specific circumstances.

      See also https://wiki.samba.org/index.php/Samba_4.6_Features_added/changed#Kerberos_client_encryption_types.''',
    },
    {
      'name': 'DeviceUserPolicyLoopbackProcessingMode',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1, 2 ],
      },
      'items': [
        {
          'name': 'Default',
          'value': 0,
          'caption': '''Default''',
        },
        {
          'name': 'Merge',
          'value': 1,
          'caption': '''Merge''',
        },
        {
          'name': 'Replace',
          'value': 2,
          'caption': '''Replace''',
        },
      ],
      'supported_on': ['chrome_os:66-'],
      'supported_chrome_os_management': ['active_directory'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': 0,
      'id': 416,
      'caption': '''User policy loopback processing mode''',
      'tags': [],
      'desc': '''Specifies whether and how user policy from computer GPO is processed.

      If the policy is set to 'Default' or if it is unset, user policy is read only from user GPOs (computer GPOs are ignored).

      If the policy is set to 'Merge', user policy in user GPOs is merged with user policy in computer GPOs (computer GPOs take preference).

      If the policy is set to 'Replace', user policy in user GPOs is replaced by user policy in computer GPOs (user GPOs are ignored).''',
    },
    {
      'name': 'DeviceMachinePasswordChangeRate',
      'type': 'int',
      'schema': { 'type': 'integer', 'minimum': 0, 'maximum': 9999 },
      'supported_on': ['chrome_os:66-'],
      'supported_chrome_os_management': ['active_directory'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': 0,
      'id': 425,
      'caption': '''Machine password change rate''',
      'tags': ['system-security'],
      'desc': '''Specifies the rate (in days) at which a client changes their machine account password. The password is randomly generated by the client and not visible to the user.

      Just like user passwords, machine passwords should be changed regularly. Disabling this policy or setting a high number of days can have a negative impact on security since it gives potential attackers more time to find the machine account password and use it.

      If the policy is unset, the machine account password is changed every 30 days.

      If the policy is set to 0, machine account password change is disabled.

      Note that passwords might get older than the specified number of days if the client has been offline for a longer period of time.''',
    },
    {
      'name': 'DeviceGpoCacheLifetime',
      'type': 'int',
      'schema': { 'type': 'integer', 'minimum': 0, 'maximum': 9999 },
      'supported_on': ['chrome_os:73-'],
      'supported_chrome_os_management': ['active_directory'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': 0,
      'id': 508,
      'caption': '''GPO cache lifetime''',
      'tags': [],
      'desc': '''Specifies the lifetime (in hours) of the Group Policy Object (GPO) cache. Instead of re-downloading GPOs on every policy fetch, the system may reuse cached GPOs as long as their version does not change. This policy specifies the maximum duration for which cached GPOs may be reused before they are re-downloaded. Rebooting and logging out clears the cache.

      If the policy is unset, cached GPOs may be reused for up to 25 hours.

      If the policy is set to 0, GPO caching is turned off. Note that this increases server load since GPOs are re-downloaded on every policy fetch, even if they did not change.''',
    },
    {
      'name': 'DeviceAuthDataCacheLifetime',
      'type': 'int',
      'schema': { 'type': 'integer', 'minimum': 0, 'maximum': 9999 },
      'supported_on': ['chrome_os:73-'],
      'supported_chrome_os_management': ['active_directory'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': 0,
      'id': 509,
      'caption': '''Authentication data cache lifetime''',
      'tags': ['admin-sharing'],
      'desc': '''Specifies the lifetime (in hours) of the authentication data cache. The cache is used to speed up sign-in. It contains general data (workgroup name etc.) about affiliated realms, i.e. realms trusted by the machine realm. No user-specific data and no data for unaffiliated realms is cached. Rebooting the device clears the cache.

      If the policy is unset, cached authentication data may be reused for up to 73 hours.

      If the policy is set to 0, authentication data caching is turned off. This can significantly slow down sign-in of affiliated users since realm-specific data has to be fetched on every sign-in.

      Note that realm data is cached even for ephemeral users. The cache should be turned off if tracing the realm of ephemeral users should be prevented.''',
    },
    {
      'name': 'CloudPrintSubmitEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:17-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 109,
      'caption': '''Enable submission of documents to <ph name="CLOUD_PRINT_NAME">Google Cloud Print</ph>''',
      'tags': [],
      'desc': '''Enables <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> to submit documents to <ph name="CLOUD_PRINT_NAME">Google Cloud Print</ph> for printing.  NOTE: This only affects <ph name="CLOUD_PRINT_NAME">Google Cloud Print</ph> support in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.  It does not prevent users from submitting print jobs on web sites.

      If this setting is enabled or not configured, users can print to <ph name="CLOUD_PRINT_NAME">Google Cloud Print</ph> from the <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> print dialog.

      If this setting is disabled, users cannot print to <ph name="CLOUD_PRINT_NAME">Google Cloud Print</ph> from the <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> print dialog''',
    },
    {
      'name': 'EnterpriseWebStoreURL',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:17-28', 'chrome_os:17-28'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'deprecated': True,
      'example_value': 'https://company-intranet/chromeapps',
      'id': 112,
      'caption': '''Enterprise web store URL (deprecated)''',
      'tags': [],
      'desc': '''This setting has been retired as of <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> version 29. The recommended way to set up organization-hosted extension/app collections is to include the site hosting the CRX packages in ExtensionInstallSources and put direct download links to the packages on a web page. A launcher for that web page can be created using the ExtensionInstallForcelist policy.''',
    },
    {
      'name': 'EnterpriseWebStoreName',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:17-28', 'chrome_os:17-28'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'deprecated': True,
      'example_value': 'WidgCo Chrome Apps',
      'id': 113,
      'caption': '''Enterprise web store name (deprecated)''',
      'tags': [],
      'desc': '''This setting has been retired as of <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> version 29. The recommended way to set up organization-hosted extension/app collections is to include the site hosting the CRX packages in ExtensionInstallSources and put direct download links to the packages on a web page. A launcher for that web page can be created using the ExtensionInstallForcelist policy.''',
    },
    {
      'name': 'EnableOriginBoundCerts',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:17-35'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'deprecated': True,
      'future': True,
      'example_value': True,
      'id': 114,
      'caption': '''Enable TLS domain-bound certificates extension (deprecated)''',
      'tags': [],
      'desc': '''This policy has been retired as of <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> version 36.

      Specifies whether the TLS domain-bound certificates extension should be enabled.

      This setting is used to enable the TLS domain-bound certificates extension for testing.  This experimental setting will be removed in the future.''',
    },
    {
      'name': 'EnableMemoryInfo',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:17-34', 'chrome_os:18-34'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'deprecated': True,
      'future': True,
      'example_value': False,
      'id': 115,
      'caption': '''Enable reporting memory info (JS heap size) to page (deprecated)''',
      'tags': [],
      'desc': '''This policy has been retired as of <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> version 35.

      Memory info is anyway reported to page, regardless of the option value, but the sizes reported are
      quantized and the rate of updates is limited for security reasons. To obtain real-time precise data,
      please use tools like Telemetry.''',
    },
    {
      'name': 'DisablePrintPreview',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:18-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': True,
      },
      'example_value': False,
      'id': 117,
      'caption': '''Disable Print Preview''',
      'tags': [],
      'desc': '''Show the system print dialog instead of print preview.

      When this setting is enabled, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will open the system print dialog instead of the built-in print preview when a user requests a page to be printed.

      If this policy is not set or is set to false, print commands trigger the print preview screen.''',
    },
    {
      'name': 'PrintHeaderFooter',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:70-', 'chrome.*:70-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': False,
      'id': 480,
      'caption': '''Print Headers and Footers''',
      'tags': [],
      'desc': '''Force 'headers and footers' to be on or off in the printing dialog.

      If the policy is unset, the user can decide whether to print headers and footers.

      If the policy is set to false, 'Headers and footers' is not selected in the print preview dialog, and the user cannot change it.

      If the policy is set to true, 'Headers and footers' is selected in the print preview dialog, and the user cannot change it.''',
    },
    {
      'name': 'DefaultPrinterSelection',
      'type': 'string',
      'schema': { 'type': 'string' },
      'validation_schema': {
        'type': 'object',
        'properties': {
          'kind': {
            'description': 'Whether to limit the search of the matching printer to a specific set of printers.',
            'type': 'string',
            'enum': [ 'local', 'cloud' ]
          },
          'idPattern': {
            'description': 'Regular expression to match printer id.',
            'type': 'string'
          },
          'namePattern': {
            'description': 'Regular expression to match printer display name.',
            'type': 'string'
          }
        }
      },
      'supported_on': ['chrome.*:48-', 'chrome_os:48-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': '{ "kind": "cloud", "idPattern": ".*public", "namePattern": ".*Color" }',
      'id': 308,
      'caption': '''Default printer selection rules''',
      'tags': [],
      'desc': '''Overrides <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> default printer selection rules.

      This policy determines the rules for selecting the default printer in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> which happens the first time the print function is used with a profile.

      When this policy is set, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will attempt to find a printer matching all of the specified attributes, and select it as default printer. The first printer found matching the policy is selected, in case of non-unique match any matching printer can be selected, depending on the order printers are discovered.

      If this policy is not set or matching printer is not found within the timeout, the printer defaults to built-in PDF printer or no printer selected, when PDF printer is not available.

      The value is parsed as JSON object, conforming to the following schema:
      {
        "type": "object",
        "properties": {
          "kind": {
            "description": "Whether to limit the search of the matching printer to a specific set of printers.",
            "type": "string",
            "enum": [ "local", "cloud" ]
          },
          "idPattern": {
            "description": "Regular expression to match printer id.",
            "type": "string"
          },
          "namePattern": {
            "description": "Regular expression to match printer display name.",
            "type": "string"
          }
        }
      }

      Printers connected to <ph name="CLOUD_PRINT_NAME">Google Cloud Print</ph> are considered <ph name="PRINTER_TYPE_CLOUD">"cloud"</ph>, the rest of the printers are classified as <ph name="PRINTER_TYPE_LOCAL">"local"</ph>.
      Omitting a field means all values match, for example, not specifying connectivity will cause Print Preview to initiate the discovery of all kinds of printers, local and cloud.
      Regular expression patterns must follow the JavaScript RegExp syntax and matches are case sensistive.''',
      'arc_support': 'This policy has no effect on Android apps.',
    },
    {
      'name': 'DisableSSLRecordSplitting',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:18-46', 'chrome_os:18-46'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': True,
      'id': 118,
      'caption': '''Disable TLS False Start''',
      'tags': [],
      'desc': '''Specifies whether the <ph name="TLS_FALSE_START">TLS False Start</ph> optimization should be disabled. For historical reasons, this policy is named DisableSSLRecordSplitting.

      If the policy is not set, or is set to false, then <ph name="TLS_FALSE_START">TLS False Start</ph> will be enabled. If it is set to true, <ph name="TLS_FALSE_START">TLS False Start</ph> will be disabled.''',
    },
    {
      'name': 'EnableOnlineRevocationChecks',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:19-', 'chrome_os:19-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': False,
      'id': 129,
      'caption': '''Whether online OCSP/CRL checks are performed''',
      'tags': ['website-sharing'],
      'desc': '''In light of the fact that soft-fail, online revocation checks provide no effective security benefit, they are disabled by default in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> version 19 and later. By setting this policy to true, the previous behavior is restored and online OCSP/CRL checks will be performed.

      If the policy is not set, or is set to false, then <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will not perform online revocation checks in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> 19 and later.''',
    },
    {
      'name': 'RequireOnlineRevocationChecksForLocalAnchors',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:30-', 'chrome.linux:30-', 'chrome.win:30-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': False,
      'id': 235,
      'caption': '''Whether online OCSP/CRL checks are required for local trust anchors''',
      'tags': [],
      'desc': '''When this setting is enabled, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will always perform revocation checking for server certificates that successfully validate and are signed by locally-installed CA certificates.

      If <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> is unable to obtain revocation status information, such certificates will be treated as revoked ('hard-fail').

      If this policy is not set, or it is set to false, then <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will use the existing online revocation checking settings.''',
    },
    {
      'name': 'EnableSha1ForLocalAnchors',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:54-71', 'chrome_os:54-71', 'android:54-71'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': False,
      'id': 340,
      'caption': '''Whether SHA-1 signed certificates issued by local trust anchors are allowed''',
      'tags': ['system-security'],
      'desc': '''When this setting is enabled, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> allows SHA-1 signed certificates as long as they successfully validate and chain to a locally-installed CA certificates.

      Note that this policy depends on the operating system certificate verification stack allowing SHA-1 signatures. If an OS update changes the OS handling of SHA-1 certificates, this policy may no longer have effect.  Further, this policy is intended as a temporary workaround to give enterprises more time to move away from SHA-1.  This policy will be removed on or around January 1st 2019.

      If this policy is not set, or it is set to false, then <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> follows the publicly announced SHA-1 deprecation schedule.''',
    },
    {
      'name': 'EnableCommonNameFallbackForLocalAnchors',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:58-65', 'chrome_os:58-65', 'android:58-65'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'deprecated': True,
      'example_value': False,
      'id': 366,
      'caption': '''Whether to allow certificates issued by local trust anchors that are missing the subjectAlternativeName extension''',
      'tags': ['system-security'],
      'desc': '''When this setting is enabled, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will use the commonName of a server certificate to match a hostname if the certificate is missing a subjectAlternativeName extension, as long as it successfully validates and chains to a locally-installed CA certificates.

      Note that this is not recommended, as this may allow bypassing the nameConstraints extension that restricts the hostnames that a given certificate can be authorized for.

      If this policy is not set, or is set to false, server certificates that lack a subjectAlternativeName extension containing either a DNS name or IP address will not be trusted.''',
    },
    {
      'name': 'EnableSymantecLegacyInfrastructure',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:66-', 'chrome_os:66-', 'android:66-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': False,
      'id': 413,
      'caption': '''Whether to enable trust in Symantec Corporation's Legacy PKI Infrastructure''',
      'tags': ['system-security'],
      'desc': '''When this setting is enabled, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> allows certificates issued by Symantec Corporation's Legacy PKI operations to be trusted if they otherwise successfully validate and chain to a recognized CA certificate.

      Note that this policy depends on the operating system still recognizing certificates from Symantec's legacy infrastructure. If an OS update changes the OS handling of such certificates, this policy no longer has effect.  Further, this policy is intended as a temporary workaround to give enterprises more time to transition away from legacy Symantec certificates.  This policy will be removed on or around January 1st 2019.

      If this policy is not set, or it is set to false, then <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> follows the publicly announced deprecation schedule.

      See https://g.co/chrome/symantecpkicerts for more details on this deprecation.''',
    },
    {
      'name': 'ForceEphemeralProfiles',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:32-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': True,
      },
      'example_value': True,
      'id': 245,
      'caption': '''Ephemeral profile''',
      'tags': [],
      'desc': '''If set to enabled this policy forces the profile to be switched to ephemeral mode. If this policy is specified as an OS policy (e.g. GPO on Windows) it will apply to every profile on the system; if the policy is set as a Cloud policy it will apply only to a profile signed in with a managed account.

      In this mode the profile data is persisted on disk only for the length of the user session. Features like browser history, extensions and their data, web data like cookies and web databases are not preserved after the browser is closed. However this does not prevent the user from downloading any data to disk manually, save pages or print them.

      If the user has enabled sync all this data is preserved in their sync profile just like with regular profiles. Incognito mode is also available if not explicitly disabled by policy.

      If the policy is set to disabled or left not set signing in leads to regular profiles.'''
    },
    {
      'name': 'SAMLOfflineSigninTimeLimit',
      'type': 'int',
      'schema': { 'type': 'integer', 'minimum': -1 },
      'supported_on': ['chrome_os:34-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 32,
      'id': 254,
      'caption': '''Limit the time for which a user authenticated via SAML can log in offline''',
      'tags': [],
      'desc': '''During login, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> can authenticate against a server (online) or using a cached password (offline).

      When this policy is set to a value of -1, the user can authenticate offline indefinitely. When this policy is set to any other value, it specifies the length of time since the last online authentication after which the user must use online authentication again.

      Leaving this policy not set will make <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> use a default time limit of 14 days after which the user must use online authentication again.

      This policy affects only users who authenticated using SAML.

      The policy value should be specified in seconds.''',
    },
    {
      'name': 'AutoCleanUpStrategy',
      'type': 'string-enum',
      'schema': {
        'type': 'string',
        'enum': [ 'remove-lru', 'remove-lru-if-dormant' ],
      },
      'items': [
        {
          'name': 'RemoveLRU',
          'value': 'remove-lru',
          'caption': '''Least recently used users are removed until there is enough free space''',
        },
        {
          'name': 'RemoveLRUIfDormant',
          'value': 'remove-lru-if-dormant',
          'caption': '''Least recently used users who have not logged in within last 3 months are removed until there is enough free space''',
        },
      ],
      'supported_on': ['chrome_os:32-35'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'deprecated': True,
      'example_value': 'remove-lru',
      'id': 246,
      'caption': '''Select the strategy used to free up disk space during automatic clean-up (deprecated)''',
      'tags': [],
      'desc': '''This policy is deprecated. <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will always use the 'RemoveLRU' clean-up strategy.

      Controls the automatic clean-up behavior on <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> devices. Automatic clean-up is triggered when the amount of free disk space reaches a critical level to recover some disk space.

      If this policy is set to 'RemoveLRU', the automatic clean-up will keep removing users from the device in least-recently-logged-in order until there is enough free space.

      If this policy is set to 'RemoveLRUIfDormant', the automatic clean-up will keep removing users who have not logged in for at least 3 months in least-recently-logged-in order until there is enough free space.

      If this policy is not set, automatic clean-up uses the default built-in strategy. Currently, it is the 'RemoveLRUIfDormant' strategy.'''
    },
    {
      'name': 'ReportDeviceVersionInfo',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:18-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': False,
      'id': 119,
      'caption': '''Report OS and firmware version''',
      'tags': ['admin-sharing'],
      'desc': '''Report OS and firmware version of enrolled devices.

      If this setting is not set or set to True, enrolled devices will report the OS and firmware version periodically. If this setting is set to False, version info will not be reported.''',
      'arc_support': 'This policy has no effect on the logging done by Android.',
    },
    {
      'name': 'ReportDeviceActivityTimes',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:18-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': False,
      'id': 120,
      'caption': '''Report device activity times''',
      'tags': ['admin-sharing'],
      'desc': '''Report device activity times.

      If this setting is not set or set to True, enrolled devices will report time periods when a user is active on the device. If this setting is set to False, device activity times will not be recorded or reported.''',
      'arc_support': 'This policy has no effect on the logging done by Android.',
    },
    {
      'name': 'ReportDeviceBootMode',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:18-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': False,
      'id': 121,
      'caption': '''Report device boot mode''',
      'tags': ['admin-sharing'],
      'desc': '''Report the state of the device's dev switch at boot.

      If the policy is set to false, the state of the dev switch will not be reported.''',
      'arc_support': 'This policy has no effect on the logging done by Android.',
    },
    {
      'name': 'ReportDeviceLocation',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:20-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'future': True,
      'example_value': False,
      'id': 143,
      'caption': '''Report device location''',
      'tags': ['admin-sharing'],
      'desc': '''Report the geographic location of the device.

      If the policy is not set, or set to false, the location will not be reported.''',
      'arc_support': 'This policy has no effect on the logging done by Android.',
    },
    {
      'name': 'ReportDeviceNetworkInterfaces',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:29-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': False,
      'id': 224,
      'caption': '''Report device network interfaces''',
      'tags': ['admin-sharing'],
      'desc': '''Report list of network interfaces with their types and hardware addresses to the server.

      If the policy is set to false, the interface list will not be reported.''',
      'arc_support': 'This policy has no effect on the logging done by Android.',
    },
    {
      'name': 'ReportDeviceUsers',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:32-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': False,
      'id': 248,
      'caption': '''Report device users''',
      'tags': ['admin-sharing'],
      'desc': '''Report list of device users that have recently logged in.

      If the policy is set to false, the users will not be reported.''',
      'arc_support': 'This policy has no effect on the logging done by Android.',
    },
    {
      'name': 'ReportDeviceHardwareStatus',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:42-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': False,
      'id': 290,
      'caption': '''Report hardware status''',
      'tags': ['admin-sharing'],
      'desc': '''Report hardware statistics such as CPU/RAM usage.

      If the policy is set to false, the statistics will not be reported.
      If set to true or left unset, statistics will be reported.''',
      'arc_support': 'This policy has no effect on the logging done by Android.',
    },
    {
      'name': 'ReportDeviceSessionStatus',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:42-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': False,
      'id': 291,
      'caption': '''Report information about active kiosk sessions''',
      'tags': ['admin-sharing'],
      'desc': '''Report information about the active kiosk session, such as
      application ID and version.

      If the policy is set to false, the kiosk session information will not be
      reported. If set to true or left unset, kiosk session information will be
      reported.''',
      'arc_support': 'This policy has no effect on the logging done by Android.',
    },
    {
      'name': 'ReportDevicePowerStatus',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:73-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': False,
      'id': 512,
      'caption': '''Report power status''',
      'tags': ['admin-sharing'],
      'desc': '''Report hardware statistics and identifiers related to power.

      If the policy is set to false, the statistics will not be reported.
      If set to true or left unset, statistics will be reported.''',
      'arc_support': 'This policy has no effect on the logging done by Android.',
    },
    {
      'name': 'ReportDeviceStorageStatus',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:73-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': False,
      'id': 513,
      'caption': '''Report storage status''',
      'tags': ['admin-sharing'],
      'desc': '''Report hardware statistics and identifiers for storage devices.

      If the policy is set to false, the statistics will not be reported.
      If set to true or left unset, statistics will be reported.''',
      'arc_support': 'This policy has no effect on the logging done by Android.',
    },
    {
      'name': 'ReportDeviceBoardStatus',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:73-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': False,
      'id': 514,
      'caption': '''Report board status''',
      'tags': ['admin-sharing'],
      'desc': '''Report hardware statistics for SoC components.

      If the policy is set to false, the statistics will not be reported.
      If set to true or left unset, statistics will be reported.''',
      'arc_support': 'This policy has no effect on the logging done by Android.',
    },
    {
      'name': 'ReportUploadFrequency',
      'type': 'int',
      'schema': { 'type': 'integer', 'minimum': 60000 },
      'supported_on': ['chrome_os:42-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': 10800000,
      'id': 292,
      'caption': '''Frequency of device status report uploads''',
      'tags': ['admin-sharing'],
      'desc': '''How frequently device status uploads are sent, in milliseconds.

      If this policy is unset, the default frequency is 3 hours. The minimum
      allowed frequency is 60 seconds.''',
      'arc_support': 'This policy has no effect on the logging done by Android.',
    },
    {
      'name': 'ReportArcStatusEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:55-'],
      'supported_chrome_os_management': ['google_cloud'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 349,
      'caption': '''Report information about status of Android''',
      'tags': ['admin-sharing'],
      'desc': '''Information about the status of Android is sent back to the
      server.

      If the policy is set to false or left unset, no status information is reported.
      If set to true, status information is reported.

      This policy only applies if Android apps are enabled.''',
    },
    {
      'name': 'ReportCrostiniUsageEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:70-'],
      'supported_chrome_os_management': ['google_cloud'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': False,
      'id': 484,
      'caption': '''Report information about usage of Linux apps''',
      'tags': ['admin-sharing'],
      'desc': '''Information about the usage of Linux apps is sent back to the
      server.

      If the policy is set to false or left unset, no usage information is
      reported. If set to true, usage information is reported.

      This policy only applies if Linux app support is enabled.''',
    },
    {
      'name': 'HeartbeatEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:43-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': False,
      'id': 293,
      'caption': '''Send network packets to the management server to monitor online status''',
      'tags': ['admin-sharing'],
      'desc': '''Send network packets to the management server to monitor online status, to allow
      the server to detect if the device is offline.

      If this policy is set to true, monitoring network packets (so-called <ph name="HEARTBEATS_TERM">heartbeats</ph>) will be sent.
      If set to false or unset, no packets will be sent.''',
      'arc_support': 'This policy has no effect on the logging done by Android.',
    },
    {
      'name': 'HeartbeatFrequency',
      'type': 'int',
      'schema': { 'type': 'integer', 'minimum': 30000 },
      'supported_on': ['chrome_os:43-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': 180000,
      'id': 294,
      'caption': '''Frequency of monitoring network packets''',
      'tags': [],
      'desc': '''How frequently monitoring network packets are sent, in milliseconds.

      If this policy is unset, the default interval is 3 minutes. The minimum
      interval is 30 seconds and the maximum interval is 24 hours - values
      outside of this range will be clamped to this range.''',
      'arc_support': 'This policy has no effect on the logging done by Android.',
    },
    {
      'name': 'LogUploadEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:46-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': False,
      'id': 306,
      'caption': '''Send system logs to the management server''',
      'tags': [],
      'desc': '''Send system logs to the management server, to allow
      admins to monitor system logs.

      If this policy is set to true, system logs will be sent. If set
      to false or unset, then no system logs will be sent.''',
      'arc_support': 'This policy has no effect on the logging done by Android.',
    },
    {
      'name': 'DeviceUserWhitelist',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome_os:12-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': [ 'madmax@managedchrome.com' ],
      'id': 122,
      'caption': '''Login user white list''',
      'tags': [],
      'desc': '''Defines the list of users that are allowed to login to the device. Entries are of the form <ph name="USER_WHITELIST_ENTRY_FORMAT">user@domain</ph>, such as <ph name="USER_WHITELIST_ENTRY_EXAMPLE">madmax@managedchrome.com</ph>. To allow arbitrary users on a domain, use entries of the form <ph name="USER_WHITELIST_ENTRY_WILDCARD">*@domain</ph>.

      If this policy is not configured, there are no restrictions on which users are allowed to sign in. Note that creating new users still requires the <ph name="DEVICE_ALLOW_NEW_USERS_POLICY_NAME">DeviceAllowNewUsers</ph> policy to be configured appropriately.''',
      'arc_support': 'This policy controls who may start a <ph name="PRODUCT_OS_NAME">$2<ex>Chromium OS</ex></ph> session. It does not prevent users from signing in to additional Google accounts within Android. If you want to prevent this, configure the Android-specific <ph name="ACCOUNT_TYPES_WITH_MANAGEMENT_DISABLED_CLOUDDPC_POLICY_NAME">accountTypesWithManagementDisabled</ph> policy as part of <ph name="ARC_POLICY_POLICY_NAME">ArcPolicy</ph>.',
    },
    {
      'name': 'DeviceAllowNewUsers',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:12-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': True,
      'id': 123,
      'caption': '''Allow creation of new user accounts''',
      'tags': [],
      'desc': '''Controls whether <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> allows new user accounts to be created. If this policy is set to false, users that do not have an account already will not be able to login.

      If this policy is set to true or not configured, new user accounts will be allowed to be created provided that <ph name="DEVICE_USER_WHITELIST_POLICY_NAME">DeviceUserWhitelist</ph> does not prevent the user from logging in.''',
      'arc_support': 'This policy controls whether new users can be added to <ph name="PRODUCT_OS_NAME">$2<ex>Chromium OS</ex></ph>. It does not prevent users from signing in to additional Google accounts within Android. If you want to prevent this, configure the Android-specific <ph name="ACCOUNT_TYPES_WITH_MANAGEMENT_DISABLED_CLOUDDPC_POLICY_NAME">accountTypesWithManagementDisabled</ph> policy as part of <ph name="ARC_POLICY_POLICY_NAME">ArcPolicy</ph>.',
    },
    {
      'name': 'DeviceGuestModeEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:12-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': True,
      'id': 124,
      'caption': '''Enable guest mode''',
      'tags': [],
      'desc': '''If this policy is set to true or not configured, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will enable guest logins. Guest logins are anonymous user sessions and do not require a password.

      If this policy is set to false, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will not allow guest sessions to be started.''',
    },
    {
      'name': 'DeviceShowUserNamesOnSignin',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:12-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': True,
      'id': 125,
      'caption': '''Show usernames on login screen''',
      'tags': [],
      'desc': '''If this policy is set to true or not configured, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will show existing users on the login screen and allow to pick one.

      If this policy is set to false, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will not show existing users on the login screen. The normal sign-in screen (prompting for the user email and password or phone) or the SAML interstitial screen (if enabled via the <ph name="LOGIN_AUTHENTICATION_BEHAVIOR_POLICY_NAME">LoginAuthenticationBehavior</ph> policy) will be shown, unless a Managed Session is configured. When a Managed Session is configured, only the Managed Session accounts will be shown, allowing to pick one of them.

      Note that this policy does not affect whether the device keeps or discards the local user data.''',
    },
    {
      'name': 'DeviceDataRoamingEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:12-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': True,
      'id': 126,
      'caption': '''Enable data roaming''',
      'tags': [],
      'desc': '''Determines whether data roaming should be enabled for the device. If set to true, data roaming is allowed. If left unconfigured or set to false, data roaming will be not available.''',
    },
    {
      'name': 'DeviceMetricsReportingEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:14-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': True,
      'id': 127,
      'caption': '''Enable metrics reporting''',
      'tags': ['admin-sharing'],
      'desc': '''Controls whether usage metrics and diagnostic data, including crash reports, are reported back to Google.

      If set to true, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will report usage metrics and diagnostic data.

      If set to false, metrics and diagnostic data reporting will be disabled.

      If not configured, metrics and diagnostic data reporting will be disabled on unmanaged devices and enabled on managed devices.''',

      'arc_support': 'This policy also controls Android usage and diagnostic data collection.',
    },
    {
      'name': 'ChromeOsReleaseChannel',
      'type': 'string-enum',
      'schema': {
        'type': 'string',
        'enum': [ 'stable-channel', 'beta-channel', 'dev-channel' ],
      },
      'items': [
        {
          'name': 'StableChannel',
          'value': 'stable-channel',
          'caption': '''Stable channel''',
        },
        {
          'name': 'BetaChannel',
          'value': 'beta-channel',
          'caption': '''Beta channel''',
        },
        {
          'name': 'DevChannel',
          'value': 'dev-channel',
          'caption': '''Dev channel (may be unstable)''',
        },
      ],
      'supported_on': ['chrome_os:11-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': 'stable-channel',
      'id': 91,
      'caption': '''Release channel''',
      'tags': [],
      'desc': '''Specifies the release channel that this device should be locked to.''',
    },
    {
      'name': 'ChromeOsReleaseChannelDelegated',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:19-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': False,
      'id': 134,
      'caption': '''Whether the release channel should be configurable by the user''',
      'tags': [],
      'desc': '''If this policy is set to True and the ChromeOsReleaseChannel policy is not specified then users of the enrolling domain will be allowed to change the release channel of the device. If this policy is set to false the device will be locked in whatever channel it was last set.

      The user selected channel will be overridden by the ChromeOsReleaseChannel policy, but if the policy channel is more stable than the one that was installed on the device, then the channel will only switch after the version of the more stable channel reaches a higher version number than the one installed on the device.''',
    },
    {
      'name': 'DeviceEphemeralUsersEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:19-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': True,
      'id': 128,
      'caption': '''Wipe user data on sign-out''',
      'tags': [],
      'desc': '''Determines whether <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> keeps local account data after logout. If set to true, no persistent accounts are kept by <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> and all data from the user session will be discarded after logout. If this policy is set to false or not configured, the device may keep (encrypted) local user data.''',
    },
    {
      'name': 'DeviceStartUpUrls',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome_os:19-40'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': [ 'https://google.com', 'chrome-extension://aaaaaaaaaaaaaaaaaaaaaaaa/' ],
      'id': 137,
      'caption': '''Load specified urls on demo login''',
      'tags': [],
      'desc': '''This policy is active in retail mode only.

      Determines the set of URLs to be loaded when the demo session is started. This policy will override any other mechanisms for setting the initial URL and thus can only be applied to a session not associated with a particular user.''',
    },
    {
      'name': 'DeviceIdleLogoutTimeout',
      'type': 'int',
      'schema': { 'type': 'integer' },
      'supported_on': ['chrome_os:19-40'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': 60000,
      'id': 130,
      'caption': '''Timeout until idle user log-out is executed''',
      'tags': [],
      'desc': '''This policy is active in retail mode only.

      When the value of this policy is set and is not 0 then the currently logged in demo user will be logged out automatically after an inactivity time of the specified duration has elapsed.

      The policy value should be specified in milliseconds.''',
    },
    {
      'name': 'DeviceIdleLogoutWarningDuration',
      'type': 'int',
      'schema': { 'type': 'integer' },
      'supported_on': ['chrome_os:19-40'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': 15000,
      'id': 131,
      'caption': '''Duration of the idle log-out warning message''',
      'tags': [],
      'desc': '''This policy is active in retail mode only.

      When DeviceIdleLogoutTimeout is specified this policy defines the duration of the warning box with a count down timer that is shown to the user before the logout is executed.

      The policy value should be specified in milliseconds.''',
    },
    {
      'name': 'DeviceLoginScreenSaverId',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome_os:19-40'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': 'fhblcfnmnbehmifidkddcenilbpddlfk',
      'id': 132,
      'caption': '''Screen saver to be used on the sign-in screen in retail mode''',
      'tags': [],
      'desc': '''This policy is active in retail mode only.

      Determines the id of the extension to be used as a screen saver on the sign-in screen. The extension must be part of the AppPack that is configured for this domain through the DeviceAppPack policy.''',
    },
    {
      'name': 'DeviceLoginScreenSaverTimeout',
      'type': 'int',
      'schema': { 'type': 'integer' },
      'supported_on': ['chrome_os:19-40'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': 120000,
      'id': 133,
      'caption': '''Duration of inactivity before the screen saver is shown on the sign-in screen in retail mode''',
      'tags': [],
      'desc': '''This policy is active in retail mode only.

      Determines the duration before the screen saver is shown on the sign-in screen for devices in retail mode.

      The policy value should be specified in milliseconds.''',
    },
    {
      'name': 'DeviceAppPack',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome_os:19-40'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': [ '{ "extension-id": "khgabmflimjjbclkmljlpmgaleanedem", "update-url": "https://clients2.google.com/service/update2/crx" }' ],
      'id': 135,
      'caption': '''List of AppPack extensions''',
      'tags': [],
      'desc': '''This policy is active in retail mode only.

      Lists extensions that are automatically installed for the Demo user, for devices in retail mode. These extensions are saved in the device and can be installed while offline, after the installation.

      Each list entry contains a dictionary that must include the extension ID in the 'extension-id' field, and its update URL in the 'update-url' field.''',
    },
    {
      'name': 'DeviceAutoUpdateDisabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:19-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': True,
      'id': 136,
      'caption': '''Disable Auto Update''',
      'tags': ['system-security'],
      'desc': '''Disables automatic updates when set to True.

      <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> devices automatically check for updates when this setting is not configured or set to False.

      Warning: It is recommended to keep auto-updates enabled so that users receive software updates and critical security fixes. Turning off auto-updates might leave users at risk.''',
    },
    {
      'name': 'DeviceAutoUpdateP2PEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:31-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': False,
      'id': 242,
      'caption': '''Auto update p2p enabled''',
      'tags': [],
      'desc': '''Specifies whether p2p is to be used for OS update payloads. If set to True, devices will share and attempt to consume update payloads on the LAN, potentially reducing Internet bandwidth usage and congestion. If the update payload is not available on the LAN, the device will fall back to downloading from an update server. If set to False or not configured, p2p will not be used.''',
    },
    {
      'name': 'DeviceRollbackAllowedMilestones',
      'type': 'int',
      'schema': {
        'type': 'integer',
        'minimum': 0,
        'maximum': 4,
      },
      'supported_on': ['chrome_os:67-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': 4,
      'id': 426,
      'caption': '''Number of milestones rollback is allowed''',
      'tags': ['system-security'],
      'desc': '''Specifies the minimum number of <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> milestones rollback should be allowed starting from the stable version at any time.

      Default is 0 for consumer, 4 (approx. half a year) for enterprise enrolled devices.

      Setting this policy prevents rollback protection to apply for at least this number of milestones.

      Setting this policy to a lower value has a permanent effect: the device MAY not be able to roll back to earlier versions even after the policy is reset to a larger value.

      Actual rollback possibilities may also depend on the board and critical vulnerability patches.''',
    },
    {
      'name': 'DeviceRollbackToTargetVersion',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 1, 2, 3, 4 ],
      },
      'items': [
        {
          'name': 'RollbackDisabled',
          'value': 1,
          'caption': '''Do not roll back to target version if OS version is newer than target. Updates are also disabled.''',
        },
        {
          'name': 'RollbackAndPowerwash',
          'value': 2,
          'caption': '''Roll back and stay on target version if OS version is newer than target. Do a powerwash during the process.''',
        },
        {
          'name': 'RollbackAndRestoreIfPossible',
          'value': 3,
          'caption': '''Roll back and stay on target version if OS version is newer than target. Try to carry over device-level configuration (including network credentials) through the rollback process, if possible, but do the rollback with full powerwash even if restoring the data is not possible (because the target version doesn't support restoring data or because of a backward-incompatible change).
          Supported on <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> version 70 and higher. For older clients, this value means that rollback is disabled.''',
        },
        {
          'name': 'RollbackOnlyIfRestorePossible',
          'value': 4,
          'caption': '''Roll back and stay on target version if OS version is newer than target and it's possible to carry over device-level configuration (including network credentials) through rollback, also skipping OOBE after rollback. Don't do or abort rollback if that's not possible (because the target version doesn't support restoring data or because of a backward-incompatible change).
          Supported on <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> version 70 and higher. For older clients, this value means that rollback is disabled.''',
        },
      ],
      'supported_on': ['chrome_os:67-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': 1,
      'id': 427,
      'caption': '''Rollback to target version''',
      'tags': ['system-security'],
      'desc': '''Specifies whether the device should roll back to the version set by <ph name="DEVICE_TARGET_VERSION_PREFIX_POLICY_NAME">DeviceTargetVersionPrefix</ph> if it's already running a later version.

      Default is RollbackDisabled.''',
    },
    {
      'name': 'DeviceTargetVersionPrefix',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome_os:19-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': '1412.',
      'id': 142,
      'caption': '''Target Auto Update Version''',
      'tags': ['system-security'],
      'desc': '''Sets a target version for Auto Updates.

      Specifies the prefix of a target version <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> should update to. If the device is running a version that's before the specified prefix, it will update to the latest version with the given prefix. If the device is already on a later version, effects depend on the value of <ph name="DEVICE_ROLLBACK_TO_TARGET_VERSION_POLICY_NAME">DeviceRollbackToTargetVersion</ph>. The prefix format works component-wise as is demonstrated in the following example:

      "" (or not configured): update to latest version available.
      "1412.": update to any minor version of 1412 (e.g. 1412.24.34 or 1412.60.2)
      "1412.2.": update to any minor version of 1412.2 (e.g. 1412.2.34 or 1412.2.2)
      "1412.24.34": update to this specific version only

      Warning: It is not recommended to configure version restrictions as they may prevent users from receiving software updates and critical security fixes. Restricting updates to a specific version prefix might leave users at risk.''',
    },
    {
      'name': 'DeviceUpdateScatterFactor',
      'type': 'int',
      'schema': { 'type': 'integer' },
      'supported_on': ['chrome_os:20-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': 7200,
      'id': 145,
      'caption': '''Auto update scatter factor''',
      'tags': ['system-security'],
      'desc': '''Specifies the number of seconds up to which a device may randomly delay its download of an update from the time the update was first pushed out to the server. The device may wait a portion of this time in terms of wall-clock-time and the remaining portion in terms of the number of update checks. In any case, the scatter is upper bounded to a constant amount of time so that a device does not ever get stuck waiting to download an update forever.''',
    },
    {
      'name': 'DeviceUpdateAllowedConnectionTypes',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome_os:21-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': [ 'ethernet' ],
      'id': 146,
      'caption': '''Connection types allowed for updates''',
      'tags': [],
      'desc': ''' The types of connections that are allowed to use for OS updates. OS updates potentially put heavy strain on the connection due to their size and may incur additional cost. Therefore, they are by default not enabled for connection types that are considered expensive, which include WiMax, Bluetooth and Cellular at the moment.

      The recognized connection type identifiers are "ethernet", "wifi", "wimax", "bluetooth" and "cellular".''',
    },
    {
      'name': 'DeviceUpdateHttpDownloadsEnabled',
      'type': 'main',
      'schema': {
        'type': 'boolean',
      },
      'supported_on': ['chrome_os:29-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': True,
      'id': 243,
      'caption': '''Allow autoupdate downloads via HTTP''',
      'tags': [],
      'desc': '''Auto-update payloads on <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> can be downloaded via HTTP instead of HTTPS. This allows transparent HTTP caching of HTTP downloads.

      If this policy is set to true, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will attempt to download auto-update payloads via HTTP. If the policy is set to false or not set, HTTPS will be used for downloading auto-update payloads.''',
    },
    {
      'name': 'DeviceLocalAccounts',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome_os:25-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': [ "demo@example.com" ],
      'id': 163,
      'caption': '''Device-local accounts''',
      'tags': [],
      'desc': '''Specifies the list of device-local accounts to be shown on the login screen.

      Every list entry specifies an identifier, which is used internally to tell the different device-local accounts apart.''',
    },
    {
      'name': 'DeviceLocalAccountAutoLoginId',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome_os:26-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': "public@example.com",
      'id': 194,
      'caption': '''Device-local account for auto-login''',
      'tags': [],
      'desc': '''A device-local account to auto-login after a delay.

      If this policy is set, the specified session will be automatically logged in after a period of time has elapsed at the login screen without user interaction. The device-local account must already be configured (see |DeviceLocalAccounts|).

      If this policy is unset, there will be no auto-login.''',
    },
    {
      'name': 'DeviceLocalAccountAutoLoginDelay',
      'type': 'int',
      'schema': { 'type': 'integer' },
      'supported_on': ['chrome_os:26-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': 180000,
      'id': 195,
      'caption': '''Device-local account auto-login timer''',
      'tags': [],
      'desc': '''The device-local account auto-login delay.

      If the |DeviceLocalAccountAutoLoginId| policy is unset, this policy has no effect. Otherwise:

      If this policy is set, it determines the amount of time without user activity that should elapse before automatically logging into the device-local account specified by the |DeviceLocalAccountAutoLoginId| policy.

      If this policy is unset, 0 milliseconds will be used as the timeout.

      This policy is specified in milliseconds.'''
    },
    {
      'name': 'DeviceLocalAccountAutoLoginBailoutEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:28-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': True,
      'id': 202,
      'caption': '''Enable bailout keyboard shortcut for auto-login''',
      'tags': [],
      'desc': '''Enable bailout keyboard shortcut for auto-login.

      If this policy is unset or set to True and a device-local account is configured for zero-delay auto-login, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will honor the keyboard shortcut Ctrl+Alt+S for bypassing auto-login and showing the login screen.

      If this policy is set to False, zero-delay auto-login (if configured) cannot be bypassed.'''
    },
    {
      'name': 'DeviceLocalAccountPromptForNetworkWhenOffline',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:33-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': True,
      'id': 250,
      'caption': '''Enable network configuration prompt when offline''',
      'tags': [],
      'desc': '''Enable network configuration prompt when offline.

      If this policy is unset or set to True and a device-local account is configured for zero-delay auto-login and the device does not have access to the Internet, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will show a network configuration prompt.

      If this policy is set to False, an error message will be displayed instead of the network configuration prompt.'''
    },
    {
      'name': 'DeviceLocalAccountManagedSessionEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:70-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': True,
      'id': 463,
      'caption': '''Allow managed session on device''',
      'tags': [],
      'desc': '''If this policy is set to false, managed guest session will behave as documented in https://support.google.com/chrome/a/answer/3017014 - the standard "Public Session".

      If this policy is set to true or left unset, managed guest session will take on "Managed Session" behaviour which lifts many of the restrictions that are in place for regular "Public Sessions".

      If this policy is set, the user cannot change or override it.''',
    },
    {
      'name': 'DeviceBlockDevmode',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:37-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': True,
      'id': 266,
      'caption': '''Block developer mode''',
      'tags': [],
      'desc': '''Block developer mode.

      If this policy is set to True, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will prevent the device from booting into developer mode. The system will refuse to boot and show an error screen when the developer switch is turned on.

      If this policy is unset or set to False, developer mode will remain available for the device.''',
      'arc_support': 'This policy controls <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> developer mode only. If you want to prevent access to Android Developer Options, you need to set the <ph name="DEVELOPER_TOOLS_DISABLED_POLICY_NAME">DeveloperToolsDisabled</ph> policy.',
    },
    {
      'name': 'BackgroundModeEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.win:19-', 'chrome.linux:19-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': True,
      'id': 138,
      'caption': '''Continue running background apps when <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> is closed''',
      'tags': ['system-security'],
      'desc': '''Determines whether a <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> process is started on OS login and keeps running when the last browser window is closed, allowing background apps and the current browsing session to remain active, including any session cookies. The background process displays an icon in the system tray and can always be closed from there.

      If this policy is set to True, background mode is enabled and cannot be controlled by the user in the browser settings.

      If this policy is set to False, background mode is disabled and cannot be controlled by the user in the browser settings.

      If this policy is left unset, background mode is initially disabled and can be controlled by the user in the browser settings.''',
    },
    {
      'name': 'DriveDisabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:19-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 139,
      'caption': '''Disable Drive in the <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> Files app''',
      'tags': [],
      'desc': '''Disables Google Drive syncing in the <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> Files app when set to True. In that case, no data is uploaded to Google Drive.

          If not set or set to False, then users will be able to transfer files to Google Drive.''',
      'arc_support': 'This policy does not prevent the user from using the Android Google Drive app. If you want to prevent access to Google Drive, you should disallow installation of the Android Google Drive app as well.',
    },
    {
      'name': 'DriveDisabledOverCellular',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:19-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 140,
      'caption': '''Disable Google Drive over cellular connections in the <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> Files app''',
      'tags': [],
      'desc': '''Disables Google Drive syncing in the <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> Files app when using a cellular connection when set to True. In that case, data is only synced to Google Drive when connected via WiFi or Ethernet.

          If not set or set to False, then users will be able to transfer files to Google Drive via cellular connections.''',
      'arc_support': 'This policy has no effect on the Android Google Drive app. If you want to prevent use of Google Drive over cellular connections, you should disallow installation of the Android Google Drive app.',
    },
    {
      'name': 'PinnedLauncherApps',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome_os:20-' ],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['pjkljhegncpnkpknbcohdijeoejaedia', 'com.google.android.gm'],
      'id': 144,
      'caption': '''List of pinned apps to show in the launcher''',
      'tags': [],
      'desc': '''Lists the application identifiers <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> shows as pinned apps in the launcher bar.

      If this policy is configured, the set of applications is fixed and can't be changed by the user.

      If this policy is left unset, the user may change the list of pinned apps in the launcher.''',
      'arc_support': 'This policy can also be used to pin Android apps.',
    },
    {
      'name': 'RestrictSigninToPattern',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:21-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': '.*@example.com',
      'id': 147,
      'caption': '''Restrict which Google accounts are allowed to be set as browser primary accounts in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>''',
      'tags': [],
      'desc': '''Contains a regular expression which is used to determine which Google accounts can be set as browser primary accounts in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> (i.e. the account that is chosen during the Sync opt-in flow).

      An appropriate error is displayed if a user tries to set a browser primary account with a username that does not match this pattern.

      If this policy is left not set or blank, then the user can set any Google account as a browser primary account in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.''',
    },
    {
      'name': 'DisableSafeBrowsingProceedAnyway',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:22-', 'chrome_os:22-', 'android:30-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 150,
      'caption': '''Disable proceeding from the Safe Browsing warning page''',
      'tags': [],
      'desc': '''The Safe Browsing service shows a warning page when users navigate to sites that are flagged as potentially malicious. Enabling this setting prevents users from proceeding anyway from the warning page to the malicious site.

      This policy only prevents users from proceeding on Safe Browsing warnings (e.g. malware and phishing) not for SSL certificate related issues like invalid or expired certificates.

      If this setting is disabled or not configured then users can choose to proceed to the flagged site after being shown the warning.

      See https://developers.google.com/safe-browsing for more info on Safe Browsing.''',
    },
    {
      'name': 'SafeBrowsingExtendedReportingOptInAllowed',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:44-', 'chrome_os:44-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 299,
      'caption': '''Allow users to opt in to Safe Browsing extended reporting''',
      'tags': [],
      'deprecated': True,
      'desc': '''This setting is deprecated, use SafeBrowsingExtendedReportingEnabled instead. Enabling or disabling SafeBrowsingExtendedReportingEnabled is equivalent to setting SafeBrowsingExtendedReportingOptInAllowed to False.

      Setting this policy to false stops users from choosing to send some system information and page content to Google servers. If this setting is true or not configured, then users will be allowed to send some system information and page content to Safe Browsing to help detect dangerous apps and sites.

      See https://developers.google.com/safe-browsing for more info on Safe Browsing.''',
    },
    {
      'name': 'SpellCheckServiceEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:22-', 'chrome_os:22-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': False,
      'id': 151,
      'caption': '''Enable or disable spell checking web service''',
      'tags': [],
      'desc': '''<ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> can use a Google web service to help resolve spelling errors. If this setting is enabled, then this service is always used. If this setting is disabled, then this service is never used.

      Spell checking can still be performed using a downloaded dictionary; this policy only controls the usage of the online service.

      If this setting is not configured then users can choose whether the spell checking service should be used or not.''',
    },
    {
      'name': 'ExternalStorageDisabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:22-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 152,
      'caption': '''Disable mounting of external storage''',
      'tags': [],
      'desc': '''When this policy is set to true, external storage will not be available in the file browser.

      This policy affects all types of storage media. For example: USB flash drives, external hard drives, SD and other memory cards, optical storage etc. Internal storage is not affected, therefore files saved in the Download folder can still be accessed. Google Drive is also not affected by this policy.

      If this setting is disabled or not configured then users can use all supported types of external storage on their device.''',
    },
    {
      'name': 'ExternalStorageReadOnly',
      'id': 343,
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'tags': [],
      'supported_on': ['chrome_os:54-'],
      'caption': '''Treat external storage devices as read-only''',
      'desc': '''When this policy is set to true, users cannot write anything to external storage devices.

      If this setting is set to false or not configured, then users can create and modify files of external storage devices which are physically writable.

      The ExternalStorageDisabled policy takes precedence over this policy - if ExternalStorageDisabled is set to true, then all access to external storage is disabled and this policy is consequently ignored.

      Dynamic refresh of this policy is supported in M56 and later.''',
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True
    },
    {
      'name': 'AudioOutputAllowed',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:23-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': False,
      'id': 159,
      'caption': '''Allow playing audio''',
      'tags': [],
      'desc': '''When this policy is set to false, audio output will not be available on the device while the user is logged in.

      This policy affects all types of audio output and not only the built-in speakers. Audio accessibility features are also inhibited by this policy. Do not enable this policy if a screen reader is required for the user.

      If this setting is set to true or not configured then users can use all supported audio outputs on their device.''',
    },
    {
      'name': 'AudioCaptureAllowed',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:25-', 'chrome_os:23-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': False,
      'id': 160,
      'caption': '''Allow or deny audio capture''',
      'tags': [],
      'desc': '''If enabled or not configured (default), the user will be prompted for
      audio capture access except for URLs configured in the
      AudioCaptureAllowedUrls list which will be granted access without prompting.

      When this policy is disabled, the user will never be prompted and audio
      capture only be available to URLs configured in AudioCaptureAllowedUrls.

      This policy affects all types of audio inputs and not only the built-in microphone.''',
      'arc_support': 'For Android apps, this policy affects the microphone only. When this policy is set to true, the microphone is muted for all Android apps, with no exceptions.',
    },
    {
      'name': 'AudioCaptureAllowedUrls',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:29-', 'chrome_os:29-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['https://www.example.com/', 'https://[*.]example.edu/'],
      'id': 208,
      'caption': '''URLs that will be granted access to audio capture devices without prompt''',
      'tags': ['website-sharing'],
      'desc': '''Patterns in this list will be matched against the security
      origin of the requesting URL.  If a match is found, access to audio
      capture devices will be granted without prompt.

      NOTE: Until version 45, this policy was only supported in Kiosk mode.''',
    },
    {
      'name': 'VideoCaptureAllowed',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:25-', 'chrome_os:25-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': False,
      'id': 167,
      'caption': '''Allow or deny video capture''',
      'tags': [],
      'desc': '''If enabled or not configured (default), the user will be prompted for
      video capture access except for URLs configured in the
      VideoCaptureAllowedUrls list which will be granted access without prompting.

      When this policy is disabled, the user will never be prompted and video
      capture only be available to URLs configured in VideoCaptureAllowedUrls.

      This policy affects all types of video inputs and not only the built-in camera.''',
    },
    {
      'name': 'VideoCaptureAllowedUrls',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:29-', 'chrome_os:29-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['https://www.example.com/', 'https://[*.]example.edu/'],
      'id': 209,
      'caption': '''URLs that will be granted access to video capture devices without prompt''',
      'tags': ['website-sharing'],
      'desc': '''Patterns in this list will be matched against the security
      origin of the requesting URL.  If a match is found, access to video
      capture devices will be granted without prompt.

      NOTE: Until version 45, this policy was only supported in Kiosk mode.''',
    },
    {
      'name': 'DisableScreenshots',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:22-', 'chrome.*:22-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': True,
      'id': 153,
      'caption': '''Disable taking screenshots''',
      'tags': [],
      'desc': '''If enabled, screenshots cannot be taken using keyboard shortcuts or extension APIs.

      If disabled or not specified, taking screenshots is allowed.'''
    },
    {
      'name': 'SystemTimezone',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome_os:22-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': 'America/Los_Angeles',
      'id': 158,
      'caption': '''Timezone''',
      'tags': [],
      'desc': '''Specifies the enforced timezone to be used for the device. When this policy is set, users on the device cannot override the specified timezone. If an invalid value is provided, the policy is still activated using "GMT" instead. If an empty string is provided, the policy is ignored.

      If this policy is not used, the currently active timezone will remain in use however users can change the timezone.

      New devices start out with the timezone set to "US/Pacific".

      The format of the value follows the names of timezones in the "IANA Time Zone Database" (see "https://en.wikipedia.org/wiki/Tz_database"). In particular, most timezones can be referred to by "continent/large_city" or "ocean/large_city".

      Setting this policy completely disables automatic timezone resolve by device location. It also overrides SystemTimezoneAutomaticDetection policy.''',
    },
    {
      'name': 'SystemUse24HourClock',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:30-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': True,
      'id': 236,
      'caption': '''Use 24 hour clock by default''',
      'tags': [],
      'desc': '''Specifies the clock format be used for the device.

      This policy configures the clock format to use on the login screen and as a default for user sessions. Users can still override the clock format for their account.

      If the policy is set to true, the device will use a 24 hour clock format. If the policy is set to false, the device will use 12 hour clock format.

      If this policy is not set, the device will default to a 24 hour clock format.''',
    },
    {
      'name': 'TouchVirtualKeyboardEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:37-' ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True
      },
      'example_value': False,
      'id': 269,
      'caption': '''Enable virtual keyboard''',
      'tags': [],
      'desc': '''This policy configures enabling the virtual keyboard as an input device on ChromeOS. Users cannot override this policy.

      If the policy is set to true, the on-screen virtual keyboard will always be enabled.

      If set to false, the on-screen virtual keyboard will always be disabled.

      If you set this policy, users cannot change or override it. However, users will still be able to enable/disable an accessibility on-screen keyboard which takes precedence over the virtual keyboard controlled by this policy. See the |VirtualKeyboardEnabled| policy for controlling the accessibility on-screen keyboard.

      If this policy is left unset, the on-screen keyboard is disabled initially but can be enabled by the user anytime. Heuristic rules may also be used to decide when to display the keyboard.''',
    },
    {
      'name': 'ShowLogoutButtonInTray',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:25-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 164,
      'caption': '''Add a logout button to the system tray''',
      'tags': [],
      'desc': '''If enabled, a big, red logout button is shown in the system tray while a session is active and the screen is not locked.

      If disabled or not specified, no big, red logout button is shown in the system tray.''',
    },
    {
      'name': 'BuiltInDnsClientEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:25-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': True,
      'id': 165,
      'caption': '''Use built-in DNS client''',
      'tags': [],
      'desc': '''Controls whether the built-in DNS client is used in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      If this policy is set to true, the built-in DNS client will be used, if available.

      If this policy is set to false, the built-in DNS client will never be used.

      If this policy is left not set, the built-in DNS client will be enabled by default on MacOS, Android (when neither Private DNS nor VPN are enabled) and ChromeOS, and the users will be able to change whether the built-in DNS client is used by editing chrome://flags or specifying a command-line flag.''',
    },
    {
      'name': 'ShelfAutoHideBehavior',
      'type': 'string-enum',
      'schema': {
        'type': 'string',
        'enum': [
          'Always',
          'Never'
        ],
      },
      'items': [
        {
          'name': 'AlwaysAutoHideShelf',
          'value': 'Always',
          'caption': '''Always auto-hide the shelf''',
        },
        {
          'name': 'NeverAutoHideShelf',
          'value': 'Never',
          'caption': '''Never auto-hide the shelf''',
        },
      ],
      'supported_on': ['chrome_os:25-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': 'Always',
      'id': 166,
      'caption': '''Control shelf auto-hiding''',
      'tags': [],
      'desc': '''Control auto-hiding of the <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> shelf.

      If this policy is set to 'AlwaysAutoHideShelf', the shelf will always auto-hide.

      If this policy is set to 'NeverAutoHideShelf', the shelf never auto-hide.

      If you set this policy, users cannot change or override it.

      If the policy is left not set, users can choose whether the shelf should auto-hide.''',
    },
    {
      'name': 'UserDisplayName',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome_os:25-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': 'Policy User',
      'id': 169,
      'caption': '''Set the display name for device-local accounts''',
      'tags': [],
      'desc': '''Controls the account name <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> shows on the login screen for the corresponding device-local account.

      If this policy is set, the login screen will use the specified string in the picture-based login chooser for the corresponding device-local account.

      If the policy is left not set, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will use the device-local account's email account ID as the display name on the login screen.

      This policy is ignored for regular user accounts.''',
    },
    {
      'name': 'SessionLengthLimit',
      'type': 'int',
      'schema': { 'type': 'integer' },
      'supported_on': ['chrome_os:25-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': 3600000,
      'id': 170,
      'caption': '''Limit the length of a user session''',
      'tags': [],
      'desc': '''When this policy is set, it specifies the length of time after which a user is automatically logged out, terminating the session. The user is informed about the remaining time by a countdown timer shown in the system tray.

      When this policy is not set, the session length is not limited.

      If you set this policy, users cannot change or override it.

      The policy value should be specified in milliseconds. Values are clamped to a range of 30 seconds to 24 hours.''',
    },
    {
      'name': 'FullscreenAllowed',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.win:31-', 'chrome.linux:31-', 'chrome_os:31-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 240,
      'caption': '''Allow fullscreen mode''',
      'tags': [],
      'desc': '''This policy controls the availability of fullscreen mode in which all <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> UI is hidden and only web content is visible.

      If this policy is set to true or not not configured, the user, apps and extensions with appropriate permissions can enter fullscreen mode.

      If this policy is set to false, neither the user nor any apps or extensions can enter fullscreen mode.

      On all platforms except <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph>, kiosk mode is unavailable when fullscreen mode is disabled.''',
      'arc_support': 'This policy has no effect on the Android apps. They will be able to enter fullscreen mode even if this policy is set to <ph name="FALSE">False</ph>.',
    },
    {
      'name': 'ScreenDimDelayAC',
      'type': 'int',
      'schema': {
        'type': 'integer',
        'minimum': 0
      },
      'supported_on': ['chrome_os:26-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'deprecated': True,
      'example_value': 420000,
      'id': 172,
      'caption': '''Screen dim delay when running on AC power''',
      'tags': [],
      'desc': '''Specifies the length of time without user input after which the screen is dimmed when running on AC power.

          When this policy is set to a value greater than zero, it specifies the length of time that the user must remain idle before <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> dims the screen.

          When this policy is set to zero, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> does not dim the screen when the user becomes idle.

          When this policy is unset, a default length of time is used.

          The policy value should be specified in milliseconds. Values are clamped to be less than or equal the screen off delay (if set) and the idle delay.''',
    },
    {
      'name': 'ScreenOffDelayAC',
      'type': 'int',
      'schema': {
        'type': 'integer',
        'minimum': 0
      },
      'supported_on': ['chrome_os:26-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'deprecated': True,
      'example_value': 480000,
      'id': 173,
      'caption': '''Screen off delay when running on AC power''',
      'tags': [],
      'desc': '''Specifies the length of time without user input after which the screen is turned off when running on AC power.

          When this policy is set to a value greater than zero, it specifies the length of time that the user must remain idle before <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> turns off the screen.

          When this policy is set to zero, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> does not turn off the screen when the user becomes idle.

          When this policy is unset, a default length of time is used.

          The policy value should be specified in milliseconds. Values are clamped to be less than or equal the idle delay.''',
    },
    {
      'name': 'ScreenLockDelayAC',
      'type': 'int',
      'schema': {
        'type': 'integer',
        'minimum': 0
      },
      'supported_on': ['chrome_os:26-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'deprecated': True,
      'example_value': 600000,
      'id': 174,
      'caption': '''Screen lock delay when running on AC power''',
      'tags': [],
      'desc': '''Specifies the length of time without user input after which the screen is locked when running on AC power.

          When this policy is set to a value greater than zero, it specifies the length of time that the user must remain idle before <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> locks the screen.

          When this policy is set to zero, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> does not lock the screen when the user becomes idle.

          When this policy is unset, a default length of time is used.

          The recommended way to lock the screen on idle is to enable screen locking on suspend and have <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> suspend after the idle delay. This policy should only be used when screen locking should occur a significant amount of time sooner than suspend or when suspend on idle is not desired at all.

          The policy value should be specified in milliseconds. Values are clamped to be less than the idle delay.''',
    },
    {
      'name': 'IdleWarningDelayAC',
      'type': 'int',
      'schema': {
        'type': 'integer',
        'minimum': 0
      },
      'supported_on': ['chrome_os:27-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'deprecated': True,
      'example_value': 545000,
      'id': 197,
      'caption': '''Idle warning delay when running on AC power''',
      'tags': [],
      'desc': '''Specifies the length of time without user input after which a warning dialog is shown when running on AC power.

          When this policy is set, it specifies the length of time that the user must remain idle before <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> shows a warning dialog telling the user that the idle action is about to be taken.

          When this policy is unset, no warning dialog is shown.

          The policy value should be specified in milliseconds. Values are clamped to be less than or equal the idle delay.''',
    },
    {
      'name': 'IdleDelayAC',
      'type': 'int',
      'schema': {
        'type': 'integer',
        'minimum': 0
      },
      'supported_on': ['chrome_os:26-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'deprecated': True,
      'example_value': 1800000,
      'id': 175,
      'caption': '''Idle delay when running on AC power''',
      'tags': [],
      'desc': '''Specifies the length of time without user input after which the idle action is taken when running on AC power.

          When this policy is set, it specifies the length of time that the user must remain idle before <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> takes the idle action, which can be configured separately.

          When this policy is unset, a default length of time is used.

          The policy value should be specified in milliseconds.''',
    },
    {
      'name': 'ScreenDimDelayBattery',
      'type': 'int',
      'schema': {
        'type': 'integer',
        'minimum': 0
      },
      'supported_on': ['chrome_os:26-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'deprecated': True,
      'example_value': 300000,
      'id': 176,
      'caption': '''Screen dim delay when running on battery power''',
      'tags': [],
      'desc': '''Specifies the length of time without user input after which the screen is dimmed when running on battery power.

          When this policy is set to a value greater than zero, it specifies the length of time that the user must remain idle before <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> dims the screen.

          When this policy is set to zero, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> does not dim the screen when the user becomes idle.

          When this policy is unset, a default length of time is used.

          The policy value should be specified in milliseconds. Values are clamped to be less than or equal the screen off delay (if set) and the idle delay.''',
    },
    {
      'name': 'ScreenOffDelayBattery',
      'type': 'int',
      'schema': {
        'type': 'integer',
        'minimum': 0
      },
      'supported_on': ['chrome_os:26-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'deprecated': True,
      'example_value': 360000,
      'id': 177,
      'caption': '''Screen off delay when running on battery power''',
      'tags': [],
      'desc': '''Specifies the length of time without user input after which the screen is turned off when running on battery power.

          When this policy is set to a value greater than zero, it specifies the length of time that the user must remain idle before <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> turns off the screen.

          When this policy is set to zero, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> does not turn off the screen when the user becomes idle.

          When this policy is unset, a default length of time is used.

          The policy value should be specified in milliseconds. Values are clamped to be less than or equal the idle delay.''',
    },
    {
      'name': 'ScreenLockDelayBattery',
      'type': 'int',
      'schema': {
        'type': 'integer',
        'minimum': 0
      },
      'supported_on': ['chrome_os:26-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'deprecated': True,
      'example_value': 600000,
      'id': 178,
      'caption': '''Screen lock delay when running on battery power''',
      'tags': [],
      'desc': '''Specifies the length of time without user input after which the screen is locked when running on battery power.

          When this policy is set to a value greater than zero, it specifies the length of time that the user must remain idle before <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> locks the screen.

          When this policy is set to zero, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> does not lock the screen when the user becomes idle.

          When this policy is unset, a default length of time is used.

          The recommended way to lock the screen on idle is to enable screen locking on suspend and have <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> suspend after the idle delay. This policy should only be used when screen locking should occur a significant amount of time sooner than suspend or when suspend on idle is not desired at all.

          The policy value should be specified in milliseconds. Values are clamped to be less than the idle delay.''',
    },
    {
      'name': 'IdleWarningDelayBattery',
      'type': 'int',
      'schema': {
        'type': 'integer',
        'minimum': 0
      },
      'supported_on': ['chrome_os:27-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'deprecated': True,
      'example_value': 545000,
      'id': 198,
      'caption': '''Idle warning delay when running on battery power''',
      'tags': [],
      'desc': '''Specifies the length of time without user input after which a warning dialog is shown when running on battery power.

          When this policy is set, it specifies the length of time that the user must remain idle before <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> shows a warning dialog telling the user that the idle action is about to be taken.

          When this policy is unset, no warning dialog is shown.

          The policy value should be specified in milliseconds. Values are clamped to be less than or equal the idle delay.''',
    },
    {
      'name': 'IdleDelayBattery',
      'type': 'int',
      'schema': {
        'type': 'integer',
        'minimum': 0
      },
      'supported_on': ['chrome_os:26-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'deprecated': True,
      'example_value': 600000,
      'id': 179,
      'caption': '''Idle delay when running on battery power''',
      'tags': [],
      'desc': '''Specifies the length of time without user input after which the idle action is taken when running on battery power.

          When this policy is set, it specifies the length of time that the user must remain idle before <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> takes the idle action, which can be configured separately.

          When this policy is unset, a default length of time is used.

          The policy value should be specified in milliseconds.''',
    },
    {
      'name': 'IdleAction',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1, 2, 3 ],
      },
      'items': [
        {
          'name': 'IdleActionSuspend',
          'value': 0,
          'caption': '''Suspend''',
        },
        {
          'name': 'IdleActionLogout',
          'value': 1,
          'caption': '''Log the user out''',
        },
        {
          'name': 'IdleActionShutdown',
          'value': 2,
          'caption': '''Shut down''',
        },
        {
          'name': 'IdleActionDoNothing',
          'value': 3,
          'caption': '''Do nothing''',
        },
      ],
      'supported_on': ['chrome_os:26-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'deprecated': True,
      'example_value': 0,
      'id': 180,
      'caption': '''Action to take when the idle delay is reached''',
      'tags': [],
      'desc': '''Note that this policy is deprecated and will be removed in the future.

          This policy provides a fallback value for the more-specific <ph name="IDLE_ACTION_AC_POLICY_NAME">IdleActionAC</ph> and <ph name="IDLE_ACTION_BATTERY_POLICY_NAME">IdleActionBattery</ph> policies. If this policy is set, its value gets used if the respective more-specific policy is not set.

          When this policy is unset, behavior of the more-specific policies remains unaffected.''',
    },
    {
      'name': 'IdleActionAC',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1, 2, 3 ],
      },
      'items': [
        {
          'name': 'IdleActionSuspend',
          'value': 0,
          'caption': '''Suspend''',
        },
        {
          'name': 'IdleActionLogout',
          'value': 1,
          'caption': '''Log the user out''',
        },
        {
          'name': 'IdleActionShutdown',
          'value': 2,
          'caption': '''Shut down''',
        },
        {
          'name': 'IdleActionDoNothing',
          'value': 3,
          'caption': '''Do nothing''',
        },
      ],
      'supported_on': ['chrome_os:30-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'deprecated': True,
      'example_value': 0,
      'id': 226,
      'caption': '''Action to take when the idle delay is reached while running on AC power''',
      'tags': [],
      'desc': '''When this policy is set, it specifies the action that <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> takes when the user remains idle for the length of time given by the idle delay, which can be configured separately.

          When this policy is unset, the default action is taken, which is suspend.

          If the action is suspend, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> can separately be configured to either lock or not lock the screen before suspending.''',
    },
    {
      'name': 'IdleActionBattery',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1, 2, 3 ],
      },
      'items': [
        {
          'name': 'IdleActionSuspend',
          'value': 0,
          'caption': '''Suspend''',
        },
        {
          'name': 'IdleActionLogout',
          'value': 1,
          'caption': '''Log the user out''',
        },
        {
          'name': 'IdleActionShutdown',
          'value': 2,
          'caption': '''Shut down''',
        },
        {
          'name': 'IdleActionDoNothing',
          'value': 3,
          'caption': '''Do nothing''',
        },
      ],
      'supported_on': ['chrome_os:30-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'deprecated': True,
      'example_value': 0,
      'id': 222,
      'caption': '''Action to take when the idle delay is reached while running on battery power''',
      'tags': [],
      'desc': '''When this policy is set, it specifies the action that <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> takes when the user remains idle for the length of time given by the idle delay, which can be configured separately.

          When this policy is unset, the default action is taken, which is suspend.

          If the action is suspend, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> can separately be configured to either lock or not lock the screen before suspending.''',
    },
    {
      'name': 'LidCloseAction',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1, 2, 3 ],
      },
      'items': [
        {
          'name': 'LidCloseActionSuspend',
          'value': 0,
          'caption': '''Suspend''',
        },
        {
          'name': 'LidCloseActionLogout',
          'value': 1,
          'caption': '''Log the user out''',
        },
        {
          'name': 'LidCloseActionShutdown',
          'value': 2,
          'caption': '''Shut down''',
        },
        {
          'name': 'LidCloseActionDoNothing',
          'value': 3,
          'caption': '''Do nothing''',
        },
      ],
      'supported_on': ['chrome_os:26-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': 0,
      'id': 181,
      'caption': '''Action to take when the user closes the lid''',
      'tags': [],
      'desc': '''When this policy is set, it specifies the action that <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> takes when the user closes the device's lid.

          When this policy is unset, the default action is taken, which is suspend.

          If the action is suspend, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> can separately be configured to either lock or not lock the screen before suspending.''',
    },
    {
      'name': 'PowerManagementUsesAudioActivity',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:26-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': True,
      'id': 182,
      'caption': '''Specify whether audio activity affects power management''',
      'tags': [],
      'desc': '''If this policy is set to True or is unset, the user is not considered to be idle while audio is playing. This prevents the idle timeout from being reached and the idle action from being taken. However, screen dimming, screen off and screen lock will be performed after the configured timeouts, irrespective of audio activity.

          If this policy is set to False, audio activity does not prevent the user from being considered idle.''',
    },
    {
      'name': 'PowerManagementUsesVideoActivity',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:26-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': True,
      'id': 183,
      'caption': '''Specify whether video activity affects power management''',
      'tags': [],
      'desc': '''If this policy is set to True or is unset, the user is not considered to be idle while video is playing. This prevents the idle delay, screen dim delay, screen off delay and screen lock delay from being reached and the corresponding actions from being taken.

          If this policy is set to False, video activity does not prevent the user from being considered idle.''',
      'arc_support': 'Video playing in Android apps is not taken into consideration, even if this policy is set to <ph name="TRUE">True</ph>.',
    },
    {
      'name': 'PresentationIdleDelayScale',
      'type': 'int',
      'schema': { 'type': 'integer' },
      'supported_on': ['chrome_os:26-28'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'deprecated': True,
      'example_value': 200,
      'id': 184,
      'caption': '''Percentage by which to scale the idle delay in presentation mode (deprecated)''',
      'tags': [],
      'desc': '''This policy has been retired as of <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> version 29. Please use the PresentationScreenDimDelayScale policy instead.''',
    },
    {
      'name': 'PresentationScreenDimDelayScale',
      'type': 'int',
      'schema': { 'type': 'integer' },
      'supported_on': ['chrome_os:29-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': 200,
      'id': 220,
      'caption': '''Percentage by which to scale the screen dim delay in presentation mode''',
      'tags': [],
      'desc': '''Specifies the percentage by which the screen dim delay is scaled when the device is in presentation mode.

          If this policy is set, it specifies the percentage by which the screen dim delay is scaled when the device is in presentation mode. When the screen dim delay is scaled, the screen off, screen lock and idle delays get adjusted to maintain the same distances from the screen dim delay as originally configured.

          If this policy is unset, a default scale factor is used.

          The scale factor must be 100% or more. Values that would make the screen dim delay in presentation mode shorter than the regular screen dim delay are not allowed.''',
    },
    {
      'name': 'AllowWakeLocks',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:71-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': False,
      'id': 491,
      'caption': '''Allow wake locks''',
      'tags': [],
      'desc': '''Specifies whether wake locks are allowed. Wake locks can be requested by extensions via the power management extension API and by ARC apps.

          If this policy is set to true or left not set, wake locks will be honored for power management.

          If this policy is set to false, wake lock requests will get ignored.''',
    },
    {
      'name': 'AllowScreenWakeLocks',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:28-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': False,
      'id': 203,
      'caption': '''Allow screen wake locks''',
      'tags': [],
      'desc': '''Specifies whether screen wake locks are allowed. Screen wake locks can be requested by extensions via the power management extension API and by ARC apps.

          If this policy is set to true or left not set, screen wake locks will be honored for power management, unless AllowWakeLocks is set to false.

          If this policy is set to false, screen wake lock requests will be demoted to system wake lock requests.''',
    },
    {
      'name': 'UserActivityScreenDimDelayScale',
      'type': 'int',
      'schema': { 'type': 'integer' },
      'supported_on': ['chrome_os:29-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': 200,
      'id': 210,
      'caption': '''Percentage by which to scale the screen dim delay if the user becomes active after dimming''',
      'tags': [],
      'desc': '''Specifies the percentage by which the screen dim delay is scaled when user activity is observed while the screen is dimmed or soon after the screen has been turned off.

          If this policy is set, it specifies the percentage by which the screen dim delay is scaled when user activity is observed while the screen is dimmed or soon after the screen has been turned off. When the dim delay is scaled, the screen off, screen lock and idle delays get adjusted to maintain the same distances from the screen dim delay as originally configured.

          If this policy is unset, a default scale factor is used.

          The scale factor must be 100% or more.''',
    },
    {
      'name': 'WaitForInitialUserActivity',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:32-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': True,
      'id': 247,
      'caption': '''Wait for initial user activity''',
      'tags': [],
      'desc': '''Specifies whether power management delays and the session length limit should only start running after the first user activity has been observed in a session.

          If this policy is set to True, power management delays and the session length limit do not start running until after the first user activity has been observed in a session.

          If this policy is set to False or left unset, power management delays and the session length limit start running immediately on session start.''',
    },
    {
      'name': 'PowerManagementIdleSettings',
      'type': 'dict',
      'schema': {
        'type': 'object',
        'properties': {
          'AC': {
            'description': 'Delays and actions to take when the device is idle and running on AC power',
            'type': 'object',
            'id': 'PowerManagementDelays',
            'properties': {
              'Delays': {
                'type': 'object',
                'properties': {
                  'ScreenDim': {
                    'description': 'The length of time without user input after which the screen is dimmed, in milliseconds',
                    'type': 'integer',
                    'minimum': 0
                  },
                  'ScreenOff': {
                    'description': 'The length of time without user input after which the screen is turned off, in milliseconds',
                    'type': 'integer',
                    'minimum': 0
                  },
                  'IdleWarning': {
                    'description': 'The length of time without user input after which a warning dialog is shown, in milliseconds',
                    'type': 'integer',
                    'minimum': 0
                  },
                  'Idle': {
                    'description': 'The length of time without user input after which the idle action is taken, in milliseconds',
                    'type': 'integer',
                    'minimum': 0
                  }
                }
              },
              'IdleAction': {
                'description': 'Action to take when the idle delay is reached',
                'type': 'string',
                'enum': [ 'Suspend', 'Logout', 'Shutdown', 'DoNothing' ]
              }
            }
          },
          'Battery': {
            'description': 'Delays and actions to take when the device is idle and running on battery',
            '$ref': 'PowerManagementDelays'
          }
        }
      },
      'supported_on': ['chrome_os:35-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': {
        'AC': {
          'IdleAction': 'DoNothing'
        },
        'Battery': {
          'IdleAction': 'DoNothing',
          'Delays': {
            'ScreenDim': 10000,
            'ScreenOff': 20000,
            'IdleWarning': 5000,
            'Idle': 30000
          }
        }
      },
      'id': 258,
      'caption': '''Power management settings when the user becomes idle''',
      'tags': [],
      'desc': '''This policy controls multiple settings for the power management strategy when the user becomes idle.

          There are four types of action:
          * The screen will be dimmed if the user remains idle for the time specified by |ScreenDim|.
          * The screen will be turned off if the user remains idle for the time specified by |ScreenOff|.
          * A warning dialog will be shown if the user remains idle for the time specified by |IdleWarning|, telling the user that the idle action is about to be taken.
          * The action specified by |IdleAction| will be taken if the user remains idle for the time specified by |Idle|.

          For each of above actions, the delay should be specified in milliseconds, and needs to be set to a value greater than zero to trigger the corresponding action. In case the delay is set to zero, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will not take the corresponding action.

          For each of the above delays, when the length of time is unset, a default value will be used.

          Note that |ScreenDim| values will be clamped to be less than or equal to |ScreenOff|, |ScreenOff| and |IdleWarning| will be clamped to be less than or equal to |Idle|.

          |IdleAction| can be one of four possible actions:
          * |Suspend|
          * |Logout|
          * |Shutdown|
          * |DoNothing|

          When the |IdleAction| is unset, the default action is taken, which is suspend.

          There are also separate settings for AC power and battery.
          '''
    },
    {
      'name': 'ScreenLockDelays',
      'type': 'dict',
      'schema': {
        'type': 'object',
        'properties': {
          'AC': {
            'description': 'The length of time without user input after which the screen is locked when running on AC power, in milliseconds',
            'type': 'integer',
            'minimum': 0
          },
          'Battery': {
            'description': 'The length of time without user input after which the screen is locked when running on battery, in milliseconds',
            'type': 'integer',
            'minimum': 0
          }
        }
      },
      'supported_on': ['chrome_os:35-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': {
        'AC': 600000,
        'Battery': 300000
      },
      'id': 259,
      'caption': '''Screen lock delays''',
      'tags': [],
      'desc': '''Specifies the length of time without user input after which the screen is locked when running on AC power or battery.

          When the length of time is set to a value greater than zero, it represents the length of time that the user must remain idle before <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> locks the screen.

          When the length of time is set to zero, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> does not lock the screen when the user becomes idle.

          When the length of time is unset, a default length of time is used.

          The recommended way to lock the screen on idle is to enable screen locking on suspend and have <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> suspend after the idle delay. This policy should only be used when screen locking should occur a significant amount of time sooner than suspend or when suspend on idle is not desired at all.

          The policy value should be specified in milliseconds. Values are clamped to be less than the idle delay.''',
    },
    {
      'name': 'DeviceLoginScreenPowerManagement',
      'type': 'dict',
      'schema': {
        'type': 'object',
        'properties': {
          'AC': {
            'description': 'Power management settings applicable only when running on AC power',
            'type': 'object',
            'id': 'DeviceLoginScreenPowerSettings',
            'properties': {
              'Delays': {
                'type': 'object',
                'properties': {
                  'ScreenDim': {
                    'description': 'The length of time without user input after which the screen is dimmed, in milliseconds',
                    'type': 'integer',
                    'minimum': 0
                  },
                  'ScreenOff': {
                    'description': 'The length of time without user input after which the screen is turned off, in milliseconds',
                    'type': 'integer',
                    'minimum': 0
                  },
                  'Idle': {
                    'description': 'The length of time without user input after which the idle action is taken, in milliseconds',
                    'type': 'integer',
                    'minimum': 0
                  }
                }
              },
              'IdleAction': {
                'description': 'Action to take when the idle delay is reached',
                'type': 'string',
                'enum': [ 'Suspend', 'Shutdown', 'DoNothing' ]
              }
            }
          },
          'Battery': {
            'description': 'Power management settings applicable only when running on battery power',
            '$ref': 'DeviceLoginScreenPowerSettings'
          },
          'LidCloseAction': {
            'description': 'Action to take when the lid is closed',
            'type': 'string',
            'enum': [ 'Suspend', 'Shutdown', 'DoNothing' ]
          },
          'UserActivityScreenDimDelayScale': {
            'description': 'Percentage by which the screen dim delay is scaled when user activity is observed while the screen is dimmed or soon after the screen has been turned off',
            'type': 'integer',
            'minimum': 100
          }
        }
      },
      'supported_on': ['chrome_os:30-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': {
        'AC': {
          'IdleAction': 'DoNothing'
        },
        'Battery': {
          'IdleAction': 'DoNothing',
          'Delays': {
            'ScreenDim': 10000,
            'ScreenOff': 20000,
            'Idle': 30000
          }
        },
        'LidCloseAction': 'Suspend',
        'UserActivityScreenDimDelayScale': 110
      },
      'id': 225,
      'caption': '''Power management on the login screen''',
      'tags': [],
      'desc': '''Configure power management on the login screen in <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph>.

      This policy lets you configure how <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> behaves when there is no user activity for some amount of time while the login screen is being shown. The policy controls multiple settings. For their individual semantics and value ranges, see the corresponding policies that control power management within a session. The only deviations from these policies are:
      * The actions to take on idle or lid close cannot be to end the session.
      * The default action taken on idle when running on AC power is to shut down.

      If a setting is left unspecified, a default value is used.

      If this policy is unset, defaults are used for all settings.''',
    },
    {
      'name': 'DeviceAllowRedeemChromeOsRegistrationOffers',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:26-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': True,
      'id': 185,
      'caption': '''Allow users to redeem offers through Chrome OS Registration''',
      'tags': [],
      'desc': '''IT admins for enterprise devices can use this flag to control whether to allow users to redeem offers through Chrome OS Registration.

      If this policy is set to true or left not set, users will be able to redeem offers through Chrome OS Registration.

      If this policy is set to false, user will not be able to redeem offers.''',
    },
    {
      'name': 'TermsOfServiceURL',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome_os:26-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': 'https://www.example.com/terms_of_service.txt',
      'id': 186,
      'caption': '''Set the Terms of Service for a device-local account''',
      'tags': [],
      'desc': '''Sets the Terms of Service that the user must accept before starting a device-local account session.

      If this policy is set, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will download the Terms of Service and present them to the user whenever a device-local account session is starting. The user will only be allowed into the session after accepting the Terms of Service.

      If this policy is not set, no Terms of Service are shown.

      The policy should be set to a URL from which <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> can download the Terms of Service. The Terms of Service must be plain text, served as MIME type text/plain. No markup is allowed.''',
    },
    {
      'name': 'ShowAccessibilityOptionsInSystemTrayMenu',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:27-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 188,
      'caption': '''Show accessibility options in system tray menu''',
      'tags': [],
      'desc': '''If this policy is set to true, Accessibility options always appear in system tray menu.

          If this policy is set to false, Accessibility options never appear in system tray menu.

          If you set this policy, users cannot change or override it.

          If this policy is left unset, Accessibility options will not appear in the system tray menu, but the user can cause the Accessibility options to appear via the Settings page.'''
    },
    {
      'name': 'LargeCursorEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:29-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 211,
      'caption': '''Enable large cursor''',
      'tags': [],
      'desc': '''Enable the large cursor accessibility feature.

          If this policy is set to true, the large cursor will always be enabled.

          If this policy is set to false, the large cursor will always be disabled.

          If you set this policy, users cannot change or override it.

          If this policy is left unset, the large cursor is disabled initially but can be enabled by the user anytime.'''
    },
    {
      'name': 'SpokenFeedbackEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:29-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 212,
      'caption': '''Enable spoken feedback''',
      'tags': [],
      'desc': '''Enable the spoken feedback accessibility feature.

          If this policy is set to true, spoken feedback will always be enabled.

          If this policy is set to false, spoken feedback will always be disabled.

          If you set this policy, users cannot change or override it.

          If this policy is left unset, spoken feedback is disabled initially but can be enabled by the user anytime.'''
    },
    {
      'name': 'HighContrastEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:29-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 213,
      'caption': '''Enable high contrast mode''',
      'tags': [],
      'desc': '''Enable the high contrast mode accessibility feature.

          If this policy is set to true, high contrast mode will always be enabled.

          If this policy is set to false, high contrast mode will always be disabled.

          If you set this policy, users cannot change or override it.

          If this policy is left unset, high contrast mode is disabled initially but can be enabled by the user anytime.'''
    },
    {
      'name': 'VirtualKeyboardEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:34-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 255,
      'caption': '''Enable on-screen keyboard''',
      'tags': [],
      'desc': '''Enable the on-screen keyboard accessibility feature.

          If this policy is set to true, the on-screen keyboard will always be enabled.

          If this policy is set to false, the on-screen keyboard will always be disabled.

          If you set this policy, users cannot change or override it.

          If this policy is left unset, the on-screen keyboard is disabled initially but can be enabled by the user anytime.'''
    },
    {
      'name': 'KeyboardDefaultToFunctionKeys',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:35-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 260,
      'caption': '''Media keys default to function keys''',
      'tags': [],
      'desc': '''Changes the default behaviour of the top row keys to function keys.

          If this policy is set to true, the keyboard's top row of keys will produce function key commands per default. The search key has to be pressed to revert their behavior back to media keys.

          If this policy is set to false or left unset, the keyboard will produce media key commands per default and function key commands when the search key is held.'''
    },
    {
      'name': 'ScreenMagnifierType',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1 ],
      },
      'items': [
        {
          'name': 'None',
          'value': 0,
          'caption': '''Screen magnifier disabled''',
        },
        {
          'name': 'Full-screen',
          'value': 1,
          'caption': '''Full-screen magnifier enabled''',
        },
      ],
      'supported_on': ['chrome_os:29-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 1,
      'id': 214,
      'caption': '''Set screen magnifier type''',
      'tags': [],
      'desc': '''If this policy is set, it controls the type of screen magnifier that is enabled. Setting the policy to "None" disables the screen magnifier.

          If you set this policy, users cannot change or override it.

          If this policy is left unset, the screen magnifier is disabled initially but can be enabled by the user anytime.''',
    },
    {
      'name': 'DeviceLoginScreenDefaultLargeCursorEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:29-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': True,
      'id': 215,
      'caption': '''Set default state of the large cursor on the login screen''',
      'tags': [],
      'desc': '''Set the default state of the large cursor accessibility feature on the login screen.

          If this policy is set to true, the large cursor will be enabled when the login screen is shown.

          If this policy is set to false, the large cursor will be disabled when the login screen is shown.

          If you set this policy, users can temporarily override it by enabling or disabling the large cursor. However, the user's choice is not persistent and the default is restored whenever the login screen is shown anew or the user remains idle on the login screen for a minute.

          If this policy is left unset, the large cursor is disabled when the login screen is first shown. Users can enable or disable the large cursor anytime and its status on the login screen is persisted between users.''',
    },
    {
      'name': 'DeviceLoginScreenDefaultSpokenFeedbackEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:29-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': True,
      'id': 216,
      'caption': '''Set the default state of spoken feedback on the login screen''',
      'tags': [],
      'desc': '''Set the default state of the spoken feedback accessibility feature on the login screen.

          If this policy is set to true, spoken feedback will be enabled when the login screen is shown.

          If this policy is set to false, spoken feedback will be disabled when the login screen is shown.

          If you set this policy, users can temporarily override it by enabling or disabling spoken feedback. However, the user's choice is not persistent and the default is restored whenever the login screen is shown anew or the user remains idle on the login screen for a minute.

          If this policy is left unset, spoken feedback is disabled when the login screen is first shown. Users can enable or disable spoken feedback anytime and its status on the login screen is persisted between users.''',
    },
    {
      'name': 'DeviceLoginScreenDefaultHighContrastEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:29-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': True,
      'id': 217,
      'caption': '''Set the default state of high contrast mode on the login screen''',
      'tags': [],
      'desc': '''Set the default state of the high contrast mode accessibility feature on the login screen.

          If this policy is set to true, high contrast mode will be enabled when the login screen is shown.

          If this policy is set to false, high contrast mode will be disabled when the login screen is shown.

          If you set this policy, users can temporarily override it by enabling or disabling high contrast mode. However, the user's choice is not persistent and the default is restored whenever the login screen is shown anew or the user remains idle on the login screen for a minute.

          If this policy is left unset, high contrast mode is disabled when the login screen is first shown. Users can enable or disable high contrast mode anytime and its status on the login screen is persisted between users.''',
    },
    {
      'name': 'DeviceLoginScreenDefaultVirtualKeyboardEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:34-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': True,
      'id': 256,
      'caption': '''Set default state of the on-screen keyboard on the login screen''',
      'tags': [],
      'desc': '''Set the default state of the on-screen keyboard accessibility feature on the login screen.

          If this policy is set to true, the on-screen keyboard will be enabled when the login screen is shown.

          If this policy is set to false, the on-screen keyboard will be disabled when the login screen is shown.

          If you set this policy, users can temporarily override it by enabling or disabling the on-screen keyboard. However, the user's choice is not persistent and the default is restored whenever the login screen is shown anew or the user remains idle on the login screen for a minute.

          If this policy is left unset, the on-screen keyboard is disabled when the login screen is first shown. Users can enable or disable the on-screen keyboard anytime and its status on the login screen is persisted between users.''',
    },
    {
      'name': 'DeviceLoginScreenDefaultScreenMagnifierType',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1 ],
      },
      'items': [
        {
          'name': 'None',
          'value': 0,
          'caption': '''Screen magnifier disabled''',
        },
        {
          'name': 'Full-screen',
          'value': 1,
          'caption': '''Full-screen magnifier enabled''',
        },
      ],
      'supported_on': ['chrome_os:29-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': 1,
      'id': 218,
      'caption': '''Set the default screen magnifier type enabled on the login screen''',
      'tags': [],
      'desc': '''Set the default type of screen magnifier that is enabled on the login screen.

          If this policy is set, it controls the type of screen magnifier that is enabled when the login screen is shown. Setting the policy to "None" disables the screen magnifier.

          If you set this policy, users can temporarily override it by enabling or disabling the screen magnifier. However, the user's choice is not persistent and the default is restored whenever the login screen is shown anew or the user remains idle on the login screen for a minute.

          If this policy is left unset, the screen magnifier is disabled when the login screen is first shown. Users can enable or disable the screen magnifier anytime and its status on the login screen is persisted between users.''',
    },
    {
      'name': 'HideWebStoreIcon',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:26-', 'chrome_os:68-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 189,
      'caption': '''Hide the web store from the New Tab Page and app launcher''',
      'tags': [],
      'desc': '''Hide the Chrome Web Store app and footer link from the New Tab Page and <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> app launcher.

      When this policy is set to true, the icons are hidden.

      When this policy is set to false or is not configured, the icons are visible.''',
    },
    {
      'name': 'DeviceStartUpFlags',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome_os:27-65'],
      'device_only': True,
      'features': {
        'dynamic_refresh': False,
      },
      'deprecated': True,
      'example_value': [ "enable-managed-mode", "my-cool-flag" ],
      'id': 191,
      'caption': '''System wide flags to be applied on <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> start-up''',
      'tags': [],
      'desc': '''This policy is deprecated and removed in M66, because it was used only for internal testing and it is a security liability.

      Specifies the flags that should be applied to <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> when it starts. The specified flags are applied on the login screen only. Flags set via this policy do not propagate into user sessions.''',
    },
    {
      'name': 'UptimeLimit',
      'type': 'int',
      'schema': { 'type': 'integer' },
      'supported_on': ['chrome_os:29-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': 86400,
      'id': 192,
      'caption': '''Limit device uptime by automatically rebooting''',
      'tags': [],
      'desc': '''Limit the device uptime by scheduling automatic reboots.

      When this policy is set, it specifies the length of device uptime after which an automatic reboot is scheduled.

      When this policy is not set, the device uptime is not limited.

      If you set this policy, users cannot change or override it.

      An automatic reboot is scheduled at the selected time but may be delayed on the device by up to 24 hours if a user is currently using the device.

      Note: Currently, automatic reboots are only enabled while the login screen is being shown or a kiosk app session is in progress. This will change in the future and the policy will always apply, regardless of whether a session of any particular type is in progress or not.

      The policy value should be specified in seconds. Values are clamped to be at least 3600 (one hour).''',
    },
    {
      'name': 'RebootAfterUpdate',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:29-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': True,
      'id': 193,
      'caption': '''Automatically reboot after update''',
      'tags': [],
      'desc': '''Schedule an automatic reboot after a <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> update has been applied.

      When this policy is set to true, an automatic reboot is scheduled when a <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> update has been applied and a reboot is required to complete the update process. The reboot is scheduled immediately but may be delayed on the device by up to 24 hours if a user is currently using the device.

      When this policy is set to false, no automatic reboot is scheduled after applying a <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> update. The update process is completed when the user next reboots the device.

      If you set this policy, users cannot change or override it.

      Note: Currently, automatic reboots are only enabled while the login screen is being shown or a kiosk app session is in progress. This will change in the future and the policy will always apply, regardless of whether a session of any particular type is in progress or not.''',
    },
    {
      'name': 'VariationsRestrictParameter',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:27-', 'android:34-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': 'restricted',
      'id': 196,
      'future': True,
      'caption': '''Set the restriction on the fetching of the Variations seed''',
      'tags': [],
      'desc': '''Add a parameter to the fetching of the Variations seed in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      If specified, will add a query parameter called 'restrict' to the URL used to fetch the Variations seed. The value of the parameter will be the value specified in this policy.

      If not specified, will not modify the Variations seed URL.''',
    },
    {
      'name': 'DeviceVariationsRestrictParameter',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome_os:28-'],
      'features': {
        'dynamic_refresh': False,
      },
      'device_only': True,
      'example_value': 'restricted',
      'id': 199,
      'future': True,
      'caption': '''Set the restriction on the fetching of the Variations seed''',
      'tags': [],
      'desc': '''Add a parameter to the fetching of the Variations seed in <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph>.

      If specified, will add a query parameter called 'restrict' to the URL used to fetch the Variations seed. The value of the parameter will be the value specified in this policy.

      If not specified, will not modify the Variations seed URL.''',
    },
    {
      'name': 'AttestationEnabledForDevice',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:28-'],
      'supported_chrome_os_management': ['google_cloud'],
      'features': {
        'dynamic_refresh': True,
      },
      'device_only': True,
      'example_value': True,
      'id': 207,
      'caption': '''Enable remote attestation for the device''',
      'tags': [],
      'desc': '''If true, remote attestation is allowed for the device and a certificate will automatically be generated and uploaded to the Device Management Server.

          If it is set to false, or if it is not set, no certificate will be generated and calls to the enterprise.platformKeys extension API will fail.''',
    },
    {
      'name': 'AttestationEnabledForUser',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:28-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 200,
      'caption': '''Enable remote attestation for the user''',
      'tags': [],
      'desc': '''If true, the user can use the hardware on Chrome devices to remote attest its identity to the privacy CA via the <ph name="ENTERPRISE_PLATFORM_KEYS_API">Enterprise Platform Keys API</ph> using <ph name="CHALLENGE_USER_KEY_FUNCTION">chrome.enterprise.platformKeys.challengeUserKey()</ph>.

          If it is set to false, or if it is not set, calls to the API will fail with an error code.''',
    },
    {
      'name': 'AttestationExtensionWhitelist',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome_os:28-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['ghdilpkmfbfdnomkmaiogjhjnggaggoi'],
      'id': 201,
      'caption': '''Extensions allowed to to use the remote attestation API''',
      'tags': [],
      'desc': '''This policy specifies the allowed extensions to use the <ph name="ENTERPRISE_PLATFORM_KEYS_API">Enterprise Platform Keys API</ph> function <ph name="CHALLENGE_USER_KEY_FUNCTION">chrome.enterprise.platformKeys.challengeUserKey()</ph> for remote attestation. Extensions must be added to this list to use the API.

          If an extension is not in the list, or the list is not set, the call to the API will fail with an error code.''',
    },
    {
      'name': 'AttestationForContentProtectionEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:31-'],
      'supported_chrome_os_management': ['google_cloud'],
      'features': {
        'dynamic_refresh': True,
      },
      'device_only': True,
      'example_value': True,
      'id': 239,
      'caption': '''Enable the use of remote attestation for content protection for the device''',
      'tags': [],
      'desc': '''Chrome OS devices can use remote attestation (Verified Access) to get a certificate issued by the Chrome OS CA that asserts the device is eligible to play protected content.  This process involves sending hardware endorsement information to the Chrome OS CA which uniquely identifies the device.

          If this setting is false, the device will not use remote attestation for content protection and the device may be unable to play protected content.

          If this setting is true, or if it is not set, remote attestation may be used for content protection.''',
    },
    {
      'name': 'SuppressChromeFrameTurndownPrompt',
      'caption': '''Suppress the <ph name="PRODUCT_FRAME_NAME">$3<ex>Google Chrome Frame</ex></ph> turndown prompt''',
      'tags': [],
      'desc': '''Suppresses the turndown prompt that appears when a site is rendered by <ph name="PRODUCT_FRAME_NAME">$3<ex>Google Chrome Frame</ex></ph>.''',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_frame:29-32'],
      'features': {
        'dynamic_refresh': False,
      },
      'example_value': True,
      'id': 221,
    },
    {
      'name': 'ContentPackDefaultFilteringBehavior',
      'future': True,
      'deprecated': True,
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1, 2 ],
      },
      'items': [
        {
          'name': 'Allow',
          'value': 0,
          'caption': '''Allow access to sites outside of content packs''',
        },
        {
          'name': 'Warn',
          'value': 1,
          'caption': '''Warn when visiting sites outside of content packs''',
        },
        {
          'name': 'Block',
          'value': 2,
          'caption': '''Block access to sites outside of content packs''',
        },
      ],
      'supported_on': ['chrome.*:28-', 'chrome_os:28-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True
      },
      'example_value': 2,
      'id': 204,
      'caption': '''Default behavior for sites not in any content pack''',
      'tags': [],
      'desc': '''This policy is for internal use by <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> itself.''',
    },
    {
      'name': 'ContentPackManualBehaviorHosts',
      'future': True,
      'deprecated': True,
      'type': 'dict',
      'schema': {
        'type': 'object',
        'additionalProperties': {
          'type': 'boolean'
        }
      },
      'supported_on': ['chrome.*:28-', 'chrome_os:28-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True
      },
      'example_value': {
        'www.example.com': True,
        'moose.org': False
      },
      'id': 205,
      'caption': '''Managed user manual exception hosts''',
      'tags': [],
      'desc': '''A dictionary mapping hostnames to a boolean flag specifying whether access to the host should be allowed (true) or blocked (false).

          This policy is for internal use by <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> itself.''',
    },
    {
      'name': 'ContentPackManualBehaviorURLs',
      'future': True,
      'deprecated': True,
      'type': 'dict',
      'schema': {
        'type': 'object',
        'additionalProperties': {
          'type': 'boolean'
        }
      },
      'supported_on': ['chrome.*:28-', 'chrome_os:28-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True
      },
      'example_value': {
        'https://www.example.com': True,
        'https://moose.org': False
      },
      'id': 206,
      'caption': '''Managed user manual exception URLs''',
      'tags': [],
      'desc': '''A dictionary mapping URLs to a boolean flag specifying whether access to the host should be allowed (true) or blocked (false).

          This policy is for internal use by <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> itself.''',
    },
    {
      'name': 'SupervisedUsersEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'deprecated': True,
      'supported_on': ['chrome_os:29-70'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': False,
      },
      'example_value': True,
      'default_for_managed_devices_doc_only': False,
      'id': 219,
      'caption': '''Enable supervised users''',
      'tags': [],
      'desc': '''If set to true, supervised users can be created and used.

          If set to false or not configured, supervised-user creation and login will be disabled. All existing supervised users will be hidden.

          NOTE: The default behavior for consumer and enterprise devices differs: on consumer devices supervised users are enabled by default, but on enterprise devices they are disabled by default.'''
    },
    {
      'name': 'SupervisedUserCreationEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'deprecated': True,
      'supported_on': ['chrome.*:29-70'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 223,
      'caption': '''Enable creation of supervised users''',
      'tags': [],
      'desc': '''If set to false, supervised-user creation by this user will be disabled. Any existing supervised users will still be available.

          If set to true or not configured, supervised users can be created and managed by this user.'''
    },
    {
      # SupervisedUserContentProviderEnabled is never accessed through the policy framework, but is
      # instead directly accessed as an Android App Restriction (see SupervisedUserContentProvider.java).
      # It, however, needs to be here both because this is the source of the list of Chrome's App
      # Restrictions on Android, and to avoid possible future naming conflicts with policies.
      'name': 'SupervisedUserContentProviderEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'deprecated': True,
      'supported_on': ['android:49-70'],
      'features': {
        'dynamic_refresh': True,
        'per_profile' : True,
      },
      'example_value': True,
      'id': 312,
      'caption': '''Enable the supervised user content provider''',
      'tags': [],
      'desc': '''If true and the user is a supervised user then other Android apps can query the user's web restrictions through a content provider.

          If false or unset then the content provider returns no information.'''
    },
    {
      'name': 'ManagedBookmarks',
      'type': 'dict',
      'schema': {
        'type': 'array',
        'items': {
          'type': 'object',
          'id': 'BookmarkType',
          'properties': {
            'name': { 'type': 'string' },
            'url': { 'type': 'string' },
            'toplevel_name': { 'type': 'string' },
            'children': {
              'type': 'array',
              'items': { '$ref': 'BookmarkType' },
            },
          },
        },
      },
      'supported_on': [
        'android:30-',
        'chrome.*:37-',
        'chrome_os:37-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': [
        {
          "toplevel_name": "My managed bookmarks folder"
        }, {
          "name": "Google",
          "url": "google.com"
        }, {
          "name": "Youtube",
          "url": "youtube.com"
        }, {
          "name": "Chrome links",
          "children": [
            {
              "name": "Chromium",
              "url": "chromium.org"
            },
            {
              "name": "Chromium Developers",
              "url": "dev.chromium.org"
            }
          ]
        }
      ],
      'id': 227,
      'caption': '''Managed Bookmarks''',
      'tags': [],
      'desc': '''Configures a list of managed bookmarks.

      The policy consists of a list of bookmarks whereas each bookmark is a dictionary containing the keys "<ph name="NAME">name</ph>" and "<ph name="URL_LABEL">url</ph>" which hold the bookmark's name and its target. A subfolder may be configured by defining a bookmark without an "<ph name="URL_LABEL">url</ph>" key but with an additional "<ph name="CHILDREN">children</ph>" key which itself contains a list of bookmarks as defined above (some of which may be folders again). <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> amends incomplete URLs as if they were submitted via the Omnibox, for example "<ph name="GOOGLE_COM">google.com</ph>" becomes "<ph name="HTTPS_GOOGLE_COM">https://google.com/</ph>".

      These bookmarks are placed in a folder that can't be modified by the user (but the user can choose to hide it from the bookmark bar). By default the folder name is "Managed bookmarks" but it can be customized by adding to the list of bookmarks a dictionary containing the key "<ph name="TOPLEVEL_NAME">toplevel_name</ph>" with the desired folder name as the value.

      Managed bookmarks are not synced to the user account and can't be modified by extensions.''',
    },
    {
      'name': 'DataCompressionProxyEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['android:31-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 241,
      'caption': '''Enable the data compression proxy feature''',
      'tags': [],
      'desc': '''Enable or disable the data compression proxy and prevents users from changing this setting.

      If you enable or disable this setting, users cannot change or override this setting.

      If this policy is left not set, the data compression proxy feature will be available for the user to choose whether to use it or not.''',
    },
    {
      'name': 'UserAvatarImage',
      'type': 'external',
      'schema': {
        'type': 'object',
        'properties': {
          'url': { "type": "string" },
          'hash': { "type": "string" }
        },
      },
      'supported_on': ['chrome_os:34-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': { "url": "https://example.com/avatar.jpg", "hash": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef" },
      'max_size': 524288,
      'id': 249,
      'caption': '''User avatar image''',
      'tags': [],
      'desc': '''This policy allows you to configure the avatar image representing the user on the login screen. The policy is set by specifying the URL from which <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> can download the avatar image and a cryptographic hash used to verify the integrity of the download. The image must be in JPEG format, its size must not exceed 512kB. The URL must be accessible without any authentication.

      The avatar image is downloaded and cached. It will be re-downloaded whenever the URL or the hash changes.

      The policy should be specified as a string that expresses the URL and hash in JSON format, conforming to the following schema:
      {
        "type": "object",
        "properties": {
          "url": {
            "description": "The URL from which the avatar image can be downloaded.",
            "type": "string"
          },
          "hash": {
            "description": "The SHA-256 hash of the avatar image.",
            "type": "string"
          }
        }
      }

      If this policy is set, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will download and use the avatar image.

      If you set this policy, users cannot change or override it.

      If the policy is left not set, the user can choose the avatar image representing them on the login screen.''',
    },
    {
      'name': 'WallpaperImage',
      'type': 'external',
      'schema': {
        'type': 'object',
        'properties': {
          'url': { "type": "string" },
          'hash': { "type": "string" }
        },
      },
      'supported_on': ['chrome_os:35-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': { "url": "https://example.com/wallpaper.jpg", "hash": "baddecafbaddecafbaddecafbaddecafbaddecafbaddecafbaddecafbaddecaf" },
      'max_size': 16777216,
      'id': 262,
      'caption': '''Wallpaper image''',
      'tags': [],
      'desc': '''This policy allows you to configure the wallpaper image that is shown on the desktop and on the login screen background for the user. The policy is set by specifying the URL from which <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> can download the wallpaper image and a cryptographic hash used to verify the integrity of the download. The image must be in JPEG format, its file size must not exceed 16MB. The URL must be accessible without any authentication.

      The wallpaper image is downloaded and cached. It will be re-downloaded whenever the URL or the hash changes.

      The policy should be specified as a string that expresses the URL and hash in JSON format, conforming to the following schema:
      {
        "type": "object",
        "properties": {
          "url": {
            "description": "The URL from which the wallpaper image can be downloaded.",
            "type": "string"
          },
          "hash": {
            "description": "The SHA-256 hash of the wallpaper image.",
            "type": "string"
          }
        }
      }

      If this policy is set, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will download and use the wallpaper image.

      If you set this policy, users cannot change or override it.

      If the policy is left not set, the user can choose an image to be shown on the desktop and on the login screen background.''',
    },
    {
      'name': 'EnableDeprecatedWebPlatformFeatures',
      'type': 'string-enum-list',
      'schema': {
        'type': 'array',
        'items': {
          'type': 'string',
          'enum': [
            'ExampleDeprecatedFeature_EffectiveUntil20080902'
          ],
        },
      },
      'items': [
        {
          'name': 'ExampleDeprecatedFeature',
          'value': 'ExampleDeprecatedFeature_EffectiveUntil20080902',
          'caption': '''Enable ExampleDeprecatedFeature API through 2008/09/02''',
        }
      ],
      'supported_on': ['chrome.*:37-', 'chrome_os:37-', 'android:37-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['ExampleDeprecatedFeature_EffectiveUntil20080902'],
      'id': 270,
      'caption': '''Enable deprecated web platform features for a limited time''',
      'tags': ['system-security'],
      'desc': '''Specify a list of deprecated web platform features to re-enable temporarily.

      This policy gives administrators the ability to re-enable deprecated web platform features for a limited time. Features are identified by a string tag and the features corresponding to the tags included in the list specified by this policy will get re-enabled.

      If this policy is left not set, or the list is empty or does not match one of the supported string tags, all deprecated web platform features will remain disabled.

      While the policy itself is supported on the above platforms, the feature it is enabling may be available on fewer platforms. Not all deprecated Web Platform features can be re-enabled. Only the ones explicitly listed below can be for a limited period of time, which is different per feature. The general format of the string tag will be [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd]. As reference, you can find the intent behind the Web Platform feature changes at https://bit.ly/blinkintents.
      ''',
    },
    {
      'name': 'DeviceTransferSAMLCookies',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:38-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': True,
      'id': 271,
      'caption': '''Transfer SAML IdP cookies during login''',
      'tags': [],
      'desc': '''Specifies whether authentication cookies set by a SAML IdP during login should be transferred to the user's profile.

      When a user authenticates via a SAML IdP during login, cookies set by the IdP are written to a temporary profile at first. These cookies can be transferred to the user's profile to carry forward the authentication state.

      When this policy is set to true, cookies set by the IdP are transferred to the user's profile every time they authenticate against the SAML IdP during login.

      When this policy is set to false or unset, cookies set by the IdP are transferred to the user's profile during their first login on a device only.

      This policy affects users whose domain matches the device's enrollment domain only. For all other users, cookies set by the IdP are transferred to the user's profile during their first login on the device only.''',
      'arc_support': 'Cookies transferred to the user\'s profile are not accessible to Android apps.',
    },
    {
      'name': 'EasyUnlockAllowed',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:38-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'default_for_enterprise_users': False,
      'id': 272,
      'caption': '''Allow Smart Lock to be used''',
      'tags': [],
      'desc': '''If you enable this setting, users will be allowed to use Smart Lock if the requirements for the feature are satisfied.

      If you disable this setting, users will not be allowed to use Smart Lock.

      If this policy is left not set, the default is not allowed for enterprise-managed users and allowed for non-managed users.''',
    },
    {
      'name': 'SessionLocales',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome_os:38-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['de', 'fr'],
      'id': 274,
      'caption': '''Set the recommended locales for a managed session''',
      'tags': [],
      'desc': '''Sets one or more recommended locales for a managed session, allowing users to easily choose one of these locales.

      The user can choose a locale and a keyboard layout before starting a managed session. By default, all locales supported by <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> are listed in alphabetic order. You can use this policy to move a set of recommended locales to the top of the list.

      If this policy is not set, the current UI locale will be pre-selected.

      If this policy is set, the recommended locales will be moved to the top of the list and will be visually separated from all other locales. The recommended locales will be listed in the order in which they appear in the policy. The first recommended locale will be pre-selected.

      If there is more than one recommended locale, it is assumed that users will want to select among these locales. Locale and keyboard layout selection will be prominently offered when starting a managed session. Otherwise, it is assumed that most users will want to use the pre-selected locale. Locale and keyboard layout selection will be less prominently offered when starting a managed session.

      When this policy is set and automatic login is enabled (see the |DeviceLocalAccountAutoLoginId| and |DeviceLocalAccountAutoLoginDelay| policies), the automatically started managed session will use the first recommended locale and the most popular keyboard layout matching this locale.

      The pre-selected keyboard layout will always be the most popular layout matching the pre-selected locale.

      This policy can only be set as recommended. You can use this policy to move a set of recommended locales to the top but users are always allowed to choose any locale supported by <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> for their session.
      ''',
    },
    {
      'name': 'BrowserGuestModeEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:38-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': True,
      'id': 275,
      'caption': '''Enable guest mode in browser''',
      'tags': [],
      'desc': '''If this policy is set to true or not configured, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will enable guest logins. Guest logins are <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> profiles where all windows are in incognito mode.

      If this policy is set to false, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will not allow guest profiles to be started.''',
    },
    {
      'name': 'BrowserAddPersonEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:39-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': True,
      'id': 276,
      'caption': '''Enable add person in user manager''',
      'tags': [],
      'desc': '''If this policy is set to true or not configured, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will allow Add Person from the user manager.

      If this policy is set to false, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will not allow creation of new profiles from the user manager.''',
    },
    {
      'name': 'ForceBrowserSignin',
      'type': 'main',
      'deprecated': True,
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.win:64-', 'chrome.mac:66-', 'android:65-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': False,
      'id': 346,
      'caption': '''Enable force sign in for <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>''',
      'tags': [],
      'desc': '''This policy is deprecated, consider using BrowserSignin instead.

      If this policy is set to true, user has to sign in to <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> with their profile before using the browser. And the default value of BrowserGuestModeEnabled will be set to false. Note that existing unsigned profiles will be locked and inaccessible after enabling this policy. For more information, see help center article.

      If this policy is set to false or not configured, user can use the browser without sign in to <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.''',
    },
    {
      'name': 'BrowserSignin',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1, 2 ],
      },
      'items': [
        {
          'name': 'Disable',
          'value': 0,
          'caption': '''Disable browser sign-in''',
        },
        {
          'name': 'Enable',
          'value': 1,
          'caption': '''Enable browser sign-in''',
        },
        {
          'name': 'Force',
          'value': 2,
          'caption': '''Force users to sign-in to use the browser''',
        },
      ],
      'supported_on': ['chrome.*:70-', 'android:70-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False
      },
      'example_value': 2,
      'id': 487,
      'caption': '''Browser sign in settings''',
      'tags': [],
      'desc': '''This policy controls the sign-in behavior of the browser. It allows you to specify if the user can sign in to <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> with their account and use account related services like Chrome sync.

      If the policy is set to "Disable browser sign-in" then the user can not sign in to the browser and use account based services. In this case browser level features like Chrome sync can not be used and will be unavailable. If the user was signed in and the policy is set "Disabled" they will be signed out the next time they run Chrome but their local profile data like bookmarks, passwords etc. will stay preserved. The user will still be able to sign into and use Google web services like Gmail.

      If the policy is set to "Enable browser sign-in," then the user is allowed to sign in to the browser and is automatically signed in to the browser when signed in to Google web services like Gmail. Being signed in to the browser means the user's account information will be kept by the browser. However, it does not mean that Chrome sync will be turned on per default; the user must separately opt-in to use this feature. Enabling this policy will prevent the user from turning off the setting that allows browser sign-in. To control the availability of Chrome sync, use the "SyncDisabled" policy.

      If the policy is set to "Force browser sign-in" the user is presented with an account selection dialog and has to choose and sign in to an account to use the browser. This ensures that for managed accounts the policies associated with the account are applied and enforced. By default this turns on Chrome sync for the account, except for the case when sync was disabled by the domain admin or via the "SyncDisabled" policy. The default value of BrowserGuestModeEnabled will be set to false. Note that existing unsigned profiles will be locked and inaccessible after enabling this policy. For more information, see help center article: https://support.google.com/chrome/a/answer/7572556.

      If this policy is not set then the user can decide if they want to enable the browser sign in option and use it as they see fit.''',
    },
    {
      'name': 'SSLVersionMin',
      'type': 'string-enum',
      'schema': {
        'type': 'string',
        'enum': [
          'tls1',
          'tls1.1',
          'tls1.2',
        ],
      },
      'items': [
        {
          'name': 'TLSv1',
          'value': 'tls1',
          'caption': 'TLS 1.0',
        },
        {
          'name': 'TLSv1.1',
          'value': 'tls1.1',
          'caption': 'TLS 1.1',
        },
        {
          'name': 'TLSv1.2',
          'value': 'tls1.2',
          'caption': 'TLS 1.2',
        },
      ],
      'supported_on': [
        'chrome.*:66-',
        'chrome_os:66-',
        'android:66-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': 'tls1',
      'id': 279,
      'caption': '''Minimum SSL version enabled''',
      'tags': [],
      'desc': '''If this policy is not configured then <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> uses a default minimum version which is TLS 1.0.

      Otherwise it may be set to one of the following values: "tls1", "tls1.1" or "tls1.2". When set, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will not use SSL/TLS versions less than the specified version. An unrecognized value will be ignored.''',
    },
    {
      'name': 'SSLVersionFallbackMin',
      'type': 'string-enum',
      'schema': {
        'type': 'string',
        'enum': [
          'tls1.1',
          'tls1.2',
        ],
      },
      'items': [
        {
          'name': 'TLSv1.1',
          'value': 'tls1.1',
          'caption': 'TLS 1.1',
        },
        {
          'name': 'TLSv1.2',
          'value': 'tls1.2',
          'caption': 'TLS 1.2',
        },
      ],
      'supported_on': [
        'chrome.*:50-52',
        'chrome_os:50-52',
        'android:50-52',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'deprecated': True,
      'example_value': 'tls1.1',
      'id': 280,
      'caption': '''Minimum TLS version to fallback to''',
      'tags': ['system-security'],
      'desc': '''Warning: The TLS version fallback will be removed from <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> after version 52 (around September 2016) and this policy will stop working then.

      When a TLS handshake fails, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> would previously retry the connection with a lesser version of TLS in order to work around bugs in HTTPS servers. This setting configures the version at which this fallback process will stop. If a server performs version negotiation correctly (i.e. without breaking the connection) then this setting doesn't apply. Regardless, the resulting connection must still comply with SSLVersionMin.

      If this policy is not configured or if it is set to "tls1.2" then <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> no longer performs this fallback. Note this does not disable support for older TLS versions, only whether <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will work around buggy servers which cannot negotiate versions correctly.

      Otherwise, if compatibility with a buggy server must be maintained, this policy may be set to "tls1.1". This is a stopgap measure and the server should be rapidly fixed.''',
    },
    {
      'name': 'SSLVersionMax',
      'type': 'string-enum',
      'schema': {
        'type': 'string',
        'enum': [
          'tls1.2',
          'tls1.3',
        ],
      },
      'items': [
        {
          'name': 'TLSv1.2',
          'value': 'tls1.2',
          'caption': 'TLS 1.2',
        },
        {
          'name': 'TLSv1.3',
          'value': 'tls1.3',
          'caption': 'TLS 1.3',
        },
      ],
      'supported_on': [
        'chrome.*:58-74',
        'chrome_os:58-74',
        'android:58-74',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': 'tls1.2',
      'id': 361,
      'caption': '''Maximum SSL version enabled''',
      'tags': ['system-security'],
      'desc': '''Warning: The max TLS version policy will be entirely removed from <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> around version 75 (around June 2019).

      If this policy is not configured then <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> uses the default maximum version.

      Otherwise it may be set to one of the following values: "tls1.2" or "tls1.3". When set, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will not use SSL/TLS versions greater than the specified version. An unrecognized value will be ignored.''',
    },
    {
      'name': 'CertificateTransparencyEnforcementDisabledForUrls',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': [
        'chrome.*:53-',
        'chrome_os:53-',
        'android:53-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': ['example.com', '.example.com'],
      'id': 335,
      'caption': '''Disable Certificate Transparency enforcement for a list of URLs''',
      'tags': ['system-security'],
      'desc': '''Disables enforcing Certificate Transparency requirements to the listed URLs.

      This policy allows certificates for the hostnames in the specified URLs to not be disclosed via Certificate Transparency. This allows certificates that would otherwise be untrusted, because they were not properly publicly disclosed, to continue to be used, but makes it harder to detect misissued certificates for those hosts.

      A URL pattern is formatted according to https://www.chromium.org/administrators/url-blacklist-filter-format. However, because certificates are valid for a given hostname independent of the scheme, port, or path, only the hostname portion of the URL is considered. Wildcard hosts are not supported.

      If this policy is not set, any certificate that is required to be disclosed via Certificate Transparency will be treated as untrusted if it is not disclosed according to the Certificate Transparency policy.''',
    },
    {
      'name': 'CertificateTransparencyEnforcementDisabledForCas',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': [
        'chrome.*:67-',
        'chrome_os:67-',
        'android:67-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['sha256/AAAAAAAAAAAAAAAAAAAAAA==', 'sha256//////////////////////w=='],
      'id': 435,
      'caption': '''Disable Certificate Transparency enforcement for a list of subjectPublicKeyInfo hashes''',
      'tags': ['system-security'],
      'desc': '''Disables enforcing Certificate Transparency requirements for a list of subjectPublicKeyInfo hashes.

      This policy allows disabling Certificate Transparency disclosure requirements for certificate chains that contain certificates with one of the specified subjectPublicKeyInfo hashes. This allows certificates that would otherwise be untrusted, because they were not properly publicly disclosed, to continue to be used for Enterprise hosts.

      In order for Certificate Transparency enforcement to be disabled when this policy is set, one of the following conditions must be met:
      1. The hash is of the server certificate's subjectPublicKeyInfo.
      2. The hash is of a subjectPublicKeyInfo that appears in a CA certificate in the certificate chain, that CA certificate is constrained via the X.509v3 nameConstraints extension, one or more directoryName nameConstraints are present in the permittedSubtrees, and the directoryName contains an organizationName attribute.
      3. The hash is of a subjectPublicKeyInfo that appears in a CA certificate in the certificate chain, the CA certificate has one or more organizationName attributes in the certificate Subject, and the server's certificate contains the same number of organizationName attributes, in the same order, and with byte-for-byte identical values.

      A subjectPublicKeyInfo hash is specified by concatenating the hash algorithm name, the "/" character, and the Base64 encoding of that hash algorithm applied to the DER-encoded subjectPublicKeyInfo of the specified certificate. This Base64 encoding is the same format as an SPKI Fingerprint, as defined in RFC 7469, Section 2.4. Unrecognized hash algorithms are ignored. The only supported hash algorithm at this time is "sha256".

      If this policy is not set, any certificate that is required to be disclosed via Certificate Transparency will be treated as untrusted if it is not disclosed according to the Certificate Transparency policy.''',
    },
    {
      'name': 'CertificateTransparencyEnforcementDisabledForLegacyCas',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': [
        'chrome.*:67-',
        'chrome_os:67-',
        'android:67-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['sha256/AAAAAAAAAAAAAAAAAAAAAA==', 'sha256//////////////////////w=='],
      'id': 436,
      'caption': '''Disable Certificate Transparency enforcement for a list of Legacy Certificate Authorities''',
      'tags': ['system-security'],
      'desc': '''Disables enforcing Certificate Transparency requirements for a list of Legacy Certificate Authorities.

      This policy allows disabling Certificate Transparency disclosure requirements for certificate chains that contain certificates with one of the specified subjectPublicKeyInfo hashes. This allows certificates that would otherwise be untrusted, because they were not properly publicly disclosed, to continue to be used for Enterprise hosts.

      In order for Certificate Transparency enforcement to be disabled when this policy is set, the hash must be of a subjectPublicKeyInfo appearing in a CA certificate that is recognized as a Legacy Certificate Authority (CA). A Legacy CA is a CA that has been publicly trusted by default one or more operating systems supported by <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>, but is not trusted by the Android Open Source Project or <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph>.

      A subjectPublicKeyInfo hash is specified by concatenating the hash algorithm name, the "/" character, and the Base64 encoding of that hash algorithm applied to the DER-encoded subjectPublicKeyInfo of the specified certificate. This Base64 encoding is the same format as an SPKI Fingerprint, as defined in RFC 7469, Section 2.4. Unrecognized hash algorithms are ignored. The only supported hash algorithm at this time is "sha256".

      If this policy is not set, any certificate that is required to be disclosed via Certificate Transparency will be treated as untrusted if it is not disclosed according to the Certificate Transparency policy.''',
    },
    {
      'name': 'RC4Enabled',
      'type': 'main',
      'schema': {
        'type': 'boolean',
      },
      'supported_on': [
        'chrome.*:48-52',
        'chrome_os:48-52',
        'android:48-52',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'deprecated': True,
      'example_value': False,
      'id': 310,
      'caption': '''Whether RC4 cipher suites in TLS are enabled''',
      'tags': ['system-security'],
      'desc': '''Warning: RC4 will be completely removed from <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> after version 52 (around September 2016) and this policy will stop working then.

      If the policy is not set, or is set to false, then RC4 cipher suites in TLS will not be enabled. Otherwise it may be set to true to retain compatibility with an outdated server. This is a stopgap measure and the server should be reconfigured.''',
    },
    {
      'name': 'DHEEnabled',
      'type': 'main',
      'schema': {
        'type': 'boolean',
      },
      'supported_on': [
        'chrome.*:53-57',
        'chrome_os:53-57',
        'android:53-57',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'deprecated': True,
      'example_value': False,
      'id': 334,
      'caption': '''Whether DHE cipher suites in TLS are enabled''',
      'tags': ['system-security'],
      'desc': '''Warning: DHE will be completely removed from <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> after version 57 (around March 2017) and this policy will stop working then.

      If the policy is not set, or is set to false, then DHE cipher suites in TLS will not be enabled. Otherwise it may be set to true to enable DHE cipher suites and retain compatibility with an outdated server. This is a stopgap measure and the server should be reconfigured.

      Servers are encouraged to migrated to ECDHE cipher suites. If these are unavailable, ensure a cipher suite using RSA key exchange is enabled.''',
    },
    {
      'name': 'ContextualSearchEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': [
        'android:40-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 281,
      'caption': '''Enable Tap to Search''',
      'tags': [],
      'desc': '''Enables the availability of Tap to Search in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>'s content view.

      If you enable this setting, Tap to Search will be available to the user and they can choose to turn the feature on or off.

      If you disable this setting, Tap to Search will be disabled completely.

      If this policy is left not set, it is equivalent to being enabled, see description above.''',
    },
    {
      'name': 'DeviceRebootOnShutdown',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:41-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': True,
      'id': 284,
      'caption': '''Automatic reboot on device shutdown''',
      'tags': [],
      'desc': '''If this policy is set to false or not configured, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will allow the user to shut down the device.
      If this policy is set to true, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will trigger a reboot when the user shuts down the device. <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> replaces all occurrences of shutdown buttons in the UI by reboot buttons. If the user shuts down the device using the power button, it will not automatically reboot, even if the policy is enabled.''',
    },
    {
      'name': 'ExtensionCacheSize',
      'type': 'int',
      'schema': { 'type': 'integer' },
      'supported_on': ['chrome_os:43-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': False,
      },
      'example_value': 104857600,
      'id': 296,
      'caption': '''Set Apps and Extensions cache size (in bytes)''',
      'tags': [],
      'desc': '''<ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> caches Apps and Extensions for installation by multiple users of a single device to avoid re-downloading them for each user.
      If this policy is not configured or the value is lower than 1 MB, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will use the default cache size.''',
      'arc_support': 'The cache is not used for Android apps. If multiple users install the same Android app, it will be downloaded anew for each user.',
    },
    {
      'name': 'DeviceLoginScreenDomainAutoComplete',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': [ 'chrome_os:44-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': 'students.school.edu',
      'id': 297,
      'caption': '''Enable domain name autocomplete during user sign in''',
      'tags': [],
      'desc': '''If this policy is set to a blank string or not configured, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will not show an autocomplete option during user sign-in flow.
      If this policy is set to a string representing a domain name, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will show an autocomplete option during user sign-in allowing the user to type in only their user name without the domain name extension.  The user will be able to overwrite this domain name extension.''',
    },
    {
      'name': 'ForceMaximizeOnFirstRun',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:43-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': True,
      },
      'example_value': True,
      'id': 298,
      'caption': '''Maximize the first browser window on first run''',
      'tags': [],
      'desc': '''If this policy is set to true, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will unconditionally maximize the first window shown on first run.
      If this policy is set to false or not configured, the decision whether to maximize the first window shown will be based on the screen size.''',
    },
    {
      'name': 'SSLErrorOverrideAllowed',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:44-', 'chrome_os:44-', 'android:44-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 300,
      'caption': '''Allow proceeding from the SSL warning page''',
      'tags': [],
      'desc': '''Chrome shows a warning page when users navigate to sites that have SSL errors. By default or when this policy is set to true, users are allowed to click through these warning pages.
      Setting this policy to false disallows users to click through any warning page.''',
    },
    {
      'name': 'QuicAllowed',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:43-', 'chrome_os:43-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': True,
      'id': 301,
      'caption': '''Allow QUIC protocol''',
      'tags': [],
      'desc': '''If this policy is set to true or not set usage of QUIC protocol in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> is allowed.
      If this policy is set to false usage of QUIC protocol is disallowed.''',
    },
    {
      'name': 'KeyPermissions',
      'type': 'dict',
      'schema': {
        'type': 'object',
        'additionalProperties': {
          'type': 'object',
          'properties': {
            'allowCorporateKeyUsage': {
              'description': '''If set to true, this extension can use all keys that are designated for corporate usage to sign arbitrary data. If set to false, it cannot access any such keys and the user cannot grant such permission either.''',
              'type': 'boolean',
            },
          },
        },
      },
      'supported_on': ['chrome_os:45-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': {
        'extension1': {
          'allowCorporateKeyUsage': True
        },
        'extension2': {
          'allowCorporateKeyUsage': False
        }
      },
      'id': 302,
      'caption': 'Key Permissions',
      'tags': [],
      'desc': '''Grants access to corporate keys to extensions.

      Keys are designated for corporate usage if they're generated using the chrome.enterprise.platformKeys API on a managed account. Keys imported or generated in another way are not designated for corporate usage.

      Access to keys designated for corporate usage is solely controlled by this policy. The user can neither grant nor withdraw access to corporate keys to or from extensions.

      By default an extension cannot use a key designated for corporate usage, which is equivalent to setting allowCorporateKeyUsage to false for that extension.

      Only if allowCorporateKeyUsage is set to true for an extension, it can use any platform key marked for corporate usage to sign arbitrary data. This permission should only be granted if the extension is trusted to secure access to the key against attackers.''',
      'arc_support': 'Android apps cannot get access to corporate keys. This policy has no effect on them.',
    },
    {
      'name': 'WelcomePageOnOSUpgradeEnabled',
      'supported_on': ['chrome.win:45-'],
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'id': 303,
      'caption': 'Enable showing the welcome page on the first browser launch following OS upgrade',
      'tags': [],
      'desc': '''If this policy is set to true or not configured, the browser will re-show the welcome page on the first launch following an OS upgrade.

      If this policy is set to false, the browser will not re-show the welcome page on the first launch following an OS upgrade.''',
      'features': {
        'dynamic_refresh': False,
        'per_profile': False
      },
      'example_value': False
    },
    {
      'name': 'HardwareAccelerationModeEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:46-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': True,
      'id': 304,
      'caption': '''Use hardware acceleration when available''',
      'tags': [],
      'desc': '''If this policy is set to true or left unset, hardware acceleration will be enabled unless a certain GPU feature is blacklisted.

      If this policy is set to false, hardware acceleration will be disabled.''',
    },
    {
      'name': 'UnifiedDesktopEnabledByDefault',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:47-'],
      'features': {
        'can_be_recommended': False,
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': True,
      'id': 307,
      'caption': '''Make Unified Desktop available and turn on by default''',
      'tags': [],
      'desc': '''If this policy is set to true, Unified Desktop is allowed and
      enabled by default, which allows applications to span multiple displays.
      The user may disable Unified Desktop for individual displays by unchecking
      it in the display settings.

      If this policy is set to false or unset, Unified Desktop will be
      disabled. In this case, the user cannot enable the feature.''',
    },
    {
      'name': 'DisplayRotationDefault',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1, 2, 3 ],
      },
      'items': [
        {
          'name': 'ROTATE_0',
          'value': 0,
          'caption': '''Rotate screen by 0 degrees''',
        },
        {
          'name': 'ROTATE_90',
          'value': 1,
          'caption': '''Rotate screen clockwise by 90 degrees''',
        },
        {
          'name': 'ROTATE_180',
          'value': 2,
          'caption': '''Rotate screen by 180 degrees''',
        },
        {
          'name': 'ROTATE_270',
          'value': 3,
          'caption': '''Rotate screen clockwise by 270 degrees''',
        },
      ],
      'supported_on': ['chrome_os:48-'],
      'device_only': True,
      'features': {
        'can_be_recommended': False,
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': 1,
      'id': 311,
      'caption': '''Set default display rotation, reapplied on every reboot''',
      'tags': [],
      'desc': '''If this policy is set, each display is rotated to the
      specified orientation on every reboot, and the first time it is connected
      after the policy value has changed. Users may change the display
      rotation via the settings page after logging in, but their
      setting will be overridden by the policy value at the next reboot.

      This policy applies to both the primary and all secondary displays.

      If the policy is not set, the default value is 0 degrees and the user is
      free to change it. In this case, the default value is not reapplied at
      restart.''',
    },
    {
      'name': 'ArcEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:50-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': False,
      'id': 317,
      'default_for_enterprise_users': False,
      'caption': '''Enable ARC''',
      'tags': [],
      'desc':
      '''When this policy is set to true, ARC will be enabled for the user
      (subject to additional policy settings checks - ARC will still be
      unavailable if either ephemeral mode or multiple sign-in is enabled
      in the current user session).

      If this setting is disabled or not configured then enterprise users are
      unable to use ARC.''',
    },
    {
      'name': 'ArcPolicy',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome_os:50-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': '{"applications":[{"packageName":"com.google.android.gm","installType":"FORCE_INSTALLED"},{"packageName":"com.google.android.apps.docs","installType":"PRELOAD"}]}',
      'id': 318,
      'caption': '''Configure ARC''',
      'tags': [],
      'desc':
      '''Specifies a set of policies that will be handed over to the ARC runtime. The value must be valid JSON.

      This policy can be used to configure which Android apps are automatically installed on the device:

      {
        "type": "object",
        "properties": {
          "applications": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "packageName": {
                  "description": "Android app identifier, e.g. \"com.google.android.gm\" for Gmail",
                  "type": "string"
                },
                "installType": {
                  "description": "Specifies how an app is installed. OPTIONAL: The app is not installed automatically, but the user can install it. This is the default if this policy is not specified. PRELOAD: The app is installed automatically, but the user can uninstall it. FORCE_INSTALLED: The app is installed automatically and the user cannot uninstall it. BLOCKED: The app is blocked and cannot be installed. If the app was installed under a previous policy it will be uninstalled.",
                  "type": "string",
                  "enum": [
                    "OPTIONAL",
                    "PRELOAD",
                    "FORCE_INSTALLED",
                    "BLOCKED"
                  ]
                },
                "defaultPermissionPolicy": {
                  "description": "Policy for granting permission requests to apps. PERMISSION_POLICY_UNSPECIFIED: Policy not specified. If no policy is specified for a permission at any level, then the `PROMPT` behavior is used by default. PROMPT: Prompt the user to grant a permission. GRANT: Automatically grant a permission. DENY: Automatically deny a permission.",
                  "type": "string",
                  "enum": [
                    "PERMISSION_POLICY_UNSPECIFIED",
                    "PROMPT",
                    "GRANT",
                    "DENY"
                  ]
                },
                "managedConfiguration": {
                  "description": "App-specific JSON configuration object with a set of key-value pairs, e.g. '\"managedConfiguration\": { \"key1\": value1, \"key2\": value2 }'. The keys are defined in the app manifest.",
                  "type": "object"
                }
              }
            }
          }
        }
      }

      To pin apps to the launcher, see PinnedLauncherApps.'''
    },
    {
      'name': 'AllowKioskAppControlChromeVersion',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:51-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': True,
      'id': 319,
      'caption': '''Allow the auto launched with zero delay kiosk app to control <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> version''',
      'tags': ['system-security'],
      'desc': '''Whether to allow the auto launched with zero delay kiosk app to control <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> version.

      This policy controls whether to allow the auto launched with zero delay kiosk app to control <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> version by declaring a required_platform_version in its manifest and use it as the auto update target version prefix.

      If the policy is set to true, the value of required_platform_version manifest key of the auto launched with zero delay kiosk app is used as auto update target version prefix.

      If the policy is not configured or set to false, the required_platform_version manifest key is ignored and auto update proceeds as normal.

      Warning: It is not recommended to delegate control of the <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> version to a kiosk app as it may prevent the device from receiving software updates and critical security fixes. Delegating control of the <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> version might leave users at risk.''',
      'arc_support': 'If the kiosk app is an Android app, it will have no control over the <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> version, even if this policy is set to <ph name="TRUE">True</ph>.',
    },
    {
      'name': 'LoginAuthenticationBehavior',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1, 2 ],
      },
      'items': [
        {
          'name': 'GAIA',
          'value': 0,
          'caption': '''Authentication via the default GAIA flow''',
        },
        {
          'name': 'SAML_INTERSTITIAL',
          'value': 1,
          'caption': '''Redirect to SAML IdP after user confirmation''',
        },
      ],
      'supported_on': ['chrome_os:51-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': 0,
      'id': 321,
      'caption': '''Configure the login authentication behavior''',
      'tags': [],
      'desc': '''When this policy is set, the login authentication flow will be in one of the following ways depending on the value of the setting:

      If set to GAIA, login will be done via the normal GAIA authentication flow.

      If set to SAML_INTERSTITIAL, login will show an interstitial screen offering the user to go forward with authentication via the SAML IdP of the device's enrollment domain, or go back to the normal GAIA login flow.'''
    },
    {
      'name': 'UsbDetachableWhitelist',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': {
          'type': 'object',
          'id': 'UsbDeviceId',
          'properties': {
            'vendor_id': { 'type': 'integer' },
            'product_id': { 'type': 'integer' },
          },
        },
      },
      'supported_on': ['chrome_os:51-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': False,
      },
      'example_value': [
        {
          'vendor_id' : 1027,
          'product_id' : 24577,
        },
        {
          'vendor_id' : 16700,
          'product_id' : 8453,
        }
      ],
      'id': 322,
      'caption': '''Whitelist of USB detachable devices''',
      'tags': ['system-security'],
      'desc': '''Defines the list of USB devices that are allowed to be detached from their kernel driver in order to be used through the chrome.usb API directly inside a web application. Entries are pairs of USB Vendor Identifier and Product Identifier to identify a specific hardware.

      If this policy is not configured, the list of a detachable USB devices is empty.''',
    },
    {
      'name': 'DeviceAllowBluetooth',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:52-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': False,
      },
      'example_value': True,
      'id': 323,
      'caption': '''Allow bluetooth on device''',
      'tags': [],
      'desc': '''If this policy is set to false, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will disable Bluetooth and the user cannot enable it back.

      If this policy is set to true or left unset, the user will be able to enable or disable Bluetooth as they wish.

      If this policy is set, the user cannot change or override it.

      After enabling Bluetooth, the user must log out and log back in for the changes to take effect (no need for this when disabling Bluetooth).''',
    },
    {
      'name': 'SuppressUnsupportedOSWarning',
      'caption': '''Suppress the unsupported OS warning''',
      'desc': '''Suppresses the warning that appears when <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> is running on a computer or operating system that is no longer supported.''',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:49-','chrome_os:49-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': True,
      'tags': ['system-security'],
      'id': 324,
    },
    {
      'name': 'DeviceQuirksDownloadEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:51-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': True,
      'id': 325,
      'caption': '''Enable queries to Quirks Server for hardware profiles''',
      'tags': [],
      'desc':
      '''The Quirks Server provides hardware-specific configuration files, like
      ICC display profiles to adjust monitor calibration.

      When this policy is set to false, the device will not attempt to
      contact the Quirks Server to download configuration files.

      If this policy is true or not configured then <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will automatically contact the Quirks Server and download configuration files, if available, and store them on the device.  Such files might, for example, be used to improve display quality of attached monitors.''',
    },
    {
      'name': 'SystemTimezoneAutomaticDetection',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1, 2, 3, 4 ],
      },
      'items': [
        {
          'name': 'TimezoneAutomaticDetectionUsersDecide',
          'value': 0,
          'caption': '''Let users decide''',
        },
        {
          'name': 'TimezoneAutomaticDetectionDisabled',
          'value': 1,
          'caption': '''Never auto-detect timezone''',
        },
        {
          'name': 'TimezoneAutomaticDetectionIPOnly',
          'value': 2,
          'caption': '''Always use coarse timezone detection''',
        },
        {
          'name': 'TimezoneAutomaticDetectionSendWiFiAccessPoints',
          'value': 3,
          'caption': '''Always send WiFi access-points to server while resolving timezone''',
        },
        {
          'name': 'TimezoneAutomaticDetectionSendAllLocationInfo',
          'value': 4,
          'caption': '''Always send any available location signals to the server while resolving timezone''',
        },
      ],
      'supported_on': ['chrome_os:53-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': 0,
      'id': 326,
      'caption': '''Configure the automatic timezone detection method''',
      'tags': ['google-sharing'],
      'desc': '''When this policy is set, automatic timezone detection flow will be in one of the following ways depending on the value of the setting:

      If set to TimezoneAutomaticDetectionUsersDecide, users would be able to control automatic timezone detection using normal controls in chrome://settings.

      If set to TimezoneAutomaticDetectionDisabled, automatic timezone controls in chrome://settings will be disabled. Automatic timezone detection will be always off.

      If set to TimezoneAutomaticDetectionIPOnly, timezone controls in chrome://settings will be disabled. Automatic timezone detection will be always on. Timezone detection will use IP-only method to resolve location.

      If set to TimezoneAutomaticDetectionSendWiFiAccessPoints, timezone controls in chrome://settings will be disabled. Automatic timezone detection will be always on. The list of visible WiFi access-points will be always sent to Geolocation API server for fine-grained timezone detection.

      If set to TimezoneAutomaticDetectionSendAllLocationInfo, timezone controls in chrome://settings will be disabled. Automatic timezone detection will be always on. Location information (such as WiFi access-points, reachable Cell Towers, GPS) will be sent to a server for fine-grained timezone detection.

      If this policy is not set, it will behave as if TimezoneAutomaticDetectionUsersDecide is set.

      If SystemTimezone policy is set, it overrides this policy. In this case automatic timezone detection is completely disabled.''',
    },
    {
      'name': 'TaskManagerEndProcessEnabled',
      'caption': '''Enable ending processes in Task Manager''',
      'desc': '''If set to false, the 'End process' button is disabled in the Task Manager.

      If set to true or not configured, the user can end processes in the Task Manager.''',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:52-','chrome_os:52-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': True,
      'tags': [],
      'id': 327,
    },
    {
      'name': 'NetworkThrottlingEnabled',
      'device_only': True,
      'caption': '''Enable throttling network bandwidth''',
      'desc': '''Allows enabling or disabling network throttling.
      This applies to all users, and to all interfaces on the device. Once set,
      the throttling persists until the policy is changed to disable it.

      If set to false, there is no throttling.
      If set to true, the system is throttled to achieve the provided upload and download rates (in kbits/s).''',
      'type': 'dict',
      'schema': {
        'type': 'object',
        'properties': {
          'enabled': {
            'description': 'A boolean flag indicating if throttling is enabled.',
            'type': 'boolean'
          },
          'upload_rate_kbits': {
            'description': 'Desired upload rate in kbits/s.',
            'type': 'integer'
          },
          'download_rate_kbits': {
            'description': 'Desired download rate in kbits/s.',
            'type': 'integer'
          }
        },
        'required': ['enabled', 'upload_rate_kbits', 'download_rate_kbits']
      },
      'supported_on': ['chrome_os:56-'],
      'supported_chrome_os_management': ['google_cloud'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': {'enabled': True, 'upload_rate_kbits': 5600, 'download_rate_kbits': 5600},
      'tags': [],
      'id': 351,
    },
    {
      'name': 'DeviceWiFiFastTransitionEnabled',
      'device_only': True,
      'caption': '''Enable 802.11r Fast Transition''',
      'desc': '''Allows enabling or disabling Fast Transition.
      This applies to all users, and to all interfaces on the device.
      In order for Fast Transition to be used, both this setting and the per-network ONC property need to be enabled.
      Once set, Fast Transition persists until the policy is changed to disable it.

      If this policy is not set or set to false, Fast Transition is not used.
      If set to true, Fast Transition is used when the wireless access point supports it.''',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:72-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': True,
      'tags': [],
      'id': 501,
    },
    {
      'name': 'LoginVideoCaptureAllowedUrls',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome_os:52-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': [ "https://example.com" ],
      'id': 328,
      'caption': '''URLs that will be granted access to video capture devices on SAML login pages''',
      'tags': ['website-sharing'],
      'desc': '''Patterns in this list will be matched against the security
      origin of the requesting URL.  If a match is found, access to video
      capture devices will be granted on SAML login pages.  If no match is
      found, access will be automatically denied.  Wildcard patterns are not
      allowed.'''
    },
    {
      'name': 'DeviceLoginScreenAppInstallList',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome_os:60-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': ['gbchcmhmhahfdphkhkmpfmihenigjmpp;https://clients2.google.com/service/update2/crx'],
      'id': 336,
      'caption': '''Configure the list of installed apps on the login screen''',
      'tags': ['full-admin-access'],
      'desc': '''
      Specifies a list of apps that are installed silently on the login screen,
      without user interaction, and which cannot be uninstalled.
      All permissions requested by the apps are granted
      implicitly, without user interaction, including any additional
      permissions requested by future versions of the app.

      Note that, for security and privacy reasons, extensions are not allowed to be installed using this policy. Moreover, the devices on the Stable channel will only install the apps that belong to the whitelist bundled into <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>. Any items that don't conform to these conditions will be ignored.

      If an app that previously had been force-installed is removed from this list, it is automatically uninstalled by <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      Each list item of the policy is a string that contains an extension ID and an "update" URL separated by a semicolon (<ph name="SEMICOLON">;</ph>). The extension ID is the 32-letter string found e.g. on <ph name="CHROME_EXTENSIONS_LINK">chrome://extensions</ph> when in developer mode. The "update" URL should point to an Update Manifest XML document as described at <ph name="LINK_TO_EXTENSION_DOC1">https://developer.chrome.com/extensions/autoupdate</ph>. Note that the "update" URL set in this policy is only used for the initial installation; subsequent updates of the extension employ the update URL indicated in the extension's manifest.

      For example, <ph name="EXTENSION_POLICY_EXAMPLE">gbchcmhmhahfdphkhkmpfmihenigjmpp;https://clients2.google.com/service/update2/crx</ph> installs the <ph name="EXTENSION_POLICY_EXAMPLE_EXTENSION_NAME">Chrome Remote Desktop</ph> app from the standard Chrome Web Store "update" URL. For more information about hosting extensions, see: <ph name="LINK_TO_EXTENSION_DOC2">https://developer.chrome.com/extensions/hosting</ph>.''',
    },
    {
      'name': 'AllowScreenLock',
      'caption': '''Permit locking the screen''',
      'desc': '''If this policy is set to false, users will not be able to lock the screen (only signing out from the user session will be possible). If this setting is set to true or not set, users who authenticated with a password can lock the screen.''',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:52-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': False,
      'tags': [],
      'id': 329,
    },
    {
      'name': 'ArcCertificatesSyncMode',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1 ],
      },
      'items': [
        {
          'name': 'SyncDisabled',
          'value': 0,
          'caption': '''Disable usage of <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> certificates to ARC-apps''',
        },
        {
          'name': 'CopyCaCerts',
          'value': 1,
          'caption': '''Enable <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> CA certificates to ARC-apps'''
        },
      ],
      'supported_on': ['chrome_os:52-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': 0,
      'id': 330,
      'caption': '''Set certificate availability for ARC-apps''',
      'tags': ['system-security'],
      'desc': '''If set to SyncDisabled or not configured, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> certificates are not available for ARC-apps.

      If set to CopyCaCerts, all ONC-installed CA certificates with <ph name="WEB_TRUSTED_BIT">Web TrustBit</ph> are available for ARC-apps.''',
    },
    {
      'name': 'AllowedDomainsForApps',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:51-', 'chrome_os:51-', 'android:51-'],
      'features': {
        'can_be_recommended': False,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'managedchrome.com,example.com',
      'id': 331,
      'caption': '''Define domains allowed to access G Suite''',
      'tags': ['filtering'],
      'desc': '''Enables <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>'s restricted log in feature in G Suite and prevents users from changing this setting.

      If you define this setting, the user will only be able to access Google
      Apps using accounts from the specified domains (note that to allow
      gmail.com/googlemail.com accounts, you should add "consumer_accounts"
      (without quotes) to the list of domains).

      This setting will prevent the user from logging in, and adding a Secondary
      Account, on a managed device that requires Google authentication, if that
      account does not belong to the aforementioned list of allowed domains.

      If you leave this setting empty/not-configured, the user will be able to
      access G Suite with any account.

      This policy causes the X-GoogApps-Allowed-Domains header to be appended to
      all HTTP and HTTPS requests to all google.com domains, as described in
      https://support.google.com/a/answer/1668854.

      Users cannot change or override this setting.''',
    },
    {
      'name': 'PacHttpsUrlStrippingEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': [ 'chrome.*:52-74', 'chrome_os:52-74' ],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': True,
      'id': 332,
      'caption': '''Enable PAC URL stripping (for https://)''',
      'tags': ['system-security'],
      'desc': '''Strips privacy and security sensitive parts of https:// URLs before passing them on to PAC scripts (Proxy Auto Config) used by <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> during proxy resolution.

      When True, the security feature is enabled, and https:// URLs are
      stripped before submitting them to a PAC script. In this manner the PAC
      script is not able to view data that is ordinarily protected by an
      encrypted channel (such as the URL's path and query).

      When False, the security feature is disabled, and PAC scripts are
      implicitly granted the ability to view all components of an https://
      URL. This applies to all PAC scripts regardless of origin (including
      those fetched over an insecure transport, or discovered insecurely
      through WPAD).

      This defaults to True (security feature enabled).

      It is recommended that this be set to True. The only reason to set it to
      False is if it causes a compatibility problem with existing PAC scripts.

      The policy will be removed in M75.''',
    },
    {
      'name': 'EnableMediaRouter',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:52-', 'chrome_os:52-', 'android:52-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': True,
      },
      'example_value': True,
      'id': 333,
      'caption': '''Enable <ph name="PRODUCT_NAME">Google Cast</ph>''',
      'tags': [],
      'desc': '''If this policy is set to true or is not set, <ph name="PRODUCT_NAME">Google Cast</ph> will be enabled, and users will be able to launch it from the app menu, page context menus, media controls on Cast-enabled websites, and (if shown) the Cast toolbar icon.

          If this policy set to false, <ph name="PRODUCT_NAME">Google Cast</ph> will be disabled.'''
    },
    {
      'name': 'ShowCastIconInToolbar',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:58-', 'chrome_os:58-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': True,
      },
      'example_value': False,
      'id': 362,
      'caption': '''Show the <ph name="PRODUCT_NAME">Google Cast</ph> toolbar icon''',
      'tags': [],
      'desc': '''If this policy is set to true, the Cast toolbar icon will always be shown on the toolbar or the overflow menu, and users will not be able to remove it.

          If this policy is set to false or is not set, users will be able to pin or remove the icon via its contextual menu.

          If the policy "EnableMediaRouter" is set to false, then this policy's value would have no effect, and the toolbar icon would not be shown.'''
    },
    {
      'name': 'MediaRouterCastAllowAllIPs',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:67-', 'chrome_os:67-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': False,
      'id': 437,
      'caption': '''Allow <ph name="PRODUCT_NAME">Google Cast</ph> to connect to Cast devices on all IP addresses.''',
      'tags': [],
      'desc': '''If this policy is set to true, <ph name="PRODUCT_NAME">Google Cast</ph> will connect to Cast devices on all IP addresses, not just RFC1918/RFC4193 private addresses.

          If this policy is set to false, <ph name="PRODUCT_NAME">Google Cast</ph> will connect to Cast devices on RFC1918/RFC4193 private addresses only.

          If this policy is not set, <ph name="PRODUCT_NAME">Google Cast</ph> will connect to Cast devices on RFC1918/RFC4193 private addresses only, unless the CastAllowAllIPs feature is enabled.

          If the policy "EnableMediaRouter" is set to false, then this policy's value would have no effect.'''
    },
    {
      'name': 'ArcBackupRestoreEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:53-67'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': False,
      'id': 337,
      'caption': '''Enable Android Backup Service''',
      'tags': ['google-sharing'],
      'desc':
      '''This policy was removed in <ph name="PRODUCT_NAME">$2<ex>Google Chrome OS</ex></ph> 68 and replaced by <ph name="ARC_BR_POLICY_NAME">ArcBackupRestoreServiceEnabled</ph>.''',
    },
    {
      'name': 'ArcLocationServiceEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:57-67'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': False,
      'id': 363,
      'caption': '''Enable Android Google Location Service''',
      'tags': ['google-sharing'],
      'desc':
      '''This policy was removed in <ph name="PRODUCT_NAME">$2<ex>Google Chrome OS</ex></ph> 68 and replaced by <ph name="ARC_GLS_POLICY_NAME">ArcGoogleLocationServicesEnabled</ph>.''',
    },
    {
      'name': 'NTPContentSuggestionsEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['android:54-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 338,
      'default_for_enterprise_users': False,
      'caption': '''Show content suggestions on the New Tab page''',
      'tags': [],
      'desc':
      '''If this is set to true or not set, the New Tab page may show content suggestions based on the user's browsing history, interests, or location.

      If this is set to false, automatically-generated content suggestions are not shown on the New Tab page.''',
    },
    {
      'name': 'WebRtcUdpPortRange',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:54-', 'chrome_os:54-', 'android:54-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': True,
      },
      'example_value': '10000-11999',
      'id': 339,
      'caption': '''Restrict the range of local UDP ports used by WebRTC''',
      'tags': [],
      'desc': '''If the policy is set, the UDP port range used by WebRTC is restricted to the specified port interval (endpoints included).

      If the policy is not set, or if it is set to the empty string or an invalid port range, WebRTC is allowed to use any available local UDP port.''',
    },
    {
      'name': 'WebRestrictionsAuthority',
      'id': 341,
      'type': 'string',
      'schema' : { 'type': 'string' },
      'tags': ['filtering', 'admin-sharing'],
      'supported_on': ['webview_android:54-'],
      'future': True,
      'caption': '''Set an external source of URL restrictions''',
      'desc' : '''When this policy is set to a non-empty string the WebView will read URL restrictions from the content provider with the given authority name.''',
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': 'com.android.chrome.SupervisedUserProvider'
    },
    {
      'name': 'ComponentUpdatesEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:54-', 'chrome_os:54-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': True,
      'id': 342,
      'caption': '''Enable component updates in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>''',
      'tags': [],
      'desc': '''Enables component updates for all components in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> when not set or set to True.

      If set to False, updates to components are disabled. However, some components are exempt from this policy: updates to any component that does not contain executable code, or does not significantly alter the behavior of the browser, or is critical for its security will not be disabled.
      Examples of such components include the certificate revocation lists and Safe Browsing data.
      See https://developers.google.com/safe-browsing for more info on Safe Browsing.''',
    },
    {
      'name': 'NativePrinters',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'validation_schema': {
        'type': 'array',
        'items': {
          'type': 'object',
          'id': 'PrinterType',
          'properties': {
            'display_name': { 'type': 'string' },
            'description': { 'type': 'string' },
            'manufacturer': { 'type': 'string' },
            'model': { 'type': 'string' },
            'uri': { 'type': 'string' },
            'uuid': { 'type': 'string' },
            'ppd_resource': {
              'type': 'object',
              'id': 'PpdResource',
              'properties': {
                'effective_model': { 'type': 'string' }
              }
            }
          }
        }
      },
      'supported_on': [ 'chrome_os:57-' ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      # example_value is split onto multiple lines here for readability, but the
      # 'type': 'list' above means that each element has to fit inside a single-
      # line textbox in the GPO UI - so the example string is a single line.
      'example_value': [
        '{ '
        '"display_name": "Color Laser", '
        '"description": "The printer next to the water cooler.", '
        '"manufacturer": "Printer Manufacturer", '
        '"model": "Color Laser 2004", '
        '"uri": "ipps://print-server.intranet.example.com:443/ipp/cl2k4", '
        '"uuid": "1c395fdb-5d93-4904-b246-b2c046e79d12", '
        '"ppd_resource": { "effective_model": "Printer Manufacturer ColorLaser2k4" } '
        '}'
      ],
      'id': 350,
      'caption': '''Native Printing''',
      'tags': [],
      'desc': '''Configures a list of printers.

      This policy allows administrators to provide printer configurations for
      their users.

      <ph name="PRINTER_DISPLAY_NAME">display_name</ph> and <ph name="PRINTER_DESCRIPTION">description</ph> are free-form strings that can be customized for ease of printer selection. <ph name="PRINTER_MANUFACTURER">manufacturer</ph> and <ph name="PRINTER_MODEL">model</ph> serve to ease printer identification by end users. They represent the manufacturer and model of the printer. <ph name="PRINTER_URI">uri</ph> should be an address reachable from a client computer including the <ph name="URI_SCHEME">scheme</ph>, <ph name="URI_PORT">port</ph>, and <ph name="URI_QUEUE">queue</ph>. <ph name="PRINTER_UUID">uuid</ph> is optional. If provided, it is used to help deduplicate <ph name="ZEROCONF_DISCOVERY">zeroconf</ph> printers.

      <ph name="PRINTER_EFFECTIVE_MODEL">effective_model</ph> must match one of the strings which represent a <ph name="PRODUCT_NAME">$2<ex>Google Chrome OS</ex></ph> supported printer. The string will be used to identify and install the appropriate PPD for the printer. More information can be found at https://support.google.com/chrome?p=noncloudprint.

      Printer setup is completed upon the first use of a printer.  PPDs are not downloaded until the printer is used.  After that time, frequently used PPDs are cached.

      This policy has no effect on whether users can configure printers on individual devices.  It is intended to be supplementary to the configuration of printers by individual users.

      For Active Directory managed devices this policy supports expansion of <ph name="MACHINE_NAME_VARIABLE">${MACHINE_NAME[,pos[,count]]}</ph> to the Active Directory machine name or a substring of it. For example, if the machine name is <ph name="MACHINE_NAME_EXAMPLE">CHROMEBOOK</ph>, then <ph name="MACHINE_NAME_VARIABLE_EXAMPLE">${MACHINE_NAME,6,4}</ph> would be replaced by the 4 characters starting after the 6th position, i.e. <ph name="MACHINE_NAME_PART_EXAMPLE">BOOK</ph>. Note that the position is zero-based.
      ''',
    },
    {
      'name': 'NativePrintersBulkConfiguration',
      'id': 382,
      'type': 'external',
      'schema': {
        'type': 'object',
        'properties': {
          'url': { 'type': 'string' },
          'hash': { 'type': 'string' }
        },
      },
      'supported_on': ['chrome_os:65-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': {
        "url": "https://example.com/printerpolicy",
        "hash": "deadbeefdeadbeefdeadbeefdeadbeefdeafdeadbeefdeadbeef"
      },
      'max_size': 5242880,
      'caption': '''Enterprise printer configuration file''',
      'tags': [],
      'desc': '''Provides configurations for enterprise printers.

      This policy allows you to provide printer configurations to <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> devices.  The format is the same as the NativePrinters dictionary, with an additional required "id" or "guid" field per printer for whitelisting or blacklisting.

      The size of the file must not exceed 5MB and must be encoded in JSON.  It is estimated that a file containing approximately 21,000 printers will encode as a 5MB file.  The cryptographic hash is used to verify the integrity of the download.

      The file is downloaded and cached. It will be re-downloaded whenever the URL or the hash changes.

      If this policy is set, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will download the file for printer configurations and make printers available in accordance with <ph name="BULK_PRINTERS_ACCESS_MODE">NativePrintersBulkAccessMode</ph>, <ph name="BULK_PRINTERS_WHITELIST">NativePrintersBulkWhitelist</ph>, and <ph name="BULK_PRINTERS_BLACKLIST">NativePrintersBulkBlacklist</ph>.

      If you set this policy, users cannot change or override it.

      This policy has no effect on whether users can configure printers on individual devices.  It is intended to be supplementary to the configuration of printers by individual users.
      ''',
    },
    {
      'name': 'NativePrintersBulkAccessMode',
      'id': 383,
      'supported_on': ['chrome_os:65-'],
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1, 2 ],
      },
      'items': [
        {
          'name': 'BlacklistRestriction',
          'value': 0,
          'caption': '''All printers are shown except those in the blacklist.''',
        },
        {
          'name': 'WhitelistPrintersOnly',
          'value': 1,
          'caption': '''Only printers in the whitelist are shown to users''',
        },
        {
          'name': 'AllowAll',
          'value': 2,
          'caption': '''Allow all printers from the configuration file.''',
        },
      ],
      'features' : {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 1,
      'caption': '''Printer configuration access policy.''',
      'tags': [],
      'desc': '''Controls which printers from the <ph name="BULK_PRINTERS_POLICY">NativePrintersBulkConfiguration</ph> are available to users.

      Designates which access policy is used for bulk printer configuration. If <ph name="PRINTERS_ALLOW_ALL">AllowAll</ph> is selected, all printers are shown. If <ph name="PRINTERS_BLACKLIST">BlacklistRestriction</ph> is selected, <ph name="BULK_PRINTERS_BLACKLIST">NativePrintersBulkBlacklist</ph> is used to restrict access to the specified printers.  If <ph name="PRINTERS_WHITELIST">WhitelistPrintersOnly</ph> is selected, <ph name="BULK_PRINTERS_WHITELIST">NativePrintersBulkWhitelist</ph> designates only those printers which are selectable.

      If this policy is not set, <ph name="PRINTERS_ALLOW_ALL">AllowAll</ph> is assumed.
      ''',
    },
    {
      'name': 'NativePrintersBulkBlacklist',
      'supported_on': ['chrome_os:65-'],
      'id': 384,
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value':  ["id1", "id2", "id3"],
      'caption': '''Disabled enterprise printers''',
      'tags': [],
      'desc': '''Specifies the printers which a user cannot use.

      This policy is only used if <ph name="PRINTERS_BLACKLIST">BlacklistRestriction</ph> is chosen for <ph name="BULK_PRINTERS_ACCESS_MODE">NativePrintersBulkAccessMode</ph>.

      If this policy is used, all printers are provided to the user except for the ids listed in this policy. The ids must correspond to the "id" or "guid" fields in the file specified in <ph name="BULK_PRINTERS_POLICY">NativePrintersBulkConfiguration</ph>.
      ''',
    },
    {
      'name': 'NativePrintersBulkWhitelist',
      'supported_on': ['chrome_os:65-'],
      'id': 385,
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value':  ["id1", "id2", "id3"],
      'caption': '''Enabled enterprise printers''',
      'tags': [],
      'desc': '''Specifies the printers which a user can use.

      This policy is only used if <ph name="PRINTERS_WHITELIST">WhitelistPrintersOnly</ph> is chosen for <ph name="BULK_PRINTERS_ACCESS_MODE">NativePrintersBulkAccessMode</ph>.

      If this policy is used, only the printers with ids matching the values in this policy are available to the user. The ids must correspond to the "id" or "guid" fields in the file specified in <ph name="BULK_PRINTERS_POLICY">NativePrintersBulkConfiguration</ph>.
      ''',
    },
    {
      'name': 'DeviceNativePrinters',
      'id': 386,
      'device_only': True,
      'type': 'external',
      'schema': {
        'type': 'object',
        'properties': {
          'url': { 'type': 'string' },
          'hash': { 'type': 'string' }
        },
      },
      'supported_on': ['chrome_os:73-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': {
        "url": "https://example.com/printerpolicy",
        "hash": "deadbeefdeadbeefdeadbeefdeadbeefdeafdeadbeefdeadbeef"
      },
      'max_size': 5242880,
      'caption': '''Enterprise printer configuration file for devices''',
      'tags': [],
      'desc': '''Provides configurations for enterprise printers bound to devices.

      This policy allows you to provide printer configurations to <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> devices.  The format is the same as the NativePrinters dictionary, with an additional required "id" or "guid" field per printer for whitelisting or blacklisting.

      The size of the file must not exceed 5MB and must be encoded in JSON.  It is estimated that a file containing approximately 21,000 printers will encode as a 5MB file.  The cryptographic hash is used to verify the integrity of the download.

      The file is downloaded and cached. It will be re-downloaded whenever the URL or the hash changes.

      If this policy is set, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will download the file for printer configurations and make printers available in accordance with <ph name="DEVICE_PRINTERS_ACCESS_MODE">DeviceNativePrintersAccessMode</ph>, <ph name="DEVICE_PRINTERS_WHITELIST">DeviceNativePrintersWhitelist</ph>, and <ph name="DEVICE_PRINTERS_BLACKLIST">DeviceNativePrintersBlacklist</ph>.

      This policy has no effect on whether users can configure printers on individual devices.  It is intended to be supplementary to the configuration of printers by individual users.

      This policy is additive to the <ph name="BULK_PRINTERS_POLICY">NativePrintersBulkConfiguration</ph>.

      If this policy is unset, there will be no device printers and the other <ph name="DEVICE_PRINTERS_POLICY_PATTERN">DeviceNativePrinter*</ph> policies will be ignored.
      ''',
    },
    {
      'name': 'DeviceNativePrintersAccessMode',
      'id': 387,
      'device_only': True,
      'supported_on': ['chrome_os:73-'],
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1, 2 ],
      },
      'items': [
        {
          'name': 'BlacklistRestriction',
          'value': 0,
          'caption': '''All printers are shown except those in the blacklist.''',
        },
        {
          'name': 'WhitelistPrintersOnly',
          'value': 1,
          'caption': '''Only printers in the whitelist are shown to users''',
        },
        {
          'name': 'AllowAll',
          'value': 2,
          'caption': '''Allow all printers from the configuration file.''',
        },
      ],
      'features' : {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': 1,
      'caption': '''Device printers configuration access policy.''',
      'tags': [],
      'desc': '''Controls which printers from the <ph name="DEVICE_PRINTERS_POLICY">DeviceNativePrinters</ph> are available to users.

      Designates which access policy is used for bulk printer configuration. If <ph name="PRINTERS_ALLOW_ALL">AllowAll</ph> is selected, all printers are shown. If <ph name="PRINTERS_BLACKLIST">BlacklistRestriction</ph> is selected, <ph name="DEVICE_PRINTERS_BLACKLIST">DeviceNativePrintersBlacklist</ph> is used to restrict access to the specified printers.  If <ph name="PRINTERS_WHITELIST">WhitelistPrintersOnly</ph> is selected, <ph name="DEVICE_PRINTERS_WHITELIST">DeviceNativePrintersWhitelist</ph> designates only those printers which are selectable.

      If this policy is not set, <ph name="PRINTERS_ALLOW_ALL">AllowAll</ph> is assumed.
      ''',
    },
    {
      'name': 'DeviceNativePrintersBlacklist',
      'supported_on': ['chrome_os:73-'],
      'device_only': True,
      'id': 388,
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'features': {
        'dynamic_refresh': True,
      },
      'example_value':  ["id1", "id2", "id3"],
      'caption': '''Disabled enterprise device printers''',
      'tags': [],
      'desc': '''Specifies the printers which a user cannot use.

      This policy is only used if <ph name="PRINTERS_BLACKLIST">BlacklistRestriction</ph> is chosen for <ph name="DEVICE_PRINTERS_ACCESS_MODE">DeviceNativePrintersAccessMode</ph>.

      If this policy is used, all printers are provided to the user except for the ids listed in this policy. The ids must correspond to the "id" or "guid" fields in the file specified in <ph name="DEVICE_PRINTERS_POLICY">DeviceNativePrinters</ph>.
      ''',
    },
    {
      'name': 'DeviceNativePrintersWhitelist',
      'supported_on': ['chrome_os:73-'],
      'device_only': True,
      'id': 389,
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value':  ["id1", "id2", "id3"],
      'caption': '''Enabled enterprise device printers''',
      'tags': [],
      'desc': '''Specifies the printers which a user can use.

      This policy is only used if <ph name="PRINTERS_WHITELIST">WhitelistPrintersOnly</ph> is chosen for <ph name="DEVICE_PRINTERS_ACCESS_MODE">DeviceNativePrintersAccessMode</ph>

      If this policy is used, only the printers with ids matching the values in this policy are available to the user. The ids must correspond to the "id" or "guid" fields in the file specified in <ph name="DEVICE_PRINTERS_POLICY">DeviceNativePrinters</ph>.
      ''',
    },
    {
      'name': 'TPMFirmwareUpdateSettings',
      'supported_on': ['chrome_os:63-'],
      'device_only': True,
      'id': 390,
      'type': 'dict',
      'schema': {
        'type': 'object',
        'properties': {
          'allow-user-initiated-powerwash': {
            'type': 'boolean',
          },
          'allow-user-initiated-preserve-device-state': {
            'type': 'boolean',
          },
        },
      },
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': {
        'allow-user-initiated-powerwash': True,
        'allow-user-initiated-preserve-device-state': True,
      },
      'caption': '''Configure <ph name="TPM_FIRMWARE_UPDATE_TPM">TPM</ph> firmware update behavior''',
      'tags': [],
      'desc': '''Configures availability and behavior of <ph name="TPM_FIRMWARE_UPDATE_TPM">TPM</ph> firmware update functionality.

      Individual settings can be specified in JSON properties:

      <ph name="TPM_FIRMWARE_UPDATE_SETTINGS_ALLOW_USER_INITIATED_POWERWASH">allow-user-initiated-powerwash</ph>: If set to <ph name="TPM_FIRMWARE_UPDATE_SETTINGS_ALLOW_USER_INITIATED_POWERWASH_TRUE">true</ph>, users will be able to trigger the powerwash flow to install a <ph name="TPM_FIRMWARE_UPDATE_TPM">TPM</ph> firmware update.

      <ph name="TPM_FIRMWARE_UPDATE_SETTINGS_ALLOW_USER_INITIATED_PRESERVE_DEVICE_STATE">allow-user-initiated-preserve-device-state</ph>: If set to <ph name="TPM_FIRMWARE_UPDATE_SETTINGS_ALLOW_USER_INITIATED_PRESERVE_DEVICE_STATE_TRUE">true</ph>, users will be able to invoke the <ph name="TPM_FIRMWARE_UPDATE_TPM">TPM</ph> firmware update flow that preserves device-wide state (including enterprise enrollment), but loses user data. This update flow is available starting from version 68.

      If the policy is not set, <ph name="TPM_FIRMWARE_UPDATE_TPM">TPM</ph> firmware update functionality will not be available.''',
    },
    {
      'name': 'MinimumRequiredChromeVersion',
      'supported_on': ['chrome_os:64-'],
      'device_only': True,
      'type': 'string',
      'schema': { 'type': 'string' },
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': '61.0.3163.120',
      'id': 394,
      'caption': '''Configure minimum allowed Chrome version for the device.''',
      'tags': [],
      'desc': '''Configures the requirement of the minimum allowed version of <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>. Versions below given are treated as obsolete and device would not allow user sign in before OS is updated.
      If current version becomes obsolete during user session, user will be forcefully signed out.

      If this policy is not set, no restrictions are applied, and user can sign regardless of <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> version.

      Here "Version" can be either an exact version like '61.0.3163.120' or a version prefix, like '61.0'  ''',
    },
    {
      'name': 'QuickUnlockModeWhitelist',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': {
          'type': 'string',
          'enum': [
            'all',
            'PIN',
            'FINGERPRINT',
          ],
        },
        'id': 'QuickUnlockModeWhitelist',
      },
      'supported_on': ['chrome_os:56-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['PIN'],
      'default_for_enterprise_users': [],
      'id': 352,
      'caption': '''Configure allowed quick unlock modes''',
      'tags': [],
      'desc': '''A whitelist controlling which quick unlock modes the user can configure and use to unlock the lock screen.

          This value is a list of strings; valid list entries are: "all", "PIN", "FINGERPRINT". Adding "all" to the list means that every quick unlock mode is available to the user, including ones implemented in the future. Otherwise, only the quick unlock modes present in the list will be available.

          For example, to allow every quick unlock mode, use ["all"]. To allow only PIN unlock, use ["PIN"]. To allow PIN and fingerprint, use ["PIN", "FINGERPRINT"]. To disable all quick unlock modes, use [].

          By default, no quick unlock modes are available for managed devices.''',
    },
    {
      'name': 'QuickUnlockTimeout',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1, 2, 3 ],
      },
      'items': [
        {
          'name': 'SixHours',
          'value': 0,
          'caption': '''Password entry is required every six hours''',
        },
        {
          'name': 'TweleveHours',
          'value': 1,
          'caption': '''Password entry is required every twelve hours''',
        },
        {
          'name': 'Day',
          'value': 2,
          'caption': '''Password entry is required every day (24 hours)''',
        },
        {
          'name': 'Week',
          'value': 3,
          'caption': '''Password entry is required every week (168 hours)''',
        },
      ],
      'supported_on': ['chrome_os:57-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 2,
      'id': 353,
      'caption': '''Set how often user has to enter password to use quick unlock''',
      'tags': [],
      'desc': '''This setting controls how often the lock screen will request the password to be entered in order to continue using quick unlock. Each time the lock screen is entered, if the last password entry was more than this setting, the quick unlock will not be available on entering the lock screen. Should the user stay on the lock screen past this period of time, a password will be requested next time the user enters the wrong code, or re-enters the lock screen, whichever comes first.

          If this setting is configured, users using quick unlock will be requested to enter their passwords on the lock screen depending on this setting.

          If this setting is not configured, users using quick unlock will be requested to enter their password on the lock screen every day.''',
    },
    {
      'name': 'PinUnlockMinimumLength',
      'type': 'int',
      'schema': { 'type': 'integer' },
      'supported_on': ['chrome_os:57-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 6,
      'id': 354,
      'caption': '''Set the minimum length of the lock screen PIN''',
      'tags': [],
      'desc': '''If the policy is set, the configured minimal PIN length is
          enforced. (The absolute minimum PIN length is 1; values less than 1
          are treated as 1.)

          If the policy is not set, a minimal PIN length of 6 digits is
          enforced. This is the recommended minimum.''',
    },
    {
      'name': 'PinUnlockMaximumLength',
      'type': 'int',
      'schema': { 'type': 'integer' },
      'supported_on': ['chrome_os:57-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 0,
      'id': 355,
      'caption': '''Set the maximum length of the lock screen PIN''',
      'tags': [],
      'desc': '''If the policy is set, the configured maximal PIN length is enforced. A value of 0 or less means no maximum length; in that case the user may set a PIN as long as they want. If this setting is less than <ph name="PIN_UNLOCK_MINIMUM_LENGTH_POLICY_NAME">PinUnlockMinimumLength</ph> but greater than 0, the maximum length is the same as the minimum length.

          If the policy is not set, no maximum length is enforced.''',
    },
    {
      'name': 'PinUnlockWeakPinsAllowed',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:57-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': False,
      'id': 356,
      'caption': '''Enable users to set weak PINs for the lock screen PIN''',
      'tags': [],
      'desc': '''If false, users will be unable to set PINs which are weak and easy to guess.

          Some example weak PINs: PINs containing only one digit (1111), PINs whose digits are increasing by 1 (1234), PINs whose digits are decreasing by 1 (4321), and PINs which are commonly used.

          By default, users will get a warning, not error, if the PIN is considered weak.''',
    },
    {
      'name': 'DeviceWallpaperImage',
      'type': 'external',
      'schema': {
        'type': 'object',
        'properties': {
          'url': { "type": "string" },
          'hash': { "type": "string" }
        },
      },
      'supported_on': ['chrome_os:61-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': { "url": "https://example.com/device_wallpaper.jpg", "hash": "examplewallpaperexamplewallpaperexamplewallpaperexamplewallpaper" },
      'max_size': 16777216,
      'id': 357,
      'caption': '''Device wallpaper image''',
      'tags': [],
      'desc': '''Configure device-level wallpaper image that is shown on the login screen if no user has yet signed in to the device. The policy is set by specifying the URL from which the Chrome OS device can download the wallpaper image and a cryptographic hash used to verify the integrity of the download. The image must be in JPEG format, its file size must not exceed 16MB. The URL must be accessible without any authentication. The wallpaper image is downloaded and cached. It will be re-downloaded whenever the URL or the hash changes.

      The policy should be speicified as a string that expresses the URL and hash in JSON format, e.g.,
      {
        "url": "https://example.com/device_wallpaper.jpg",
        "hash": "examplewallpaperhash"
      }

      If the device wallpaper policy is set, the Chrome OS device will download and use the wallpaper image on the login screen if no user has yet signed in to the device. Once the user logs in, the user's wallpaper policy kicks in.

      If the device wallpaper policy is left not set, it's the user's wallpaper policy to decide what to show if the user's wallpaper policy is set.''',
    },
    {
      'name': 'DeviceLoginScreenLocales',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome_os:58-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': False,
      },
      'example_value': [ "en-US" ],
      'id': 364,
      'caption': '''Device sign-in screen locale''',
      'tags': [],
      'desc': '''Configures the locale which is enforced on the <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> sign-in screen.

      If this policy is set, the sign-in screen will always be displayed in the locale which is given by the first value of this policy (the policy is defined as a list for forward compatibility).  If this policy is not set or is set to an empty list, the sign-in screen will be displayed in the locale of the last user session.  If this policy is set to a value which is not a valid locale, the sign-in screen will be displayed in a fallback locale (currently, en-US).'''
    },
    {
      'name': 'DeviceLoginScreenInputMethods',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome_os:58-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': [ "xkb:us::en", "xkb:ch::ger" ],
      'id': 365,
      'caption': '''Device sign-in screen keyboard layouts''',
      'tags': [],
      'desc': '''Configures which keyboard layouts are allowed on the <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> sign-in screen.

      If this policy is set to a list of input method identifiers, the given input methods will be available on the sign-in screen. The first given input method will be preselected. While a user pod is focused on the sign-in screen, the user's last used input method will be available in addition to the input methods given by this policy. If this policy is not set, the input methods on the sign-in screen will be derived from the locale in which the sign-in screen is displayed. Values which are not valid input method identifiers will be ignored.''',
    },
    {
      'name': 'SmsMessagesAllowed',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:70-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'default_for_enterprise_users': False,
      'id': 469,
      'caption': '''Allow SMS Messages to be synced from phone to Chromebook.''',
      'tags': ['local-data-access', 'google-sharing'],
      'desc': '''If this setting is enabled, users will be allowed to set up their devices to sync SMS messages between their phones and Chromebooks. Note that if this policy is allowed, users must explicitly opt into this feature by completing a setup flow. Once the setup flow is complete, users will be able to send and receive SMS messages on their Chromebooks.

      If this setting is disabled, users will not be allowed to set up SMS syncing.

      If this policy is left not set, the default is not allowed for managed users and allowed for non-managed users.''',
    },
    {
      'name': 'SmartLockSigninAllowed',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:71-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'default_for_enterprise_users': False,
      'id': 488,
      'caption': '''Allow Smart Lock Signin to be used.''',
      'tags': ['local-data-access', 'google-sharing'],
      'desc': '''If this setting is enabled, users will be allowed to sign into their account with Smart Lock. This is more permissive than usual Smart Lock behavior which only allows users to unlock their screen.

      If this setting is disabled, users will not be allowed to use Smart Lock Signin.

      If this policy is left not set, the default is not allowed for enterprise-managed users and allowed for non-managed users.''',
    },
    {
      'name': 'InstantTetheringAllowed',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:60-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'default_for_enterprise_users': False,
      'id': 367,
      'caption': '''Allow Instant Tethering to be used.''',
      'tags': ['local-data-access', 'google-sharing'],
      'desc': '''If this setting is enabled, users will be allowed to use Instant Tethering, which allows their Google phone to share its mobile data with their device.

      If this setting is disabled, users will not be allowed to use Instant Tethering.

      If this policy is left not set, the default is not allowed for enterprise-managed users and allowed for non-managed users.''',
    },
    {
      'name': 'BrowserNetworkTimeQueriesEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:60-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 370,
      'caption': '''Allow queries to a Google time service''',
      'tags': [],
      'desc': '''Setting this policy to false stops <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> from occasionally sending queries to a Google server to retrieve an accurate timestamp. These queries will be enabled if this policy is set to True or is not set.''',
    },
    {
      'name': 'DeviceSecondFactorAuthentication',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1, 2, 3 ],
      },
      'items': [
        {
          'name': 'Disabled',
          'value': 1,
          'caption': '''Second factor disabled''',
        },
        {
          'name': 'U2F',
          'value': 2,
          'caption': '''U2F (Universal Second Factor)''',
        },
        {
          'name': 'U2F_EXTENDED',
          'value': 3,
          'caption': '''U2F plus extensions for individual attestation''',
        },
      ],
      'supported_on': ['chrome_os:61-'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': False,
      },
      'example_value': 2,
      'id': 372,
      'caption': '''Integrated second factor authentication mode''',
      'tags': ['system-security'],
      'desc': '''Specifies how the on-board secure element hardware can be used to provide a second-factor authentication if it is compatible with this feature. The machine power button is used to detect the user physical presence.

      If 'Disabled' is selected, no second factor is provided.

      If 'U2F' is selected, the integrated second factor will behave according the FIDO U2F specification.

      If 'U2F_EXTENDED' is selected, the integrated second factor will provide the U2F functions plus some extensions for individual attestation.''',
    },
    {
      'name': 'PrintPreviewUseSystemDefaultPrinter',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': [
        'chrome.*:61-',
      ],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': False,
      'id': 373,
      'caption': '''Use System Default Printer as Default''',
      'tags': [],
      'desc': '''Causes <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> to use the system default printer as the default choice in Print Preview instead of the most recently used printer.

      If you disable this setting or do not set a value, Print Preview will use the most recently used printer as the default destination choice.

      If you enable this setting, Print Preview will use the OS system default printer as the default destination choice.''',
    },
    {
      'name': 'DeviceEcryptfsMigrationStrategy',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1, 2 ],
      },
      'items': [
        {
          'name': 'Unset',
          'value': 0,
          'caption': '''Policy unset, disallow data migration and ARC''',
        },
        {
          'name': 'DisallowArc',
          'value': 1,
          'caption': '''Disallow data migration and ARC''',
        },
        {
          'name': 'AllowMigration',
          'value': 2,
          'caption': '''Allow data migration''',
        },
      ],
      'supported_on': ['chrome_os:60-60'],
      'supported_chrome_os_management': ['google_cloud'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'deprecated': True,
      'example_value': 1,
      'id': 374,
      'caption': '''Migration strategy for ecryptfs''',
      'tags': [],
      'desc': '''This policy is deprecated in M61, please use EcryptfsMigrationStrategy instead.

      Specifies how a device should behave that shipped with ecryptfs and needs to transition to ext4 encryption.

      If you set this policy to 'DisallowArc', Android apps will be disabled for all users on the device (including those that have ext4 encryption already) and no migration from ecryptfs to ext4 encryption will be offered to any users.

      If you set this policy to 'AllowMigration', users with ecryptfs home directories will be offered to migrate these to ext4 encryption as necessary (currently when Android N becomes available on the device).

      This policy does not apply to kiosk apps - these are migrated automatically. If this policy is left not set, the device will behave as if 'DisallowArc' was chosen.''',
    },
    {
      'name': 'EcryptfsMigrationStrategy',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1, 2, 3, 4, 5],
      },
      'items': [
        {
          'name': 'DisallowArc',
          'value': 0,
          'caption': '''Disallow data migration and ARC.''',
        },
        {
          'name': 'Migrate',
          'value': 1,
          'caption': '''Migrate automatically, don’t ask for user consent.''',
        },
        {
          'name': 'Wipe',
          'value': 2,
          'caption': '''Wipe the user’s ecryptfs home directory and start with a fresh ext4-encrypted home directory.''',
        },
        {
          'name': 'AskUser',
          'value': 3,
          'caption': '''Ask the user if they would like to migrate or skip migration and disallow ARC.''',
        },
        {
          'name': 'MinimalMigrate',
          'value': 4,
          'caption': '''Similar to Wipe (value 2), but tries to preserve login tokens so the user does not have to sign in again.''',
        },
        {
          'name': 'AskForEcryptfsArcUsers',
          'value': 5,
          'caption': '''If the client device model already supported ARC before migration to ext4 was necessary to run ARC and if the ArcEnabled policy is set to true, this option will behave as AskUser (value 3). In all other cases (if the device model did not support ARC before, or if ArcEnabled policy is set to false), this value is equivalent to DisallowArc (value 0).''',
        }
      ],
      'supported_on': ['chrome_os:61-'],
      'device_only': False,
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': 3,
      'id': 376,
      'caption': '''Migration strategy for ecryptfs''',
      'tags': [],
      'desc': '''Specifies the action that should be taken when the user's home directory was created with ecryptfs encryption and needs to transition to ext4 encryption.

      If you set this policy to 'DisallowArc', Android apps will be disabled for the user and no migration from ecryptfs to ext4 encryption will be performed. Android apps will not be prevented from running when the home directory is already ext4-encrypted.

      If you set this policy to 'Migrate', ecryptfs-encrypted home directories will be automatically migrated to ext4 encryption on sign-in without asking for user consent.

      If you set this policy to 'Wipe', ecryptfs-encrypted home directories will be deleted on sign-in and new ext4-encrypted home directories will be created instead. Warning: This removes the user's local data.

      If you set this policy to 'AskUser', users with ecryptfs-encrypted home directories will be offered to migrate.

      This policy does not apply to kiosk users. If this policy is left not set, the device will behave as if 'DisallowArc' was chosen.''',
    },
    {
      'name': 'SchedulerConfiguration',
      'type': 'string-enum',
      'schema': {
        'type': 'string',
        'enum': [
          'conservative',
          'performance',
        ],
      },
      'items': [
        {
          'name': 'Conservative',
          'value': 'conservative',
          'caption': '''Optimize for stability.''',
        },
        {
          'name': 'Performance',
          'value': 'performance',
          'caption': '''Optimize for performance.''',
        },
      ],
      'supported_on': ['chrome_os:74-'],
      'features': {
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': 'performance',
      'id': 522,
      'caption': '''Select task scheduler configuration''',
      'tags': [],
      'desc': '''Instructs <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> to use the task scheduler configuration identified by the specified name.

      This policy can be set to "conservative" and "performance", which select task scheduler configurations that are tuned for stability vs. maximum performance, respectively.

      If the policy is left unset, the user can make their own choice.''',
    },
    {
      'name': 'NoteTakingAppsLockScreenWhitelist',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': [
        'chrome_os:61-',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True
      },
      'example_value': ['abcdefghabcdefghabcdefghabcdefgh'],
      'id': 377,
      'caption': '''Whitelist note-taking apps allowed on the <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> lock screen''',
      'tags': [],
      'desc': '''Specifies list of apps that can be enabled as a note-taking app on the <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> lock screen.

      If the preferred note-taking app is enabled on the lock screen, the lock screen will contain UI element for launching the preferred note taking app.
      When launched, the app will be able to create an app window on top of the lock screen, and create data items (notes) in the lock screen context. The app will be able to import created notes to the primary user session, when the session is unlocked. Currently, only Chrome note-taking apps are supported on the lock screen.

      If the policy is set, the user will be allowed to enable an app on the lock screen only if the app's extension ID is contained in the policy list value.
      As a consequence, setting this policy to an empty list will disable note-taking on the lock screen entirely.
      Note that the policy containing an app ID does not necessarily mean that the user will be able to enable the app as a note-taking app on the lock screen - for example, on Chrome 61, the set of available apps is additionally restricted by the platform.

      If the policy is left unset, there will be no restrictions on the set of apps the user can enable on the lock screen imposed by the policy.'''
    },
    {
      'name': 'CastReceiverEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:62-'],
      'future': True,
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': False,
      'id': 378,
      'default_for_enterprise_users': False,
      'caption': '''Enable casting content to the device''',
      'tags': [],
      'desc': '''Allow content to be cast to the device using <ph name="PRODUCT_NAME">Google Cast</ph>.

          If this policy is set to False, users will not be able to cast content to their device. If this policy is set to True, users are allowed to cast content. If this policy is not set, users are not allowed to cast content to enrolled Chrome OS devices, but can cast to non enrolled devices.''',
    },
    {
      'name': 'CastReceiverName',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome_os:62-'],
      'device_only': True,
      'future': True,
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': 'My Chromebook',
      'id': 379,
      'caption': '''Name of the <ph name="PRODUCT_NAME">Google Cast</ph> destination''',
      'tags': [],
      'desc': '''Determine the name advertised as a <ph name="PRODUCT_NAME">Google Cast</ph> destination.

          If this policy is set to a non empty string, that string will be used as the name of the <ph name="PRODUCT_NAME">Google Cast</ph> destination. Otherwise, the destination name will be the device name. If this policy is not set, the destination name will be the device name, and the owner of the device (or a user from the domain managing the device) will be allowed to change it. The name is limited to 24 characters.'''
    },
    {
      'name': 'DeviceOffHours',
      'type': 'dict',
      'schema': {
        'type': 'object',
        'properties': {
          'intervals': {
            'type': 'array',
            'items': {
              'type': 'object',
              'id': 'WeeklyTimeIntervals',
              'properties': {
                'start': {
                  'type': 'object',
                  'id': 'WeeklyTime',
                  'properties': {
                    'day_of_week': {
                      'type': 'string',
                      'enum': [
                        'MONDAY',
                        'TUESDAY',
                        'WEDNESDAY',
                        'THURSDAY',
                        'FRIDAY',
                        'SATURDAY',
                        'SUNDAY'
                      ]
                    },
                    'time': { 'type': 'integer'}
                  }
                },
                'end': {
                  '$ref': 'WeeklyTime'
                }
              }
            }
          },
          'timezone': { 'type': 'string' },
          'ignored_policy_proto_tags': {
            'type': 'array',
            'items': { 'type':'integer' }
          }
        }
      },
      'supported_on': ['chrome_os:62-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True
      },
      'example_value': {
        'intervals':
        [
          {
            'start': {
              'day_of_week': 'MONDAY',
              'time': 12840000
            },
            'end': {
              'day_of_week': 'MONDAY',
              'time': 21720000
            }
          },
          {
            'start': {
              'day_of_week': 'FRIDAY',
              'time': 38640000
            },
            'end': {
              'day_of_week': 'FRIDAY',
              'time': 57600000
            }
          }
        ],
        'timezone': 'GMT',
        'ignored_policy_proto_tags': [3, 8]
      },
      'id': 380,
      'caption': '''Off hours intervals when the specified device policies are released''',
      'tags': [],
      'desc': '''If "OffHours" policy is set, then the specified device policies are ignored (use the default settings of these policies) during the defined time intervals. Device policies are re-applied by Chrome on every event when "OffHours" period starts or ends. User will be notified and forced to sign out when "OffHours" time end and device policy settings are changed (e.g. when user is logged in not with an allowed account).''',
    },
    {
      'name': 'CloudPolicyOverridesMachinePolicy',
      'type': 'main',
      'schema': { 'type': 'boolean'},
      'supported_on': ['chrome.*:62-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': False,
      'id': 381,
      'caption': '''<ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> cloud policy overrides Machine policy.''',
      'tags': [],
      'future': True,
      'desc': '''
      If the policy is set to true, cloud  policy takes precedence if it conflicts with machine policy.
      If the policy is set to false or not configured, machine policy takes precedence if it conflicts with cloud policy.
      For more details about policy priority, please visit: https://support.google.com/chrome?p=set_chrome_policies_for_devices

      This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> domain. or Windows 10 Pro or Enterprise instances that enrolled for device management.''',
    },
    {
      'name': 'PromptForDownloadLocation',
      'type': 'main',
      'schema': { 'type': 'boolean'},
      'supported_on': ['chrome.*:64-', 'chrome_os:64-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': False,
      'id': 395,
      'caption': '''Ask where to save each file before downloading''',
      'tags': [],
      'desc': '''
      If the policy is enabled, the user will be asked where to save each file before downloading.
      If the policy is disabled, downloads will start immediately, and the user will not be asked where to save the file.
      If the policy is not configured, the user will be able to change this setting.
      '''
    },
    {
      'name': 'UnaffiliatedArcAllowed',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:64-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': False,
      },
      'example_value': False,
      'id': 397,
      'caption': '''Allow unaffiliated users to use ARC''',
      'tags': [],
      'desc': '''If the policy is set to false, unaffiliated users will not be allowed to use ARC.

      If the policy is unset or set to true, all users are allowed to use ARC (unless ARC is disabled by other means).

      Changes to the policy will only be applied while ARC is not running, e.g. while Chrome OS is starting.''',
    },
    {
      'name': 'IsolateOrigins',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:63-', 'chrome_os:63-'],
      'device_only': False,
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': 'https://example.com/,https://othersite.org/',
      'id': 398,
      'caption': '''Enable Site Isolation for specified origins''',
      'tags': ['system-security'],
      'desc': '''
      If the policy is enabled, each of the named origins in a
      comma-separated list will run in its own process. This will also isolate
      origins named by subdomains; e.g. specifying https://example.com/ will
      also cause https://foo.example.com/ to be isolated as part of the
      https://example.com/ site.
      If the policy is disabled, then both IsolateOrigins and SitePerProcess features will be disabled. Users will still be able to enable IsolateOrigins manually, via command line flags.
      If the policy is not configured, the user will be able to change this setting.
      On <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph>, it is recommended to also set the <ph name="DEVICE_LOGIN_SCREEN_ISOLATE_ORIGINS_POLICY_NAME">DeviceLoginScreenIsolateOrigins</ph> device policy to the same value. If the values specified by the two policies don't match, a delay may be incurred when entering a user session while the value specified by user policy is being applied.

      NOTE: This policy does not apply on Android. To enable IsolateOrigins on Android, use the IsolateOriginsAndroid policy setting.
      ''',
    },
    {
      'name': 'SitePerProcess',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:63-', 'chrome_os:63-'],
      'device_only': False,
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': True,
      'id': 399,
      'caption': '''Enable Site Isolation for every site''',
      'tags': ['system-security'],
      'desc': '''
      You might want to look at the IsolateOrigins policy setting to get the best of both worlds, isolation and limited impact for users, by using IsolateOrigins with a list of the sites you want to isolate. This setting, SitePerProcess, isolates all sites.
      If the policy is enabled, each site will run in its own process.
      If the policy is disabled, then both IsolateOrigins and SitePerProcess features will be disabled. Users will still be able to enable SitePerProcess manually, via command line flags.
      If the policy is not configured, the user will be able to change this setting.
      On <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph>, it is recommended to also set the <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME">DeviceLoginScreenSitePerProcess</ph> device policy to the same value. If the values specified by the two policies don't match, a delay may be incurred when entering a user session while the value specified by user policy is being applied.

      NOTE: This policy does not apply on Android. To enable SitePerProcess on Android, use the SitePerProcessAndroid policy setting.
      ''',
    },
    {
      'name': 'DeviceLoginScreenIsolateOrigins',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome_os:66-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': 'https://example.com/,https://othersite.org/',
      'id': 417,
      'caption': '''Enable Site Isolation for specified origins''',
      'tags': ['system-security'],
      'desc': '''
      This policy applies to the sign-in screen. Please see also the <ph name="ISOLATE_ORIGINS_POLICY_NAME">IsolateOrigins</ph> policy which applies to the user session. It is recommended to set both policies to the same value. If the values don't match, a delay may be incurred when entering a user session while the value specified by user policy is being applied.
      If the policy is enabled, each of the named origins in a comma-separated list will run in its own process. This will also isolate origins named by subdomains; e.g. specifying https://example.com/ will also cause https://foo.example.com/ to be isolated as part of the https://example.com/ site.
      If the policy is disabled, both IsolateOrigins and SitePerProcess features will be disabled. Users will still be able to enable IsolateOrigins manually, via command line flags.
      If the policy is not configured, the platform default site isolation settings will be used for the sign-in screen.
      ''',
    },
    {
      'name': 'DeviceLoginScreenSitePerProcess',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:66-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': True,
      'id': 418,
      'caption': '''Enable Site Isolation for every site''',
      'tags': ['system-security'],
      'desc': '''
      This policy applies to the sign-in screen. Please see also the <ph name="SITE_PER_PROCESS_POLICY_NAME">SitePerProcess</ph> policy which applies to the user session. It is recommended to set both policies to the same value. If the values don't match, a delay may be incurred when entering a user session while the value specified by user policy is being applied.
      You might want to look at the IsolateOrigins policy setting to get the best of both worlds, isolation and limited impact for users, by using IsolateOrigins with a list of the sites you want to isolate. This setting, SitePerProcess, isolates all sites.
      If the policy is enabled, each site will run in its own process.
      If the policy is disabled, both IsolateOrigins and SitePerProcess features will be disabled. Users will still be able to enable SitePerProcess manually, via command line flags.
      If the policy is not configured, the user will be able to change this setting.
      ''',
    },
    {
      'name': 'IsolateOriginsAndroid',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['android:68-'],
      'device_only': False,
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': 'https://example.com/,https://othersite.org/',
      'id': 445,
      'caption': '''Enable Site Isolation for specified origins on Android devices''',
      'tags': ['system-security'],
      'desc': '''
      If the policy is enabled, each of the named origins in a
      comma-separated list will run in its own process. This will also isolate
      origins named by subdomains; e.g. specifying https://example.com/ will
      also cause https://foo.example.com/ to be isolated as part of the
      https://example.com/ site.
      If the policy is disabled, no explicit Site Isolation will happen and field trials of IsolateOriginsAndroid and SitePerProcessAndroid will be disabled. Users will still be able to enable IsolateOrigins manually, via command line flag.
      If the policy is not configured, the user will be able to change this setting.

      NOTE: On Android, Site Isolation is experimental. Support will improve over time, but currently it may cause performance problems.

      NOTE: This policy applies only to Chrome on Android running on devices with strictly more than 1GB of RAM. To apply the policy on non-Android platforms, use IsolateOrigins.
      ''',
    },
    {
      'name': 'SitePerProcessAndroid',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['android:68-'],
      'device_only': False,
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': True,
      'id': 446,
      'caption': '''Enable Site Isolation for every site''',
      'tags': ['system-security'],
      'desc': '''
      You might want to look at the IsolateOriginsAndroid policy setting to get the best of both worlds, isolation and limited impact for users, by using IsolateOriginsAndroid with a list of the sites you want to isolate. This setting, SitePerProcessAndroid, isolates all sites.
      If the policy is enabled, each site will run in its own process.
      If the policy is disabled, no explicit Site Isolation will happen and field trials of IsolateOriginsAndroid and SitePerProcessAndroid will be disabled. Users will still be able to enable SitePerProcess manually.
      If the policy is not configured, the user will be able to change this setting.

      NOTE: On Android, Site Isolation is experimental. Support will improve over time, but currently it may cause performance problems.

      NOTE: This policy applies only to Chrome on Android running on devices with strictly more than 1GB of RAM. To apply the policy on non-Android platforms, use SitePerProcess.
      ''',
    },
    {
      'name': 'WebDriverOverridesIncompatiblePolicies',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:65-'],
      'device_only': False,
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': True,
      'id': 414,
      'caption': '''Allow WebDriver to Override Incompatible Policies''',
      'tags': ['system-security'],
      'desc': '''This policy allows users of the WebDriver feature to override
      policies which can interfere with its operation.

      Currently this policy disables SitePerProcess and IsolateOrigins policies.

      If the policy is enabled, WebDriver will be able to override incomaptible
      policies.
      If the policy is disabled or not configured, WebDriver will not be allowed
      to override incompatible policies.''',
    },
    {
      'name': 'UnsafelyTreatInsecureOriginAsSecure',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'deprecated': True,
      'supported_on': ['chrome.*:65-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': True,
      },
      'example_value': ['http://testserver.example.com/','*.example.org'],
      'id': 400,
      'caption': '''Origins or hostname patterns for which restrictions on
      insecure origins should not apply''',
      'tags': ['system-security'],
      'desc': '''Deprecated in M69. Use
      OverrideSecurityRestrictionsOnInsecureOrigin instead.

      The policy specifies a list of origins (URLs) or hostname patterns (such
      as "*.example.com") for which security restrictions on insecure origins
      will not apply.

      The intent is to allow organizations to whitelist origins for legacy
      applications that cannot deploy TLS, or to set up a staging server for
      internal web development so that their developers can test out features
      requiring secure contexts without having to deploy TLS on the staging
      server. This policy will also prevent the origin from being labeled
      "Not Secure" in the omnibox.

      Setting a list of URLs in this policy has the same effect as setting the
      command-line flag '--unsafely-treat-insecure-origin-as-secure' to a
      comma-separated list of the same URLs. If the policy is set, it will
      override the command-line flag.

      This policy is deprecated in M69 in favor of
      OverrideSecurityRestrictionsOnInsecureOrigin. If both policies are
      present, OverrideSecurityRestrictionsOnInsecureOrigin will override this
      policy.

      For more information on secure contexts, see
      https://www.w3.org/TR/secure-contexts/
      '''
    },
    {
      'name': 'DefaultDownloadDirectory',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:64-', 'chrome_os:64-'],
      'features': {
        'can_be_mandatory': False,
        'can_be_recommended': True,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': '/home/${user_name}/Downloads',
      'id': 401,
      'caption': '''Set default download directory''',
      'tags': ['local-data-access'],
      'desc': '''Configures the default directory that <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will use for downloading files.

      If you set this policy, it will change the default directory that <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> downloads files to. This policy is not mandatory, so the user will be able to change the directory.

      If you do not set this policy, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will use its usual default directory (platform-specific).

      See https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables for a list of variables that can be used.''',
    },
    {
      'name': 'DeviceHostnameTemplate',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome_os:65-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': 'chromebook-${ASSET_ID}',
      'id': 403,
      'caption': '''Device network hostname template''',
      'tags': [],
      'desc': '''Determine the hostname of the device used in DHCP requests.

      If this policy is set to a non empty string, that string will be used as the device hostname during DHCP request.

      The string can contain variables ${ASSET_ID}, ${SERIAL_NUM}, ${MAC_ADDR}, ${MACHINE_NAME} that would be replaced with values on the device before using as a hostname. Resulting substitution should be a valid hostname (per RFC 1035, section 3.1).

      If this policy is not set, or the value after substitution is not a valid hostname, no hostname will be set in DHCP request. '''
    },
    {
      'name': 'AbusiveExperienceInterventionEnforce',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:65-', 'chrome_os:65-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 404,
      'caption': '''Abusive Experience Intervention Enforce''',
      'tags': [],
      'desc': '''Allows you to set whether sites with abusive experiences should be prevented from opening new windows or tabs.

      If this policy is set to True, sites with abusive experiences will be prevented from opening new windows or tabs.
      However this behavior will not trigger if SafeBrowsingEnabled policy is set to False.
      If this policy is set to False, sites with abusive experiences will be allowed to open new windows or tabs.
      If this policy is left not set, True will be used.''',
    },
    {
      'name': 'SpellcheckLanguage',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' }
      },
      # Spell checking is provided by macOS, so can't be controlled on Mac.
      'supported_on': ['chrome.win:65-', 'chrome.linux:65-', 'chrome_os:65-'],
      'features': {
        'can_be_recommended': False,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['fr', 'es'],
      'id': 405,
      'caption': '''Force enable spellcheck languages''',
      'tags': [],
      'desc': '''Force-enables spellcheck languages. Unrecognized languages in that list will be ignored.

      If you enable this policy, spellcheck will be enabled for the languages specified, in addition to the languages for which the user has enabled spellcheck.

      If you do not set this policy, or disable it, there will be no change to the user's spellcheck preferences.

      If the SpellcheckEnabled policy is set to disabled, this policy will have no effect.

      The currently supported languages are: af, bg, ca, cs, da, de, el, en-AU, en-CA, en-GB, en-US, es, es-419, es-AR, es-ES, es-MX, es-US, et, fa, fo, fr, he, hi, hr, hu, id, it, ko, lt, lv, nb, nl, pl, pt-BR, pt-PT, ro, ru, sh, sk, sl, sq, sr, sv, ta, tg, tr, uk, vi.'''
    },
    {
      'name': 'ThirdPartyBlockingEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.win:65-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': False,
      'id': 407,
      'caption': '''Enable third party software injection blocking''',
      'tags': [],
      'desc': '''If the policy is set to false then third party software will be allowed to inject executable code into Chrome's processes. If the policy is unset or set to true then third party software will be prevented from injecting executable code into Chrome's processes.''',
    },
    {
      'name': 'SpellcheckEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:65-', 'chrome_os:65-'],
      'features': {
        'can_be_recommended': False,
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': False,
      'id': 408,
      'caption': '''Enable spellcheck''',
      'tags': [],
      'desc': '''If this policy is not set or enabled, the user is allowed to use spellcheck.

      If this policy is disabled, the user is not allowed to use spellcheck. The SpellcheckLanguage policy will also be ignored when this policy is disabled.
      '''
    },
    {
      'name': 'AdsSettingForIntrusiveAdsSites',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 1, 2 ],
      },
      'items': [
        {
          'name': 'AllowAds',
          'value': 1,
          'caption': '''Allow ads on all sites''',
        },
        {
          'name': 'BlockAds',
          'value': 2,
          'caption': '''Do not allow ads on sites with intrusive ads''',
        },
      ],
      'supported_on': ['chrome.*:65-', 'chrome_os:65-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 1,
      'id': 409,
      'caption': '''Ads setting for sites with intrusive ads''',
      'tags': [],
      'desc': '''Allows you to set whether ads should be blocked on sites with intrusive ads.

      If this policy is set to 2, ads will be blocked on sites with intrusive ads.
      However this behavior will not trigger if SafeBrowsingEnabled policy is set to False.
      If this policy is set to 1, ads will not be blocked on sites with intrusive ads.
      If this policy is left not set, 2 will be used.''',
    },
    {
      'name': 'RestrictAccountsToPatterns',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' }
      },
      'supported_on': ['android:65-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': ['*@example.com', 'user@managedchrome.com'],
      'id': 410,
      'caption': '''Restrict accounts that are visible in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>''',
      'tags': [],
      'desc': '''Contains a list of patterns which are used to control the visiblity of accounts in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      Each Google account on the device will be compared to patterns stored in this policy to determine the account visibility in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>. The account will be visible if its name matches any pattern on the list. Otherwise, the account will be hidden.

      Use the wildcard character '*' to match zero or more arbitrary characters. The escape character is '\\', so to match actual '*' or '\\' characters, put a '\\' in front of them.

      If this policy is not set, all Google accounts on the device will be visible in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.''',
    },
    {
      'name': 'PasswordProtectionWarningTrigger',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1, 2 ],
      },
      'items': [
        {
          'name': 'PasswordProtectionWarningOff',
          'value': 0,
          'caption': '''Password protection warning is off''',
        },
        {
          'name': 'PasswordProtectionWarningOnPasswordReuse',
          'value': 1,
          'caption': '''Password protection warning is triggered by password reuse''',
        },
        {
          'name': 'PasswordProtectionWarningOnPhishingReuse',
          'value': 2,
          'caption': '''Password protection warning is triggered by password reuse on phishing page''',
        },
      ],
      'supported_on': ['chrome.*:69-', 'chrome_os:69-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 1,
      'id': 411,
      'caption': '''Password protection warning trigger''',
      'tags': [],
      'desc': '''Allows you to control the triggering of password protection warning. Password protection alerts users when they reuse their protected password on potentially suspicious sites.

      You can use 'PasswordProtectionLoginURLs' and 'PasswordProtectionChangePasswordURL' policies to configure which password to protect.

      If this policy is set to 'PasswordProtectionWarningOff', no password protection warning will be shown.
      If this policy is set to 'PasswordProtectionWarningOnPasswordReuse', password protection warning will be shown when the user reuses their protected password on a non-whitelisted site.
      If this policy is set to 'PasswordProtectionWarningOnPhishingReuse', password protection warning will be shown when the user reuses their protected password on a phishing site.
      If this policy is left unset, password protection service will only protect Google passwords but the user will be able to change this setting.''',
    },
    {
      'id': 419,
      'name': 'RelaunchNotification',
      'tags': [],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'supported_on': ['chrome.*:66-', 'chrome_os:70-'],
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 1, 2 ],
      },
      'caption': '''Notify a user that a browser relaunch or device restart is recommended or required''',
      'items': [
        {
          'name': 'Recommended',
          'value': 1,
          'caption': '''Show a recurring prompt to the user indicating that a relaunch is recommended''',
        },
        {
          'name': 'Required',
          'value': 2,
          'caption': '''Show a recurring prompt to the user indicating that a relaunch is required''',
        },
      ],
      'example_value': 1,
      'desc': '''Notify users that <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> must be relaunched or <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> must be restarted to apply a pending update.

      This policy setting enables notifications to inform the user that a browser relaunch or device restart is recommended or required. If not set, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> indicates to the user that a relaunch is needed via subtle changes to its menu, while <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> indicates such via a notification in the system tray. If set to 'Recommended', a recurring warning will be shown to the user that a relaunch is recommended. The user can dismiss this warning to defer the relaunch. If set to 'Required', a recurring warning will be shown to the user indicating that a browser relaunch will be forced once the notification period passes. The default period is seven days for <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> and four days for <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph>, and may be configured via the <ph name="RELAUNCH_NOTIFICATION_PERIOD_POLICY_NAME">RelaunchNotificationPeriod</ph> policy setting.

      The user's session is restored following the relaunch/restart.''',
    },
    {
      'id': 420,
      'name': 'RelaunchNotificationPeriod',
      'tags': [],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'supported_on': ['chrome.*:67-', 'chrome_os:67-'],
      'type': 'int',
      'schema': { 'type': 'integer', 'minimum': 3600000 },
      'caption': '''Set the time period for update notifications''',
      'label': '''Time period (milliseconds)''',
      'example_value': 604800000,
      'desc': '''Allows you to set the time period, in milliseconds, over which users are notified that <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> must be relaunched or that a <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> device must be restarted to apply a pending update.

      Over this time period, the user will be repeatedly informed of the need for an update. For <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> devices, a restart notification appears in the system tray when an upgrade is detected. For <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> browsers, the app menu changes to indicate that a relaunch is needed once one third of the notification period passes. This notification changes color once two thirds of the notification period passes, and again once the full notification period has passed. The additional notifications enabled by the <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME">RelaunchNotification</ph> policy follow this same schedule.

      If not set, the default period of 345600000 milliseconds (four days) is used for <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> devices and 604800000 milliseconds (one week) for <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.''',
    },
    {
      'name': 'VirtualMachinesAllowed',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:66-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': True,
      'default_for_managed_devices_doc_only': False,
      'id': 421,
      'caption': '''Allow devices to run virtual machines on Chrome OS''',
      'tags': ['system-security'],
      'desc': '''Allows you to control whether virtual machines are allowed to run on Chrome OS.

      If the policy is set to True, the device is allowed to run virtual machines.
      If the policy is set to False, the device will not be allowed to run virtual machines.
      All three policies, VirtualMachinesAllowed, CrostiniAllowed, and DeviceUnaffiliatedCrostiniAllowed need to be true when they apply for Crostini to be allowed to run.
      When this policy is changed to False, it applies to starting new virtual machines but does not shut down virtual machines which are already running.
      When this policy is not set on a managed device, the device is not allowed to run virtual machines.
      Unmanaged devices are allowed to run virtual machines.''',
    },
    {
      'name': 'CrostiniAllowed',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:70-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': False,
      'id': 481,
      'caption': '''User is enabled to run Crostini''',
      'tags': ['system-security'],
      'desc': '''Enable this user to run Crostini.

      If the policy is set to false, Crostini is not enabled for the user.
      If set to true or left unset, Crostini is enabled for the user as long as other settings also allow it.
      All three policies, VirtualMachinesAllowed, CrostiniAllowed, and DeviceUnaffiliatedCrostiniAllowed need to be true when they apply for Crostini to be allowed to run.
      When this policy is changed to false, it applies to starting new Crostini containers but does not shut down containers which are already running.''',
    },
    {
      'name': 'DeviceUnaffiliatedCrostiniAllowed',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:70-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': False,
      'id': 482,
      'caption': '''Allow unaffiliated users to use Crostini''',
      'tags': ['system-security'],
      'desc': '''If the policy is set to false, unaffiliated users will not be allowed to use Crostini.

      If the policy is unset or set to true, all users are allowed to use Crostini as long as other settings also allow it.
      All three policies, VirtualMachinesAllowed, CrostiniAllowed, and DeviceUnaffiliatedCrostiniAllowed need to be true when they apply for Crostini to be allowed to run.
      When this policy is changed to false, it applies to starting new Crostini containers but does not shut down containers which are already running.''',
    },
    {
      'name': 'CrostiniExportImportUIAllowed',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:74-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': False,
      'id': 523,
      'caption': '''User is enabled to export / import Crostini containers via the UI''',
      'tags': ['system-security'],
      'desc': '''If the policy is set to false, the export / import UI will not be available to users, however it is still possible to use 'lxc' commands directly in the virtual machine to export and import container images.''',
    },
    {
      'name': 'SafeBrowsingWhitelistDomains',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:68-', 'chrome_os:68-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['mydomain.com', 'myuniversity.edu'],
      'id': 422,
      'caption': '''Configure the list of domains on which Safe Browsing will not trigger warnings.''',
      'tags': [],
      'desc': '''Configure the list of domains which Safe Browsing will trust. This means:
      Safe Browsing will not check for dangerous resources (e.g. phishing, malware, or unwanted software) if their URLs match these domains.
      Safe Browsing's download protection service will not check downloads hosted on these domains.
      Safe Browsing's password protection service will not check for password reuse if the page URL matches these domains.

      If this setting is enabled, then Safe Browsing will trust these domains.
      If this setting is disabled or not set, then default Safe Browsing protection is applied to all resources.
      This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> domain. or Windows 10 Pro or Enterprise instances that enrolled for device management.''',
    },
    {
      'name': 'PasswordProtectionLoginURLs',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:69-', 'chrome_os:69-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['https://mydomain.com/login.html', 'https://login.mydomain.com'],
      'id': 423,
      'caption': '''Configure the list of enterprise login URLs where password protection service should capture fingerprint of password.''',
      'tags': [],
      'desc': '''Configure the list of enterprise login URLs (HTTP and HTTPS schemes only). Fingerprint of password will be captured on these URLs and used for password reuse detection.
      In order for <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> to correctly capture password fingerprints, please make sure your login pages follow the guidelines on https://www.chromium.org/developers/design-documents/create-amazing-password-forms.

      If this setting is enabled, then password protection service will capture fingerprint of password on these URLs for password reuse detection purpose.
      If this setting is disabled or not set, then password protection service will only capture password fingerprint on https://accounts.google.com.
      This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> domain. or Windows 10 Pro or Enterprise instances that enrolled for device management.''',
    },
    {
      'name': 'PasswordProtectionChangePasswordURL',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:69-', 'chrome_os:69-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 'https://mydomain.com/change_password.html',
      'id': 424,
      'caption': '''Configure the change password URL.''',
      'tags': [],
      'desc': '''Configure the change password URL (HTTP and HTTPS schemes only). Password protection service will send users to this URL to change their password after seeing a warning in the browser.
      In order for <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> to correctly capture the new password fingerprint on this change password page, please make sure your change password page follows the guidelines on https://www.chromium.org/developers/design-documents/create-amazing-password-forms.

      If this setting is enabled, then password protection service will send users to this URL to change their password after seeing a warning in the browser.
      If this setting is disabled or not set, then password protection service will send users to https://myaccounts.google.com to change their password.
      This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> domain. or Windows 10 Pro or Enterprise instances that enrolled for device management.''',
    },
    {
      'name': 'SafeBrowsingExtendedReportingEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:66-', 'chrome_os:66-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 429,
      'tags': ['google-sharing'],
      'caption': '''Enable Safe Browsing Extended Reporting''',
      'desc': '''Enables <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>'s Safe Browsing Extended Reporting and prevents users from changing this setting.

      Extended Reporting sends some system information and page content to Google servers to help detect dangerous apps and sites.

      If the setting is set to true, then reports will be created and sent whenever necessary (such as when a security interstitial is shown).

      If the setting is set to false, reports will never be sent.

      If this policy is set to true or false, the user will not be able to modify the setting.

      If this policy is left unset, the user will be able to change the setting and decide whether to send reports or not.

      See https://developers.google.com/safe-browsing for more info on Safe Browsing.''',
    },
    {
      'name': 'MachineLevelUserCloudPolicyEnrollmentToken',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:66-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': '37185d02-e055-11e7-80c1-9a214cf093ae',
      'id': 428,
      'caption': '''The enrollment token of cloud policy on desktop''',
      'tags': [],
      'deprecated': True,
      'desc': '''
        This policy is deprecated in M72. Please use CloudManagementEnrollmentToken instead.
        ''',
    },
    {
      'name': 'CloudManagementEnrollmentToken',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome.*:72-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': '37185d02-e055-11e7-80c1-9a214cf093ae',
      'id': 510,
      'caption': '''The enrollment token of cloud policy on desktop''',
      'tags': [],
      'desc': '''
        If this policy is set, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will try to register itself and apply associated cloud policy for all profiles.

        The value of this policy is an Enrollment token that can be retrieved from the Google Admin console.''',
    },
    {
      'name': 'CloudManagementEnrollmentMandatory',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:72-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': True,
      'id': 505,
      'caption': '''Enable mandatory cloud management enrollment''',
      'tags': [],
      'desc': '''
        If this policy is set to True, cloud management enrollment is mandatory and blocks Chrome launch process if failed.

        If this policy is left unset or set to False, cloud management enrollment is optional and does not blocks Chrome launch process if failed.

        This policy is used by machine scope cloud policy enrollment on desktop and can be set by Registry or GPO on Windows, plist on Mac and JSON policy file on Linux.''',
    },
    {
      'name': 'AutoplayAllowed',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.win:66-', 'chrome.linux:66-', 'chrome.mac:66-', 'chrome_os:66-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 430,
      'caption': '''Allow media autoplay''',
      'tags': [],
      'desc': '''Allows you to control if videos can play automatically (without user consent) with audio content in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      If the policy is set to True, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> is allowed to autoplay media.
      If the policy is set to False, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> is not allowed to autoplay media. The AutoplayWhitelist policy can be used to override this for certain URL patterns.
      By default, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> is not allowed to autoplay media. The AutoplayWhitelist policy can be used to override this for certain URL patterns.

      Note that if <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> is running and this policy changes, it will be applied only to new opened tabs. Therefore some tabs might still observe the previous behavior.
      ''',
    },
    {
      'name': 'AutoplayWhitelist',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:66-', 'chrome_os:66-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['https://www.example.com', '[*.]example.edu'],
      'id': 431,
      'caption': '''Allow media autoplay on a whitelist of URL patterns''',
      'tags': [],
      'desc': '''Controls the whitelist of URL patterns that autoplay will always be enabled on.

      If autoplay is enabled then videos can play automatically (without user consent) with audio content in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      A valid URL patterns specifications are:

      - [*.]domain.tld (matches domain.tld and all sub-domains)

      - host (matches an exact hostname)

      - scheme://host:port (supported schemes: http,https)

      - scheme://[*.]domain.tld:port (supported schemes: http,https)

      - file://path (The path has to be an absolute path and start with a '/')

      - a.b.c.d (matches an exact IPv4 ip)

      - [a:b:c:d:e:f:g:h] (matches an exact IPv6 ip)

      If the AutoplayAllowed policy is set to True then this policy will have no effect.

      If the AutoplayAllowed policy is set to False then any URL patterns set in this policy will still be allowed to play.

      Note that if <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> is running and this policy changes, it will be applied only to new opened tabs. Therefore some tabs might still observe the previous behavior.''',
    },
    {
      'name': 'TabUnderAllowed',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:67-67', 'chrome_os:67-67'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'deprecated': True,
      'id': 432,
      'caption': '''Allow sites to simultaneously navigate and open pop-ups''',
      'tags': [],
      'desc': '''Deprecated in M68. Use DefaultPopupsSetting instead.

      For a full explanation, see https://www.chromestatus.com/features/5675755719622656.
      If this policy is enabled, sites will be allowed to simultaneously navigate and open new windows/tabs.
      If this policy is disabled or not set, sites will be disallowed from simultaneously navigating and opening a new window/tab.''',
    },
    {
      'name': 'UserNativePrintersAllowed',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:67-'],
      'future': True,
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': False,
      'id': 433,
      'caption': '''Allow access to native CUPS printers''',
      'tags': [],
      'desc': '''Allows you to control if users can access non-enterprise printers

      If the policy is set to True, or not set at all, users will be able to add, configure, and print using their own native printers.

      If the policy is set to False, users will not be able to add and configure their own native printers. They will also not be able to print using any previously configured native printers.
      ''',
    },
    {
      'name': 'DeviceSamlLoginAuthenticationType',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1 ],
      },
      'items': [
        {
          'name': 'Default',
          'value': 0,
          'caption': '''Default configuration''',
        },
        {
          'name': 'ClientCertificate',
          'value': 1,
          'caption': '''Authentication based on client certificates''',
        },
      ],
      'supported_on': ['chrome_os:68-'],
      'device_only': True,
      'future': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': 0,
      'id': 438,
      'caption': '''SAML login authentication type''',
      'tags': ['system-security'],
      'desc': '''Configures the type of authentication for SAML logins.

      When this policy is unset or set to Default (value 0), the behavior of SAML logins is determined by the browser depending on other factors. In the most basic scenario, the user authentication and the protection of the cached user data are based on passwords manually entered by users.

      When this policy is set to ClientCertificate (value 1), client certificate authentication is used for newly added users which log in via SAML. No passwords are used for such users, and their cached local data is protected using corresponding cryptographic keys. For instance, this setting allows configuring smart card based user authentication (note that smart card middleware apps have to be installed via the DeviceLoginScreenAppInstallList policy).

      This policy affects only users who authenticate using SAML.''',
    },
    {
      'name': 'ChromeCleanupEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.win:68-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': True,
      'id': 441,
      'caption': '''Enable Chrome Cleanup on Windows''',
      'tags': ['system-security'],
      'desc': '''If disabled, prevents Chrome Cleanup from scanning the system for unwanted software and performing cleanups. Manually triggering Chrome Cleanup from chrome://settings/cleanup is disabled.

      If enabled or unset, Chrome Cleanup periodically scans the system for unwanted software and should any be found, will ask the user if they wish to remove it. Manually triggering Chrome Cleanup from chrome://settings is enabled.

      This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> domain. or Windows 10 Pro or Enterprise instances that enrolled for device management.''',
    },
    {
      'name': 'ChromeCleanupReportingEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.win:68-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': True,
      'id': 442,
      'caption': '''Control how Chrome Cleanup reports data to Google''',
      'tags': ['system-security'],
      'desc': '''If unset, should Chrome Cleanup detect unwanted software, it may report metadata about the scan to Google in accordance with policy set by SafeBrowsingExtendedReportingEnabled. Chrome Cleanup will then ask the user if they wish to clean up the unwanted software. The user can choose to share results of the cleanup with Google to assist with future unwanted software detection. These results contain file metadata, automatically installed extensions and registry keys as described by the Chrome Privacy Whitepaper.

      If disabled, should Chrome Cleanup detect unwanted software, it will not report metadata about the scan to Google, overriding any policy set by SafeBrowsingExtendedReportingEnabled. Chrome Cleanup will ask the user if they wish to clean up the unwanted software.  Results of the cleanup will not be reported to Google and the user will not have the option to do so.

      If enabled, should Chrome Cleanup detect unwanted software, it may report metadata about the scan to Google in accordance with policy set by SafeBrowsingExtendedReportingEnabled. Chrome Cleanup will ask the user if they wish to clean up the unwanted software.  Results of the cleanup will be reported to Google and the user will not have the option to prevent it.

      This policy is available only on Windows instances that are joined to a <ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> domain. or Windows 10 Pro or Enterprise instances that enrolled for device management.''',
    },
    {
      'name': 'AllowedLanguages',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome_os:72-'],
      'device_only': False,
      'features': {
        'dynamic_refresh': False,
        'per_profile': True
      },
      'example_value': [ 'en-US' ],
      'id': 444,
      'caption': '''Configure the allowed languages in a user session''',
      'tags': [],
      'desc': '''Configures the languages that can be used as the preferred languages by <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph>.

      If this policy is set, the user can only add one of the languages listed in this policy to the list of preferred languages. If this policy is not set or set to an empty list, user can specify any languages as preferred. If this policy is set to a list with invalid values, all invalid values will be ignored. If a user previously added some languages that are not allowed by this policy to the list of preferred languages they will be removed. If the user had previously configured <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> to be displayed in one of the languages not allowed by this policy, the display language will be switched to an allowed UI language next time user signs in. Otherwise, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will switch to the first valid value specified by this policy, or to a fallback locale (currently en-US), if this policy only contains invalid entries.'''
    },
    {
      'name': 'AllowedInputMethods',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome_os:69-'],
      'device_only': False,
      'features': {
        'dynamic_refresh': True,
        'per_profile': True
      },
      'example_value': [ 'xkb:us::eng' ],
      'id': 456,
      'caption': '''Configure the allowed input methods in a user session''',
      'tags': [],
      'desc': '''Configures which keyboard layouts are allowed for <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> user sessions.

      If this policy is set, the user can only select one of the input methods specified by this policy. If this policy is not set or set to an empty list, the user can select all supported input methods. If the current input method is not allowed by this policy, the input method will be switched to the hardware keyboard layout (if allowed) or the first valid entry in this list. All invalid or unsupported input methods in this list will be ignored.'''
    },
    {
      'name': 'ArcAppInstallEventLoggingEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:67-'],
      'supported_chrome_os_management': ['google_cloud'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 447,
      'caption': '''Log events for Android app installs''',
      'tags': ['google-sharing'],
      'desc': '''Enables reporting of key events during Android app installation to Google. Events are captured only for apps whose installation was triggered via policy.

      If the policy is set to true, events will be logged.
      If the policy is set to false or unset, events will not be logged.''',
    },
    {
      'name': 'UsageTimeLimit',
      'type': 'dict',
      'schema': {
        'type': 'object',
        'properties': {
          'time_window_limit': {
            'type': 'object',
            'properties': {
              'entries': {
                'type': 'array',
                'items': {
                  'type': 'object',
                  'properties': {
                    'effective_day': {
                      'type': 'string',
                      'enum': [
                        'MONDAY',
                        'TUESDAY',
                        'WEDNESDAY',
                        'THURSDAY',
                        'FRIDAY',
                        'SATURDAY',
                        'SUNDAY'
                      ]
                    },
                    'starts_at': {
                      'type': 'object',
                      'id': 'Time',
                      'properties': {
                        'hour': {
                          'type': 'integer',
                          'minimum': 0,
                          'maximum': 23
                        },
                        'minute': {
                          'type': 'integer',
                          'minimum': 0,
                          'maximum': 59
                        },
                      }
                    },
                    'ends_at': { '$ref': 'Time' },
                    'last_updated_millis': { 'type': 'string' }
                  }
                }
              }
            }
          },
          'time_usage_limit': {
            'type': 'object',
            'properties': {
              'monday': {
                'type': 'object',
                'id': 'TimeUsageLimitEntry',
                'properties': {
                  'usage_quota_mins': {
                    'type': 'integer',
                    'minimum': 0
                  },
                  'last_updated_millis': { 'type': 'string' }
                }
              },
              'tuesday': { '$ref': 'TimeUsageLimitEntry' },
              'wednesday': { '$ref': 'TimeUsageLimitEntry' },
              'thursday': { '$ref': 'TimeUsageLimitEntry' },
              'friday': { '$ref': 'TimeUsageLimitEntry' },
              'saturday': { '$ref': 'TimeUsageLimitEntry' },
              'sunday': { '$ref': 'TimeUsageLimitEntry' },
              'reset_at': { '$ref': 'Time' }
            }
          },
          'overrides': {
            'type': 'array',
            'items': {
              'type': 'object',
              'properties': {
                'action': {
                  'type': 'string',
                  'enum': [
                    'LOCK',
                    'UNLOCK'
                  ]
                },
                'created_at_millis': { 'type': 'string' },
                'action_specific_data': {
                  'type': 'object',
                  'properties': {
                    'duration_mins': {
                      'type': 'integer',
                      'minimum': 0
                    }
                  }
                }
              }
            }
          }
        }
      },
      'supported_on': ['chrome_os:69-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True
      },
      'example_value': {
        'time_window_limit': {
          'entries': [{
            'effective_day': 'WEDNESDAY',
            'starts_at': {
              'hour': 21,
              'minute': 0
            },
            'ends_at': {
              'hour': 7,
              'minute': 30
            },
            'last_updated_millis': '1000000'
          }]
        },
        'time_usage_limit': {
          'monday': {
            'usage_quota_mins': 120,
            'last_updated_millis': '1200000'
          },
          'tuesday': {
            'usage_quota_mins': 120,
            'last_updated_millis': '1200000'
          },
          'wednesday': {
            'usage_quota_mins': 120,
            'last_updated_millis': '1200000'
          },
          'thursday': {
            'usage_quota_mins': 120,
            'last_updated_millis': '1200000'
          },
          'friday': {
            'usage_quota_mins': 120,
            'last_updated_millis': '1200000'
          },
          'saturday': {
            'usage_quota_mins': 120,
            'last_updated_millis': '1200000'
          },
          'sunday': {
            'usage_quota_mins': 120,
            'last_updated_millis': '1200000'
          },
          'reset_at': {
            'hour': 6,
            'minute': 0
          }
        },
        'overrides': [{
          'action': 'UNLOCK',
          'created_at_millis': '1250000',
          'action_specific_data': {
            'duration_mins': 30
          }
        }]
      },
      'id': 448,
      'caption': '''Time Limit''',
      'tags': [],
      'desc': '''Allows you to lock the user's session based on the client time or the usage quota of the day.

          The |time_window_limit| specifies a daily window in which the user's session should be locked. We only support one rule for each day of the week, therefore the |entries| array may vary from 0-7 in size. |starts_at| and |ends_at| are the beginning and the end of the window limit, when |ends_at| is smaller than |starts_at| it means that the |time_limit_window| ends on the following day. |last_updated_millis| is the UTC timestamp for the last time this entry was updated, it is sent as a string because the timestamp wouldn't fit in an integer.

          The |time_usage_limit| specifies a daily screen quota, so when the user reaches it, the user's session is locked. There is a property for each day of the week, and it should be set only if there is an active quota for that day. |usage_quota_mins| is the amount of time that the managed device can be use in a day and |reset_at| is the time when the usage quota is renewed. The default value for |reset_at| is midnight ({'hour': 0, 'minute': 0}). |last_updated_millis| is the UTC timestamp for the last time this entry was updated, it is sent as a string because the timestamp wouldn't fit in an integer.

          |overrides| is provided to invalidate temporarily one or more of the previous rules.
          * If neither time_window_limit nor time_usage_limit is active |LOCK| can be used to lock the device.
          * |LOCK| temporarily locks a user session until the next time_window_limit or time_usage_limit starts.
          * |UNLOCK| unlocks a user's session locked by time_window_limit or time_usage_limit.
          |created_time_millis| is the UTC timestamp for the override creation, it is sent as a String because the timestamp wouldn't fit in an integer It is used to determine whether this override should still be applied. If the current active time limit feature (time usage limit or time window limit) started after the override was created, it should not take action. Also if the override was created before the last change of the active time_window_limit or time_usage_window it should not be applied.

          Multiple overrides may be sent, the newest valid entry is the one that is going to be applied.'''
    },
    {
      'name': 'ArcBackupRestoreServiceEnabled',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1 ],
      },
      'items': [
        {
          'name': 'BackupAndRestoreDisabled',
          'value': 0,
          'caption': '''Backup and restore disabled''',
        },
        {
          'name': 'BackupAndRestoreUnderUserControl',
          'value': 1,
          'caption': '''User decides whether to enable backup and restore''',
        },
      ],
      'supported_on': ['chrome_os:68-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': 1,
      'id': 449,
      'default_for_enterprise_users': 0,
      'caption': '''Control Android backup and restore service''',
      'tags': ['google-sharing'],
      'desc':
      '''This policy controls the availability of Android backup and restore.

      When this policy is not configured or set to <ph name="BR_DISABLED">BackupAndRestoreDisabled</ph>, Android backup and restore is disabled and cannot be enabled by the user.

      When this policy is set to <ph name="BR_UNDER_USER_CONTROL">BackupAndRestoreUnderUserControl</ph>, the user is asked to choose whether to use Android backup and restore. If the user enables backup and restore, Android app data is uploaded to Android backup servers and restored from them upon app re-installations for compatible apps.''',
    },
    {
      'name': 'ArcGoogleLocationServicesEnabled',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1 ],
      },
      'items': [
        {
          'name': 'GoogleLocationServicesDisabled',
          'value': 0,
          'caption': '''Google location services disabled''',
        },
        {
          'name': 'GoogleLocationServicesUnderUserControl',
          'value': 1,
          'caption': '''User decides whether to enable Google location services''',
        },
      ],
      'supported_on': ['chrome_os:68-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': 1,
      'id': 450,
      'default_for_enterprise_users': 0,
      'caption': '''Control Android Google location services''',
      'tags': ['google-sharing'],
      'desc':
      '''This policy controls the availability of Google location services.

      When this policy is not configured or set to <ph name="GLS_DISABLED">GoogleLocationServicesDisabled</ph>, Google location services are disabled and cannot be enabled by the user.

      When this policy is set to <ph name="GLS_UNDER_USER_CONTROL">GoogleLocationServicesUnderUserControl</ph>, the user is asked to choose whether to use Google location services. This will allow Android apps to use the services to query the device location, and also will enable submitting of anonymous location data to Google.

      Note that this policy is ignored and Google location services are always disabled when the <ph name="DEFAULT_GEOLOCATION_SETTING_POLICY_NAME">DefaultGeolocationSetting</ph> policy is set to <ph name="BLOCK_GEOLOCATION_SETTING">BlockGeolocation</ph>.''',
    },
    {
      'name': 'EnableSyncConsent',
      'type': 'main',
      'schema': { 'type': 'boolean'},
      'supported_on': ['chrome_os:66-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': False,
      'id': 451,
      'caption': '''Enable displaying Sync Consent during sign-in''',
      'tags': [],
      'desc': '''This policy controls if Sync Consent can be shown to the user during first sign-in. It should be set to false if Sync Consent is never needed for the user.
      If set to false, Sync Consent will not be displayed.
      If set to true or unset, Sync Consent can be displayed.''',
    },
    {
      'name': 'ContextualSuggestionsEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['android:69-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 452,
      'caption': '''Enable contextual suggestions of related web pages''',
      'tags': ['google-sharing'],
      'desc':
      '''If this is set to true or unset, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will suggest pages related to the current page.
      These suggestions are fetched remotely from Google servers.

      If this setting is set to false, suggestions will not be fetched or displayed.''',
    },
    {
      'name': 'DeviceAutoUpdateTimeRestrictions',
      'type': 'dict',
      'schema': {
        'type': 'array',
        'items': {
          'type': 'object',
          'description': 'Time interval that spans at most one week. If the start time is later than the end time, then the interval will wrap around.',
          'properties': {
            'start': {
              'description': 'Start time of the interval, inclusive.',
              'type': 'object',
              'id': 'DisallowedTimeInterval',
              'properties': {
                'day_of_week': {
                  'description': 'Day of the week for the interval.',
                  'type': 'string',
                  'enum': ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
                },
                'minutes': {
                  'description': 'Minutes elapsed in the current hour.',
                  'type': 'integer',
                  'minimum': 0,
                  'maximum': 59
                },
                'hours': {
                  'description': 'Hours elapsed since the start of the day in (24 hour format).',
                  'type': 'integer',
                  'minimum': 0,
                  'maximum': 23
                }
              },
              'required': ['day_of_week', 'minutes', 'hours']
            },
            'end': {
              'description': 'End of the interval, exclusive.',
              '$ref': 'DisallowedTimeInterval'
            }
          },
          'required': ['start', 'end']
        }
      },
      'supported_on': ['chrome_os:69-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': [
        {
          'start': {
            'day_of_week': 'Monday',
            'minutes': 50,
            'hours': 3,
          },
          'end': {
            'day_of_week': 'Thursday',
            'minutes': 30,
            'hours': 2,
          }
        },
        {
          'start': {
            'day_of_week': 'Thursday',
            'minutes': 30,
            'hours': 3
          },
          'end': {
            'day_of_week': 'Sunday',
            'minutes': 10,
            'hours': 15,
          }
        }
      ],
      'id': 453,
      'caption': '''Update Time Restrictions''',
      'tags': [],
      'desc': '''This policy controls the time frames during which the <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> device is not allowed to check for updates automatically.
      When this policy is set to a non-empty list of time intervals:
      Devices will not be able to check for updates automatically during the specified time intervals. Devices that require a rollback or are below the minimum <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> version will not be affected by this policy due to potential security issues. Furthermore, this policy will not block update checks requested by users or administrators.
      When this policy is unset or contains no time intervals:
      No automatic update checks will be blocked by this policy, but they may be blocked by other policies. This feature is only enabled on Chrome devices configured as auto-launch kiosks. Other devices will not be restricted by this policy.''',
    },
    {
      'id': 454,
      'name': 'PromotionalTabsEnabled',
      'tags': [],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'supported_on': ['chrome.*:69-'],
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'caption': '''Enable showing full-tab promotional content''',
      'example_value': False,
      'desc': '''Allows you to control the presentation of full-tab promotional and/or educational content in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.

      If not configured or enabled (set to true), <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> may show full-tab content to users to provide product information.

      If disabled (set to false), <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will not show full-tab content to users to provide product information.

      This setting controls the presentation of the welcome pages that help users sign into <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>, choose it as their default browser, or otherwise inform them of product features.'''
    },
    {
      'name': 'SafeSitesFilterBehavior',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1 ],
      },
      'items': [
        {
          'name': 'SafeSitesFilterDisabled',
          'value': 0,
          'caption': '''Do not filter sites for adult content''',
        },
        {
          'name': 'SafeSitesFilterEnabled',
          'value': 1,
          'caption': '''Filter top level sites (but not embedded iframes) for adult content''',
        },
      ],
      'supported_on': ['chrome.*:69-', 'chrome_os:69-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': 0,
      'id': 455,
      'caption': '''Control SafeSites adult content filtering.''',
      'tags': ['filtering', 'google-sharing'],
      'desc':
      '''This policy controls the application of the SafeSites URL filter.
      This filter uses the Google Safe Search API to classify URLs as pornographic or not.

      When this policy is not configured or set to "Do not filter sites for adult content", sites will not be filtered.

      When this policy is set to "Filter top level sites for adult content", sites classified as pornographic will be filtered.''',
    },
    {
      'name': 'OverrideSecurityRestrictionsOnInsecureOrigin',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' }
      },
      'supported_on': ['chrome.*:69-', 'chrome_os:69-', 'android:69-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': True,
      },
      'example_value': ['http://testserver.example.com/','*.example.org'],
      'id': 457,
      'caption': '''Origins or hostname patterns for which restrictions on
      insecure origins should not apply''',
      'tags': ['system-security'],
      'desc': '''
      The policy specifies a list of origins (URLs) or hostname patterns (such
      as "*.example.com") for which security restrictions on insecure origins
      will not apply.

      The intent is to allow organizations to set whitelist origins for legacy
      applications that cannot deploy TLS, or to set up a staging server for
      internal web development so that their developers can test out features
      requiring secure contexts without having to deploy TLS on the staging
      server. This policy will also prevent the origin from being labeled
      "Not Secure" in the omnibox.

      Setting a list of URLs in this policy has the same effect as setting the
      command-line flag '--unsafely-treat-insecure-origin-as-secure' to a
      comma-separated list of the same URLs. If the policy is set, it will
      override the command-line flag.

      This policy will override UnsafelyTreatInsecureOriginAsSecure, if present.

      For more information on secure contexts, see
      https://www.w3.org/TR/secure-contexts/.
      '''
    },
    {
      'name': 'DeviceUpdateStagingSchedule',
      'type': 'dict',
      'schema': {
        'type': 'array',
        'items': {
          'type': 'object',
          'description': 'Contains the number of days and the percentage of the fleet that should be updated after those days have passed.',
          'id': 'DayPercentagePair',
          'properties': {
            'days': {
              'description': 'Days from update discovery.',
              'type': 'integer',
              'minimum': 1,
              'maximum': 28,
            },
            'percentage': {
              'description': 'Percentage of the fleet that should be updated after the given days.',
              'type': 'integer',
              'minimum': 0,
              'maximum': 100,
            }
          }
        },
      },
      'supported_on': ['chrome_os:69-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': [{'days': 7, 'percentage': 50}, {'days': 10, 'percentage': 100}],
      'id': 458,
      'caption': '''The staging schedule for applying a new update''',
      'tags': ['system-security'],
      'desc': '''This policy defines a list of percentages that will define the fraction of <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> devices in the OU to update per day starting from the day the update is first discovered. The discovery time is later than the update published time, since it could be a while after the update publishing until the device checks for updates.

      Each (day, percentage) pair contains which percentage of the fleet has to be updated by the given number of days since the update has been discovered. For example, if we have the pairs [(4, 40), (10, 70), (15, 100)], then 40% of the fleet should have been updated 4 days after seeing the update. 70% should be updated after 10 days, and so on.

      If there is a value defined for this policy, updates will ignore the <ph name="DEVICE_UPDATE_SCATTER_FACTOR_POLICY_NAME">DeviceUpdateScatterFactor</ph> policy and follow this policy instead.

      If this list is empty, there will be no staging and updates will be applied according to other device policies.

      This policy does not apply for channel switches.''',
    },
    {
      'name': 'TabLifecyclesEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.win:69-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': False,
      'id': 460,
      'caption': '''Enables or disables tab lifecycles''',
      'tags': [],
      'desc': '''The tab lifecyles feature reclaims CPU and eventually memory associated with running tabs that have not been used in a long period of time, by first throttling them, then freezing them and finally discarding them.

      If the policy is set to false then tab lifecycles are disabled, and all tabs will be left running normally.

      If the policy is set to true or left unspecified then tab lifecycles are enabled.''',
    },
    {
      'name': 'UrlKeyedAnonymizedDataCollectionEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:69-', 'chrome_os:69-', 'android:70-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 461,
      'caption': '''Enable URL-keyed anonymized data collection''',
      'tags': ['google-sharing'],
      'desc': '''Enable URL-keyed anonymized data collection in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> and prevents users from changing this setting.

      URL-keyed anonymized data collection sends URLs of pages the user visits to Google to make searches and browsing better.

      If you enable this policy, URL-keyed anonymized data collection is always active.

      If you disable this policy, URL-keyed anonymized data collection is never active.

      If this policy is left not set, URL-keyed anonymized data collection will be enabled but the user will be able to change it.''',
    },
    {
      'id': 462,
      'name': 'NetworkFileSharesAllowed',
      'type': 'main',
      'schema': {'type': 'boolean', },
      'tags': [],
      'features': {
        'dynamic_refresh': False,
        'per_profile': True,
      },
      'supported_on': ['chrome_os:70-'],
      'caption': '''Contorls Network File Shares for ChromeOS availability''',
      'example_value': True,
      'desc': '''This policy controls whether the Network File Shares feature for <ph name="PRODUCT_NAME">$2<ex>Google Chrome OS</ex></ph> is allowed for a user.

      When this policy is not configured or set to True, users will be able to use Network File Shares.

      When this policy is set to False, users will be unable to use Network File Shares.''',
    },
    {
      'name': 'WebRtcEventLogCollectionAllowed',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:70-', 'chrome_os:70-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 464,
      'caption': '''Allow collection of WebRTC event logs from Google services''',
      'tags': ['google-sharing'],
      'desc': '''
      If the policy is set to true, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> is allowed to collect WebRTC event logs from Google services (e.g. Google Meet), and upload those logs to Google.

      If the policy is set to false, or is unset, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> may not collect nor upload such logs.

      These logs contain diagnostic information helpful when debugging issues with audio or video calls in Chrome, such as the time and size of sent and received RTP packets, feedback about congestion on the network, and metadata about time and quality of audio and video frames. These logs do not contain audio or video contents from the call.

      This data collection by Chrome can only be triggered by Google's web services, such as Google Hangouts or Google Meet.

      Google may associate these logs, by means of a session ID, with other logs collected by the Google service itself; this is intended to make debugging easier.
      ''',
    },
    {
      'name': 'PowerSmartDimEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:70-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': False,
      'id': 465,
      'caption': '''Enable smart dim model to extend the time until the screen is dimmed''',
      'tags': [],
      'desc': '''Specifies whether a smart dim model is allowed to extend the time until the screen is dimmed.

      When the screen is about to be dimmed, the smart dim model evaluates if dimming the screen should be deferred. If the smart dim model defers dimming the screen, it effectively extends the time until the screen is dimmed. In this case, the screen off, screen lock and idle delays get adjusted to maintain the same distances from the screen dim delay as originally configured.
      If this policy is set to True or left not set, the smart dim model will be enabled and allowed to extend the time until the screen is dimmed. If this policy is set to False, the smart dim model will not influence screen dimming.''',
    },
    {
      'name': 'CoalesceH2ConnectionsWithClientCertificatesForHosts',
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': { 'type': 'string' },
      },
      'supported_on': ['chrome.*:70-','android:70-','chrome_os:70-'],
      'future': True,
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': ['example.com'],
      'id': 466,
      'caption': '''Allow coalescing of HTTP/2 connections for these hosts even when client certificates are used''',
      'tags': [],
      'desc': '''This policy allows HTTP/2 connection coalescing when client certificates are in use. In order to coalesce, both the hostname of the potential new connection and the hostname of an existing connection must match one or more patterns described by this policy. The policy is a list of hosts using the URLBlacklist filter format: "example.com" matches "example.com" and all subdomains (e.g. "sub.example.com"), while ".example.net" matches exactly "example.net".

      Coalescing requests to different hosts over connections that use client certificates can create security and privacy issues, as the ambient authority will be conveyed to all requests, even if the user did not explicitly authorize this. This policy is temporary and will be removed in a future release. See https://crbug.com/855690.

      If this policy is left unset, then the default behavior of not allowing any HTTP/2 connection coalescing on connections using client certificates will be used.''',
    },
    {
      'id': 467,
      'name': 'NetBiosShareDiscoveryEnabled',
      'type': 'main',
      'schema': {'type': 'boolean', },
      'tags': [],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'supported_on': ['chrome_os:70-'],
      'caption': '''Controls Network File Share discovery via <ph name="NETBIOS_NAME">NetBIOS</ph>''',
      'example_value': True,
      'default_for_enterprise_users': False,
      'desc': '''This policy controls whether the Network File Shares feature for <ph name="PRODUCT_NAME">$2<ex>Google Chrome OS</ex></ph> should use the <ph name="NETBIOS_PROTOCOL">NetBIOS Name Query Request protocol</ph> to discover shares on the network.
      When this policy is set to True, share discovery will use the <ph name="NETBIOS_PROTOCOL">NetBIOS Name Query Request protocol</ph> protocol to discover shares on the network.
      When this policy is set to False, share discovery will not use the <ph name="NETBIOS_PROTOCOL">NetBIOS Name Query Request protocol</ph> protocol to discover shares.
      If the policy is left not set, the default is disabled for enterprise-managed users and enabled for non-managed users.''',
    },
    {
      'name': 'WebAppInstallForceList',
      'type': 'dict',
      'schema': {
        'type': 'array',
        'items': {
          'type': 'object',
          'properties': {
            'url': { 'type': 'string' },
            'launch_container': {
              'type': 'string',
              'enum': [
                'tab',
                'window'
              ]
            }
          },
          'required': ['url']
        }
      },
      'supported_on': [],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': [{
        'url': 'https://www.google.com/maps',
        'launch_container': 'window'
      }, {
        'url': 'https://docs.google.com',
        'launch_container': 'tab'
      }],
      'id': 468,
      'caption': '''Configure list of force-installed Web Apps''',
      'tags': [],
      'desc': '''Specifies a list of websites that are installed silently, without user interaction, and which cannot be uninstalled nor disabled by the user.

      Each list item of the policy is an object with two members: "url" and "launch_container". "url" should be the URL of the web app to install and "launch_container" should be either "window" or "tab" to indicate how the Web App will be opened once installed. If "launch_container" is omitted, the app will launch in a window if Chrome considers it a Progressive Web App and in a tab otherwise.''',
      'label': '''URLs for Web Apps to be silently installed.''',
    },
    {
      'id': 470,
      'name': 'ReportVersionData',
      'type': 'main',
      'schema': {'type': 'boolean' },
      'tags': ['admin-sharing'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'supported_on': ['chrome.*:70-'],
      'future': True,
      'caption': '''Report OS and <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> Version Information''',
      'example_value': False,
      'desc': '''This policy controls whether to report version information, such as OS version, OS platform, OS architecture, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> version and <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> channel.

      When this policy is left unset or set to True, version information is gathered.
      When this policy is set to False, version information is not gathered.

      This policy is only effective when the <ph name="CHROME_REPORTING_EXTENSION_NAME">Chrome Reporting Extension</ph> is enabled, and the machine is enrolled with <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME">MachineLevelUserCloudPolicyEnrollmentToken</ph>.'''
    },
    {
      'id': 471,
      'name': 'ReportPolicyData',
      'type': 'main',
      'schema': {'type': 'boolean' },
      'tags': ['admin-sharing'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'supported_on': ['chrome.*:70-'],
      'future': True,
      'caption': '''Report <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> Policy Information''',
      'example_value': False,
      'desc': '''This policy controls whether to report policy data and time of policy fetch.

      When this policy is left unset or set to True, policy data and time of policy fetch are gathered.
      When this policy is set to False, policy data and time of policy fetch are not gathered.

      This policy is only effective when the <ph name="CHROME_REPORTING_EXTENSION_NAME">Chrome Reporting Extension</ph> is enabled, and the machine is enrolled with <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME">MachineLevelUserCloudPolicyEnrollmentToken</ph>.'''
    },
    {
      'id': 472,
      'name': 'ReportMachineIDData',
      'type': 'main',
      'schema': {'type': 'boolean' },
      'tags': ['admin-sharing'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'supported_on': ['chrome.*:70-'],
      'future': True,
      'caption': '''Report Machine Identification information''',
      'example_value': False,
      'desc': '''This policy controls whether to report information that can be used to identify machines, such as machine name and network addresses.

      When this policy is left unset or set to True, information that can be used to identify machines is gathered.
      When this policy is set to False, information that can be used to identify machines is not gathered.

      This policy is only effective when the <ph name="CHROME_REPORTING_EXTENSION_NAME">Chrome Reporting Extension</ph> is enabled, and the machine is enrolled with <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME">MachineLevelUserCloudPolicyEnrollmentToken</ph>.'''
    },
    {
      'id': 473,
      'name': 'ReportUserIDData',
      'type': 'main',
      'schema': {'type': 'boolean' },
      'tags': ['admin-sharing'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'supported_on': ['chrome.*:70-'],
      'future': True,
      'caption': '''Report User Identification information''',
      'example_value': False,
      'desc': '''This policy controls whether to report information that can be used to identify users, such as OS login, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> Profile login, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> Profile name, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> Profile path and <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> executable path.

      When this policy is left unset or set to True, information that can be used to identify users is gathered.
      When this policy is set to False, information that can be used to identify users is not gathered.

      This policy is only effective when the <ph name="CHROME_REPORTING_EXTENSION_NAME">Chrome Reporting Extension</ph> is enabled, and the machine is enrolled with <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME">MachineLevelUserCloudPolicyEnrollmentToken</ph>.'''
    },
    {
      'id':499,
      'name':'ReportExtensionsAndPluginsData',
      'type': 'main',
      'schema': {'type': 'boolean' },
      'tags': ['admin-sharing'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'supported_on': ['chrome.*:72-'],
      'future': True,
      'caption': '''Report Extensions and Plugins information''',
      'example_value': False,
      'desc': '''This policy controls whether to report extensions and plugins information.

      When this policy is left unset or set to True, extension and plugins data are gathered.
      When this policy is set to False, extensions and plugins data are not gathered.

      This policy is only effective when the <ph name="CHROME_REPORTING_EXTENSION_NAME">Chrome Reporting Extension</ph> is enabled, and the machine is enrolled with <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME">MachineLevelUserCloudPolicyEnrollmentToken</ph>.'''
    },
    {
      'id':500,
      'name':'ReportSafeBrowsingData',
      'type': 'main',
      'schema': {'type': 'boolean' },
      'tags': ['admin-sharing'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'supported_on': ['chrome.*:72-'],
      'future': True,
      'caption': '''Report Safe Browsing information''',
      'example_value': False,
      'desc': '''This policy controls whether to report Safe Browsing information including the number of Safe Browsing warning and the number of safe browsering warning click through.

      When this policy is left unset or set to True, Safe Browsing data are gathered.
      When this policy is set to False, Safe Browsing data are not gathered.

      This policy is only effective when the <ph name="CHROME_REPORTING_EXTENSION_NAME">Chrome Reporting Extension</ph> is enabled, and the machine is enrolled with <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME">MachineLevelUserCloudPolicyEnrollmentToken</ph>.'''
    },
    {
      'id': 493,
      'name': 'CloudReportingEnabled',
      'type': 'main',
      'schema': {'type': 'boolean' },
      'tags': ['admin-sharing', 'google-sharing'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'supported_on': ['chrome.*:72-'],
      'future': True,
      'caption': '''Enables <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> cloud reporting''',
      'example_value': True,
      'desc': '''This policy controls <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> cloud reporting which uploads information about the browser operation to Google Admin console.

      When this policy is left unset or set to False, there is no data collected or uploaded.
      When this policy is set to True, the data is collected and uploaded to Google Admin console.
      To control what data is uploaded, please use policies in the group Chrome Reporting Extension.

      This policy is only effective when the machine is enrolled with <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME">MachineLevelUserCloudPolicyEnrollmentToken</ph>.

      This policy force installs <ph name="CHROME_REPORTING_EXTENSION_NAME">Chrome Reporting Extension</ph> for the reporting and overrides any extension policies related to that extension.'''
    },
    {
      'name': 'EnterpriseHardwarePlatformAPIEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.*:71-', 'chrome_os:71-', 'android:71-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 483,
      'caption': '''Enables managed extensions to use the Enterprise Hardware Platform API''',
      'tags': [],
      'desc': '''When this policy is set to enabled, extensions installed by enterprise policy are allowed to use the Enterprise Hardware Platform API.
      When this policy is set to disabled or not set, no extensions are allowed to use the Enterprise Hardware Platform API.
      This policy also applies to component extensions such as the Hangout Services extension.''',
    },
    {
      'name': 'VpnConfigAllowed',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:71-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': False,
      'id': 485,
      'caption': '''Allow the user to manage VPN connections''',
      'tags': [],
      'desc': '''Allow the user to manage VPN connections.

      If this policy is set to false, all <ph name="PRODUCT_NAME">$2<ex>Google Chrome OS</ex></ph> user interfaces that would allow the user to disconnect or modify VPN connections are disabled.

      If this policy is unset or set to true, users can disconnect or modify VPN connections as usual.

      If the VPN connection is created via a VPN app, the UI inside the app remains unaffected by this policy. Therefore, the user might still be able to use the app to modify the VPN connection.

      This policy is meant to be used together with the "Always on VPN" feature, that lets the admin decide to establish a VPN connection on boot.''',
    },
    {
      'id': 489,
      'name': 'NTLMShareAuthenticationEnabled',
      'type': 'main',
      'schema': {'type': 'boolean', },
      'tags': [],
      'features': {
        'dynamic_refresh': False,
        'per_profile': True,
      },
      'supported_on': ['chrome_os:71-'],
      'caption': '''Controls enabling NTLM as an authentication protocol for SMB mounts''',
      'example_value': True,
      'default_for_enterprise_users': False,
      'desc': '''This policy controls whether the Network File Shares feature for <ph name="PRODUCT_NAME">$2<ex>Google Chrome OS</ex></ph> will use NTLM for authentication.

      When this policy is set to True, NTLM will be used for authentication to SMB shares if necessary.
      When this policy is set to False, NTLM authentication to SMB shares will be disabled.

      If the policy is left not set, the default is disabled for enterprise-managed users and enabled for non-managed users.''',
    },
    {
      'name': 'NetworkFileSharesPreconfiguredShares',
      'type': 'dict',
      'schema': {
        'type': 'array',
        'items': {
          'type': 'object',
          'properties': {
            'share_url': { 'type': 'string' },
            'mode': {
              'type': 'string',
              'enum': [
                'drop_down', 'pre_mount',
              ]
            }
          },
          'required': ['share_url', 'mode'],
        }
      },
      'supported_on': ['chrome_os:71-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': [{
        'share_url': 'smb://server/share',
        'mode': 'drop_down'
      }, {
        'share_url': '\\\\server\\share',
        'mode': 'drop_down'
      }],
      'id': 490,
      'caption': '''List of preconfigured network file shares.''',
      'tags': [],
      'desc': '''Specifies a list of preconfigued network file shares.

      Each list item of the policy is an object with two members: "share_url" and "mode". "share_url" should be the URL of the share and "mode" should be either "drop_down" or "pre_mount". "drop_down" mode indicates that "share_url" will be added to the share discovery drop down. "pre_mount" mode indicates that "share_url" will be mounted.''',
    },
    {
      'name': 'ScreenBrightnessPercent',
      'type': 'dict',
      'schema': {
        'type': 'object',
        'properties': {
          'BrightnessAC': {
            'description': 'Screen brightness percent when running on AC power',
            'type': 'integer',
            'minimum': 0,
            'maximum': 100
          },
          'BrightnessBattery': {
            'description': 'Screen brightness percent when running on battery power',
            'type': 'integer',
            'minimum': 0,
            'maximum': 100
          }
        }
      },
      'supported_on': ['chrome_os:72-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': {
        'BrightnessAC': 90,
        'BrightnessBattery': 75
      },
      'id': 492,
      'caption': '''Screen brightness percent''',
      'tags': [],
      'desc': '''Specifies screen brightness percent.
          When this policy is set initial screen brightness is adjusted to the policy value, but the user can change it later on. Auto-brightness features are disabled.
          When this policy is unset user screen controls and auto-brightness features are not affected.
          The policy values should be specified in percents in range 0-100.''',
    },
    {
      'id': 494,
      'name': 'AlternativeBrowserPath',
      'future': True,
      'type': 'string',
      'schema': {'type': 'string'},
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': '${ie}',
      'supported_on': ['chrome.*:71-'],
      'caption': '''Alternative browser to launch for configured websites.''',
      'tags': [],
      'desc': '''This policy controls which command to use to open URLs in an alternative browser.

      When this policy is left unset, a platform-specific default is used: Internet Explorer for Windows, or Safari for Mac OS X. On Linux, launching an alternative browser will fail when this is unset.

      When this policy is set to one of ${ie}, ${firefox}, ${safari} or
      ${opera}, that browser will launch if it is installed. ${ie} is only
      available on Windows, and ${safari} is only available on Windows and Mac
      OS X.

      When this policy is set to a file path, that file is used as an executable
      file.''',
    },
    {
      'id': 495,
      'name': 'AlternativeBrowserParameters',
      'future': True,
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': {'type': 'string'},
      },
      'example_value': [
        '-foreground',
        '-new-window',
        '${url}',
        '-profile',
        '%HOME%\\browser_profile',
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'supported_on': ['chrome.*:71-'],
      'caption': '''Command-line parameters for the alternative browser.''',
      'tags': [],
      'desc': '''This policy controls command-line parameters to launch to the alternative browser.

      When this policy is left unset, only the URL is passed as a command-line parameters.

      When this policy is set to a list of strings, each string is passed to the alternative browser as a separate command-line parameters. On Windows, the parameters are joined with spaces. On Mac OS X and Linux, a parameter may contain spaces, and still be treated as a single parameter.

      If an element contains ${url}, it gets replaced with the URL of the page to open.

      If no element contains ${url}, the URL is appended at the end of the command line.

      Environment variables are expanded. On Windows, %ABC% is replaced with the value of the ABC environment variable. On Mac OS X and Linux, ${ABC} is replaced with the value of the ABC environment variable.''',
    },
    {
      'id': 496,
      'name': 'BrowserSwitcherUrlList',
      'future': True,
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': {'type': 'string'},
      },
      'example_value': [
        'ie.com',
        '!open-in-chrome.ie.com',
        'foobar.com/ie-only/'
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'supported_on': ['chrome.*:71-'],
      'caption': '''Websites to open in alternative browser''',
      'tags': [],
      'desc': '''This policy controls the list of websites to open in an alternative browser.

      Note that elements can also be added to this list through the <ph name="USE_IE_SITELIST_POLICY_NAME">BrowserSwitcherUseIeSitelist</ph> and <ph name="EXTERNAL_SITELIST_URL_POLICY_NAME">BrowserSwitcherExternalSitelistUrl</ph> policies.

      When this policy is left unset, no websites are added to the list.

      When this policy is set, each item is treated as a rule for something to open in an alternative browser. <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> uses those rules when choosing if a URL should open in an alternative browser.

      When the Internet Explorer add-in is present and enabled, Internet Explorer switches back to <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> when the rules do not match.

      If rules contradict eachother, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> uses the most specific rule.''',
    },
    {
      'id': 497,
      'name': 'BrowserSwitcherUrlGreylist',
      'future': True,
      'type': 'list',
      'schema': {
        'type': 'array',
        'items': {'type': 'string'},
      },
      'example_value': [
        'ie.com',
        '!open-in-chrome.ie.com',
        'foobar.com/ie-only/'
      ],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'supported_on': ['chrome.*:71-'],
      'caption': '''Websites that should never trigger a browser switch.''',
      'tags': [],
      'desc': '''This policy controls the list of websites that will never cause a browser switch.

      Note that elements can also be added to this list through the <ph name="USE_IE_SITELIST_POLICY_NAME">BrowserSwitcherUseIeSitelist</ph> and <ph name="EXTERNAL_SITELIST_URL_POLICY_NAME">BrowserSwitcherExternalSitelistUrl</ph> policies.

      When this policy is left unset, no websites are added to the list.

      When this policy is set, each item is treated as a rule, similar to the <ph name="URL_LIST_POLICY_NAME">BrowserSwitcherUrlList</ph> policy. However, the logic is reversed: rules that match will not open an alternative browser.

      Unlike <ph name="URL_LIST_POLICY_NAME">BrowserSwitcherUrlList</ph>, rules apply to both directions. That is, when the Internet Explorer add-in is present and enabled, it also controls whether <ph name="IE_PRODUCT_NAME">Internet Explorer</ph> should open these URLs in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.''',
    },
    {
      'id': 498,
      'name': 'BrowserSwitcherUseIeSitelist',
      'future': True,
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'example_value': True,
      'features': {
        'dynamic_refresh': False,
        'per_profile': True,
      },
      'supported_on': ['chrome.win:71-'],
      'caption': '''Use Internet Explorer's SiteList policy for Legacy Browser Support.''',
      'tags': [],
      'desc': '''This policy controls whether to load rules from Internet Explorer's SiteList policy.

      When this policy is left unset, or set to false, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> does not use Internet Explorer's <ph name="IEEM_SITELIST_POLICY">SiteList</ph> policy as a source of rules for switching browsers.

      When this policy is set to true, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> reads Internet Explorer's <ph name="IEEM_SITELIST_POLICY">SiteList</ph> to obtain the site list's URL. <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> then downloads the site list from that URL, and applies the rules as if they had been configured with the <ph name="SITELIST_POLICY_NAME">BrowserSwitcherUrlList</ph> policy.

      For more information on Internet Explorer's <ph name="IEEM_SITELIST_POLICY">SiteList</ph> policy: https://docs.microsoft.com/internet-explorer/ie11-deploy-guide/what-is-enterprise-mode''',
    },
    {
      'id': 511,
      'name': 'BrowserSwitcherExternalSitelistUrl',
      'future': True,
      'type': 'string',
      'schema': { 'type': 'string' },
      'example_value': 'http://example.com/sitelist.xml',
      'features': {
        'dynamic_refresh': False,
        'per_profile': True,
      },
      'supported_on': ['chrome.*:72-'],
      'caption': '''URL of an XML file that contains URLs to load in an alternative browser.''',
      'tags': [],
      'desc': '''This policy is a URL, that points to an XML file in the same format as Internet Explorer's <ph name="IEEM_SITELIST_POLICY">SiteList</ph> policy. This loads rules from an XML file, without sharing those rules with Internet Explorer.

      When this policy is left unset, or not set to a valid URL, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> does not use it as a source of rules for switching browsers.

      When this policy is set to a valid URL, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> downloads the site list from that URL, and applies the rules as if they had been configured with the <ph name="SITELIST_POLICY_NAME">BrowserSwitcherUrlList</ph> policy.

      For more information on Internet Explorer's <ph name="IEEM_SITELIST_POLICY">SiteList</ph> policy: https://docs.microsoft.com/internet-explorer/ie11-deploy-guide/what-is-enterprise-mode''',
    },
    {
      'id': 524,
      'name': 'BrowserSwitcherDelay',
      'future': True,
      'type': 'int',
      'schema': { 'type': 'integer' },
      'example_value': 10000,
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'supported_on': ['chrome.*:74-'],
      'caption': '''Delay before launching alternative browser (milliseconds)''',
      'tags': [],
      'desc': '''This policy controls how long to wait before launching an alternative browser, in milliseconds.

      When this policy is left unset, or set to 0, navigating to a designated URL immediately opens it in an alternative browser.

      When this policy is set to a number, Chrome shows a message for that many milliseconds, and then opens the alternative browser.''',
    },
    {
      'id': 517,
      'name': 'BrowserSwitcherEnabled',
      'future': True,
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'example_value': True,
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'supported_on': ['chrome.*:73-'],
      'caption': '''Enable the Legacy Browser Support feature.''',
      'tags': [],
      'desc': '''This policy controls whether to enable Legacy Browser Support.

      When this policy is left unset, or is set to false, Chrome will not attempt to launch designated URLs in an alternate browser.

      When this policy is set to true, Chrome will attempt to launch some URLs in an alternate browser (such as Internet Explorer). This feature is configured using the policies in the <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP">Legacy Browser support</ph> group.

      This feature is a replacement for the <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME">'Legacy Browser Support'</ph> extension. Configuration from the extension will carry over to this feature, but it is strongly advised to use the Chrome policies instead. This ensures better compatibility in the future.''',
    },
    {
      'id': 519,
      'name': 'BrowserSwitcherKeepLastChromeTab',
      'future': True,
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'example_value': False,
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'supported_on': ['chrome.*:74-'],
      'caption': '''Keep last tab open in Chrome.''',
      'tags': [],
      'desc': '''This policy controls whether to close Chrome completely when the last tab would switch to another browser.

      When this policy is left unset, or is set to true, Chrome will keep at least one tab open, after switching to an alternate browser.

      When this policy is set to false, Chrome will close the tab after switching to an alternate browser, even if it was the last tab. This will cause Chrome to exit completely.''',
    },
    {
      'name': 'DeviceDisplayResolution',
      'type': 'dict',
      'schema': {
        'type': 'object',
        'properties': {
          'external_width': { 'type': 'integer', 'minimum': 1 },
          'external_height': { 'type': 'integer', 'minimum': 1 },
          'external_scale_percentage': { 'type': 'integer', 'minimum': 1 },
          'external_use_native': { 'type': 'boolean' },
          'internal_scale_percentage': { 'type': 'integer', 'minimum': 1 },
          'recommended': { 'type': 'boolean' }
        }
      },
      'supported_on': [ 'chrome_os:72-' ],
      'features': {
        'can_be_recommended': False,
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'device_only': True,
      'example_value': {
        'external_width': 1920,
        'external_height': 1080,
        'external_use_native': False,
        'external_scale_percentage': 100,
        'internal_scale_percentage': 150,
        'recommended': True
      },
      'id': 502,
      'caption': '''Set display resolution and scale factor''',
      'tags': [],
      'desc': '''When this policy is set, resolution and scale factor of each
      display are set to the specified values. External display settings are
      applied to all connected external displays.

      Values of "external_width" and "external_height" should be specified in
      pixels. Values of "external_scale_percentage" and
      "internal_scale_percentage" should be specified in percents.

      If "external_use_native" is set to true, policy will ignore values of
      "external_height" and "external_width" and set resolution of the external
      displays to their native resolution.

      If "external_use_native" is false or not provided and either
      "external_height" or "external_width" is not provided, policy doesn't
      affect the external display settings. If specified resolution or
      scale factor is not supported by some display, policy is not applied to
      that display.

      If "recommended" flag is set to true, users may change resolution and
      scale factor of any display via the settings page after logging in, but
      their settings will be overriden by the policy value at the next reboot.
      If "recommended" flag is set to false or not set, users can't change the
      display settings.''',
    },
    {
      'name': 'PluginVmAllowed',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:72-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': True,
      'id': 503,
      'caption': '''Allow devices to use a <ph name="PLUGIN_VM_NAME">PluginVm</ph> on <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph>''',
      'tags': [],
      'desc': '''Enable this device to run PluginVm.

      If the policy is set to false or left unset, <ph name="PLUGIN_VM_NAME">PluginVm</ph> is not enabled for the device. If set to true, <ph name="PLUGIN_VM_NAME">PluginVm</ph> is enabled for the device as long as other settings also allow it. <ph name="PLUGIN_VM_ALLOWED_POLICY_NAME">PluginVmAllowed</ph> needs to be true, <ph name="PLUGIN_VM_LICENSE_KEY_POLICY_NAME">PluginVmLicenseKey</ph> and <ph name="PLUGIN_VM_IMAGE_POLICY_NAME">PluginVmImage</ph> need to be set for <ph name="PLUGIN_VM_NAME">PluginVm</ph> to be allowed to run.''',
    },
    {
      'name': 'PluginVmLicenseKey',
      'type': 'string',
      'schema': { 'type': 'string' },
      'supported_on': ['chrome_os:73-'],
      'device_only': True,
      'features': {
        'dynamic_refresh': True,
      },
      'example_value': "LICENSE_KEY",
      'id': 515,
      'caption': '''<ph name="PLUGIN_VM_NAME">PluginVm</ph> license key''',
      'tags': [],
      'desc': '''This policy specifies <ph name="PLUGIN_VM_NAME">PluginVm</ph> license key for this device.''',
    },
    {
      'name': 'PluginVmImage',
      'type': 'dict',
      'schema': {
        'type': 'object',
        'properties': {
          'url': {
            'description': 'The URL from which the <ph name="PLUGIN_VM_NAME">PluginVm</ph> image can be downloaded.',
            'type': 'string'
          },
          'hash': {
            'description': 'The SHA-256 hash of the <ph name="PLUGIN_VM_NAME">PluginVm</ph> image.',
            'type': 'string'
          }
        },
      },
      'supported_on': ['chrome_os:72-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'example_value': {
        "url": "https://example.com/plugin_vm_image",
        "hash": "842841a4c75a55ad050d686f4ea5f77e83ae059877fe9b6946aa63d3d057ed32"
      },
      'id': 504,
      'caption': '''<ph name="PLUGIN_VM_NAME">PluginVm</ph> image''',
      'tags': [],
      'desc': '''This policy specifies the <ph name="PLUGIN_VM_NAME">PluginVm</ph> image for a user. The policy is set by specifying the URL from which the device can download the image and a SHA-256 hash used to verify the integrity of the download.

      The policy should be specified as a string that expresses the URL and hash in the JSON format.''',
    },
    {
      'name': 'ParentAccessCodeConfig',
      'type': 'dict',
      'schema': {
        'sensitiveValue': True,
        'type': 'object',
        'properties': {
          'current_config': {
            'id': 'Config',
            'type': 'object',
            'description': 'Configuration used to generate and verify Parent Access Code.',
            'properties': {
              'shared_secret': {
                'type': 'string',
                'description': 'Secret shared between child and parent devices.'
              },
              'access_code_ttl': {
                'type': 'integer',
                'minimum': 60,
                'maximum': 3600,
                'description': 'Time that access code is valid for (in seconds).'
              },
              'clock_drift_tolerance': {
                'type': 'integer',
                'minimum': 0,
                'maximum': 1800,
                'description': 'The allowed difference between the clock on child and parent devices (in seconds).'
              }
            }
          },
          'future_config': {
            '$ref': 'Config',
          },
          'old_configs': {
            'type': 'array',
            'items': { '$ref': 'Config'},
          }
        },
      },
      'supported_on': ['chrome_os:73-'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True
      },
      'example_value': {
        'current_config': {
          'shared_secret': 'oOA9nX02LdhYdOzwMsGof+QA3wUKP4YMNlk9S/W3o+w=',
          'access_code_ttl': 600,
          'clock_drift_tolerance': 300
        },
        'future_config': {
          'shared_secret': 'KMsoIjnpvcWmiU1GHchp2blR96mNyJwS',
          'access_code_ttl': 600,
          'clock_drift_tolerance': 300
        },
        'old_configs': [{
          'shared_secret': 'sTr6jqMTJGCbLhWI5plFTQb/VsqxwX2Q',
          'access_code_ttl': 600,
          'clock_drift_tolerance': 300
        }],
      },
      'id': 507,
      'caption': '''Parent Access Code Configuration''',
      'tags': [],
      'desc': '''This policy specifies configuration that is used to generate and verify Parent Access Code.

      |current_config| is always used for generating access code and should be used for validating access code only when it cannot be validated with |future_config|.
      |future_config| is the primary config used for validating access code.
      |old_configs| should be used for validating access code only when it cannot be validated with |future_config| nor |current_config|.

      The expected way of using this policy is to gradually rotate access code configuration. New configuration is always put into |future_config| and at the same
      time the existing value is moved into |current_config|. |current_config|'s previous values are moved into |old_configs| and removed after rotation cycle is finished.

      This policy applies only to child user.
      When this policy is set Parent Access Code can be verified on child user's device.
      When this policy is unset it is not possible to verify Parent Access Code on child user's device.'''
    },
    {
      'name': 'CertificateManagementAllowed',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 0, 1, 2 ],
      },
      'items': [
        {
          'name': 'All',
          'value': 0,
          'caption': '''Allow users to manage all certificates''',
        },
        {
          'name': 'UserOnly',
          'value': 1,
          'caption': '''Allow users to manage user certificates''',
        },
        {
          'name': 'None',
          'value': 2,
          'caption': '''Disallow users from managing certificates''',
        },
      ],
      'supported_on': ['chrome_os:74-'],
      'tags' : [],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True
      },
      'example_value': 1,
      'id': 518,
      'caption': '''Allow users to manage installed certificates.''',
      'desc': '''This policy controls whether user are able to import and remove certificates via Certificate Manager.

      If this policy is set to ''Allow users to manage all certificates'' or left not set, users will be able to manage certificates.

      If this policy is set to ''Allow users to manage user certificates'', users will be able to manage user certificates, but not device-wide certificates.

      If this policy is set to ''Disallow users to manage certificates'', users will not be able to manage certificates, they can only view certificates.''',
    },
    {
      'id': 520,
      'name': 'DeviceRebootOnUserSignout',
      'type': 'int-enum',
      'schema': {
        'type': 'integer',
        'enum': [ 1, 2, 3 ],
      },
      'items': [
        {
          'name': 'Never',
          'value': 1,
          'caption': '''Do not reboot on user sign out.''',
        },
        {
          'name': 'ArcSession',
          'value': 2,
          'caption': '''Reboot on user sign out if Android has started.''',
        },
        {
          'name': 'Always',
          'value': 3,
          'caption': '''Always reboot on user sign out.''',
        },
      ],
      'device_only': True,
      'example_value': 2,
      'features': {
        'dynamic_refresh': True,
        'per_profile': False,
      },
      'supported_on': ['chrome_os:74-'],
      'caption': '''Force device reboot when user sign out''',
      'tags': ['system-security'],
      'desc': '''
      This policy, when set to ArcSession, forces the device to reboot when a user sign out if Android has started.
      When set to Always, it forces the device to reboot on every user sign out.
      If left unset, it has no effect and no reboot is forced on user sign out. The same applies if set to Never.
      ''',
    },
    {
      'name': 'ForceNetworkInProcess',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome.win:72-'],
      'features': {
        'dynamic_refresh': False,
        'per_profile': False,
      },
      'example_value': False,
      'id': 521,
      'caption': '''Force networking code to run in the browser process''',
      'tags': [],
      'desc': '''This policy forces networking code to run in the browser process.

      This policy is disabled by default, and if enabled, leaves users open to the security issues once the networking process is sandboxed.

      This policy is intended to give enterprises a chance to migrate to 3rd party software that does not depend on hooking the networking APIs. Proxy servers are recommended over LSPs and Win32 API patching.

      If this policy is not set, networking code may run out of the browser process depending on field trials of the NetworkService experiment.''',
    },
    {
      'name': 'VoiceInteractionContextEnabled',
      'type': 'main',
      'schema': { 'type': 'boolean' },
      'supported_on': ['chrome_os:74-'],
      'tags' : ['google-sharing'],
      'features': {
        'dynamic_refresh': True,
        'per_profile': True,
      },
      'example_value': True,
      'id': 527,
      'caption': '''"Allow Google Assistant to access screen context"''',
      'desc': '''This policy gives Google Assistant permission to access screen context and send the info to server.
      If the policy is enabled, Google Assistant will be allowed to access screen context.
      If the policy is disabled, Google Assistant will not be allowed to access screen context.
      If not set, users can decide whether to allow Google Assistant to access screen context or not''',
    },
  ],

  'messages': {
    # Messages that are not associated to any policies.
    'win_supported_win7': {
      'desc': '''A label specifying the oldest possible compatible version of Windows. This text will appear right next to a label containing the text 'Supported on:'.''',
      'text': '''Microsoft Windows 7 or later'''
    },
    'mac_chrome_preferences': {
      'desc': '''A text indicating in Mac OS X Workgroup Manager, that currently the preferences of Chromium are being edited''',
      'text': '''<ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> preferences'''
    },
    'doc_data_type': {
      'desc': '''Caption text of the field 'data type' in the summary chart of a policy in the generated documentation''',
      'text': '''Data type:'''
    },
    'doc_win_reg_loc': {
      'desc': '''Caption text of the field 'windows registry location' in the summary chart of a policy in the generated documentation''',
      'text': '''Windows registry location for Windows clients:'''
    },
    'doc_chrome_os_reg_loc': {
      'desc': '''Caption text of the field '<ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> registry location' in the summary chart of a policy in the generated documentation''',
      'text': '''Windows registry location for <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> clients:'''
    },
    'doc_mac_linux_pref_name': {
      'desc': '''Caption text of the field 'mac/linux preference name' in the summary chart of a policy in the generated documentation''',
      'text': '''Mac/Linux preference name:'''
    },
    'doc_android_restriction_name': {
      'desc': '''Caption text of the field 'android restriction name' in the summary chart of a policy in the generated documentation''',
      'text': '''Android restriction name:'''
    },
    'doc_android_webview_restriction_name': {
      'desc': '''Caption text of the field 'android webview restriction name' in the summary chart of a policy in the generated documentation''',
      'text': '''Android WebView restriction name:'''
    },
    'doc_supported_on': {
      'desc': '''Caption text of the list of 'products, platforms and versions where this policy is supported' in the summary chart of a policy in the generated documentation''',
      'text': '''Supported on:'''
    },
    'doc_since_version': {
      'desc': '''Text in the summary chart of a policy that specifies the version number in which the policy was introduced.''',
      'text': '''since version <ph name="SINCE_VERSION">$6<ex>8</ex></ph>'''
    },
    'doc_until_version': {
      'desc': '''Text in the summary chart of a policy that specifies the version number after which the policy was dropped.''',
      'text': '''until version <ph name="UNTIL_VERSION">$6<ex>10</ex></ph>'''
    },
    'doc_supported_features': {
      'desc': '''Caption text of the list of 'policy features that this policy supports' in the summary chart of a policy in the generated documentation''',
      'text': '''Supported features:'''
    },
    'doc_description': {
      'desc': '''Caption text of the 'description text' in the summary chart of a policy in the generated documentation''',
      'text': '''Description:'''
    },
    'doc_arc_support': {
      'desc': '''Caption text of the field in the generated documentation that describes how a policy affects Android applications on Chrome OS''',
      'text': '''Note for <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> devices supporting Android apps:'''
    },
    'doc_example_value': {
      'desc': '''Caption text of the field 'example value' in the summary chart of a policy in the generated documentation''',
      'text': '''Example value:'''
    },
    'doc_win_example_value': {
      'desc': '''Caption text of the field 'windows (windows clients)' in the summary chart of a policy in the generated documentation''',
      'text': '''Windows (Windows clients):'''
    },
    'doc_chrome_os_example_value': {
      'desc': '''Caption text of the field 'windows (Chrome OS clients)' in the summary chart of a policy in the generated documentation''',
      'text': '''Windows (<ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> clients):'''
    },
    'doc_intro': {
      'desc': '''Introduction text for the generated policy documentation''',
      'text': '''Both Chromium and Google Chrome support the same set of policies. Please note that this document may include unreleased policies (i.e. their 'Supported on' entry refers to a not-yet released version of <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>) which are subject to change or removal without notice and for which no guarantees of any kind are provided, including no guarantees with respect to their security and privacy properties.

These policies are strictly intended to be used to configure instances of <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> internal to your organization. Use of these policies outside of your organization (for example, in a publicly distributed program) is considered malware and will likely be labeled as malware by Google and anti-virus vendors.

These settings don't need to be configured manually! Easy-to-use templates for Windows, Mac and Linux are available for download from <ph name="POLICY_TEMPLATE_DOWNLOAD_URL">https://www.chromium.org/administrators/policy-templates<ex> https://www.chromium.org/administrators/policy-templates</ex></ph>.

The recommended way to configure policy on Windows is via GPO, although provisioning policy via registry is still supported for Windows instances that are joined to a <ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> domain.'''
    },
    'doc_back_to_top': {
      'desc': '''Text of a link in the generated policy documentation, that takes the user to the top of the page''',
      'text': '''Back to top'''
    },
    'doc_supported': {
      'desc': '''Appears next to the name of each supported feature in the 'list of supported policy features' in the generated policy documentation''',
      'text': '''Yes'''
    },
    'doc_not_supported': {
      'desc': '''Appears next to the name of each unsupported feature in the 'list of supported policy features' in the generated policy documentation''',
      'text': '''No'''
    },
    'doc_name_column_title': {
      'desc': '''Appears at the top of the policy summary table, over the column of policy names, in the generated policy documentation''',
      'text': '''Policy Name'''
    },
    'doc_description_column_title': {
      'desc': '''Appears at the top of the policy summary table, over the column of short policy descriptions, in the generated policy documentation''',
      'text': '''Description'''
    },
    'doc_feature_dynamic_refresh': {
      'desc': '''The name of the feature that indicates for a given policy that changes to it are respected by Chromium without a browser restart''',
      'text': '''Dynamic Policy Refresh'''
    },
    'doc_feature_can_be_recommended': {
      'desc': '''The name of the feature that indicates for a given policy that it can be recommended, instead of mandatory''',
      'text': '''Can Be Recommended'''
    },
    'doc_feature_can_be_mandatory': {
      'desc': '''The name of the feature that indicates for a given policy that it can be mandatory, instead of recommended''',
      'text': '''Can Be Mandatory'''
    },
    'doc_feature_per_profile': {
      'desc': '''The name of the feature that indicates whether a policy is applicable to browser Profiles individually or whether it affects the entire browser.''',
      'text': '''Per Profile'''
    },
    'doc_deprecated': {
      'desc': '''Text appended in parentheses to the policy name to indicate that it has been deprecated''',
      'text': 'deprecated',
    },
    'doc_recommended': {
      'desc': '''Text appended in parentheses next to the policies top-level container to indicate that those policies are of the Recommended level''',
      'text': 'Default Settings (users can override)',
    },
    'doc_complex_policies_on_windows': {
      'desc': '''Text pointing the user to a help article for complex policies on Windows''',
      'text': '''encoded as a JSON string, for details see <ph name="COMPLEX_POLICIES_URL">https://www.chromium.org/administrators/complex-policies-on-windows<ex>https://www.chromium.org/administrators/complex-policies-on-windows</ex></ph>''',
    },
    'doc_reference_link': {
      'desc': '''Text pointing the user to the reference page for this policy, which may have more info (since it doesn't have a size limit)''',
      'text': '''Reference: <ph name="REFERENCE_URL">$6<ex>https://www.chromium.org/administrators/policy-list-3#WallpaperImage</ex></ph>''',
    },
    'doc_legacy_single_line_label': {
      'desc': '''A label for the legacy single-line textbox for a policy also has a more user-friendly multi-line textbox. See http://crbug/829328''',
      'text': '''<ph name="POLICY_NAME">$6<ex>Wallpaper Image</ex></ph> (The single-line field is deprecated and will be removed in the future. Please start using the multi-line textbox below.)''',
    },
    'doc_policy_restriction': {
      'desc': '''Caption text of the field 'restrictions' in the summary chart of a policy in the generated documentation''',
      'text': '''Restrictions:'''
    },
    'doc_range_minimum': {
      'desc': '''Caption text of the field 'minimum' in the summary chart of a policy in the generated documentation. Present only if policy has a minimum range restriction.''',
      'text': '''Minimum:'''
    },
    'doc_range_maximum': {
      'desc': '''Caption text of the field 'maximum' in the summary chart of a policy in the generated documentation. Present only if policy has a maximum range restriction.''',
      'text': '''Maximum:'''
    },
    'deprecated_policy_group_caption': {
      'desc': '''Localized name for the deprecated policies folder, for Microsoft's Group Policy Editor.''',
      'text': '''Deprecated policies''',
    },
    'deprecated_policy_group_desc': {
      'desc': '''Localized description for the deprecated policies folder, for Microsoft's Group Policy Editor.''',
      'text': '''These policies are included here to make them easy to remove.''',
    },
    'deprecated_policy_desc': {
      'desc': '''Description shared by all deprecated policies, in Microsoft Windows' Group Policy Editor.''',
      'text': '''This policy is deprecated. Its usage is discouraged. Read more at https://support.google.com/chrome/a/answer/7643500'''
    },
  },
  'placeholders': [],
  'deleted_policy_ids': [412],
  'highest_id_currently_used':  528
}
