From 9ad97fbb351ce277a652662e14362994e92b3c2d Mon Sep 17 00:00:00 2001 From: Neil Fuller Date: Wed, 14 Sep 2022 12:09:16 +0100 Subject: [PATCH] Refactoring to ease cherry-pick This change contains the parts of internal change I916cf878469280e6c9498baf2cf930e140c3a386 that affect GnssTimeUpdateService and its test. Pulling in these changes makes the following cherry-pick easier to apply and follow. The rest of I916cf8 will follow naturally as part of the usual publishing of changes. Bug: 236611620 Test: build / boot as part of the following cherry-pick Change-Id: I111189d10836906c67a8fedeb2c9ecee6ab83026 Merged-In: I916cf878469280e6c9498baf2cf930e140c3a386 --- .../timedetector/GnssTimeUpdateService.java | 26 ++++++++++---- .../GnssTimeUpdateServiceTest.java | 34 ++++--------------- 2 files changed, 26 insertions(+), 34 deletions(-) diff --git a/services/core/java/com/android/server/timedetector/GnssTimeUpdateService.java b/services/core/java/com/android/server/timedetector/GnssTimeUpdateService.java index 129810c3265c8..f7a1802e7a4cb 100644 --- a/services/core/java/com/android/server/timedetector/GnssTimeUpdateService.java +++ b/services/core/java/com/android/server/timedetector/GnssTimeUpdateService.java @@ -42,6 +42,7 @@ import com.android.server.SystemService; import java.io.FileDescriptor; import java.io.PrintWriter; import java.time.Duration; +import java.util.Objects; /** * Monitors the GNSS time. @@ -66,7 +67,15 @@ public final class GnssTimeUpdateService extends Binder { @Override public void onStart() { - mService = new GnssTimeUpdateService(getContext()); + Context context = getContext().createAttributionContext(ATTRIBUTION_TAG); + AlarmManager alarmManager = context.getSystemService(AlarmManager.class); + LocationManager locationManager = context.getSystemService(LocationManager.class); + LocationManagerInternal locationManagerInternal = + LocalServices.getService(LocationManagerInternal.class); + TimeDetector timeDetector = context.getSystemService(TimeDetector.class); + + mService = new GnssTimeUpdateService(context, alarmManager, locationManager, + locationManagerInternal, timeDetector); publishBinderService("gnss_time_update_service", mService); } @@ -98,12 +107,15 @@ public final class GnssTimeUpdateService extends Binder { @Nullable private TimestampedValue mLastSuggestedGnssTime; @VisibleForTesting - GnssTimeUpdateService(@NonNull Context context) { - mContext = context.createAttributionContext(ATTRIBUTION_TAG); - mTimeDetector = mContext.getSystemService(TimeDetector.class); - mLocationManager = mContext.getSystemService(LocationManager.class); - mAlarmManager = mContext.getSystemService(AlarmManager.class); - mLocationManagerInternal = LocalServices.getService(LocationManagerInternal.class); + GnssTimeUpdateService(@NonNull Context context, @NonNull AlarmManager alarmManager, + @NonNull LocationManager locationManager, + @NonNull LocationManagerInternal locationManagerInternal, + @NonNull TimeDetector timeDetector) { + mContext = Objects.requireNonNull(context); + mAlarmManager = Objects.requireNonNull(alarmManager); + mLocationManager = Objects.requireNonNull(locationManager); + mLocationManagerInternal = Objects.requireNonNull(locationManagerInternal); + mTimeDetector = Objects.requireNonNull(timeDetector); } /** diff --git a/services/tests/servicestests/src/com/android/server/timedetector/GnssTimeUpdateServiceTest.java b/services/tests/servicestests/src/com/android/server/timedetector/GnssTimeUpdateServiceTest.java index aad5cd65c4f7f..db971330aaa05 100644 --- a/services/tests/servicestests/src/com/android/server/timedetector/GnssTimeUpdateServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/timedetector/GnssTimeUpdateServiceTest.java @@ -19,7 +19,6 @@ package com.android.server.timedetector; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.any; import static org.mockito.Mockito.anyLong; -import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; @@ -59,7 +58,7 @@ public final class GnssTimeUpdateServiceTest { @Mock private TimeDetector mMockTimeDetector; @Mock private AlarmManager mMockAlarmManager; @Mock private LocationManager mMockLocationManager; - @Mock private LocationManagerInternal mLocationManagerInternal; + @Mock private LocationManagerInternal mMockLocationManagerInternal; private GnssTimeUpdateService mGnssTimeUpdateService; @@ -67,31 +66,12 @@ public final class GnssTimeUpdateServiceTest { public void setUp() { MockitoAnnotations.initMocks(this); - when(mMockContext.createAttributionContext(anyString())) - .thenReturn(mMockContext); - - when(mMockContext.getSystemServiceName(TimeDetector.class)) - .thenReturn((TimeDetector.class).getSimpleName()); - when(mMockContext.getSystemService(TimeDetector.class)) - .thenReturn(mMockTimeDetector); - - when(mMockContext.getSystemServiceName(LocationManager.class)) - .thenReturn((LocationManager.class).getSimpleName()); - when(mMockContext.getSystemService(LocationManager.class)) - .thenReturn(mMockLocationManager); - - when(mMockContext.getSystemServiceName(AlarmManager.class)) - .thenReturn((AlarmManager.class).getSimpleName()); - when(mMockContext.getSystemService(AlarmManager.class)) - .thenReturn(mMockAlarmManager); - when(mMockLocationManager.hasProvider(LocationManager.GPS_PROVIDER)) - .thenReturn(true); + .thenReturn(true); - LocalServices.addService(LocationManagerInternal.class, mLocationManagerInternal); - - mGnssTimeUpdateService = - new GnssTimeUpdateService(mMockContext); + mGnssTimeUpdateService = new GnssTimeUpdateService( + mMockContext, mMockAlarmManager, mMockLocationManager, mMockLocationManagerInternal, + mMockTimeDetector); } @After @@ -105,7 +85,7 @@ public final class GnssTimeUpdateServiceTest { ELAPSED_REALTIME_MS, GNSS_TIME); GnssTimeSuggestion timeSuggestion = new GnssTimeSuggestion(timeSignal); LocationTime locationTime = new LocationTime(GNSS_TIME, ELAPSED_REALTIME_NS); - doReturn(locationTime).when(mLocationManagerInternal).getGnssTimeMillis(); + doReturn(locationTime).when(mMockLocationManagerInternal).getGnssTimeMillis(); mGnssTimeUpdateService.requestGnssTimeUpdates(); @@ -135,7 +115,7 @@ public final class GnssTimeUpdateServiceTest { @Test public void testLocationListenerOnLocationChanged_nullLocationTime_doesNotSuggestGnssTime() { - doReturn(null).when(mLocationManagerInternal).getGnssTimeMillis(); + doReturn(null).when(mMockLocationManagerInternal).getGnssTimeMillis(); mGnssTimeUpdateService.requestGnssTimeUpdates();