68 lines
2.1 KiB
Python
68 lines
2.1 KiB
Python
# 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.
|
|
import time
|
|
|
|
from autotest_lib.client.common_lib import error
|
|
from autotest_lib.client.cros.enterprise import enterprise_policy_base
|
|
|
|
|
|
class policy_DeviceAllowBluetooth(
|
|
enterprise_policy_base.EnterprisePolicyTest):
|
|
"""
|
|
Test for the DeviceAllowBluetooth policy.
|
|
|
|
If the policy is set to True/None then bluetooth button is available in
|
|
status tray menu. If the policy is set to False then bluetooth button
|
|
is not available.
|
|
|
|
"""
|
|
version = 1
|
|
_POLICY = 'DeviceAllowBluetooth'
|
|
|
|
def _is_bluetooth_button_present(self, ext):
|
|
bt_present = ext.EvaluateJavaScript("""
|
|
var root;
|
|
chrome.automation.getDesktop(r => root = r);
|
|
bt = root.find({attributes: {role: "button", name: /Bluetooth/}});
|
|
bt;
|
|
""")
|
|
if bt_present is None:
|
|
return False
|
|
return True
|
|
|
|
def bluetooth_check(self, case):
|
|
# Click the status tray button in bottom right.
|
|
ext = self.cr.autotest_ext
|
|
ext.ExecuteJavaScript("""
|
|
chrome.automation.getDesktop(root => {
|
|
var button_to_click = root.find(
|
|
{attributes: {
|
|
role: "button", name: /Status tray/}}).doDefault();
|
|
});
|
|
""")
|
|
time.sleep(1)
|
|
|
|
bluetooth_button = self._is_bluetooth_button_present(ext)
|
|
|
|
if case is False:
|
|
if bluetooth_button:
|
|
raise error.TestFail(
|
|
'Bluetooth option is available and it should not be')
|
|
else:
|
|
if not bluetooth_button:
|
|
raise error.TestFail(
|
|
'Bluetooth option should be available but it is not.')
|
|
|
|
def run_once(self, case):
|
|
"""
|
|
Entry point of this test.
|
|
|
|
@param case: True, False, or None for the value of the policy.
|
|
|
|
"""
|
|
self.setup_case(
|
|
device_policies={self._POLICY: case},
|
|
enroll=True)
|
|
self.bluetooth_check(case)
|