Loading services/core/java/com/android/server/testharness/TestHarnessModeService.java +26 −30 Original line number Diff line number Diff line Loading @@ -71,7 +71,6 @@ public class TestHarnessModeService extends SystemService { private static final String TEST_HARNESS_MODE_PROPERTY = "persist.sys.test_harness"; private PersistentDataBlockManagerInternal mPersistentDataBlockManagerInternal; private boolean mShouldSetUpTestHarnessMode; public TestHarnessModeService(Context context) { super(context); Loading @@ -89,9 +88,8 @@ public class TestHarnessModeService extends SystemService { setUpTestHarnessMode(); break; case PHASE_BOOT_COMPLETED: disableAutoSync(); configureSettings(); showNotification(); completeTestHarnessModeSetup(); showNotificationIfEnabled(); break; } super.onBootPhase(phase); Loading @@ -104,47 +102,45 @@ public class TestHarnessModeService extends SystemService { // There's no data to apply, so leave it as-is. return; } PersistentData persistentData; // If there is data, we should set the device as provisioned, so that we skip the setup // wizard. setDeviceProvisioned(); SystemProperties.set(TEST_HARNESS_MODE_PROPERTY, "1"); } private void completeTestHarnessModeSetup() { Slog.d(TAG, "Completing Test Harness Mode setup."); byte[] testHarnessModeData = getPersistentDataBlock().getTestHarnessModeData(); if (testHarnessModeData == null || testHarnessModeData.length == 0) { // There's no data to apply, so leave it as-is. return; } try { persistentData = PersistentData.fromBytes(testHarnessModeData); setUpAdbFiles(PersistentData.fromBytes(testHarnessModeData)); disableAutoSync(); configureSettings(); } catch (SetUpTestHarnessModeException e) { Slog.e(TAG, "Failed to set up Test Harness Mode. Bad data.", e); return; } finally { // Clear out the Test Harness Mode data. It's now in memory if successful or we should // skip setting up. // Clear out the Test Harness Mode data so that we don't repeat the setup. If it failed // to set up, then retrying without enabling Test Harness Mode should allow it to boot. // If we succeeded setting up, we shouldn't be re-applying the THM steps every boot // anyway. getPersistentDataBlock().clearTestHarnessModeData(); } mShouldSetUpTestHarnessMode = true; setUpAdb(persistentData); setDeviceProvisioned(); } private void setUpAdb(PersistentData persistentData) { ContentResolver cr = getContext().getContentResolver(); // Disable the TTL for ADB keys before enabling ADB Settings.Global.putLong(cr, Settings.Global.ADB_ALLOWED_CONNECTION_TIME, 0); SystemProperties.set(TEST_HARNESS_MODE_PROPERTY, "1"); writeAdbKeysFile(persistentData); } private void disableAutoSync() { if (!mShouldSetUpTestHarnessMode) { return; } UserInfo primaryUser = UserManager.get(getContext()).getPrimaryUser(); ContentResolver .setMasterSyncAutomaticallyAsUser(false, primaryUser.getUserHandle().getIdentifier()); } private void configureSettings() { if (!mShouldSetUpTestHarnessMode) { return; } ContentResolver cr = getContext().getContentResolver(); // Disable the TTL for ADB keys before enabling ADB Settings.Global.putLong(cr, Settings.Global.ADB_ALLOWED_CONNECTION_TIME, 0); Settings.Global.putInt(cr, Settings.Global.ADB_ENABLED, 1); Settings.Global.putInt(cr, Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1); Settings.Global.putInt(cr, Settings.Global.PACKAGE_VERIFIER_ENABLE, 0); Loading @@ -155,7 +151,7 @@ public class TestHarnessModeService extends SystemService { Settings.Global.putInt(cr, Settings.Global.OTA_DISABLE_AUTOMATIC_UPDATE, 1); } private void writeAdbKeysFile(PersistentData persistentData) { private void setUpAdbFiles(PersistentData persistentData) { AdbManagerInternal adbManager = LocalServices.getService(AdbManagerInternal.class); writeBytesToFile(persistentData.mAdbKeys, adbManager.getAdbKeysFile().toPath()); Loading Loading @@ -189,7 +185,7 @@ public class TestHarnessModeService extends SystemService { UserHandle.USER_CURRENT); } private void showNotification() { private void showNotificationIfEnabled() { if (!SystemProperties.getBoolean(TEST_HARNESS_MODE_PROPERTY, false)) { return; } Loading Loading
services/core/java/com/android/server/testharness/TestHarnessModeService.java +26 −30 Original line number Diff line number Diff line Loading @@ -71,7 +71,6 @@ public class TestHarnessModeService extends SystemService { private static final String TEST_HARNESS_MODE_PROPERTY = "persist.sys.test_harness"; private PersistentDataBlockManagerInternal mPersistentDataBlockManagerInternal; private boolean mShouldSetUpTestHarnessMode; public TestHarnessModeService(Context context) { super(context); Loading @@ -89,9 +88,8 @@ public class TestHarnessModeService extends SystemService { setUpTestHarnessMode(); break; case PHASE_BOOT_COMPLETED: disableAutoSync(); configureSettings(); showNotification(); completeTestHarnessModeSetup(); showNotificationIfEnabled(); break; } super.onBootPhase(phase); Loading @@ -104,47 +102,45 @@ public class TestHarnessModeService extends SystemService { // There's no data to apply, so leave it as-is. return; } PersistentData persistentData; // If there is data, we should set the device as provisioned, so that we skip the setup // wizard. setDeviceProvisioned(); SystemProperties.set(TEST_HARNESS_MODE_PROPERTY, "1"); } private void completeTestHarnessModeSetup() { Slog.d(TAG, "Completing Test Harness Mode setup."); byte[] testHarnessModeData = getPersistentDataBlock().getTestHarnessModeData(); if (testHarnessModeData == null || testHarnessModeData.length == 0) { // There's no data to apply, so leave it as-is. return; } try { persistentData = PersistentData.fromBytes(testHarnessModeData); setUpAdbFiles(PersistentData.fromBytes(testHarnessModeData)); disableAutoSync(); configureSettings(); } catch (SetUpTestHarnessModeException e) { Slog.e(TAG, "Failed to set up Test Harness Mode. Bad data.", e); return; } finally { // Clear out the Test Harness Mode data. It's now in memory if successful or we should // skip setting up. // Clear out the Test Harness Mode data so that we don't repeat the setup. If it failed // to set up, then retrying without enabling Test Harness Mode should allow it to boot. // If we succeeded setting up, we shouldn't be re-applying the THM steps every boot // anyway. getPersistentDataBlock().clearTestHarnessModeData(); } mShouldSetUpTestHarnessMode = true; setUpAdb(persistentData); setDeviceProvisioned(); } private void setUpAdb(PersistentData persistentData) { ContentResolver cr = getContext().getContentResolver(); // Disable the TTL for ADB keys before enabling ADB Settings.Global.putLong(cr, Settings.Global.ADB_ALLOWED_CONNECTION_TIME, 0); SystemProperties.set(TEST_HARNESS_MODE_PROPERTY, "1"); writeAdbKeysFile(persistentData); } private void disableAutoSync() { if (!mShouldSetUpTestHarnessMode) { return; } UserInfo primaryUser = UserManager.get(getContext()).getPrimaryUser(); ContentResolver .setMasterSyncAutomaticallyAsUser(false, primaryUser.getUserHandle().getIdentifier()); } private void configureSettings() { if (!mShouldSetUpTestHarnessMode) { return; } ContentResolver cr = getContext().getContentResolver(); // Disable the TTL for ADB keys before enabling ADB Settings.Global.putLong(cr, Settings.Global.ADB_ALLOWED_CONNECTION_TIME, 0); Settings.Global.putInt(cr, Settings.Global.ADB_ENABLED, 1); Settings.Global.putInt(cr, Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1); Settings.Global.putInt(cr, Settings.Global.PACKAGE_VERIFIER_ENABLE, 0); Loading @@ -155,7 +151,7 @@ public class TestHarnessModeService extends SystemService { Settings.Global.putInt(cr, Settings.Global.OTA_DISABLE_AUTOMATIC_UPDATE, 1); } private void writeAdbKeysFile(PersistentData persistentData) { private void setUpAdbFiles(PersistentData persistentData) { AdbManagerInternal adbManager = LocalServices.getService(AdbManagerInternal.class); writeBytesToFile(persistentData.mAdbKeys, adbManager.getAdbKeysFile().toPath()); Loading Loading @@ -189,7 +185,7 @@ public class TestHarnessModeService extends SystemService { UserHandle.USER_CURRENT); } private void showNotification() { private void showNotificationIfEnabled() { if (!SystemProperties.getBoolean(TEST_HARNESS_MODE_PROPERTY, false)) { return; } Loading