OMS: Make updates to category not reset the overlay's state
- Also change how default overlays are applied. Apply them if no other
overlay is enabled for the same category as the default overlay.
Bug: 73740686
Test: manual
Test: adb shell rm /data/system/overlays.xml && adb reboot #verify that colors are blue
Test: adb pull /data/system/overlays.xml \
&& <edit overlay to remove categories> \
&& adb push overlays.xml /data/system/overlays.xml \
&& adb reboot # verify that colors are blue
Change-Id: If42afd287703e2e159d0087e477c19409f724124
diff --git a/services/core/java/com/android/server/om/OverlayManagerService.java b/services/core/java/com/android/server/om/OverlayManagerService.java
index 7467954..fd51be5 100644
--- a/services/core/java/com/android/server/om/OverlayManagerService.java
+++ b/services/core/java/com/android/server/om/OverlayManagerService.java
@@ -64,6 +64,8 @@
import com.android.server.pm.Installer;
import com.android.server.pm.UserManagerService;
+import libcore.util.EmptyArray;
+
import org.xmlpull.v1.XmlPullParserException;
import java.io.File;
@@ -303,10 +305,10 @@
schedulePersistSettings();
}
- private static Set<String> getDefaultOverlayPackages() {
+ private static String[] getDefaultOverlayPackages() {
final String str = SystemProperties.get(DEFAULT_OVERLAYS_PROP);
if (TextUtils.isEmpty(str)) {
- return Collections.emptySet();
+ return EmptyArray.STRING;
}
final ArraySet<String> defaultPackages = new ArraySet<>();
@@ -315,7 +317,7 @@
defaultPackages.add(packageName);
}
}
- return defaultPackages;
+ return defaultPackages.toArray(new String[defaultPackages.size()]);
}
private final class PackageReceiver extends BroadcastReceiver {