Loading services/core/java/com/android/server/timedetector/TimeDetectorService.java +5 −11 Original line number Diff line number Diff line Loading @@ -88,8 +88,10 @@ public final class TimeDetectorService extends ITimeDetectorService.Stub new TimeDetectorInternalImpl(context, handler, timeDetectorStrategy); publishLocalService(TimeDetectorInternal.class, internal); CallerIdentityInjector callerIdentityInjector = CallerIdentityInjector.REAL; TimeDetectorService service = new TimeDetectorService( context, handler, serviceConfigAccessor, timeDetectorStrategy); context, handler, callerIdentityInjector, serviceConfigAccessor, timeDetectorStrategy, NtpTrustedTime.getInstance(context)); // Publish the binder service so it can be accessed from other (appropriately // permissioned) processes. Loading @@ -114,23 +116,15 @@ public final class TimeDetectorService extends ITimeDetectorService.Stub @VisibleForTesting public TimeDetectorService(@NonNull Context context, @NonNull Handler handler, @NonNull ServiceConfigAccessor serviceConfigAccessor, @NonNull TimeDetectorStrategy timeDetectorStrategy) { this(context, handler, serviceConfigAccessor, timeDetectorStrategy, CallerIdentityInjector.REAL, NtpTrustedTime.getInstance(context)); } @VisibleForTesting public TimeDetectorService(@NonNull Context context, @NonNull Handler handler, @NonNull CallerIdentityInjector callerIdentityInjector, @NonNull ServiceConfigAccessor serviceConfigAccessor, @NonNull TimeDetectorStrategy timeDetectorStrategy, @NonNull CallerIdentityInjector callerIdentityInjector, @NonNull NtpTrustedTime ntpTrustedTime) { mContext = Objects.requireNonNull(context); mHandler = Objects.requireNonNull(handler); mCallerIdentityInjector = Objects.requireNonNull(callerIdentityInjector); mServiceConfigAccessor = Objects.requireNonNull(serviceConfigAccessor); mTimeDetectorStrategy = Objects.requireNonNull(timeDetectorStrategy); mCallerIdentityInjector = Objects.requireNonNull(callerIdentityInjector); mNtpTrustedTime = Objects.requireNonNull(ntpTrustedTime); // Wire up a change listener so that ITimeZoneDetectorListeners can be notified when Loading services/core/java/com/android/server/timezonedetector/TimeZoneDetectorService.java +4 −12 Original line number Diff line number Diff line Loading @@ -102,8 +102,10 @@ public final class TimeZoneDetectorService extends ITimeZoneDetectorService.Stub // Publish the binder service so it can be accessed from other (appropriately // permissioned) processes. TimeZoneDetectorService service = TimeZoneDetectorService.create( context, handler, serviceConfigAccessor, timeZoneDetectorStrategy); CallerIdentityInjector callerIdentityInjector = CallerIdentityInjector.REAL; TimeZoneDetectorService service = new TimeZoneDetectorService( context, handler, callerIdentityInjector, serviceConfigAccessor, timeZoneDetectorStrategy); // Dump the device activity monitor when the service is dumped. service.addDumpable(deviceActivityMonitor); Loading Loading @@ -142,16 +144,6 @@ public final class TimeZoneDetectorService extends ITimeZoneDetectorService.Stub @GuardedBy("mDumpables") private final List<Dumpable> mDumpables = new ArrayList<>(); private static TimeZoneDetectorService create( @NonNull Context context, @NonNull Handler handler, @NonNull ServiceConfigAccessor serviceConfigAccessor, @NonNull TimeZoneDetectorStrategy timeZoneDetectorStrategy) { CallerIdentityInjector callerIdentityInjector = CallerIdentityInjector.REAL; return new TimeZoneDetectorService(context, handler, callerIdentityInjector, serviceConfigAccessor, timeZoneDetectorStrategy); } @VisibleForTesting public TimeZoneDetectorService(@NonNull Context context, @NonNull Handler handler, @NonNull CallerIdentityInjector callerIdentityInjector, Loading services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java +70 −128 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; Loading Loading @@ -104,8 +103,8 @@ public class TimeDetectorServiceTest { mMockNtpTrustedTime = mock(NtpTrustedTime.class); mTimeDetectorService = new TimeDetectorService( mMockContext, mTestHandler, mFakeServiceConfigAccessor, mFakeTimeDetectorStrategy, mTestCallerIdentityInjector, mMockNtpTrustedTime); mMockContext, mTestHandler, mTestCallerIdentityInjector, mFakeServiceConfigAccessor, mFakeTimeDetectorStrategy, mMockNtpTrustedTime); } @After Loading @@ -114,19 +113,14 @@ public class TimeDetectorServiceTest { mHandlerThread.join(); } @Test(expected = SecurityException.class) @Test public void testGetCapabilitiesAndConfig_withoutPermission() { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingPermission(anyString(), any()); try { mTimeDetectorService.getCapabilitiesAndConfig(); fail("Expected SecurityException"); } finally { assertThrows(SecurityException.class, mTimeDetectorService::getCapabilitiesAndConfig); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } @Test Loading @@ -141,40 +135,30 @@ public class TimeDetectorServiceTest { mTimeDetectorService.getCapabilitiesAndConfig()); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } @Test(expected = SecurityException.class) @Test public void testAddListener_withoutPermission() { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingPermission(anyString(), any()); ITimeDetectorListener mockListener = mock(ITimeDetectorListener.class); try { mTimeDetectorService.addListener(mockListener); fail("Expected SecurityException"); } finally { assertThrows(SecurityException.class, () -> mTimeDetectorService.addListener(mockListener)); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } @Test(expected = SecurityException.class) @Test public void testRemoveListener_withoutPermission() { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingPermission(anyString(), any()); ITimeDetectorListener mockListener = mock(ITimeDetectorListener.class); try { mTimeDetectorService.removeListener(mockListener); fail("Expected a SecurityException"); } finally { assertThrows(SecurityException.class, () -> mTimeDetectorService.removeListener(mockListener)); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } @Test Loading @@ -193,8 +177,7 @@ public class TimeDetectorServiceTest { mTimeDetectorService.addListener(mockListener); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); verify(mockListener).asBinder(); verify(mockListenerBinder).linkToDeath(any(), anyInt()); verifyNoMoreInteractions(mockListenerBinder, mockListener, mMockContext); Loading @@ -213,8 +196,7 @@ public class TimeDetectorServiceTest { mTestHandler.waitForMessagesToBeProcessed(); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); verify(mockListener).onChange(); verifyNoMoreInteractions(mockListenerBinder, mockListener, mMockContext); reset(mockListenerBinder, mockListener, mMockContext); Loading @@ -230,8 +212,7 @@ public class TimeDetectorServiceTest { mTimeDetectorService.removeListener(mockListener); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); verify(mockListener).asBinder(); verify(mockListenerBinder).unlinkToDeath(any(), eq(0)); verifyNoMoreInteractions(mockListenerBinder, mockListener, mMockContext); Loading @@ -246,28 +227,23 @@ public class TimeDetectorServiceTest { mTimeDetectorService.updateConfiguration(autoDetectDisabledConfiguration); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); verify(mockListener, never()).onChange(); verifyNoMoreInteractions(mockListenerBinder, mockListener, mMockContext); reset(mockListenerBinder, mockListener, mMockContext); } } @Test(expected = SecurityException.class) @Test public void testSuggestTelephonyTime_withoutPermission() { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingPermission(anyString(), any()); TelephonyTimeSuggestion timeSuggestion = createTelephonyTimeSuggestion(); try { mTimeDetectorService.suggestTelephonyTime(timeSuggestion); fail(); } finally { assertThrows(SecurityException.class, () -> mTimeDetectorService.suggestTelephonyTime(timeSuggestion)); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE), anyString()); } eq(android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE), anyString()); } @Test Loading @@ -279,27 +255,22 @@ public class TimeDetectorServiceTest { mTestHandler.assertTotalMessagesEnqueued(1); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE), anyString()); eq(android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE), anyString()); mTestHandler.waitForMessagesToBeProcessed(); mFakeTimeDetectorStrategy.verifySuggestTelephonyTimeCalled(timeSuggestion); } @Test(expected = SecurityException.class) @Test public void testSuggestManualTime_withoutPermission() { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingOrSelfPermission(anyString(), any()); ManualTimeSuggestion manualTimeSuggestion = createManualTimeSuggestion(); try { mTimeDetectorService.suggestManualTime(manualTimeSuggestion); fail(); } finally { assertThrows(SecurityException.class, () -> mTimeDetectorService.suggestManualTime(manualTimeSuggestion)); verify(mMockContext).enforceCallingOrSelfPermission( eq(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE), anyString()); } eq(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE), anyString()); } @Test Loading @@ -313,25 +284,21 @@ public class TimeDetectorServiceTest { mTestCallerIdentityInjector.getCallingUserId(), manualTimeSuggestion); verify(mMockContext).enforceCallingOrSelfPermission( eq(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE), anyString()); eq(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE), anyString()); } @Test(expected = SecurityException.class) @Test public void testSuggestNetworkTime_withoutPermission() { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingOrSelfPermission(anyString(), any()); NetworkTimeSuggestion networkTimeSuggestion = createNetworkTimeSuggestion(); try { mTimeDetectorService.suggestNetworkTime(networkTimeSuggestion); fail(); } finally { assertThrows(SecurityException.class, () -> mTimeDetectorService.suggestNetworkTime(networkTimeSuggestion)); verify(mMockContext).enforceCallingOrSelfPermission( eq(android.Manifest.permission.SET_TIME), anyString()); } } @Test public void testSuggestNetworkTime() throws Exception { Loading @@ -348,20 +315,17 @@ public class TimeDetectorServiceTest { mFakeTimeDetectorStrategy.verifySuggestNetworkTimeCalled(networkTimeSuggestion); } @Test(expected = SecurityException.class) @Test public void testSuggestGnssTime_withoutPermission() { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingOrSelfPermission(anyString(), any()); GnssTimeSuggestion gnssTimeSuggestion = createGnssTimeSuggestion(); try { mTimeDetectorService.suggestGnssTime(gnssTimeSuggestion); fail(); } finally { assertThrows(SecurityException.class, () -> mTimeDetectorService.suggestGnssTime(gnssTimeSuggestion)); verify(mMockContext).enforceCallingOrSelfPermission( eq(android.Manifest.permission.SET_TIME), anyString()); } } @Test public void testSuggestGnssTime() throws Exception { Loading @@ -378,20 +342,17 @@ public class TimeDetectorServiceTest { mFakeTimeDetectorStrategy.verifySuggestGnssTimeCalled(gnssTimeSuggestion); } @Test(expected = SecurityException.class) @Test public void testSuggestExternalTime_withoutPermission() { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingPermission(anyString(), any()); ExternalTimeSuggestion externalTimeSuggestion = createExternalTimeSuggestion(); try { mTimeDetectorService.suggestExternalTime(externalTimeSuggestion); fail(); } finally { assertThrows(SecurityException.class, () -> mTimeDetectorService.suggestExternalTime(externalTimeSuggestion)); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.SUGGEST_EXTERNAL_TIME), anyString()); } } @Test public void testSuggestExternalTime() throws Exception { Loading Loading @@ -434,23 +395,18 @@ public class TimeDetectorServiceTest { TimeState actualState = mTimeDetectorService.getTimeState(); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); assertEquals(actualState, fakeState); } @Test(expected = SecurityException.class) @Test public void testGetTimeState_withoutPermission() { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingPermission(anyString(), any()); try { mTimeDetectorService.getTimeState(); } finally { assertThrows(SecurityException.class, mTimeDetectorService::getTimeState); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } @Test Loading @@ -461,24 +417,19 @@ public class TimeDetectorServiceTest { mTimeDetectorService.setTimeState(state); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); assertEquals(mFakeTimeDetectorStrategy.getTimeState(), state); } @Test(expected = SecurityException.class) @Test public void testSetTimeState_withoutPermission() { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingPermission(anyString(), any()); TimeState state = new TimeState(new UnixEpochTime(12345L, 98765L), true); try { mTimeDetectorService.setTimeState(state); } finally { assertThrows(SecurityException.class, () -> mTimeDetectorService.setTimeState(state)); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } @Test Loading @@ -490,23 +441,19 @@ public class TimeDetectorServiceTest { assertFalse(mTimeDetectorService.confirmTime(confirmationTime)); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); mFakeTimeDetectorStrategy.verifyConfirmTimeCalled(confirmationTime); } @Test(expected = SecurityException.class) @Test public void testConfirmTime_withoutPermission() { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingPermission(anyString(), any()); try { mTimeDetectorService.confirmTime(new UnixEpochTime(12345L, 98765L)); } finally { assertThrows(SecurityException.class, () -> mTimeDetectorService.confirmTime(new UnixEpochTime(12345L, 98765L))); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } @Test Loading @@ -524,24 +471,19 @@ public class TimeDetectorServiceTest { mTestCallerIdentityInjector.getCallingUserId(), timeSuggestion); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } @Test(expected = SecurityException.class) @Test public void testSetManualTime_withoutPermission() { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingPermission(anyString(), any()); ManualTimeSuggestion timeSuggestion = createManualTimeSuggestion(); try { mTimeDetectorService.setManualTime(timeSuggestion); fail("Expected SecurityException"); } finally { assertThrows(SecurityException.class, () -> mTimeDetectorService.setManualTime(timeSuggestion)); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } @Test Loading @@ -562,7 +504,7 @@ public class TimeDetectorServiceTest { .build(); } private static ConfigurationInternal createConfigurationInternal(boolean autoDetectionEnabled) { static ConfigurationInternal createConfigurationInternal(boolean autoDetectionEnabled) { return new ConfigurationInternal.Builder(ARBITRARY_USER_ID) .setUserConfigAllowed(true) .setAutoDetectionSupported(true) Loading services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorServiceTest.java +66 −121 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
services/core/java/com/android/server/timedetector/TimeDetectorService.java +5 −11 Original line number Diff line number Diff line Loading @@ -88,8 +88,10 @@ public final class TimeDetectorService extends ITimeDetectorService.Stub new TimeDetectorInternalImpl(context, handler, timeDetectorStrategy); publishLocalService(TimeDetectorInternal.class, internal); CallerIdentityInjector callerIdentityInjector = CallerIdentityInjector.REAL; TimeDetectorService service = new TimeDetectorService( context, handler, serviceConfigAccessor, timeDetectorStrategy); context, handler, callerIdentityInjector, serviceConfigAccessor, timeDetectorStrategy, NtpTrustedTime.getInstance(context)); // Publish the binder service so it can be accessed from other (appropriately // permissioned) processes. Loading @@ -114,23 +116,15 @@ public final class TimeDetectorService extends ITimeDetectorService.Stub @VisibleForTesting public TimeDetectorService(@NonNull Context context, @NonNull Handler handler, @NonNull ServiceConfigAccessor serviceConfigAccessor, @NonNull TimeDetectorStrategy timeDetectorStrategy) { this(context, handler, serviceConfigAccessor, timeDetectorStrategy, CallerIdentityInjector.REAL, NtpTrustedTime.getInstance(context)); } @VisibleForTesting public TimeDetectorService(@NonNull Context context, @NonNull Handler handler, @NonNull CallerIdentityInjector callerIdentityInjector, @NonNull ServiceConfigAccessor serviceConfigAccessor, @NonNull TimeDetectorStrategy timeDetectorStrategy, @NonNull CallerIdentityInjector callerIdentityInjector, @NonNull NtpTrustedTime ntpTrustedTime) { mContext = Objects.requireNonNull(context); mHandler = Objects.requireNonNull(handler); mCallerIdentityInjector = Objects.requireNonNull(callerIdentityInjector); mServiceConfigAccessor = Objects.requireNonNull(serviceConfigAccessor); mTimeDetectorStrategy = Objects.requireNonNull(timeDetectorStrategy); mCallerIdentityInjector = Objects.requireNonNull(callerIdentityInjector); mNtpTrustedTime = Objects.requireNonNull(ntpTrustedTime); // Wire up a change listener so that ITimeZoneDetectorListeners can be notified when Loading
services/core/java/com/android/server/timezonedetector/TimeZoneDetectorService.java +4 −12 Original line number Diff line number Diff line Loading @@ -102,8 +102,10 @@ public final class TimeZoneDetectorService extends ITimeZoneDetectorService.Stub // Publish the binder service so it can be accessed from other (appropriately // permissioned) processes. TimeZoneDetectorService service = TimeZoneDetectorService.create( context, handler, serviceConfigAccessor, timeZoneDetectorStrategy); CallerIdentityInjector callerIdentityInjector = CallerIdentityInjector.REAL; TimeZoneDetectorService service = new TimeZoneDetectorService( context, handler, callerIdentityInjector, serviceConfigAccessor, timeZoneDetectorStrategy); // Dump the device activity monitor when the service is dumped. service.addDumpable(deviceActivityMonitor); Loading Loading @@ -142,16 +144,6 @@ public final class TimeZoneDetectorService extends ITimeZoneDetectorService.Stub @GuardedBy("mDumpables") private final List<Dumpable> mDumpables = new ArrayList<>(); private static TimeZoneDetectorService create( @NonNull Context context, @NonNull Handler handler, @NonNull ServiceConfigAccessor serviceConfigAccessor, @NonNull TimeZoneDetectorStrategy timeZoneDetectorStrategy) { CallerIdentityInjector callerIdentityInjector = CallerIdentityInjector.REAL; return new TimeZoneDetectorService(context, handler, callerIdentityInjector, serviceConfigAccessor, timeZoneDetectorStrategy); } @VisibleForTesting public TimeZoneDetectorService(@NonNull Context context, @NonNull Handler handler, @NonNull CallerIdentityInjector callerIdentityInjector, Loading
services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java +70 −128 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; Loading Loading @@ -104,8 +103,8 @@ public class TimeDetectorServiceTest { mMockNtpTrustedTime = mock(NtpTrustedTime.class); mTimeDetectorService = new TimeDetectorService( mMockContext, mTestHandler, mFakeServiceConfigAccessor, mFakeTimeDetectorStrategy, mTestCallerIdentityInjector, mMockNtpTrustedTime); mMockContext, mTestHandler, mTestCallerIdentityInjector, mFakeServiceConfigAccessor, mFakeTimeDetectorStrategy, mMockNtpTrustedTime); } @After Loading @@ -114,19 +113,14 @@ public class TimeDetectorServiceTest { mHandlerThread.join(); } @Test(expected = SecurityException.class) @Test public void testGetCapabilitiesAndConfig_withoutPermission() { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingPermission(anyString(), any()); try { mTimeDetectorService.getCapabilitiesAndConfig(); fail("Expected SecurityException"); } finally { assertThrows(SecurityException.class, mTimeDetectorService::getCapabilitiesAndConfig); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } @Test Loading @@ -141,40 +135,30 @@ public class TimeDetectorServiceTest { mTimeDetectorService.getCapabilitiesAndConfig()); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } @Test(expected = SecurityException.class) @Test public void testAddListener_withoutPermission() { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingPermission(anyString(), any()); ITimeDetectorListener mockListener = mock(ITimeDetectorListener.class); try { mTimeDetectorService.addListener(mockListener); fail("Expected SecurityException"); } finally { assertThrows(SecurityException.class, () -> mTimeDetectorService.addListener(mockListener)); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } @Test(expected = SecurityException.class) @Test public void testRemoveListener_withoutPermission() { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingPermission(anyString(), any()); ITimeDetectorListener mockListener = mock(ITimeDetectorListener.class); try { mTimeDetectorService.removeListener(mockListener); fail("Expected a SecurityException"); } finally { assertThrows(SecurityException.class, () -> mTimeDetectorService.removeListener(mockListener)); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } @Test Loading @@ -193,8 +177,7 @@ public class TimeDetectorServiceTest { mTimeDetectorService.addListener(mockListener); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); verify(mockListener).asBinder(); verify(mockListenerBinder).linkToDeath(any(), anyInt()); verifyNoMoreInteractions(mockListenerBinder, mockListener, mMockContext); Loading @@ -213,8 +196,7 @@ public class TimeDetectorServiceTest { mTestHandler.waitForMessagesToBeProcessed(); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); verify(mockListener).onChange(); verifyNoMoreInteractions(mockListenerBinder, mockListener, mMockContext); reset(mockListenerBinder, mockListener, mMockContext); Loading @@ -230,8 +212,7 @@ public class TimeDetectorServiceTest { mTimeDetectorService.removeListener(mockListener); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); verify(mockListener).asBinder(); verify(mockListenerBinder).unlinkToDeath(any(), eq(0)); verifyNoMoreInteractions(mockListenerBinder, mockListener, mMockContext); Loading @@ -246,28 +227,23 @@ public class TimeDetectorServiceTest { mTimeDetectorService.updateConfiguration(autoDetectDisabledConfiguration); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); verify(mockListener, never()).onChange(); verifyNoMoreInteractions(mockListenerBinder, mockListener, mMockContext); reset(mockListenerBinder, mockListener, mMockContext); } } @Test(expected = SecurityException.class) @Test public void testSuggestTelephonyTime_withoutPermission() { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingPermission(anyString(), any()); TelephonyTimeSuggestion timeSuggestion = createTelephonyTimeSuggestion(); try { mTimeDetectorService.suggestTelephonyTime(timeSuggestion); fail(); } finally { assertThrows(SecurityException.class, () -> mTimeDetectorService.suggestTelephonyTime(timeSuggestion)); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE), anyString()); } eq(android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE), anyString()); } @Test Loading @@ -279,27 +255,22 @@ public class TimeDetectorServiceTest { mTestHandler.assertTotalMessagesEnqueued(1); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE), anyString()); eq(android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE), anyString()); mTestHandler.waitForMessagesToBeProcessed(); mFakeTimeDetectorStrategy.verifySuggestTelephonyTimeCalled(timeSuggestion); } @Test(expected = SecurityException.class) @Test public void testSuggestManualTime_withoutPermission() { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingOrSelfPermission(anyString(), any()); ManualTimeSuggestion manualTimeSuggestion = createManualTimeSuggestion(); try { mTimeDetectorService.suggestManualTime(manualTimeSuggestion); fail(); } finally { assertThrows(SecurityException.class, () -> mTimeDetectorService.suggestManualTime(manualTimeSuggestion)); verify(mMockContext).enforceCallingOrSelfPermission( eq(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE), anyString()); } eq(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE), anyString()); } @Test Loading @@ -313,25 +284,21 @@ public class TimeDetectorServiceTest { mTestCallerIdentityInjector.getCallingUserId(), manualTimeSuggestion); verify(mMockContext).enforceCallingOrSelfPermission( eq(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE), anyString()); eq(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE), anyString()); } @Test(expected = SecurityException.class) @Test public void testSuggestNetworkTime_withoutPermission() { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingOrSelfPermission(anyString(), any()); NetworkTimeSuggestion networkTimeSuggestion = createNetworkTimeSuggestion(); try { mTimeDetectorService.suggestNetworkTime(networkTimeSuggestion); fail(); } finally { assertThrows(SecurityException.class, () -> mTimeDetectorService.suggestNetworkTime(networkTimeSuggestion)); verify(mMockContext).enforceCallingOrSelfPermission( eq(android.Manifest.permission.SET_TIME), anyString()); } } @Test public void testSuggestNetworkTime() throws Exception { Loading @@ -348,20 +315,17 @@ public class TimeDetectorServiceTest { mFakeTimeDetectorStrategy.verifySuggestNetworkTimeCalled(networkTimeSuggestion); } @Test(expected = SecurityException.class) @Test public void testSuggestGnssTime_withoutPermission() { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingOrSelfPermission(anyString(), any()); GnssTimeSuggestion gnssTimeSuggestion = createGnssTimeSuggestion(); try { mTimeDetectorService.suggestGnssTime(gnssTimeSuggestion); fail(); } finally { assertThrows(SecurityException.class, () -> mTimeDetectorService.suggestGnssTime(gnssTimeSuggestion)); verify(mMockContext).enforceCallingOrSelfPermission( eq(android.Manifest.permission.SET_TIME), anyString()); } } @Test public void testSuggestGnssTime() throws Exception { Loading @@ -378,20 +342,17 @@ public class TimeDetectorServiceTest { mFakeTimeDetectorStrategy.verifySuggestGnssTimeCalled(gnssTimeSuggestion); } @Test(expected = SecurityException.class) @Test public void testSuggestExternalTime_withoutPermission() { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingPermission(anyString(), any()); ExternalTimeSuggestion externalTimeSuggestion = createExternalTimeSuggestion(); try { mTimeDetectorService.suggestExternalTime(externalTimeSuggestion); fail(); } finally { assertThrows(SecurityException.class, () -> mTimeDetectorService.suggestExternalTime(externalTimeSuggestion)); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.SUGGEST_EXTERNAL_TIME), anyString()); } } @Test public void testSuggestExternalTime() throws Exception { Loading Loading @@ -434,23 +395,18 @@ public class TimeDetectorServiceTest { TimeState actualState = mTimeDetectorService.getTimeState(); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); assertEquals(actualState, fakeState); } @Test(expected = SecurityException.class) @Test public void testGetTimeState_withoutPermission() { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingPermission(anyString(), any()); try { mTimeDetectorService.getTimeState(); } finally { assertThrows(SecurityException.class, mTimeDetectorService::getTimeState); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } @Test Loading @@ -461,24 +417,19 @@ public class TimeDetectorServiceTest { mTimeDetectorService.setTimeState(state); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); assertEquals(mFakeTimeDetectorStrategy.getTimeState(), state); } @Test(expected = SecurityException.class) @Test public void testSetTimeState_withoutPermission() { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingPermission(anyString(), any()); TimeState state = new TimeState(new UnixEpochTime(12345L, 98765L), true); try { mTimeDetectorService.setTimeState(state); } finally { assertThrows(SecurityException.class, () -> mTimeDetectorService.setTimeState(state)); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } @Test Loading @@ -490,23 +441,19 @@ public class TimeDetectorServiceTest { assertFalse(mTimeDetectorService.confirmTime(confirmationTime)); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); mFakeTimeDetectorStrategy.verifyConfirmTimeCalled(confirmationTime); } @Test(expected = SecurityException.class) @Test public void testConfirmTime_withoutPermission() { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingPermission(anyString(), any()); try { mTimeDetectorService.confirmTime(new UnixEpochTime(12345L, 98765L)); } finally { assertThrows(SecurityException.class, () -> mTimeDetectorService.confirmTime(new UnixEpochTime(12345L, 98765L))); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } @Test Loading @@ -524,24 +471,19 @@ public class TimeDetectorServiceTest { mTestCallerIdentityInjector.getCallingUserId(), timeSuggestion); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } @Test(expected = SecurityException.class) @Test public void testSetManualTime_withoutPermission() { doThrow(new SecurityException("Mock")) .when(mMockContext).enforceCallingPermission(anyString(), any()); ManualTimeSuggestion timeSuggestion = createManualTimeSuggestion(); try { mTimeDetectorService.setManualTime(timeSuggestion); fail("Expected SecurityException"); } finally { assertThrows(SecurityException.class, () -> mTimeDetectorService.setManualTime(timeSuggestion)); verify(mMockContext).enforceCallingPermission( eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } eq(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION), anyString()); } @Test Loading @@ -562,7 +504,7 @@ public class TimeDetectorServiceTest { .build(); } private static ConfigurationInternal createConfigurationInternal(boolean autoDetectionEnabled) { static ConfigurationInternal createConfigurationInternal(boolean autoDetectionEnabled) { return new ConfigurationInternal.Builder(ARBITRARY_USER_ID) .setUserConfigAllowed(true) .setAutoDetectionSupported(true) Loading
services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorServiceTest.java +66 −121 File changed.Preview size limit exceeded, changes collapsed. Show changes