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

AUTHOR = 'rzakarian'
NAME = 'policy_TouchVirtualKeyboardEnabled'
TIME = 'SHORT'
TEST_CATEGORY = 'General'
TEST_CLASS = 'enterprise'
TEST_TYPE = 'client'

DOC = '''
Verifies effects of TouchVirtualKeyboardEnabled policy.

If the policy is set to True then the user can see the virtual keyboard
when trying to enter new text. If the policy is off or not set then virtual
keyboard should not come up.

'''

args_dict = utils.args_to_dict(args)

job.run_test('policy_TouchVirtualKeyboardEnabled', **args_dict)
