Loading services/core/java/com/android/server/timezonedetector/ServiceConfigAccessorImpl.java +12 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,8 @@ public final class ServiceConfigAccessorImpl implements ServiceConfigAccessor { */ private static final Set<String> CONFIGURATION_INTERNAL_SERVER_FLAGS_KEYS_TO_WATCH = Set.of( ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_FEATURE_SUPPORTED, ServerFlags.KEY_PRIMARY_LTZP_MODE_OVERRIDE, ServerFlags.KEY_SECONDARY_LTZP_MODE_OVERRIDE, ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_RUN_IN_BACKGROUND_ENABLED, ServerFlags.KEY_ENHANCED_METRICS_COLLECTION_ENABLED, ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_DEFAULT, Loading Loading @@ -443,6 +445,9 @@ public final class ServiceConfigAccessorImpl implements ServiceConfigAccessor { mTestPrimaryLocationTimeZoneProviderMode = mTestPrimaryLocationTimeZoneProviderPackageName == null ? PROVIDER_MODE_DISABLED : PROVIDER_MODE_ENABLED; // Changing this state can affect the content of ConfigurationInternal, so listeners need to // be informed. mContext.getMainThreadHandler().post(this::handleConfigurationInternalChangeOnMainThread); } @Override Loading @@ -469,6 +474,9 @@ public final class ServiceConfigAccessorImpl implements ServiceConfigAccessor { mTestSecondaryLocationTimeZoneProviderMode = mTestSecondaryLocationTimeZoneProviderPackageName == null ? PROVIDER_MODE_DISABLED : PROVIDER_MODE_ENABLED; // Changing this state can affect the content of ConfigurationInternal, so listeners need to // be informed. mContext.getMainThreadHandler().post(this::handleConfigurationInternalChangeOnMainThread); } @Override Loading Loading @@ -573,6 +581,10 @@ public final class ServiceConfigAccessorImpl implements ServiceConfigAccessor { mTestSecondaryLocationTimeZoneProviderPackageName = null; mTestSecondaryLocationTimeZoneProviderMode = null; mRecordStateChangesForTests = false; // Changing LTZP config can affect the content of ConfigurationInternal, so listeners // need to be informed. mContext.getMainThreadHandler().post(this::handleConfigurationInternalChangeOnMainThread); } private boolean isTelephonyFallbackSupported() { Loading services/core/java/com/android/server/timezonedetector/TimeZoneDetectorService.java +2 −2 Original line number Diff line number Diff line Loading @@ -336,13 +336,13 @@ public final class TimeZoneDetectorService extends ITimeZoneDetectorService.Stub boolean isTelephonyTimeZoneDetectionSupported() { enforceManageTimeZoneDetectorPermission(); return mServiceConfigAccessor.isTelephonyTimeZoneDetectionFeatureSupported(); return mTimeZoneDetectorStrategy.isTelephonyTimeZoneDetectionSupported(); } boolean isGeoTimeZoneDetectionSupported() { enforceManageTimeZoneDetectorPermission(); return mServiceConfigAccessor.isGeoTimeZoneDetectionFeatureSupported(); return mTimeZoneDetectorStrategy.isGeoTimeZoneDetectionSupported(); } /** Loading services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategy.java +6 −0 Original line number Diff line number Diff line Loading @@ -124,4 +124,10 @@ public interface TimeZoneDetectorStrategy extends Dumpable { /** Generates a state snapshot for metrics. */ @NonNull MetricsTimeZoneDetectorState generateMetricsState(); /** Returns {@code true} if the device supports telephony time zone detection. */ boolean isTelephonyTimeZoneDetectionSupported(); /** Returns {@code true} if the device supports geolocation time zone detection. */ boolean isGeoTimeZoneDetectionSupported(); } services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategyImpl.java +14 −0 Original line number Diff line number Diff line Loading @@ -396,6 +396,20 @@ public final class TimeZoneDetectorStrategyImpl implements TimeZoneDetectorStrat getLatestGeolocationSuggestion()); } @Override public boolean isTelephonyTimeZoneDetectionSupported() { synchronized (this) { return mCurrentConfigurationInternal.isTelephonyDetectionSupported(); } } @Override public boolean isGeoTimeZoneDetectionSupported() { synchronized (this) { return mCurrentConfigurationInternal.isGeoDetectionSupported(); } } private static int scoreTelephonySuggestion(@NonNull TelephonyTimeZoneSuggestion suggestion) { int score; if (suggestion.getZoneId() == null) { Loading services/tests/servicestests/src/com/android/server/timezonedetector/FakeTimeZoneDetectorStrategy.java +10 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,16 @@ class FakeTimeZoneDetectorStrategy implements TimeZoneDetectorStrategy { throw new UnsupportedOperationException(); } @Override public boolean isTelephonyTimeZoneDetectionSupported() { throw new UnsupportedOperationException(); } @Override public boolean isGeoTimeZoneDetectionSupported() { throw new UnsupportedOperationException(); } @Override public void dump(IndentingPrintWriter pw, String[] args) { mDumpCalled = true; Loading Loading
services/core/java/com/android/server/timezonedetector/ServiceConfigAccessorImpl.java +12 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,8 @@ public final class ServiceConfigAccessorImpl implements ServiceConfigAccessor { */ private static final Set<String> CONFIGURATION_INTERNAL_SERVER_FLAGS_KEYS_TO_WATCH = Set.of( ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_FEATURE_SUPPORTED, ServerFlags.KEY_PRIMARY_LTZP_MODE_OVERRIDE, ServerFlags.KEY_SECONDARY_LTZP_MODE_OVERRIDE, ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_RUN_IN_BACKGROUND_ENABLED, ServerFlags.KEY_ENHANCED_METRICS_COLLECTION_ENABLED, ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_DEFAULT, Loading Loading @@ -443,6 +445,9 @@ public final class ServiceConfigAccessorImpl implements ServiceConfigAccessor { mTestPrimaryLocationTimeZoneProviderMode = mTestPrimaryLocationTimeZoneProviderPackageName == null ? PROVIDER_MODE_DISABLED : PROVIDER_MODE_ENABLED; // Changing this state can affect the content of ConfigurationInternal, so listeners need to // be informed. mContext.getMainThreadHandler().post(this::handleConfigurationInternalChangeOnMainThread); } @Override Loading @@ -469,6 +474,9 @@ public final class ServiceConfigAccessorImpl implements ServiceConfigAccessor { mTestSecondaryLocationTimeZoneProviderMode = mTestSecondaryLocationTimeZoneProviderPackageName == null ? PROVIDER_MODE_DISABLED : PROVIDER_MODE_ENABLED; // Changing this state can affect the content of ConfigurationInternal, so listeners need to // be informed. mContext.getMainThreadHandler().post(this::handleConfigurationInternalChangeOnMainThread); } @Override Loading Loading @@ -573,6 +581,10 @@ public final class ServiceConfigAccessorImpl implements ServiceConfigAccessor { mTestSecondaryLocationTimeZoneProviderPackageName = null; mTestSecondaryLocationTimeZoneProviderMode = null; mRecordStateChangesForTests = false; // Changing LTZP config can affect the content of ConfigurationInternal, so listeners // need to be informed. mContext.getMainThreadHandler().post(this::handleConfigurationInternalChangeOnMainThread); } private boolean isTelephonyFallbackSupported() { Loading
services/core/java/com/android/server/timezonedetector/TimeZoneDetectorService.java +2 −2 Original line number Diff line number Diff line Loading @@ -336,13 +336,13 @@ public final class TimeZoneDetectorService extends ITimeZoneDetectorService.Stub boolean isTelephonyTimeZoneDetectionSupported() { enforceManageTimeZoneDetectorPermission(); return mServiceConfigAccessor.isTelephonyTimeZoneDetectionFeatureSupported(); return mTimeZoneDetectorStrategy.isTelephonyTimeZoneDetectionSupported(); } boolean isGeoTimeZoneDetectionSupported() { enforceManageTimeZoneDetectorPermission(); return mServiceConfigAccessor.isGeoTimeZoneDetectionFeatureSupported(); return mTimeZoneDetectorStrategy.isGeoTimeZoneDetectionSupported(); } /** Loading
services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategy.java +6 −0 Original line number Diff line number Diff line Loading @@ -124,4 +124,10 @@ public interface TimeZoneDetectorStrategy extends Dumpable { /** Generates a state snapshot for metrics. */ @NonNull MetricsTimeZoneDetectorState generateMetricsState(); /** Returns {@code true} if the device supports telephony time zone detection. */ boolean isTelephonyTimeZoneDetectionSupported(); /** Returns {@code true} if the device supports geolocation time zone detection. */ boolean isGeoTimeZoneDetectionSupported(); }
services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategyImpl.java +14 −0 Original line number Diff line number Diff line Loading @@ -396,6 +396,20 @@ public final class TimeZoneDetectorStrategyImpl implements TimeZoneDetectorStrat getLatestGeolocationSuggestion()); } @Override public boolean isTelephonyTimeZoneDetectionSupported() { synchronized (this) { return mCurrentConfigurationInternal.isTelephonyDetectionSupported(); } } @Override public boolean isGeoTimeZoneDetectionSupported() { synchronized (this) { return mCurrentConfigurationInternal.isGeoDetectionSupported(); } } private static int scoreTelephonySuggestion(@NonNull TelephonyTimeZoneSuggestion suggestion) { int score; if (suggestion.getZoneId() == null) { Loading
services/tests/servicestests/src/com/android/server/timezonedetector/FakeTimeZoneDetectorStrategy.java +10 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,16 @@ class FakeTimeZoneDetectorStrategy implements TimeZoneDetectorStrategy { throw new UnsupportedOperationException(); } @Override public boolean isTelephonyTimeZoneDetectionSupported() { throw new UnsupportedOperationException(); } @Override public boolean isGeoTimeZoneDetectionSupported() { throw new UnsupportedOperationException(); } @Override public void dump(IndentingPrintWriter pw, String[] args) { mDumpCalled = true; Loading