# 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)