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