Do not reload theme when managed profile

When a managed profile is added, if setup wizard was not finished,
do not reload the theme, postpone until it's done

Bug: 185572689
Test: atest ThemeOverlayControllerTest
Change-Id: I0cb1b2316a6837d85cf708403a34c2459a1dcc5a
This commit is contained in:
Lucas Dupin
2021-04-21 23:06:12 -07:00
parent 469e1b4942
commit 7f5bc353d4
2 changed files with 21 additions and 0 deletions

View File

@@ -166,6 +166,11 @@ public class ThemeOverlayController extends SystemUI implements Dumpable {
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_USER_SWITCHED.equals(intent.getAction())
|| Intent.ACTION_MANAGED_PROFILE_ADDED.equals(intent.getAction())) {
if (!mDeviceProvisionedController.isCurrentUserSetup()) {
Log.i(TAG, "User setup not finished when " + intent.getAction()
+ " was received. Deferring...");
return;
}
if (DEBUG) Log.d(TAG, "Updating overlays for user switch / profile added.");
reevaluateSystemTheme(true /* forceReload */);
} else if (Intent.ACTION_WALLPAPER_CHANGED.equals(intent.getAction())) {

View File

@@ -202,6 +202,22 @@ public class ThemeOverlayControllerTest extends SysuiTestCase {
.isEqualTo(new OverlayIdentifier("override.package.name"));
}
@Test
public void onProfileAdded_setsTheme() {
mBroadcastReceiver.getValue().onReceive(null,
new Intent(Intent.ACTION_MANAGED_PROFILE_ADDED));
verify(mThemeOverlayApplier).applyCurrentUserOverlays(any(), any(), anyInt(), any());
}
@Test
public void onProfileAdded_ignoresUntilSetupComplete() {
reset(mDeviceProvisionedController);
mBroadcastReceiver.getValue().onReceive(null,
new Intent(Intent.ACTION_MANAGED_PROFILE_ADDED));
verify(mThemeOverlayApplier, never())
.applyCurrentUserOverlays(any(), any(), anyInt(), any());
}
@Test
public void onWallpaperColorsChanged_firstEventBeforeUserSetup_shouldBeAccepted() {
// By default, on setup() we make this controller return that the user finished setup