From d3bfbc6a20d0eb27266a26356a87ae5a2d19584c Mon Sep 17 00:00:00 2001 From: Neil Fuller Date: Mon, 30 May 2022 16:35:32 +0100 Subject: [PATCH] Add support for "empty" server-side flag values Add support to ServerFlags for a special escape string for empty arrays. Also adjust code to allow no entries in the "origin priorities" to help test what happens when auto time isn't supported (see the associated change in packages/apps/Settings/ Tested with: adb shell cmd dumpsys time_detector adb shell cmd device_config system_time time_detector_origin_priorities_override _[]_ adb shell cmd dumpsys time_detector Bug: 172891783 Test: See above Change-Id: I1e2573384055b2527f39b0134ace5f08019a3a40 --- .../android/server/timedetector/ServerFlags.java | 14 +++++++++++--- .../timedetector/ServiceConfigAccessorImpl.java | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/timedetector/ServerFlags.java b/services/core/java/com/android/server/timedetector/ServerFlags.java index 417177fa903ef..773b5175c954b 100644 --- a/services/core/java/com/android/server/timedetector/ServerFlags.java +++ b/services/core/java/com/android/server/timedetector/ServerFlags.java @@ -278,11 +278,19 @@ public final class ServerFlags { */ @NonNull public Optional getOptionalStringArray(@DeviceConfigKey String key) { - Optional string = getOptionalString(key); - if (!string.isPresent()) { + Optional optionalString = getOptionalString(key); + if (!optionalString.isPresent()) { return Optional.empty(); } - return Optional.of(string.get().split(",")); + + // DeviceConfig appears to have no way to specify an empty string, so we use "_[]_" as a + // special value to mean a zero-length array. + String value = optionalString.get(); + if ("_[]_".equals(value)) { + return Optional.of(new String[0]); + } + + return Optional.of(value.split(",")); } /** diff --git a/services/core/java/com/android/server/timedetector/ServiceConfigAccessorImpl.java b/services/core/java/com/android/server/timedetector/ServiceConfigAccessorImpl.java index b161cc7204585..e4f3a80c03b5c 100644 --- a/services/core/java/com/android/server/timedetector/ServiceConfigAccessorImpl.java +++ b/services/core/java/com/android/server/timedetector/ServiceConfigAccessorImpl.java @@ -334,7 +334,7 @@ final class ServiceConfigAccessorImpl implements ServiceConfigAccessor { } int[] priorityInts = null; - if (priorityStrings != null && priorityStrings.length > 0) { + if (priorityStrings != null) { priorityInts = new int[priorityStrings.length]; try { for (int i = 0; i < priorityInts.length; i++) {