81 lines
2.6 KiB
Python
81 lines
2.6 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.
|
|
from autotest_lib.client.common_lib import error
|
|
from autotest_lib.client.common_lib import utils
|
|
|
|
from autotest_lib.client.common_lib.cros import arc
|
|
from autotest_lib.client.cros.enterprise import enterprise_policy_base
|
|
|
|
|
|
class policy_ArcDisableScreenshots(
|
|
enterprise_policy_base.EnterprisePolicyTest):
|
|
"""
|
|
Test effect of policy_ArcDisableScreenshots policy on the ARC++ container
|
|
within ChromeOS.
|
|
|
|
"""
|
|
version = 1
|
|
|
|
POLICY_NAME = 'ArcPolicy'
|
|
|
|
def verify_policy(self, case):
|
|
"""
|
|
Verify the policy was properly set
|
|
|
|
@param case: bool, value of the policy setting
|
|
|
|
"""
|
|
if case:
|
|
e_msg = 'ARC++ Screenshot Taken when it should not have been'
|
|
else:
|
|
e_msg = 'ARC++ Screenshot was blocked when it should not have been'
|
|
|
|
# Give the ARC container time to setup and configure its policy.
|
|
utils.poll_for_condition(
|
|
lambda: self.check_screenshot(case),
|
|
exception=error.TestFail(e_msg),
|
|
timeout=30,
|
|
sleep_interval=1,
|
|
desc='Checking for screenshot file size')
|
|
|
|
def check_screenshot(self, case):
|
|
"""
|
|
Take a sceenshot and check its size, to see if the policy was set
|
|
correctly.
|
|
|
|
@param case: bool, value of the policy setting
|
|
|
|
@Returns True if the screenshot setting was correct, False otherwise.
|
|
|
|
"""
|
|
# Remove any lingering possible screenshots
|
|
arc.adb_shell('rm -f /sdcard/test.png', ignore_status=True)
|
|
|
|
# Take a screenshot, then check its size
|
|
arc.adb_shell('screencap > /sdcard/test.png', ignore_status=True)
|
|
screenshotsize = arc.adb_shell('du -s /sdcard/test.png',
|
|
ignore_status=True).split()[0]
|
|
|
|
# Some devices screenshot may contain metadata that would be up to 8b
|
|
if case and int(screenshotsize) > 8:
|
|
return False
|
|
# No screenshot should be under 100b
|
|
elif not case and int(screenshotsize) < 100:
|
|
return False
|
|
|
|
return True
|
|
|
|
def run_once(self, case):
|
|
"""
|
|
@param case: bool, value of the policy setting
|
|
|
|
"""
|
|
pol = {'ArcEnabled': True,
|
|
'DisableScreenshots': case}
|
|
self.setup_case(user_policies=pol,
|
|
arc_mode='enabled',
|
|
use_clouddpc_test=False)
|
|
|
|
self.verify_policy(case)
|