Merge "Enable overlays that are pending creation" into sc-dev

This commit is contained in:
Lucas Dupin
2021-07-21 22:50:54 +00:00
committed by Android (Google) Code Review

View File

@@ -197,8 +197,10 @@ public class ThemeOverlayApplier implements Dumpable {
.collect(Collectors.toList()); .collect(Collectors.toList());
OverlayManagerTransaction.Builder transaction = getTransactionBuilder(); OverlayManagerTransaction.Builder transaction = getTransactionBuilder();
HashSet<OverlayIdentifier> identifiersPending = new HashSet<>();
if (pendingCreation != null) { if (pendingCreation != null) {
for (FabricatedOverlay overlay : pendingCreation) { for (FabricatedOverlay overlay : pendingCreation) {
identifiersPending.add(overlay.getIdentifier());
transaction.registerFabricatedOverlay(overlay); transaction.registerFabricatedOverlay(overlay);
} }
} }
@@ -206,14 +208,14 @@ public class ThemeOverlayApplier implements Dumpable {
for (Pair<String, String> packageToDisable : overlaysToDisable) { for (Pair<String, String> packageToDisable : overlaysToDisable) {
OverlayIdentifier overlayInfo = new OverlayIdentifier(packageToDisable.second); OverlayIdentifier overlayInfo = new OverlayIdentifier(packageToDisable.second);
setEnabled(transaction, overlayInfo, packageToDisable.first, currentUser, setEnabled(transaction, overlayInfo, packageToDisable.first, currentUser,
managedProfiles, false); managedProfiles, false, identifiersPending.contains(overlayInfo));
} }
for (String category : THEME_CATEGORIES) { for (String category : THEME_CATEGORIES) {
if (categoryToPackage.containsKey(category)) { if (categoryToPackage.containsKey(category)) {
OverlayIdentifier overlayInfo = categoryToPackage.get(category); OverlayIdentifier overlayInfo = categoryToPackage.get(category);
setEnabled(transaction, overlayInfo, category, currentUser, managedProfiles, setEnabled(transaction, overlayInfo, category, currentUser, managedProfiles,
true); true, identifiersPending.contains(overlayInfo));
} }
} }
@@ -233,7 +235,7 @@ public class ThemeOverlayApplier implements Dumpable {
@AnyThread @AnyThread
private void setEnabled(OverlayManagerTransaction.Builder transaction, private void setEnabled(OverlayManagerTransaction.Builder transaction,
OverlayIdentifier identifier, String category, int currentUser, OverlayIdentifier identifier, String category, int currentUser,
Set<UserHandle> managedProfiles, boolean enabled) { Set<UserHandle> managedProfiles, boolean enabled, boolean pendingCreation) {
if (DEBUG) { if (DEBUG) {
Log.d(TAG, "setEnabled: " + identifier.getPackageName() + " category: " Log.d(TAG, "setEnabled: " + identifier.getPackageName() + " category: "
+ category + ": " + enabled); + category + ": " + enabled);
@@ -241,7 +243,7 @@ public class ThemeOverlayApplier implements Dumpable {
OverlayInfo overlayInfo = mOverlayManager.getOverlayInfo(identifier, OverlayInfo overlayInfo = mOverlayManager.getOverlayInfo(identifier,
UserHandle.of(currentUser)); UserHandle.of(currentUser));
if (overlayInfo == null) { if (overlayInfo == null && !pendingCreation) {
Log.i(TAG, "Won't enable " + identifier + ", it doesn't exist for user" Log.i(TAG, "Won't enable " + identifier + ", it doesn't exist for user"
+ currentUser); + currentUser);
return; return;