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
This commit is contained in:
Neil Fuller
2022-09-14 12:09:16 +01:00
parent a70b3d1a46
commit 9ad97fbb35
2 changed files with 26 additions and 34 deletions

View File

@@ -42,6 +42,7 @@ import com.android.server.SystemService;
import java.io.FileDescriptor; import java.io.FileDescriptor;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.time.Duration; import java.time.Duration;
import java.util.Objects;
/** /**
* Monitors the GNSS time. * Monitors the GNSS time.
@@ -66,7 +67,15 @@ public final class GnssTimeUpdateService extends Binder {
@Override @Override
public void onStart() { 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); publishBinderService("gnss_time_update_service", mService);
} }
@@ -98,12 +107,15 @@ public final class GnssTimeUpdateService extends Binder {
@Nullable private TimestampedValue<Long> mLastSuggestedGnssTime; @Nullable private TimestampedValue<Long> mLastSuggestedGnssTime;
@VisibleForTesting @VisibleForTesting
GnssTimeUpdateService(@NonNull Context context) { GnssTimeUpdateService(@NonNull Context context, @NonNull AlarmManager alarmManager,
mContext = context.createAttributionContext(ATTRIBUTION_TAG); @NonNull LocationManager locationManager,
mTimeDetector = mContext.getSystemService(TimeDetector.class); @NonNull LocationManagerInternal locationManagerInternal,
mLocationManager = mContext.getSystemService(LocationManager.class); @NonNull TimeDetector timeDetector) {
mAlarmManager = mContext.getSystemService(AlarmManager.class); mContext = Objects.requireNonNull(context);
mLocationManagerInternal = LocalServices.getService(LocationManagerInternal.class); mAlarmManager = Objects.requireNonNull(alarmManager);
mLocationManager = Objects.requireNonNull(locationManager);
mLocationManagerInternal = Objects.requireNonNull(locationManagerInternal);
mTimeDetector = Objects.requireNonNull(timeDetector);
} }
/** /**

View File

@@ -19,7 +19,6 @@ package com.android.server.timedetector;
import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.any; import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyLong; import static org.mockito.Mockito.anyLong;
import static org.mockito.Mockito.anyString;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never; import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
@@ -59,7 +58,7 @@ public final class GnssTimeUpdateServiceTest {
@Mock private TimeDetector mMockTimeDetector; @Mock private TimeDetector mMockTimeDetector;
@Mock private AlarmManager mMockAlarmManager; @Mock private AlarmManager mMockAlarmManager;
@Mock private LocationManager mMockLocationManager; @Mock private LocationManager mMockLocationManager;
@Mock private LocationManagerInternal mLocationManagerInternal; @Mock private LocationManagerInternal mMockLocationManagerInternal;
private GnssTimeUpdateService mGnssTimeUpdateService; private GnssTimeUpdateService mGnssTimeUpdateService;
@@ -67,31 +66,12 @@ public final class GnssTimeUpdateServiceTest {
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); 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)) when(mMockLocationManager.hasProvider(LocationManager.GPS_PROVIDER))
.thenReturn(true); .thenReturn(true);
LocalServices.addService(LocationManagerInternal.class, mLocationManagerInternal); mGnssTimeUpdateService = new GnssTimeUpdateService(
mMockContext, mMockAlarmManager, mMockLocationManager, mMockLocationManagerInternal,
mGnssTimeUpdateService = mMockTimeDetector);
new GnssTimeUpdateService(mMockContext);
} }
@After @After
@@ -105,7 +85,7 @@ public final class GnssTimeUpdateServiceTest {
ELAPSED_REALTIME_MS, GNSS_TIME); ELAPSED_REALTIME_MS, GNSS_TIME);
GnssTimeSuggestion timeSuggestion = new GnssTimeSuggestion(timeSignal); GnssTimeSuggestion timeSuggestion = new GnssTimeSuggestion(timeSignal);
LocationTime locationTime = new LocationTime(GNSS_TIME, ELAPSED_REALTIME_NS); LocationTime locationTime = new LocationTime(GNSS_TIME, ELAPSED_REALTIME_NS);
doReturn(locationTime).when(mLocationManagerInternal).getGnssTimeMillis(); doReturn(locationTime).when(mMockLocationManagerInternal).getGnssTimeMillis();
mGnssTimeUpdateService.requestGnssTimeUpdates(); mGnssTimeUpdateService.requestGnssTimeUpdates();
@@ -135,7 +115,7 @@ public final class GnssTimeUpdateServiceTest {
@Test @Test
public void testLocationListenerOnLocationChanged_nullLocationTime_doesNotSuggestGnssTime() { public void testLocationListenerOnLocationChanged_nullLocationTime_doesNotSuggestGnssTime() {
doReturn(null).when(mLocationManagerInternal).getGnssTimeMillis(); doReturn(null).when(mMockLocationManagerInternal).getGnssTimeMillis();
mGnssTimeUpdateService.requestGnssTimeUpdates(); mGnssTimeUpdateService.requestGnssTimeUpdates();