Loading services/core/java/com/android/server/pm/HsuDeviceProvisioner.java +4 −1 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ package com.android.server.pm; import android.content.ContentResolver; import android.database.ContentObserver; import android.os.Handler; import android.os.Looper; import android.provider.Settings; import android.util.Log; Loading @@ -31,6 +30,7 @@ import com.android.server.utils.Slogf; final class HsuDeviceProvisioner extends ContentObserver { private static final String TAG = HsuDeviceProvisioner.class.getSimpleName(); private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); private final ContentResolver mContentResolver; Loading @@ -55,6 +55,9 @@ final class HsuDeviceProvisioner extends ContentObserver { @Override public void onChange(boolean selfChange) { if (DEBUG) { Slogf.d(TAG, "onChange(%b): isDeviceProvisioned=%b", selfChange, isDeviceProvisioned()); } // Set USER_SETUP_COMPLETE for the (headless) system user only when the device // has been set up at least once. if (isDeviceProvisioned()) { Loading services/core/java/com/android/server/pm/HsumBootUserInitializer.java +32 −19 Original line number Diff line number Diff line Loading @@ -65,26 +65,10 @@ public final class HsumBootUserInitializer { private final ActivityManagerService mAms; private final PackageManagerService mPms; private final ContentResolver mContentResolver; // TODO(b/322150148): Change the type to HsuDeviceProvisioner and remove the cast once the flag // is completely pushed. private final ContentObserver mDeviceProvisionedObserver; private final ContentObserver mDeviceProvisionedObserver = new ContentObserver(new Handler(Looper.getMainLooper())) { @Override public void onChange(boolean selfChange) { boolean isDeviceProvisioned = isDeviceProvisioned(); if (DEBUG) { Slogf.d(TAG, "onChange(%b): isDeviceProvisioned=%b", selfChange, isDeviceProvisioned); } // Set USER_SETUP_COMPLETE for the (headless) system user only when the device // has been set up at least once. if (isDeviceProvisioned) { Slogf.i(TAG, "Marking USER_SETUP_COMPLETE for system user"); Settings.Secure.putInt(mContentResolver, Settings.Secure.USER_SETUP_COMPLETE, 1); mContentResolver.unregisterContentObserver(mDeviceProvisionedObserver); } } }; /** Whether it should create a main user on first boot. */ private final boolean mShouldDesignateMainUser; Loading Loading @@ -114,6 +98,31 @@ public final class HsumBootUserInitializer { mContentResolver = contentResolver; mShouldDesignateMainUser = shouldDesignateMainUser; mShouldCreateInitialUser = shouldCreateInitialUser; mDeviceProvisionedObserver = (Flags.hsuDeviceProvisioner() ? new HsuDeviceProvisioner(new Handler(Looper.getMainLooper()), contentResolver) : new ContentObserver(new Handler(Looper.getMainLooper())) { @Override public void onChange(boolean selfChange) { boolean isDeviceProvisioned = isDeviceProvisioned(); if (DEBUG) { Slogf.d( TAG, "onChange(%b): isDeviceProvisioned=%b", selfChange, isDeviceProvisioned); } // Set USER_SETUP_COMPLETE for the (headless) system user only when the // device // has been set up at least once. if (isDeviceProvisioned) { Slogf.i(TAG, "Marking USER_SETUP_COMPLETE for system user"); Settings.Secure.putInt( mContentResolver, Settings.Secure.USER_SETUP_COMPLETE, 1); mContentResolver.unregisterContentObserver( mDeviceProvisionedObserver); } } }); } // TODO(b/409650316): remove after flag's completely pushed Loading Loading @@ -359,6 +368,10 @@ public final class HsumBootUserInitializer { @VisibleForTesting void observeDeviceProvisioning() { if (Flags.hsuDeviceProvisioner()) { ((HsuDeviceProvisioner) mDeviceProvisionedObserver).init(); return; } if (isDeviceProvisioned()) { return; } Loading services/tests/mockingservicestests/src/com/android/server/pm/HsumBootUserInitializerTest.java +18 −2 Original line number Diff line number Diff line Loading @@ -31,6 +31,8 @@ import android.content.ContentResolver; import android.content.Context; import android.database.ContentObserver; import android.os.UserManager; import android.platform.test.annotations.DisableFlags; import android.platform.test.annotations.EnableFlags; import android.provider.Settings; import android.util.Log; Loading Loading @@ -104,7 +106,8 @@ public final class HsumBootUserInitializerTest { } @Test public void testObserveDeviceProvisioning_provisioned() { @DisableFlags(android.multiuser.Flags.FLAG_HSU_DEVICE_PROVISIONER) public void testObserveDeviceProvisioning_flagDisabled_provisioned() { mockIsDeviceProvisioned(true); mFixture.observeDeviceProvisioning(); Loading @@ -114,7 +117,8 @@ public final class HsumBootUserInitializerTest { } @Test public void testObserveDeviceProvisioning_notProvisioned() { @DisableFlags(android.multiuser.Flags.FLAG_HSU_DEVICE_PROVISIONER) public void testObserveDeviceProvisioning_flagDisabled_notProvisioned() { mockIsDeviceProvisioned(false); // First trigger setting an observer... Loading @@ -131,6 +135,18 @@ public final class HsumBootUserInitializerTest { verifyContentObserverUnregistered(contentObserver); } @Test @EnableFlags(android.multiuser.Flags.FLAG_HSU_DEVICE_PROVISIONER) public void testObserveDeviceProvisioning_flagEnabled_provisioned() { testObserveDeviceProvisioning_flagDisabled_provisioned(); } @Test @EnableFlags(android.multiuser.Flags.FLAG_HSU_DEVICE_PROVISIONER) public void testObserveDeviceProvisioning_flagEnabled_notprovisioned() { testObserveDeviceProvisioning_flagDisabled_notProvisioned(); } private void mockIsHsum(boolean value) { Log.v(TAG, "mockIsHsum(" + value + ")"); doReturn(value).when(UserManager::isHeadlessSystemUserMode); Loading Loading
services/core/java/com/android/server/pm/HsuDeviceProvisioner.java +4 −1 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ package com.android.server.pm; import android.content.ContentResolver; import android.database.ContentObserver; import android.os.Handler; import android.os.Looper; import android.provider.Settings; import android.util.Log; Loading @@ -31,6 +30,7 @@ import com.android.server.utils.Slogf; final class HsuDeviceProvisioner extends ContentObserver { private static final String TAG = HsuDeviceProvisioner.class.getSimpleName(); private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); private final ContentResolver mContentResolver; Loading @@ -55,6 +55,9 @@ final class HsuDeviceProvisioner extends ContentObserver { @Override public void onChange(boolean selfChange) { if (DEBUG) { Slogf.d(TAG, "onChange(%b): isDeviceProvisioned=%b", selfChange, isDeviceProvisioned()); } // Set USER_SETUP_COMPLETE for the (headless) system user only when the device // has been set up at least once. if (isDeviceProvisioned()) { Loading
services/core/java/com/android/server/pm/HsumBootUserInitializer.java +32 −19 Original line number Diff line number Diff line Loading @@ -65,26 +65,10 @@ public final class HsumBootUserInitializer { private final ActivityManagerService mAms; private final PackageManagerService mPms; private final ContentResolver mContentResolver; // TODO(b/322150148): Change the type to HsuDeviceProvisioner and remove the cast once the flag // is completely pushed. private final ContentObserver mDeviceProvisionedObserver; private final ContentObserver mDeviceProvisionedObserver = new ContentObserver(new Handler(Looper.getMainLooper())) { @Override public void onChange(boolean selfChange) { boolean isDeviceProvisioned = isDeviceProvisioned(); if (DEBUG) { Slogf.d(TAG, "onChange(%b): isDeviceProvisioned=%b", selfChange, isDeviceProvisioned); } // Set USER_SETUP_COMPLETE for the (headless) system user only when the device // has been set up at least once. if (isDeviceProvisioned) { Slogf.i(TAG, "Marking USER_SETUP_COMPLETE for system user"); Settings.Secure.putInt(mContentResolver, Settings.Secure.USER_SETUP_COMPLETE, 1); mContentResolver.unregisterContentObserver(mDeviceProvisionedObserver); } } }; /** Whether it should create a main user on first boot. */ private final boolean mShouldDesignateMainUser; Loading Loading @@ -114,6 +98,31 @@ public final class HsumBootUserInitializer { mContentResolver = contentResolver; mShouldDesignateMainUser = shouldDesignateMainUser; mShouldCreateInitialUser = shouldCreateInitialUser; mDeviceProvisionedObserver = (Flags.hsuDeviceProvisioner() ? new HsuDeviceProvisioner(new Handler(Looper.getMainLooper()), contentResolver) : new ContentObserver(new Handler(Looper.getMainLooper())) { @Override public void onChange(boolean selfChange) { boolean isDeviceProvisioned = isDeviceProvisioned(); if (DEBUG) { Slogf.d( TAG, "onChange(%b): isDeviceProvisioned=%b", selfChange, isDeviceProvisioned); } // Set USER_SETUP_COMPLETE for the (headless) system user only when the // device // has been set up at least once. if (isDeviceProvisioned) { Slogf.i(TAG, "Marking USER_SETUP_COMPLETE for system user"); Settings.Secure.putInt( mContentResolver, Settings.Secure.USER_SETUP_COMPLETE, 1); mContentResolver.unregisterContentObserver( mDeviceProvisionedObserver); } } }); } // TODO(b/409650316): remove after flag's completely pushed Loading Loading @@ -359,6 +368,10 @@ public final class HsumBootUserInitializer { @VisibleForTesting void observeDeviceProvisioning() { if (Flags.hsuDeviceProvisioner()) { ((HsuDeviceProvisioner) mDeviceProvisionedObserver).init(); return; } if (isDeviceProvisioned()) { return; } Loading
services/tests/mockingservicestests/src/com/android/server/pm/HsumBootUserInitializerTest.java +18 −2 Original line number Diff line number Diff line Loading @@ -31,6 +31,8 @@ import android.content.ContentResolver; import android.content.Context; import android.database.ContentObserver; import android.os.UserManager; import android.platform.test.annotations.DisableFlags; import android.platform.test.annotations.EnableFlags; import android.provider.Settings; import android.util.Log; Loading Loading @@ -104,7 +106,8 @@ public final class HsumBootUserInitializerTest { } @Test public void testObserveDeviceProvisioning_provisioned() { @DisableFlags(android.multiuser.Flags.FLAG_HSU_DEVICE_PROVISIONER) public void testObserveDeviceProvisioning_flagDisabled_provisioned() { mockIsDeviceProvisioned(true); mFixture.observeDeviceProvisioning(); Loading @@ -114,7 +117,8 @@ public final class HsumBootUserInitializerTest { } @Test public void testObserveDeviceProvisioning_notProvisioned() { @DisableFlags(android.multiuser.Flags.FLAG_HSU_DEVICE_PROVISIONER) public void testObserveDeviceProvisioning_flagDisabled_notProvisioned() { mockIsDeviceProvisioned(false); // First trigger setting an observer... Loading @@ -131,6 +135,18 @@ public final class HsumBootUserInitializerTest { verifyContentObserverUnregistered(contentObserver); } @Test @EnableFlags(android.multiuser.Flags.FLAG_HSU_DEVICE_PROVISIONER) public void testObserveDeviceProvisioning_flagEnabled_provisioned() { testObserveDeviceProvisioning_flagDisabled_provisioned(); } @Test @EnableFlags(android.multiuser.Flags.FLAG_HSU_DEVICE_PROVISIONER) public void testObserveDeviceProvisioning_flagEnabled_notprovisioned() { testObserveDeviceProvisioning_flagDisabled_notProvisioned(); } private void mockIsHsum(boolean value) { Log.v(TAG, "mockIsHsum(" + value + ")"); doReturn(value).when(UserManager::isHeadlessSystemUserMode); Loading