diff --git a/client/cros/enterprise/enterprise_policy_base.py b/client/cros/enterprise/enterprise_policy_base.py
index 12c6b07..14bb19a 100755
--- a/client/cros/enterprise/enterprise_policy_base.py
+++ b/client/cros/enterprise/enterprise_policy_base.py
@@ -58,11 +58,7 @@
 
     WEB_PORT = 8080
     WEB_HOST = 'http://localhost:%d' % WEB_PORT
-    CHROME_SETTINGS_PAGE = 'chrome://settings'
     CHROME_POLICY_PAGE = 'chrome://policy'
-    SETTING_LABEL = 0
-    SETTING_CHECKED = 1
-    SETTING_DISABLED = 2
 
     def setup(self):
         os.chdir(self.srcdir)
@@ -435,34 +431,6 @@
         return elements
 
 
-    def _get_settings_checkbox_properties(self, pref):
-        """Get properties of the |pref| check box on the settings page.
-
-        @param pref: pref attribute value of the check box setting.
-        @returns: element properties of the check box setting.
-        """
-        js_cmd_get_props = ('''
-        settings = document.getElementsByClassName(
-                'checkbox controlled-setting-with-label');
-        settingValues = '';
-        for (var i = 0, setting; setting = settings[i]; i++) {
-           var setting_label = setting.getElementsByTagName("label")[0];
-           var label_input = setting_label.getElementsByTagName("input")[0];
-           var input_pref = label_input.getAttribute("pref");
-           if (input_pref == '%s') {
-              settingValues = [setting_label.innerText.trim(),
-                               label_input.checked, label_input.disabled];
-              break;
-           }
-        }
-        settingValues;
-        ''' % pref)
-        tab = self.navigate_to_url(self.CHROME_SETTINGS_PAGE)
-        checkbox_props = self.get_elements_from_page(tab, js_cmd_get_props)
-        tab.Close()
-        return checkbox_props
-
-
     def run_once(self):
         """The run_once() method is required by all AutoTest tests.
 
diff --git a/client/site_tests/policy_AutoFillEnabled/control b/client/site_tests/policy_AutoFillEnabled/control
deleted file mode 100644
index edbc5b1..0000000
--- a/client/site_tests/policy_AutoFillEnabled/control
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright 2015 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 = 'scunningham'
-NAME = 'policy_AutoFillEnabled'
-TIME = 'SHORT'
-TEST_CATEGORY = 'General'
-TEST_CLASS = 'enterprise'
-TEST_TYPE = 'client'
-
-DOC = '''
-Verify effects of AutoFillEnabled policy on client behavior & appearance.
-
-This test verifies the effect of the AutoFillEnabled user policy on
-Chrome OS client behavior and appearance. It exercises all valid policy
-values across three test cases: True_Enable, False_Disable, and
-NotSet_Enable.
-
-The test case shall pass if the chrome://settings page allows (or does not
-allow) the user to edit the Autofill settings when the policy is set true or
-not set (or set false). It shall fail if that behavior is not enforced.
-
-This control file allows CloudDPC E2E tests to run any test case defined in
-this test via command-line.
-
-'''
-
-args_dict = utils.args_to_dict(args)
-
-job.run_test('policy_AutoFillEnabled', **args_dict)
diff --git a/client/site_tests/policy_AutoFillEnabled/control.false_disable b/client/site_tests/policy_AutoFillEnabled/control.false_disable
deleted file mode 100644
index efd8abc..0000000
--- a/client/site_tests/policy_AutoFillEnabled/control.false_disable
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2016 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 = 'scunningham'
-NAME = 'policy_AutoFillEnabled.false_disable'
-ATTRIBUTES = 'suite:regression'
-TIME = 'SHORT'
-TEST_CATEGORY = 'General'
-TEST_CLASS = 'enterprise'
-TEST_TYPE = 'client'
-
-DOC = '''
-Verify effects of AutoFillEnabled policy on client behavior & appearance.
-
-This test case verifies the behavior and appearance of Chrome OS when the
-AutoFillEnabled user policy is set false.
-
-The test case shall pass if the chrome://settings page does not allow the user
-to edit the Autofill settings. It shall fail if setting is editable.
-
-'''
-
-job.run_test('policy_AutoFillEnabled', case='False_Disable')
diff --git a/client/site_tests/policy_AutoFillEnabled/control.notset_enable b/client/site_tests/policy_AutoFillEnabled/control.notset_enable
deleted file mode 100644
index d3613fc..0000000
--- a/client/site_tests/policy_AutoFillEnabled/control.notset_enable
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2016 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 = 'scunningham'
-NAME = 'policy_AutoFillEnabled.notset_enable'
-ATTRIBUTES = 'suite:regression'
-TIME = 'SHORT'
-TEST_CATEGORY = 'General'
-TEST_CLASS = 'enterprise'
-TEST_TYPE = 'client'
-
-DOC = '''
-Verify effects of AutoFillEnabled policy on client behavior & appearance.
-
-This test case verifies the behavior and appearance of Chrome OS when the
-AutoFillEnabled user policy is not set.
-
-The test case shall pass if the chrome://settings page allows the user to
-edit the Autofill settings. It shall fail if setting is not editable.
-
-'''
-
-job.run_test('policy_AutoFillEnabled', case='NotSet_Enable')
diff --git a/client/site_tests/policy_AutoFillEnabled/control.true_enable b/client/site_tests/policy_AutoFillEnabled/control.true_enable
deleted file mode 100644
index 0a637f6..0000000
--- a/client/site_tests/policy_AutoFillEnabled/control.true_enable
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2016 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 = 'scunningham'
-NAME = 'policy_AutoFillEnabled.true_enable'
-ATTRIBUTES = 'suite:regression'
-TIME = 'SHORT'
-TEST_CATEGORY = 'General'
-TEST_CLASS = 'enterprise'
-TEST_TYPE = 'client'
-
-DOC = '''
-Verify effects of AutoFillEnabled policy on client behavior & appearance.
-
-This test case verifies the behavior and appearance of Chrome OS when the
-AutoFillEnabled user policy is set true.
-
-The test case shall pass if the chrome://settings page allows the user to
-edit the Autofill settings. It shall fail if setting is not editable.
-
-'''
-
-job.run_test('policy_AutoFillEnabled', case='True_Enable')
diff --git a/client/site_tests/policy_AutoFillEnabled/policy_AutoFillEnabled.py b/client/site_tests/policy_AutoFillEnabled/policy_AutoFillEnabled.py
deleted file mode 100644
index 62cc820..0000000
--- a/client/site_tests/policy_AutoFillEnabled/policy_AutoFillEnabled.py
+++ /dev/null
@@ -1,79 +0,0 @@
-# Copyright 2016 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.cros.enterprise import enterprise_policy_base
-
-
-class policy_AutoFillEnabled(enterprise_policy_base.EnterprisePolicyTest):
-    """
-    Test effect of AutoFillEnabled policy on Chrome OS behavior.
-
-    This test verifies the behavior of Chrome OS for all valid values of the
-    AutoFillEnabled user policy: True, False, and Not set. 'Not set'
-    indicates no value, and will induce the enabled behavior by default,
-    as would be seen by an un-managed user.
-
-    When set True or not set, the Enable Autofill setting can be modified by
-    the user. When set False, Enable Autofill setting is unchecked and cannot
-    be modified.
-
-    """
-    version = 1
-
-    POLICY_NAME = 'AutoFillEnabled'
-    STARTUP_URLS = ['chrome://policy', 'chrome://settings/autofill']
-    SUPPORTING_POLICIES = {
-        'BookmarkBarEnabled': True,
-        'RestoreOnStartupURLs': STARTUP_URLS,
-        'RestoreOnStartup': 4
-    }
-
-    TEST_CASES = {
-        'True_Enable': True,
-        'False_Disable': False,
-        'NotSet_Enable': None
-    }
-
-    def _is_autofill_setting_editable(self):
-        """
-        Check whether Enabled Autofill setting is editable.
-
-        @returns: True if Enable Autofill setting is editable.
-
-        """
-        settings_tab = self.navigate_to_url(self.CHROME_SETTINGS_PAGE)
-        js_code_is_editable = ('document.getElementById('
-                               '"autofill-enabled").disabled')
-        is_editable = not settings_tab.EvaluateJavaScript(js_code_is_editable)
-        settings_tab.Close()
-        return is_editable
-
-
-    def _test_autofill_enabled(self, policy_value):
-        """
-        Verify CrOS enforces AutoFillEnabled policy.
-
-        @param policy_value: policy value for this case.
-
-        """
-        autofill_is_enabled = self._is_autofill_setting_editable()
-        if policy_value == True or policy_value == None:
-            if not autofill_is_enabled:
-                raise error.TestFail('Autofill should be enabled.')
-        else:
-            if autofill_is_enabled:
-                raise error.TestFail('Autofill should be disabled.')
-
-
-    def run_test_case(self, case):
-        """
-        Setup and run the test configured for the specified test case.
-
-        @param case: Name of the test case to run.
-
-        """
-        case_value = self.TEST_CASES[case]
-        self.setup_case(self.POLICY_NAME, case_value, self.SUPPORTING_POLICIES)
-        self._test_autofill_enabled(case_value)
diff --git a/client/site_tests/policy_AutoFillEnabled/src/Makefile b/client/site_tests/policy_AutoFillEnabled/src/Makefile
deleted file mode 100644
index 6c88991..0000000
--- a/client/site_tests/policy_AutoFillEnabled/src/Makefile
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 2015 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.
-
-ifndef SYSROOT
-  $(error Define SYSROOT)
-endif
-
-OUT_DIR ?= .
-PROTO_PATH = $(SYSROOT)/usr/share/protofiles
-PROTO_DEFS = $(PROTO_PATH)/chrome_device_policy.proto \
-	$(PROTO_PATH)/device_management_backend.proto \
-	$(PROTO_PATH)/chrome_extension_policy.proto \
-	$(PROTO_PATH)/cloud_policy.proto
-PROTO_BINDINGS = $(OUT_DIR)/chrome_device_policy_pb2.py \
-	$(OUT_DIR)/device_management_backend_pb2.py \
-	$(OUT_DIR)/chrome_extension_policy_pb2.py \
-	$(OUT_DIR)/cloud_policy_pb2.py
-
-all: $(PROTO_BINDINGS)
-
-$(PROTO_BINDINGS): $(PROTO_DEFS)
-	protoc --proto_path=$(PROTO_PATH) --python_out=$(OUT_DIR) $(PROTO_DEFS)
-
-clean:
-	rm -f $(PROTO_BINDINGS)
-
-
diff --git a/client/site_tests/policy_BlockThirdPartyCookies/control b/client/site_tests/policy_BlockThirdPartyCookies/control
deleted file mode 100644
index b10d2ce..0000000
--- a/client/site_tests/policy_BlockThirdPartyCookies/control
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright 2016 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 = 'scunningham'
-NAME = 'policy_BlockThirdPartyCookies'
-TIME = 'SHORT'
-TEST_CATEGORY = 'Functional'
-TEST_CLASS = 'enterprise'
-TEST_TYPE = 'client'
-
-DOC = '''
-Verify effects of BlockThirdPartyCookies policy on client behavior.
-
-This test verifies the effect of the BlockThirdPartyCookies user policy on
-Chrome OS client behavior and appearance. It exercises all valid policy values
-with three test cases: True_Block, False_Allow, and NotSet_Allow.
-
-A test case shall pass if the 'Block third-party cookies...' check box is
-(un)checked when BlockThirdPartyCookies policy is set true (false), and is
-(un)editable when BlockThirdPartyCookies not set (or set True or False). It
-shall fail if this behavior is not enforced.
-
-This control file allows CloudDPC E2E tests to run any test case defined in
-this test via command-line.
-
-'''
-
-args_dict = utils.args_to_dict(args)
-
-job.run_test('policy_BlockThirdPartyCookies', **args_dict)
diff --git a/client/site_tests/policy_BlockThirdPartyCookies/control.false_allow b/client/site_tests/policy_BlockThirdPartyCookies/control.false_allow
deleted file mode 100644
index 9ec406f..0000000
--- a/client/site_tests/policy_BlockThirdPartyCookies/control.false_allow
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2016 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 = 'scunningham'
-NAME = 'policy_BlockThirdPartyCookies.false_allow'
-ATTRIBUTES = 'suite:regression'
-TIME = 'SHORT'
-TEST_CATEGORY = 'Functional'
-TEST_CLASS = 'enterprise'
-TEST_TYPE = 'client'
-
-DOC = '''
-Verify effects of BlockThirdPartyCookies policy.
-
-This test case verifies the behavior and appearance of Chrome OS when the
-BlockThirdPartyCookies user policy is set False.
-
-The test case shall pass iff the 'Block third-party cookies...' check box is
-unchecked and uneditable. It shall fail if this behavior is not enforced.
-
-'''
-
-job.run_test('policy_BlockThirdPartyCookies', case='False_Allow')
diff --git a/client/site_tests/policy_BlockThirdPartyCookies/control.notset_allow b/client/site_tests/policy_BlockThirdPartyCookies/control.notset_allow
deleted file mode 100644
index 0194008..0000000
--- a/client/site_tests/policy_BlockThirdPartyCookies/control.notset_allow
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2016 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 = 'scunningham'
-NAME = 'policy_BlockThirdPartyCookies.notset_allow'
-ATTRIBUTES = 'suite:regression'
-TIME = 'SHORT'
-TEST_CATEGORY = 'Functional'
-TEST_CLASS = 'enterprise'
-TEST_TYPE = 'client'
-
-DOC = '''
-Verify effects of BlockThirdPartyCookies policy.
-
-This test case verifies the behavior and appearance of Chrome OS when the
-BlockThirdPartyCookies user policy is Not set.
-
-The test case shall pass iff the 'Block third-party cookies...' check box is
-user editable. It shall fail if this behavior is not enforced.
-
-'''
-
-job.run_test('policy_BlockThirdPartyCookies', case='NotSet_Allow')
diff --git a/client/site_tests/policy_BlockThirdPartyCookies/control.true_block b/client/site_tests/policy_BlockThirdPartyCookies/control.true_block
deleted file mode 100644
index 580bd77..0000000
--- a/client/site_tests/policy_BlockThirdPartyCookies/control.true_block
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2016 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 = 'scunningham'
-NAME = 'policy_BlockThirdPartyCookies.true_block'
-ATTRIBUTES = 'suite:regression'
-TIME = 'SHORT'
-TEST_CATEGORY = 'Functional'
-TEST_CLASS = 'enterprise'
-TEST_TYPE = 'client'
-
-DOC = '''
-Verify effects of BlockThirdPartyCookies policy.
-
-This test case verifies the behavior and appearance of Chrome OS when the
-BlockThirdPartyCookies user policy is set True.
-
-The test case shall pass iff the 'Block third-party cookies...' check box is
-checked and uneditable. It shall fail if this behavior is not enforced.
-
-'''
-
-job.run_test('policy_BlockThirdPartyCookies', case='True_Block')
diff --git a/client/site_tests/policy_BlockThirdPartyCookies/policy_BlockThirdPartyCookies.py b/client/site_tests/policy_BlockThirdPartyCookies/policy_BlockThirdPartyCookies.py
deleted file mode 100644
index 328928d..0000000
--- a/client/site_tests/policy_BlockThirdPartyCookies/policy_BlockThirdPartyCookies.py
+++ /dev/null
@@ -1,81 +0,0 @@
-# Copyright 2016 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.cros.enterprise import enterprise_policy_base
-
-
-class policy_BlockThirdPartyCookies(
-        enterprise_policy_base.EnterprisePolicyTest):
-    """
-    Test effect of BlockThirdPartyCookies policy on Chrome OS behavior.
-
-    This test verifies the behaviour and appearance of the 'Block third-party
-    cookies...' check box setting on the 'chrome://settings page for all valid
-    values of the BlockThirdPartyCookies user policy: True, False, and Not set.
-    The corresponding test cases are True_Block, False_Allow, and NotSet_Allow.
-
-    """
-    version = 1
-
-    POLICY_NAME = 'BlockThirdPartyCookies'
-    TEST_CASES = {
-        'True_Block': True,
-        'False_Allow': False,
-        'NotSet_Allow': None
-    }
-    SUPPORTING_POLICIES = {
-        'DefaultCookiesSetting': 1}
-
-
-    def _test_block_3rd_party_cookies(self, policy_value):
-        """
-        Verify CrOS enforces BlockThirdPartyCookies policy value.
-
-        When BlockThirdPartyCookies policy is set true (false), then the
-        'Block third-party cookies...' check box shall be (un)checked. When
-        set either True or False, then the check box shall be uneditable.
-        When Not set, then the check box shall be editable.
-
-        @param policy_value: policy value for this case.
-        @raises: TestFail if setting is incorrectly (un)checked or
-                 (un)editable, based on the policy value.
-
-        """
-        # Get check box status from the settings page.
-        setting_pref = 'profile.block_third_party_cookies'
-        properties = self._get_settings_checkbox_properties(setting_pref)
-        setting_label = properties[self.SETTING_LABEL]
-        setting_is_checked = properties[self.SETTING_CHECKED]
-        setting_is_disabled = properties[self.SETTING_DISABLED]
-
-        # Setting shall be checked if policy is set True, unchecked if False.
-        if policy_value == True and not setting_is_checked:
-            raise error.TestFail('Block 3rd-party cookies setting should be '
-                                 'checked.')
-        if policy_value == False and setting_is_checked:
-            raise error.TestFail('Block 3rd-party cookies setting should be '
-                                 'unchecked.')
-
-        # Setting shall be enabled if policy is Not set, disabled if set.
-        if policy_value == None:
-            if setting_is_disabled:
-                raise error.TestFail('Block 3rd-party cookies setting should '
-                                     'be editable.')
-        else:
-            if not setting_is_disabled:
-                raise error.TestFail('Block 3rd-party cookies setting should '
-                                     'be uneditable.')
-
-
-    def run_test_case(self, case):
-        """
-        Setup and run the test configured for the specified test case.
-
-        @param case: Name of the test case to run.
-
-        """
-        case_value = self.TEST_CASES[case]
-        self.setup_case(self.POLICY_NAME, case_value, self.SUPPORTING_POLICIES)
-        self._test_block_3rd_party_cookies(case_value)
diff --git a/client/site_tests/policy_BlockThirdPartyCookies/src/Makefile b/client/site_tests/policy_BlockThirdPartyCookies/src/Makefile
deleted file mode 100644
index 6c88991..0000000
--- a/client/site_tests/policy_BlockThirdPartyCookies/src/Makefile
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 2015 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.
-
-ifndef SYSROOT
-  $(error Define SYSROOT)
-endif
-
-OUT_DIR ?= .
-PROTO_PATH = $(SYSROOT)/usr/share/protofiles
-PROTO_DEFS = $(PROTO_PATH)/chrome_device_policy.proto \
-	$(PROTO_PATH)/device_management_backend.proto \
-	$(PROTO_PATH)/chrome_extension_policy.proto \
-	$(PROTO_PATH)/cloud_policy.proto
-PROTO_BINDINGS = $(OUT_DIR)/chrome_device_policy_pb2.py \
-	$(OUT_DIR)/device_management_backend_pb2.py \
-	$(OUT_DIR)/chrome_extension_policy_pb2.py \
-	$(OUT_DIR)/cloud_policy_pb2.py
-
-all: $(PROTO_BINDINGS)
-
-$(PROTO_BINDINGS): $(PROTO_DEFS)
-	protoc --proto_path=$(PROTO_PATH) --python_out=$(OUT_DIR) $(PROTO_DEFS)
-
-clean:
-	rm -f $(PROTO_BINDINGS)
-
-
diff --git a/client/site_tests/policy_ChromeOsLockOnIdleSuspend/policy_ChromeOsLockOnIdleSuspend.py b/client/site_tests/policy_ChromeOsLockOnIdleSuspend/policy_ChromeOsLockOnIdleSuspend.py
index a949dba..6661a00 100644
--- a/client/site_tests/policy_ChromeOsLockOnIdleSuspend/policy_ChromeOsLockOnIdleSuspend.py
+++ b/client/site_tests/policy_ChromeOsLockOnIdleSuspend/policy_ChromeOsLockOnIdleSuspend.py
@@ -95,40 +95,10 @@
         """
         Verify CrOS enforces ChromeOsLockOnIdleSuspend policy value.
 
-        When ChromeOsLockOnIdleSuspend policy is set true (false), then the
-        'Require password to wake from sleep' check box shall be (un)checked.
-        When set either True or False, then the check box shall be uneditable.
-        When Not set, then the check box shall be editable.
-
         @param policy_value: policy value for this case.
-        @raises: TestFail if setting is incorrectly (un)checked or
-                 (un)editable, based on the policy value.
+        @raises: TestFail if behavior is incorrect.
 
         """
-        # Get check box status from the settings page.
-        setting_pref = 'settings.enable_screen_lock'
-        properties = self._get_settings_checkbox_properties(setting_pref)
-        setting_is_checked = properties[self.SETTING_CHECKED]
-        setting_is_disabled = properties[self.SETTING_DISABLED]
-
-        # Setting shall be checked if policy is set True, unchecked if False.
-        if policy_value == True and not setting_is_checked:
-            raise error.TestFail('"Require password to wake from sleep" '
-                                 'setting should be checked.')
-        if policy_value == False and setting_is_checked:
-            raise error.TestFail('"Require password to wake from sleep" '
-                                 'setting should be unchecked.')
-
-        # Setting shall be enabled if policy is Not set, disabled if set.
-        if policy_value == None:
-            if setting_is_disabled:
-                raise error.TestFail('"Require password to wake from sleep" '
-                                     'setting should be editable.')
-        else:
-            if not setting_is_disabled:
-                raise error.TestFail('"Require password to wake from sleep" '
-                                     'setting should be uneditable.')
-
         # Screen shall be locked if the policy is True, else unlocked.
         screen_is_locked = self._is_screen_locked()
         if policy_value == True:
diff --git a/client/site_tests/policy_SearchSuggestEnabled/control b/client/site_tests/policy_SearchSuggestEnabled/control
deleted file mode 100644
index 6736fbf..0000000
--- a/client/site_tests/policy_SearchSuggestEnabled/control
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright 2016 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 = 'scunningham'
-NAME = 'policy_SearchSuggestEnabled'
-TIME = 'SHORT'
-TEST_CATEGORY = 'General'
-TEST_CLASS = 'enterprise'
-TEST_TYPE = 'client'
-
-DOC = '''
-Verify effects of SearchSuggestEnabled policy on client behavior & appearance.
-
-This test verifies the effect of the SearchSuggestEnabled user policy on
-Chrome OS client behavior and appearance. It exercises all valid policy
-values across three test cases: True_Enable, False_Disable, and
-NotSet_Enable.
-
-The test shall pass if the chrome://settings page:
-1) The Search Suggestion check box is checked (or unchecked) when policy is
-true (or false).
-2) The Search Suggestion check box is editable (or is not editable) when the
-policy is not set (or is set true or false).
-The test shall fail if the above behaviors are not enforced.
-
-Note: The Search Suggestion setting check box is labeled, "Use a prediction
-service to help complete searches and URLs typed in the address bar...".
-
-This control file allows CloudDPC E2E tests to run any test case defined in
-this test via command-line.
-
-'''
-
-args_dict = utils.args_to_dict(args)
-
-job.run_test('policy_SearchSuggestEnabled', **args_dict)
diff --git a/client/site_tests/policy_SearchSuggestEnabled/control.false_disable b/client/site_tests/policy_SearchSuggestEnabled/control.false_disable
deleted file mode 100644
index 6bb4b30..0000000
--- a/client/site_tests/policy_SearchSuggestEnabled/control.false_disable
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 2016 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 = 'scunningham'
-NAME = 'policy_SearchSuggestEnabled.false_disable'
-ATTRIBUTES = 'suite:regression'
-TIME = 'SHORT'
-TEST_CATEGORY = 'General'
-TEST_CLASS = 'enterprise'
-TEST_TYPE = 'client'
-
-DOC = '''
-Verify effects of SearchSuggestEnabled policy on client behavior & appearance.
-
-This test case verifies the behavior and appearance of Chrome OS when the
-SearchSuggestEnabled user policy is set false.
-
-The test case shall pass if chrome://settings page shows the Search Suggest
-check box unchecked, and does not allow the user to edit the setting. It
-shall fail if check box is checked, or is editable.
-
-'''
-
-job.run_test('policy_SearchSuggestEnabled', case='False_Disable')
diff --git a/client/site_tests/policy_SearchSuggestEnabled/control.notset_enable b/client/site_tests/policy_SearchSuggestEnabled/control.notset_enable
deleted file mode 100644
index 0640a78..0000000
--- a/client/site_tests/policy_SearchSuggestEnabled/control.notset_enable
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2016 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 = 'scunningham'
-NAME = 'policy_SearchSuggestEnabled.notset_enable'
-ATTRIBUTES = 'suite:regression'
-TIME = 'SHORT'
-TEST_CATEGORY = 'General'
-TEST_CLASS = 'enterprise'
-TEST_TYPE = 'client'
-
-DOC = '''
-Verify effects of SearchSuggestEnabled policy on client behavior & appearance.
-
-This test case verifies the behavior and appearance of Chrome OS when the
-SearchSuggestEnabled user policy is not set.
-
-The test case shall pass if chrome://settings page allows the user to edit the
-Search Suggest check box. It shall fail if check box is not editable.
-
-'''
-
-job.run_test('policy_SearchSuggestEnabled', case='NotSet_Enable')
diff --git a/client/site_tests/policy_SearchSuggestEnabled/control.true_enable b/client/site_tests/policy_SearchSuggestEnabled/control.true_enable
deleted file mode 100644
index 79f50bb..0000000
--- a/client/site_tests/policy_SearchSuggestEnabled/control.true_enable
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 2016 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 = 'scunningham'
-NAME = 'policy_SearchSuggestEnabled.true_enable'
-ATTRIBUTES = 'suite:regression'
-TIME = 'SHORT'
-TEST_CATEGORY = 'General'
-TEST_CLASS = 'enterprise'
-TEST_TYPE = 'client'
-
-DOC = '''
-Verify effects of SearchSuggestEnabled policy on client behavior & appearance.
-
-This test case verifies the behavior and appearance of Chrome OS when the
-SearchSuggestEnabled user policy is set true.
-
-The test case shall pass if chrome://settings page shows the Search Suggest
-check box checked, and does not allow the user to edit the setting. It
-shall fail if check box is unchecked, or is editable.
-
-'''
-
-job.run_test('policy_SearchSuggestEnabled', case='True_Enable')
diff --git a/client/site_tests/policy_SearchSuggestEnabled/policy_SearchSuggestEnabled.py b/client/site_tests/policy_SearchSuggestEnabled/policy_SearchSuggestEnabled.py
deleted file mode 100644
index 9bb86b5..0000000
--- a/client/site_tests/policy_SearchSuggestEnabled/policy_SearchSuggestEnabled.py
+++ /dev/null
@@ -1,81 +0,0 @@
-# Copyright 2016 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 logging
-
-from autotest_lib.client.common_lib import error
-from autotest_lib.client.cros.enterprise import enterprise_policy_base
-
-
-class policy_SearchSuggestEnabled(enterprise_policy_base.EnterprisePolicyTest):
-    """
-    Test effect of SearchSuggestEnabled policy on Chrome OS behavior.
-
-    This test verifies the behavior of Chrome OS for all valid values of the
-    SearchSuggestEnabled user policy: True, False, and Not set. 'Not set'
-    indicates no value, and will induce the default behavior that is seen by
-    an unmanaged user: checked and user-editable.
-
-    When True or Not set, search suggestions are given. When False, search
-    suggestions are not given. When set either True or False, the setting is
-    disabled, so users cannot change or override the setting. When not set
-    users can change the setting.
-
-    """
-    version = 1
-
-    POLICY_NAME = 'SearchSuggestEnabled'
-    STARTUP_URLS = ['chrome://policy']
-    SUPPORTING_POLICIES = {
-        'BookmarkBarEnabled': True,
-        'RestoreOnStartupURLs': STARTUP_URLS,
-        'RestoreOnStartup': 4
-    }
-    TEST_CASES = {
-        'True_Enable': True,
-        'False_Disable': False,
-        'NotSet_Enable': None
-    }
-
-
-    def _test_search_suggest_enabled(self, policy_value):
-        """
-        Verify CrOS enforces SearchSuggestEnabled policy.
-
-        @param policy_value: policy value expected.
-
-        """
-        setting_pref = 'search.suggest_enabled'
-        properties = self._get_settings_checkbox_properties(setting_pref)
-        setting_label = properties[self.SETTING_LABEL]
-        setting_is_checked = properties[self.SETTING_CHECKED]
-        setting_is_disabled = properties[self.SETTING_DISABLED]
-        logging.info("Check box '%s' status: checked=%s, disabled=%s",
-                     setting_label, setting_is_checked, setting_is_disabled)
-
-        # Setting checked if policy is True, unchecked if False.
-        if policy_value == True and not setting_is_checked:
-            raise error.TestFail('Search Suggest should be checked.')
-        if policy_value == False and setting_is_checked:
-            raise error.TestFail('Search Suggest should be unchecked.')
-
-        # Setting is enabled if policy is Not set, disabled if True or False.
-        if policy_value == None:
-            if setting_is_disabled:
-                raise error.TestFail('Search Suggest should be editable.')
-        else:
-            if not setting_is_disabled:
-                raise error.TestFail('Search Suggest should not be editable.')
-
-
-    def run_test_case(self, case):
-        """
-        Setup and run the test configured for the specified test case.
-
-        @param case: Name of the test case to run.
-
-        """
-        case_value = self.TEST_CASES[case]
-        self.setup_case(self.POLICY_NAME, case_value, self.SUPPORTING_POLICIES)
-        self._test_search_suggest_enabled(case_value)
diff --git a/client/site_tests/policy_SearchSuggestEnabled/src/Makefile b/client/site_tests/policy_SearchSuggestEnabled/src/Makefile
deleted file mode 100644
index 7a4573b..0000000
--- a/client/site_tests/policy_SearchSuggestEnabled/src/Makefile
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2016 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.
-
-ifndef SYSROOT
-  $(error Define SYSROOT)
-endif
-
-OUT_DIR ?= .
-PROTO_PATH = $(SYSROOT)/usr/share/protofiles
-PROTO_DEFS = $(PROTO_PATH)/chrome_device_policy.proto \
-	$(PROTO_PATH)/device_management_backend.proto \
-	$(PROTO_PATH)/chrome_extension_policy.proto \
-	$(PROTO_PATH)/cloud_policy.proto
-PROTO_BINDINGS = $(OUT_DIR)/chrome_device_policy_pb2.py \
-	$(OUT_DIR)/device_management_backend_pb2.py \
-	$(OUT_DIR)/chrome_extension_policy_pb2.py \
-	$(OUT_DIR)/cloud_policy_pb2.py
-
-all: $(PROTO_BINDINGS)
-
-$(PROTO_BINDINGS): $(PROTO_DEFS)
-	protoc --proto_path=$(PROTO_PATH) --python_out=$(OUT_DIR) $(PROTO_DEFS)
-
-clean:
-	rm -f $(PROTO_BINDINGS)
-
diff --git a/client/site_tests/policy_SpellCheckServiceEnabled/control b/client/site_tests/policy_SpellCheckServiceEnabled/control
deleted file mode 100644
index 4a9143d..0000000
--- a/client/site_tests/policy_SpellCheckServiceEnabled/control
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright 2016 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 = 'scunningham'
-NAME = 'policy_SpellCheckServiceEnabled'
-TIME = 'SHORT'
-TEST_CATEGORY = 'Functional'
-TEST_CLASS = 'enterprise'
-TEST_TYPE = 'client'
-
-DOC = '''
-Verify effects of SpellCheckServiceEnabled policy on client behavior.
-
-This test verifies the effect of the SpellCheckServiceEnabled user policy on
-Chrome OS client behavior and appearance. It exercises all valid policy
-values across three test cases: True_Enable, False_Disable, and
-NotSet_Disable.
-
-The test shall pass if the chrome://settings page:
-1) The Spelling Suggestions check box is checked (or unchecked) when policy
-is true (or false).
-2) The Spelling Suggestions check box is editable (or is not editable) when
-the policy is not set (or is set true or false).
-The test shall fail if the above behaviors are not enforced.
-
-Note: The Spelling Suggestions setting check box is labeled, "Use a web
-service to help resolve spelling errors."
-
-This control file allows CloudDPC E2E tests to run any test case defined in
-this test via command-line.
-
-'''
-
-args_dict = utils.args_to_dict(args)
-
-job.run_test('policy_SpellCheckServiceEnabled', **args_dict)
diff --git a/client/site_tests/policy_SpellCheckServiceEnabled/control.false_disable b/client/site_tests/policy_SpellCheckServiceEnabled/control.false_disable
deleted file mode 100644
index 4b1ad1a..0000000
--- a/client/site_tests/policy_SpellCheckServiceEnabled/control.false_disable
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 2016 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 = 'scunningham'
-NAME = 'policy_SpellCheckServiceEnabled.false_disable'
-ATTRIBUTES = 'suite:regression'
-TIME = 'SHORT'
-TEST_CATEGORY = 'Functional'
-TEST_CLASS = 'enterprise'
-TEST_TYPE = 'client'
-
-DOC = '''
-Verify effects of SpellCheckServiceEnabled policy on client behavior.
-
-This test case verifies the behavior and appearance of Chrome OS when the
-SpellCheckServiceEnabled user policy is set false.
-
-The test case shall pass if chrome://settings page shows the Spelling
-Suggestions check box unchecked, and does not allow the user to edit the
-setting. It shall fail if check box is checked, or is editable.
-
-'''
-
-job.run_test('policy_SpellCheckServiceEnabled', case='False_Disable')
diff --git a/client/site_tests/policy_SpellCheckServiceEnabled/control.notset_editable b/client/site_tests/policy_SpellCheckServiceEnabled/control.notset_editable
deleted file mode 100644
index 0c85ea5..0000000
--- a/client/site_tests/policy_SpellCheckServiceEnabled/control.notset_editable
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2016 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 = 'scunningham'
-NAME = 'policy_SpellCheckServiceEnabled.notset_editable'
-ATTRIBUTES = 'suite:regression'
-TIME = 'SHORT'
-TEST_CATEGORY = 'Functional'
-TEST_CLASS = 'enterprise'
-TEST_TYPE = 'client'
-
-DOC = '''
-Verify effects of SpellCheckServiceEnabled policy on client behavior.
-
-This test case verifies the behavior and appearance of Chrome OS when the
-SpellCheckServiceEnabled user policy is not set.
-
-The test case shall pass if chrome://settings page allows the user to edit the
-Spelling Suggestions check box. It shall fail if check box is not editable.
-
-'''
-
-job.run_test('policy_SpellCheckServiceEnabled', case='NotSet_Editable')
diff --git a/client/site_tests/policy_SpellCheckServiceEnabled/control.true_enable b/client/site_tests/policy_SpellCheckServiceEnabled/control.true_enable
deleted file mode 100644
index def9c06..0000000
--- a/client/site_tests/policy_SpellCheckServiceEnabled/control.true_enable
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 2016 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 = 'scunningham'
-NAME = 'policy_SpellCheckServiceEnabled.true_enable'
-ATTRIBUTES = 'suite:regression'
-TIME = 'SHORT'
-TEST_CATEGORY = 'Functional'
-TEST_CLASS = 'enterprise'
-TEST_TYPE = 'client'
-
-DOC = '''
-Verify effects of SpellCheckServiceEnabled policy on client behavior.
-
-This test case verifies the behavior and appearance of Chrome OS when the
-SpellCheckServiceEnabled user policy is set true.
-
-The test case shall pass if chrome://settings page shows the Spelling
-Suggestions check box checked, and does not allow the user to edit the
-setting. It shall fail if check box is unchecked, or is editable.
-
-'''
-
-job.run_test('policy_SpellCheckServiceEnabled', case='True_Enable')
diff --git a/client/site_tests/policy_SpellCheckServiceEnabled/policy_SpellCheckServiceEnabled.py b/client/site_tests/policy_SpellCheckServiceEnabled/policy_SpellCheckServiceEnabled.py
deleted file mode 100644
index 901541c..0000000
--- a/client/site_tests/policy_SpellCheckServiceEnabled/policy_SpellCheckServiceEnabled.py
+++ /dev/null
@@ -1,84 +0,0 @@
-# Copyright 2016 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 logging
-
-from autotest_lib.client.common_lib import error
-from autotest_lib.client.cros.enterprise import enterprise_policy_base
-
-
-class policy_SpellCheckServiceEnabled(
-        enterprise_policy_base.EnterprisePolicyTest):
-    """
-    Test effect of SpellCheckServiceEnabled policy on Chrome OS behavior.
-
-    This test verifies the behavior of Chrome OS for all valid values of the
-    SpellCheckServiceEnabled user policy: True, False, and Not set. 'Not set'
-    indicates no value, and will induce the default behavior that is seen by
-    an unmanaged user: unchecked and user-editable.
-
-    When True or Not set, spelling suggestiongs are given. When False, spelling
-    suggestions are not given. When set either True or False, the setting is
-    disabled, so users cannot change or override the setting. When not set
-    users can change the setting.
-
-    """
-    version = 1
-
-    POLICY_NAME = 'SpellCheckServiceEnabled'
-    STARTUP_URLS = ['chrome://policy']
-    SUPPORTING_POLICIES = {
-        'BookmarkBarEnabled': True,
-        'RestoreOnStartupURLs': STARTUP_URLS,
-        'RestoreOnStartup': 4
-    }
-    TEST_CASES = {
-        'True_Enable': True,
-        'False_Disable': False,
-        'NotSet_Editable': None
-    }
-
-
-    def _test_spelling_suggestions_enabled(self, policy_value):
-        """
-        Verify CrOS enforces the SpellCheckServiceEnabled policy.
-
-        @param policy_value: policy value expected.
-
-        """
-        setting_pref = 'spellcheck.use_spelling_service'
-        properties = self._get_settings_checkbox_properties(setting_pref)
-        setting_label = properties[self.SETTING_LABEL]
-        setting_is_checked = properties[self.SETTING_CHECKED]
-        setting_is_disabled = properties[self.SETTING_DISABLED]
-        logging.info('Check box "%s" status: checked=%s, disabled=%s',
-                     setting_label, setting_is_checked, setting_is_disabled)
-
-        # Setting checked if policy is True, unchecked if False.
-        if policy_value == True and not setting_is_checked:
-            raise error.TestFail('Spelling Suggestions should be checked.')
-        if policy_value == False and setting_is_checked:
-            raise error.TestFail('Spelling Suggestions should be unchecked.')
-
-        # Setting is enabled if policy is Not set, disabled if True or False.
-        if policy_value == None:
-            if setting_is_disabled:
-                raise error.TestFail('Spelling Suggestions should '
-                                     'be editable.')
-        else:
-            if not setting_is_disabled:
-                raise error.TestFail('Spelling Suggestions should not '
-                                     'be editable.')
-
-
-    def run_test_case(self, case):
-        """
-        Setup and run the test configured for the specified test case.
-
-        @param case: Name of the test case to run.
-
-        """
-        case_value = self.TEST_CASES[case]
-        self.setup_case(self.POLICY_NAME, case_value, self.SUPPORTING_POLICIES)
-        self._test_spelling_suggestions_enabled(case_value)
diff --git a/client/site_tests/policy_SpellCheckServiceEnabled/src/Makefile b/client/site_tests/policy_SpellCheckServiceEnabled/src/Makefile
deleted file mode 100644
index 7a4573b..0000000
--- a/client/site_tests/policy_SpellCheckServiceEnabled/src/Makefile
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2016 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.
-
-ifndef SYSROOT
-  $(error Define SYSROOT)
-endif
-
-OUT_DIR ?= .
-PROTO_PATH = $(SYSROOT)/usr/share/protofiles
-PROTO_DEFS = $(PROTO_PATH)/chrome_device_policy.proto \
-	$(PROTO_PATH)/device_management_backend.proto \
-	$(PROTO_PATH)/chrome_extension_policy.proto \
-	$(PROTO_PATH)/cloud_policy.proto
-PROTO_BINDINGS = $(OUT_DIR)/chrome_device_policy_pb2.py \
-	$(OUT_DIR)/device_management_backend_pb2.py \
-	$(OUT_DIR)/chrome_extension_policy_pb2.py \
-	$(OUT_DIR)/cloud_policy_pb2.py
-
-all: $(PROTO_BINDINGS)
-
-$(PROTO_BINDINGS): $(PROTO_DEFS)
-	protoc --proto_path=$(PROTO_PATH) --python_out=$(OUT_DIR) $(PROTO_DEFS)
-
-clean:
-	rm -f $(PROTO_BINDINGS)
-
