Loading services/core/java/com/android/server/timezonedetector/ConfigurationInternal.java +3 −2 Original line number Diff line number Diff line Loading @@ -148,11 +148,12 @@ public final class ConfigurationInternal { builder.setConfigureAutoDetectionEnabledCapability(configureAutoDetectionEnabledCapability); boolean deviceHasLocationTimeZoneDetection = isGeoDetectionSupported(); // Note: allowConfigDateTime does not restrict the ability to change location time zone // detection enabled. This is intentional as it has user privacy implications and so it // makes sense to leave this under a user's control. final int configureGeolocationDetectionEnabledCapability; if (!deviceHasLocationTimeZoneDetection) { configureGeolocationDetectionEnabledCapability = CAPABILITY_NOT_SUPPORTED; } else if (!allowConfigDateTime) { configureGeolocationDetectionEnabledCapability = CAPABILITY_NOT_ALLOWED; } else if (!mAutoDetectionEnabled || !isLocationEnabled()) { configureGeolocationDetectionEnabledCapability = CAPABILITY_NOT_APPLICABLE; } else { Loading services/tests/servicestests/src/com/android/server/timezonedetector/ConfigurationInternalTest.java +15 −13 Original line number Diff line number Diff line Loading @@ -67,10 +67,10 @@ public class ConfigurationInternalTest { TimeZoneCapabilities capabilities = capabilitiesAndConfig.getCapabilities(); assertEquals(CAPABILITY_POSSESSED, capabilities.getConfigureAutoDetectionEnabledCapability()); assertEquals(CAPABILITY_POSSESSED, capabilities.getConfigureGeoDetectionEnabledCapability()); assertEquals(CAPABILITY_NOT_APPLICABLE, capabilities.getSuggestManualTimeZoneCapability()); assertEquals(CAPABILITY_POSSESSED, capabilities.getConfigureGeoDetectionEnabledCapability()); TimeZoneConfiguration configuration = capabilitiesAndConfig.getConfiguration(); assertTrue(configuration.isAutoDetectionEnabled()); Loading @@ -92,10 +92,10 @@ public class ConfigurationInternalTest { TimeZoneCapabilities capabilities = capabilitiesAndConfig.getCapabilities(); assertEquals(CAPABILITY_POSSESSED, capabilities.getConfigureAutoDetectionEnabledCapability()); assertEquals(CAPABILITY_NOT_APPLICABLE, capabilities.getConfigureGeoDetectionEnabledCapability()); assertEquals(CAPABILITY_POSSESSED, capabilities.getSuggestManualTimeZoneCapability()); assertEquals(CAPABILITY_NOT_APPLICABLE, capabilities.getConfigureGeoDetectionEnabledCapability()); TimeZoneConfiguration configuration = capabilitiesAndConfig.getConfiguration(); assertFalse(configuration.isAutoDetectionEnabled()); Loading Loading @@ -129,10 +129,11 @@ public class ConfigurationInternalTest { TimeZoneCapabilities capabilities = capabilitiesAndConfig.getCapabilities(); assertEquals(CAPABILITY_NOT_ALLOWED, capabilities.getConfigureAutoDetectionEnabledCapability()); assertEquals(CAPABILITY_NOT_ALLOWED, capabilities.getConfigureGeoDetectionEnabledCapability()); assertEquals(CAPABILITY_NOT_ALLOWED, capabilities.getSuggestManualTimeZoneCapability()); // This has user privacy implications so it is not restricted in the same way as others. assertEquals(CAPABILITY_POSSESSED, capabilities.getConfigureGeoDetectionEnabledCapability()); TimeZoneConfiguration configuration = capabilitiesAndConfig.getConfiguration(); assertTrue(configuration.isAutoDetectionEnabled()); Loading @@ -154,10 +155,11 @@ public class ConfigurationInternalTest { TimeZoneCapabilities capabilities = capabilitiesAndConfig.getCapabilities(); assertEquals(CAPABILITY_NOT_ALLOWED, capabilities.getConfigureAutoDetectionEnabledCapability()); assertEquals(CAPABILITY_NOT_ALLOWED, capabilities.getConfigureGeoDetectionEnabledCapability()); assertEquals(CAPABILITY_NOT_ALLOWED, capabilities.getSuggestManualTimeZoneCapability()); // This has user privacy implications so it is not restricted in the same way as others. assertEquals(CAPABILITY_NOT_APPLICABLE, capabilities.getConfigureGeoDetectionEnabledCapability()); TimeZoneConfiguration configuration = capabilitiesAndConfig.getConfiguration(); assertFalse(configuration.isAutoDetectionEnabled()); Loading Loading @@ -191,9 +193,9 @@ public class ConfigurationInternalTest { TimeZoneCapabilities capabilities = capabilitiesAndConfig.getCapabilities(); assertEquals(CAPABILITY_NOT_SUPPORTED, capabilities.getConfigureAutoDetectionEnabledCapability()); assertEquals(CAPABILITY_POSSESSED, capabilities.getSuggestManualTimeZoneCapability()); assertEquals(CAPABILITY_NOT_SUPPORTED, capabilities.getConfigureGeoDetectionEnabledCapability()); assertEquals(CAPABILITY_POSSESSED, capabilities.getSuggestManualTimeZoneCapability()); TimeZoneConfiguration configuration = capabilitiesAndConfig.getConfiguration(); assertTrue(configuration.isAutoDetectionEnabled()); Loading @@ -214,9 +216,9 @@ public class ConfigurationInternalTest { TimeZoneCapabilities capabilities = capabilitiesAndConfig.getCapabilities(); assertEquals(CAPABILITY_NOT_SUPPORTED, capabilities.getConfigureAutoDetectionEnabledCapability()); assertEquals(CAPABILITY_POSSESSED, capabilities.getSuggestManualTimeZoneCapability()); assertEquals(CAPABILITY_NOT_SUPPORTED, capabilities.getConfigureGeoDetectionEnabledCapability()); assertEquals(CAPABILITY_POSSESSED, capabilities.getSuggestManualTimeZoneCapability()); TimeZoneConfiguration configuration = capabilitiesAndConfig.getConfiguration(); assertFalse(configuration.isAutoDetectionEnabled()); Loading Loading @@ -253,10 +255,10 @@ public class ConfigurationInternalTest { TimeZoneCapabilities capabilities = capabilitiesAndConfig.getCapabilities(); assertEquals(CAPABILITY_POSSESSED, capabilities.getConfigureAutoDetectionEnabledCapability()); assertEquals(CAPABILITY_NOT_SUPPORTED, capabilities.getConfigureGeoDetectionEnabledCapability()); assertEquals(CAPABILITY_NOT_APPLICABLE, capabilities.getSuggestManualTimeZoneCapability()); assertEquals(CAPABILITY_NOT_SUPPORTED, capabilities.getConfigureGeoDetectionEnabledCapability()); TimeZoneConfiguration configuration = capabilitiesAndConfig.getConfiguration(); assertTrue(configuration.isAutoDetectionEnabled()); Loading @@ -277,9 +279,9 @@ public class ConfigurationInternalTest { TimeZoneCapabilities capabilities = capabilitiesAndConfig.getCapabilities(); assertEquals(CAPABILITY_POSSESSED, capabilities.getConfigureAutoDetectionEnabledCapability()); assertEquals(CAPABILITY_POSSESSED, capabilities.getSuggestManualTimeZoneCapability()); assertEquals(CAPABILITY_NOT_SUPPORTED, capabilities.getConfigureGeoDetectionEnabledCapability()); assertEquals(CAPABILITY_POSSESSED, capabilities.getSuggestManualTimeZoneCapability()); TimeZoneConfiguration configuration = capabilitiesAndConfig.getConfiguration(); assertFalse(configuration.isAutoDetectionEnabled()); Loading services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorStrategyImplTest.java +9 −4 Original line number Diff line number Diff line Loading @@ -237,12 +237,17 @@ public class TimeZoneDetectorStrategyImplTest { // The settings should not have been changed: user shouldn't have the capabilities. script.verifyConfigurationNotChanged(); // Try to update the configuration to enable geolocation time zone detection. // Try to update the configuration to enable geolocation time zone detection: this should // succeed, the geolocation time zone detection setting is not covered by the restriction). script.simulateUpdateConfiguration( USER_ID, CONFIG_GEO_DETECTION_ENABLED, false /* expectedResult */); USER_ID, CONFIG_GEO_DETECTION_DISABLED, true /* expectedResult */); // The settings should not have been changed: user shouldn't have the capabilities. script.verifyConfigurationNotChanged(); // The settings should have been changed. ConfigurationInternal expectedConfig = new ConfigurationInternal.Builder( CONFIG_INT_USER_RESTRICTED_AUTO_ENABLED) .setGeoDetectionEnabled(false) .build(); script.verifyConfigurationChangedAndReset(expectedConfig); } @Test Loading Loading
services/core/java/com/android/server/timezonedetector/ConfigurationInternal.java +3 −2 Original line number Diff line number Diff line Loading @@ -148,11 +148,12 @@ public final class ConfigurationInternal { builder.setConfigureAutoDetectionEnabledCapability(configureAutoDetectionEnabledCapability); boolean deviceHasLocationTimeZoneDetection = isGeoDetectionSupported(); // Note: allowConfigDateTime does not restrict the ability to change location time zone // detection enabled. This is intentional as it has user privacy implications and so it // makes sense to leave this under a user's control. final int configureGeolocationDetectionEnabledCapability; if (!deviceHasLocationTimeZoneDetection) { configureGeolocationDetectionEnabledCapability = CAPABILITY_NOT_SUPPORTED; } else if (!allowConfigDateTime) { configureGeolocationDetectionEnabledCapability = CAPABILITY_NOT_ALLOWED; } else if (!mAutoDetectionEnabled || !isLocationEnabled()) { configureGeolocationDetectionEnabledCapability = CAPABILITY_NOT_APPLICABLE; } else { Loading
services/tests/servicestests/src/com/android/server/timezonedetector/ConfigurationInternalTest.java +15 −13 Original line number Diff line number Diff line Loading @@ -67,10 +67,10 @@ public class ConfigurationInternalTest { TimeZoneCapabilities capabilities = capabilitiesAndConfig.getCapabilities(); assertEquals(CAPABILITY_POSSESSED, capabilities.getConfigureAutoDetectionEnabledCapability()); assertEquals(CAPABILITY_POSSESSED, capabilities.getConfigureGeoDetectionEnabledCapability()); assertEquals(CAPABILITY_NOT_APPLICABLE, capabilities.getSuggestManualTimeZoneCapability()); assertEquals(CAPABILITY_POSSESSED, capabilities.getConfigureGeoDetectionEnabledCapability()); TimeZoneConfiguration configuration = capabilitiesAndConfig.getConfiguration(); assertTrue(configuration.isAutoDetectionEnabled()); Loading @@ -92,10 +92,10 @@ public class ConfigurationInternalTest { TimeZoneCapabilities capabilities = capabilitiesAndConfig.getCapabilities(); assertEquals(CAPABILITY_POSSESSED, capabilities.getConfigureAutoDetectionEnabledCapability()); assertEquals(CAPABILITY_NOT_APPLICABLE, capabilities.getConfigureGeoDetectionEnabledCapability()); assertEquals(CAPABILITY_POSSESSED, capabilities.getSuggestManualTimeZoneCapability()); assertEquals(CAPABILITY_NOT_APPLICABLE, capabilities.getConfigureGeoDetectionEnabledCapability()); TimeZoneConfiguration configuration = capabilitiesAndConfig.getConfiguration(); assertFalse(configuration.isAutoDetectionEnabled()); Loading Loading @@ -129,10 +129,11 @@ public class ConfigurationInternalTest { TimeZoneCapabilities capabilities = capabilitiesAndConfig.getCapabilities(); assertEquals(CAPABILITY_NOT_ALLOWED, capabilities.getConfigureAutoDetectionEnabledCapability()); assertEquals(CAPABILITY_NOT_ALLOWED, capabilities.getConfigureGeoDetectionEnabledCapability()); assertEquals(CAPABILITY_NOT_ALLOWED, capabilities.getSuggestManualTimeZoneCapability()); // This has user privacy implications so it is not restricted in the same way as others. assertEquals(CAPABILITY_POSSESSED, capabilities.getConfigureGeoDetectionEnabledCapability()); TimeZoneConfiguration configuration = capabilitiesAndConfig.getConfiguration(); assertTrue(configuration.isAutoDetectionEnabled()); Loading @@ -154,10 +155,11 @@ public class ConfigurationInternalTest { TimeZoneCapabilities capabilities = capabilitiesAndConfig.getCapabilities(); assertEquals(CAPABILITY_NOT_ALLOWED, capabilities.getConfigureAutoDetectionEnabledCapability()); assertEquals(CAPABILITY_NOT_ALLOWED, capabilities.getConfigureGeoDetectionEnabledCapability()); assertEquals(CAPABILITY_NOT_ALLOWED, capabilities.getSuggestManualTimeZoneCapability()); // This has user privacy implications so it is not restricted in the same way as others. assertEquals(CAPABILITY_NOT_APPLICABLE, capabilities.getConfigureGeoDetectionEnabledCapability()); TimeZoneConfiguration configuration = capabilitiesAndConfig.getConfiguration(); assertFalse(configuration.isAutoDetectionEnabled()); Loading Loading @@ -191,9 +193,9 @@ public class ConfigurationInternalTest { TimeZoneCapabilities capabilities = capabilitiesAndConfig.getCapabilities(); assertEquals(CAPABILITY_NOT_SUPPORTED, capabilities.getConfigureAutoDetectionEnabledCapability()); assertEquals(CAPABILITY_POSSESSED, capabilities.getSuggestManualTimeZoneCapability()); assertEquals(CAPABILITY_NOT_SUPPORTED, capabilities.getConfigureGeoDetectionEnabledCapability()); assertEquals(CAPABILITY_POSSESSED, capabilities.getSuggestManualTimeZoneCapability()); TimeZoneConfiguration configuration = capabilitiesAndConfig.getConfiguration(); assertTrue(configuration.isAutoDetectionEnabled()); Loading @@ -214,9 +216,9 @@ public class ConfigurationInternalTest { TimeZoneCapabilities capabilities = capabilitiesAndConfig.getCapabilities(); assertEquals(CAPABILITY_NOT_SUPPORTED, capabilities.getConfigureAutoDetectionEnabledCapability()); assertEquals(CAPABILITY_POSSESSED, capabilities.getSuggestManualTimeZoneCapability()); assertEquals(CAPABILITY_NOT_SUPPORTED, capabilities.getConfigureGeoDetectionEnabledCapability()); assertEquals(CAPABILITY_POSSESSED, capabilities.getSuggestManualTimeZoneCapability()); TimeZoneConfiguration configuration = capabilitiesAndConfig.getConfiguration(); assertFalse(configuration.isAutoDetectionEnabled()); Loading Loading @@ -253,10 +255,10 @@ public class ConfigurationInternalTest { TimeZoneCapabilities capabilities = capabilitiesAndConfig.getCapabilities(); assertEquals(CAPABILITY_POSSESSED, capabilities.getConfigureAutoDetectionEnabledCapability()); assertEquals(CAPABILITY_NOT_SUPPORTED, capabilities.getConfigureGeoDetectionEnabledCapability()); assertEquals(CAPABILITY_NOT_APPLICABLE, capabilities.getSuggestManualTimeZoneCapability()); assertEquals(CAPABILITY_NOT_SUPPORTED, capabilities.getConfigureGeoDetectionEnabledCapability()); TimeZoneConfiguration configuration = capabilitiesAndConfig.getConfiguration(); assertTrue(configuration.isAutoDetectionEnabled()); Loading @@ -277,9 +279,9 @@ public class ConfigurationInternalTest { TimeZoneCapabilities capabilities = capabilitiesAndConfig.getCapabilities(); assertEquals(CAPABILITY_POSSESSED, capabilities.getConfigureAutoDetectionEnabledCapability()); assertEquals(CAPABILITY_POSSESSED, capabilities.getSuggestManualTimeZoneCapability()); assertEquals(CAPABILITY_NOT_SUPPORTED, capabilities.getConfigureGeoDetectionEnabledCapability()); assertEquals(CAPABILITY_POSSESSED, capabilities.getSuggestManualTimeZoneCapability()); TimeZoneConfiguration configuration = capabilitiesAndConfig.getConfiguration(); assertFalse(configuration.isAutoDetectionEnabled()); Loading
services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorStrategyImplTest.java +9 −4 Original line number Diff line number Diff line Loading @@ -237,12 +237,17 @@ public class TimeZoneDetectorStrategyImplTest { // The settings should not have been changed: user shouldn't have the capabilities. script.verifyConfigurationNotChanged(); // Try to update the configuration to enable geolocation time zone detection. // Try to update the configuration to enable geolocation time zone detection: this should // succeed, the geolocation time zone detection setting is not covered by the restriction). script.simulateUpdateConfiguration( USER_ID, CONFIG_GEO_DETECTION_ENABLED, false /* expectedResult */); USER_ID, CONFIG_GEO_DETECTION_DISABLED, true /* expectedResult */); // The settings should not have been changed: user shouldn't have the capabilities. script.verifyConfigurationNotChanged(); // The settings should have been changed. ConfigurationInternal expectedConfig = new ConfigurationInternal.Builder( CONFIG_INT_USER_RESTRICTED_AUTO_ENABLED) .setGeoDetectionEnabled(false) .build(); script.verifyConfigurationChangedAndReset(expectedConfig); } @Test Loading