From dd4d5619842a746455bc8cc379a5b8261cc0d5bf Mon Sep 17 00:00:00 2001 From: Neil Fuller Date: Fri, 14 May 2021 17:36:45 +0100 Subject: [PATCH] Provide a new command line for host tests This adds a new cmd verb for time_zone_detector that reports whether telephony time zone detection is supported. This enables a host side CTS test to properly determine expected behavior on non-telephony devices like Android Auto. Bug: 187907947 Test: See associated cts change Change-Id: Ie118459c704112a259d38cb246882f11f8c5dee0 --- .../app/timezonedetector/TimeZoneDetector.java | 7 +++++++ .../timezonedetector/TimeZoneDetectorService.java | 7 +++++++ .../TimeZoneDetectorShellCommand.java | 13 +++++++++++++ 3 files changed, 27 insertions(+) diff --git a/core/java/android/app/timezonedetector/TimeZoneDetector.java b/core/java/android/app/timezonedetector/TimeZoneDetector.java index b216e913b6ff8..a71cffe5afc0b 100644 --- a/core/java/android/app/timezonedetector/TimeZoneDetector.java +++ b/core/java/android/app/timezonedetector/TimeZoneDetector.java @@ -47,6 +47,13 @@ public interface TimeZoneDetector { */ String SHELL_COMMAND_SET_AUTO_DETECTION_ENABLED = "set_auto_detection_enabled"; + /** + * A shell command that prints whether the telephony-based time zone detection feature is + * supported on the device. + * @hide + */ + String SHELL_COMMAND_IS_TELEPHONY_DETECTION_SUPPORTED = "is_telephony_detection_supported"; + /** * A shell command that prints whether the geolocation-based time zone detection feature is * supported on the device. diff --git a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorService.java b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorService.java index 457dc4325e62e..b1b537be1d295 100644 --- a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorService.java +++ b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorService.java @@ -304,6 +304,13 @@ public final class TimeZoneDetectorService extends ITimeZoneDetectorService.Stub mHandler.post(() -> mTimeZoneDetectorStrategy.suggestTelephonyTimeZone(timeZoneSuggestion)); } + boolean isTelephonyTimeZoneDetectionSupported() { + enforceManageTimeZoneDetectorPermission(); + + return ServiceConfigAccessor.getInstance(mContext) + .isTelephonyTimeZoneDetectionFeatureSupported(); + } + boolean isGeoTimeZoneDetectionSupported() { enforceManageTimeZoneDetectorPermission(); diff --git a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorShellCommand.java b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorShellCommand.java index 9899b448ba077..a4a46a3c4c731 100644 --- a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorShellCommand.java +++ b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorShellCommand.java @@ -18,6 +18,7 @@ package com.android.server.timezonedetector; import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_IS_AUTO_DETECTION_ENABLED; import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_IS_GEO_DETECTION_ENABLED; import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_IS_GEO_DETECTION_SUPPORTED; +import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_IS_TELEPHONY_DETECTION_SUPPORTED; import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_SERVICE_NAME; import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_SET_AUTO_DETECTION_ENABLED; import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_SET_GEO_DETECTION_ENABLED; @@ -61,6 +62,8 @@ class TimeZoneDetectorShellCommand extends ShellCommand { return runIsAutoDetectionEnabled(); case SHELL_COMMAND_SET_AUTO_DETECTION_ENABLED: return runSetAutoDetectionEnabled(); + case SHELL_COMMAND_IS_TELEPHONY_DETECTION_SUPPORTED: + return runIsTelephonyDetectionSupported(); case SHELL_COMMAND_IS_GEO_DETECTION_SUPPORTED: return runIsGeoDetectionSupported(); case SHELL_COMMAND_IS_GEO_DETECTION_ENABLED: @@ -89,6 +92,13 @@ class TimeZoneDetectorShellCommand extends ShellCommand { return 0; } + private int runIsTelephonyDetectionSupported() { + final PrintWriter pw = getOutPrintWriter(); + boolean enabled = mInterface.isTelephonyTimeZoneDetectionSupported(); + pw.println(enabled); + return 0; + } + private int runIsGeoDetectionSupported() { final PrintWriter pw = getOutPrintWriter(); boolean enabled = mInterface.isGeoTimeZoneDetectionSupported(); @@ -169,6 +179,9 @@ class TimeZoneDetectorShellCommand extends ShellCommand { pw.printf(" Prints true/false according to the automatic time zone detection setting\n"); pw.printf(" %s true|false\n", SHELL_COMMAND_SET_AUTO_DETECTION_ENABLED); pw.printf(" Sets the automatic time zone detection setting.\n"); + pw.printf(" %s\n", SHELL_COMMAND_IS_TELEPHONY_DETECTION_SUPPORTED); + pw.printf(" Prints true/false according to whether telephony time zone detection is" + + " supported on this device.\n"); pw.printf(" %s\n", SHELL_COMMAND_IS_GEO_DETECTION_SUPPORTED); pw.printf(" Prints true/false according to whether geolocation time zone detection is" + " supported on this device.\n");