Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9ad97fbb authored by Neil Fuller's avatar Neil Fuller
Browse files

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
parent a70b3d1a
Loading
Loading
Loading
Loading
+19 −7
Original line number Diff line number Diff line
@@ -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<Long> 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);
    }

    /**
+7 −27
Original line number Diff line number Diff line
@@ -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);

        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();