From 3c15b11333eeb3d830a0c04dd61e2fa161ad763d Mon Sep 17 00:00:00 2001 From: Neil Fuller Date: Tue, 12 Jul 2022 10:55:49 +0100 Subject: [PATCH] Switch GnssTimeUpdateService to internal service Switch GnssTimeUpdateService to calling TimeDetectorInternal, not TimeDetectorService over AIDL. TimeDetectorInternal was recently added for NetworkTimeUpdateService and this commit follows the same pattern. Bug: 219693030 Bug: 222295093 Test: atest services/tests/servicestests/src/com/android/server/timedetector/ Test: atest services/tests/servicestests/src/com/android/server/timezonedetector/ Test: atest core/tests/coretests/src/android/app/timedetector/ Change-Id: I916cf878469280e6c9498baf2cf930e140c3a386 --- .../app/timedetector/GnssTimeSuggestion.aidl | 19 --------- .../timedetector/ITimeDetectorService.aidl | 2 - .../app/timedetector/TimeDetector.java | 8 ---- .../app/timedetector/TimeDetectorImpl.java | 12 ------ .../timedetector/GnssTimeSuggestion.java | 32 ++------------- .../timedetector/GnssTimeUpdateService.java | 35 ++++++++++------ .../timedetector/TimeDetectorInternal.java | 3 ++ .../TimeDetectorInternalImpl.java | 7 ++++ .../timedetector/TimeDetectorService.java | 4 +- .../TimeDetectorShellCommand.java | 1 - .../timedetector/TimeDetectorStrategy.java | 1 - .../TimeDetectorStrategyImpl.java | 1 - .../FakeTimeDetectorStrategy.java | 1 - .../timedetector/GnssTimeSuggestionTest.java | 17 +------- .../GnssTimeUpdateServiceTest.java | 40 +++++-------------- .../TimeDetectorInternalImplTest.java | 16 ++++++++ .../timedetector/TimeDetectorServiceTest.java | 1 - .../TimeDetectorStrategyImplTest.java | 1 - 18 files changed, 64 insertions(+), 137 deletions(-) delete mode 100644 core/java/android/app/timedetector/GnssTimeSuggestion.aidl rename {core/java/android/app => services/core/java/com/android/server}/timedetector/GnssTimeSuggestion.java (76%) rename {core/tests/coretests/src/android/app => services/tests/servicestests/src/com/android/server}/timedetector/GnssTimeSuggestionTest.java (80%) diff --git a/core/java/android/app/timedetector/GnssTimeSuggestion.aidl b/core/java/android/app/timedetector/GnssTimeSuggestion.aidl deleted file mode 100644 index 81475ec8156d5..0000000000000 --- a/core/java/android/app/timedetector/GnssTimeSuggestion.aidl +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (C) 2020 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.app.timedetector; - -parcelable GnssTimeSuggestion; diff --git a/core/java/android/app/timedetector/ITimeDetectorService.aidl b/core/java/android/app/timedetector/ITimeDetectorService.aidl index 9b7385ea67335..0eb2b5470f58a 100644 --- a/core/java/android/app/timedetector/ITimeDetectorService.aidl +++ b/core/java/android/app/timedetector/ITimeDetectorService.aidl @@ -20,7 +20,6 @@ import android.app.time.ExternalTimeSuggestion; import android.app.time.ITimeDetectorListener; import android.app.time.TimeCapabilitiesAndConfig; import android.app.time.TimeConfiguration; -import android.app.timedetector.GnssTimeSuggestion; import android.app.timedetector.ManualTimeSuggestion; import android.app.timedetector.TelephonyTimeSuggestion; import android.app.timedetector.TimePoint; @@ -46,7 +45,6 @@ interface ITimeDetectorService { boolean updateConfiguration(in TimeConfiguration timeConfiguration); void suggestExternalTime(in ExternalTimeSuggestion timeSuggestion); - void suggestGnssTime(in GnssTimeSuggestion timeSuggestion); boolean suggestManualTime(in ManualTimeSuggestion timeSuggestion); void suggestTelephonyTime(in TelephonyTimeSuggestion timeSuggestion); diff --git a/core/java/android/app/timedetector/TimeDetector.java b/core/java/android/app/timedetector/TimeDetector.java index c2d3f053127db..9529d4c632a1d 100644 --- a/core/java/android/app/timedetector/TimeDetector.java +++ b/core/java/android/app/timedetector/TimeDetector.java @@ -111,12 +111,4 @@ public interface TimeDetector { */ @RequiresPermission(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE) boolean suggestManualTime(@NonNull ManualTimeSuggestion timeSuggestion); - - /** - * Suggests the time according to a gnss time source. - * - * @hide - */ - @RequiresPermission(android.Manifest.permission.SET_TIME) - void suggestGnssTime(GnssTimeSuggestion timeSuggestion); } diff --git a/core/java/android/app/timedetector/TimeDetectorImpl.java b/core/java/android/app/timedetector/TimeDetectorImpl.java index 12eefdd7715a4..54f8e3f634b57 100644 --- a/core/java/android/app/timedetector/TimeDetectorImpl.java +++ b/core/java/android/app/timedetector/TimeDetectorImpl.java @@ -62,16 +62,4 @@ public final class TimeDetectorImpl implements TimeDetector { throw e.rethrowFromSystemServer(); } } - - @Override - public void suggestGnssTime(GnssTimeSuggestion timeSuggestion) { - if (DEBUG) { - Log.d(TAG, "suggestGnssTime called: " + timeSuggestion); - } - try { - mITimeDetectorService.suggestGnssTime(timeSuggestion); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } - } } diff --git a/core/java/android/app/timedetector/GnssTimeSuggestion.java b/services/core/java/com/android/server/timedetector/GnssTimeSuggestion.java similarity index 76% rename from core/java/android/app/timedetector/GnssTimeSuggestion.java rename to services/core/java/com/android/server/timedetector/GnssTimeSuggestion.java index 3531b19d0f659..33499754fbc5d 100644 --- a/core/java/android/app/timedetector/GnssTimeSuggestion.java +++ b/services/core/java/com/android/server/timedetector/GnssTimeSuggestion.java @@ -14,11 +14,10 @@ * limitations under the License. */ -package android.app.timedetector; +package com.android.server.timedetector; import android.annotation.NonNull; -import android.os.Parcel; -import android.os.Parcelable; +import android.app.timedetector.TimeSuggestionHelper; import android.os.ShellCommand; import android.os.TimestampedValue; @@ -30,23 +29,8 @@ import java.util.Objects; * A time signal from a GNSS source. * *

See {@link TimeSuggestionHelper} for property information. - * - * @hide */ -public final class GnssTimeSuggestion implements Parcelable { - - public static final @NonNull Creator CREATOR = - new Creator() { - public GnssTimeSuggestion createFromParcel(Parcel in) { - TimeSuggestionHelper helper = TimeSuggestionHelper.handleCreateFromParcel( - GnssTimeSuggestion.class, in); - return new GnssTimeSuggestion(helper); - } - - public GnssTimeSuggestion[] newArray(int size) { - return new GnssTimeSuggestion[size]; - } - }; +public final class GnssTimeSuggestion { @NonNull private final TimeSuggestionHelper mTimeSuggestionHelper; @@ -58,16 +42,6 @@ public final class GnssTimeSuggestion implements Parcelable { mTimeSuggestionHelper = Objects.requireNonNull(helper); } - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(@NonNull Parcel dest, int flags) { - mTimeSuggestionHelper.handleWriteToParcel(dest, flags); - } - @NonNull public TimestampedValue getUnixEpochTime() { return mTimeSuggestionHelper.getUnixEpochTime(); diff --git a/services/core/java/com/android/server/timedetector/GnssTimeUpdateService.java b/services/core/java/com/android/server/timedetector/GnssTimeUpdateService.java index 129810c3265c8..88e9fa52fb1b6 100644 --- a/services/core/java/com/android/server/timedetector/GnssTimeUpdateService.java +++ b/services/core/java/com/android/server/timedetector/GnssTimeUpdateService.java @@ -19,8 +19,6 @@ package com.android.server.timedetector; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.AlarmManager; -import android.app.timedetector.GnssTimeSuggestion; -import android.app.timedetector.TimeDetector; import android.content.Context; import android.location.Location; import android.location.LocationListener; @@ -42,12 +40,13 @@ 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. * *

When available, the time is always suggested to the {@link - * com.android.server.timedetector.TimeDetectorService} where it may be used to set the device + * com.android.server.timedetector.TimeDetectorInternal} where it may be used to set the device * system clock, depending on user settings and what other signals are available. */ public final class GnssTimeUpdateService extends Binder { @@ -66,7 +65,16 @@ 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); + TimeDetectorInternal timeDetectorInternal = + LocalServices.getService(TimeDetectorInternal.class); + + mService = new GnssTimeUpdateService(context, alarmManager, locationManager, + locationManagerInternal, timeDetectorInternal); publishBinderService("gnss_time_update_service", mService); } @@ -88,7 +96,7 @@ public final class GnssTimeUpdateService extends Binder { private static final String ATTRIBUTION_TAG = "GnssTimeUpdateService"; private final Context mContext; - private final TimeDetector mTimeDetector; + private final TimeDetectorInternal mTimeDetectorInternal; private final AlarmManager mAlarmManager; private final LocationManager mLocationManager; private final LocationManagerInternal mLocationManagerInternal; @@ -98,12 +106,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 TimeDetectorInternal timeDetectorInternal) { + mContext = Objects.requireNonNull(context); + mAlarmManager = Objects.requireNonNull(alarmManager); + mLocationManager = Objects.requireNonNull(locationManager); + mLocationManagerInternal = Objects.requireNonNull(locationManagerInternal); + mTimeDetectorInternal = Objects.requireNonNull(timeDetectorInternal); } /** @@ -191,7 +202,7 @@ public final class GnssTimeUpdateService extends Binder { mLastSuggestedGnssTime = timeSignal; GnssTimeSuggestion timeSuggestion = new GnssTimeSuggestion(timeSignal); - mTimeDetector.suggestGnssTime(timeSuggestion); + mTimeDetectorInternal.suggestGnssTime(timeSuggestion); } @Override diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorInternal.java b/services/core/java/com/android/server/timedetector/TimeDetectorInternal.java index e02032c85385f..eae12c28d2b95 100644 --- a/services/core/java/com/android/server/timedetector/TimeDetectorInternal.java +++ b/services/core/java/com/android/server/timedetector/TimeDetectorInternal.java @@ -29,4 +29,7 @@ public interface TimeDetectorInternal { /** Used to pass new network time suggestions to the time detector. */ void suggestNetworkTime(@NonNull NetworkTimeSuggestion timeSignal); + + /** Used to pass new GNSS time suggestions to the time detector. */ + void suggestGnssTime(@NonNull GnssTimeSuggestion timeSignal); } \ No newline at end of file diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorInternalImpl.java b/services/core/java/com/android/server/timedetector/TimeDetectorInternalImpl.java index ed5814d14cd74..5a3e20ebd6cdb 100644 --- a/services/core/java/com/android/server/timedetector/TimeDetectorInternalImpl.java +++ b/services/core/java/com/android/server/timedetector/TimeDetectorInternalImpl.java @@ -46,4 +46,11 @@ public class TimeDetectorInternalImpl implements TimeDetectorInternal { mHandler.post(() -> mTimeDetectorStrategy.suggestNetworkTime(timeSignal)); } + + @Override + public void suggestGnssTime(@NonNull GnssTimeSuggestion timeSignal) { + Objects.requireNonNull(timeSignal); + + mHandler.post(() -> mTimeDetectorStrategy.suggestGnssTime(timeSignal)); + } } diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorService.java b/services/core/java/com/android/server/timedetector/TimeDetectorService.java index a323031aa7fcb..5c47abfff09eb 100644 --- a/services/core/java/com/android/server/timedetector/TimeDetectorService.java +++ b/services/core/java/com/android/server/timedetector/TimeDetectorService.java @@ -24,7 +24,6 @@ import android.app.time.ExternalTimeSuggestion; import android.app.time.ITimeDetectorListener; import android.app.time.TimeCapabilitiesAndConfig; import android.app.time.TimeConfiguration; -import android.app.timedetector.GnssTimeSuggestion; import android.app.timedetector.ITimeDetectorService; import android.app.timedetector.ManualTimeSuggestion; import android.app.timedetector.TelephonyTimeSuggestion; @@ -301,8 +300,7 @@ public final class TimeDetectorService extends ITimeDetectorService.Stub mHandler.post(() -> mTimeDetectorStrategy.suggestNetworkTime(timeSignal)); } - @Override - public void suggestGnssTime(@NonNull GnssTimeSuggestion timeSignal) { + void suggestGnssTime(@NonNull GnssTimeSuggestion timeSignal) { enforceSuggestGnssTimePermission(); Objects.requireNonNull(timeSignal); diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorShellCommand.java b/services/core/java/com/android/server/timedetector/TimeDetectorShellCommand.java index d057c90ac099c..d306d10f3c697 100644 --- a/services/core/java/com/android/server/timedetector/TimeDetectorShellCommand.java +++ b/services/core/java/com/android/server/timedetector/TimeDetectorShellCommand.java @@ -30,7 +30,6 @@ import static com.android.server.timedetector.ServerFlags.KEY_TIME_DETECTOR_ORIG import android.app.time.ExternalTimeSuggestion; import android.app.time.TimeConfiguration; -import android.app.timedetector.GnssTimeSuggestion; import android.app.timedetector.ManualTimeSuggestion; import android.app.timedetector.TelephonyTimeSuggestion; import android.os.ShellCommand; diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorStrategy.java b/services/core/java/com/android/server/timedetector/TimeDetectorStrategy.java index 25488cdfc2e0f..141cdcf0dbb97 100644 --- a/services/core/java/com/android/server/timedetector/TimeDetectorStrategy.java +++ b/services/core/java/com/android/server/timedetector/TimeDetectorStrategy.java @@ -20,7 +20,6 @@ import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.UserIdInt; import android.app.time.ExternalTimeSuggestion; -import android.app.timedetector.GnssTimeSuggestion; import android.app.timedetector.ManualTimeSuggestion; import android.app.timedetector.TelephonyTimeSuggestion; import android.os.TimestampedValue; diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java b/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java index c1999fb51a2b9..017306a5039dc 100644 --- a/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java +++ b/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java @@ -25,7 +25,6 @@ import android.annotation.Nullable; import android.annotation.UserIdInt; import android.app.AlarmManager; import android.app.time.ExternalTimeSuggestion; -import android.app.timedetector.GnssTimeSuggestion; import android.app.timedetector.ManualTimeSuggestion; import android.app.timedetector.TelephonyTimeSuggestion; import android.content.Context; diff --git a/services/tests/servicestests/src/com/android/server/timedetector/FakeTimeDetectorStrategy.java b/services/tests/servicestests/src/com/android/server/timedetector/FakeTimeDetectorStrategy.java index a4e689842844b..1c6add2ffd617 100644 --- a/services/tests/servicestests/src/com/android/server/timedetector/FakeTimeDetectorStrategy.java +++ b/services/tests/servicestests/src/com/android/server/timedetector/FakeTimeDetectorStrategy.java @@ -21,7 +21,6 @@ import static org.junit.Assert.assertTrue; import android.annotation.UserIdInt; import android.app.time.ExternalTimeSuggestion; -import android.app.timedetector.GnssTimeSuggestion; import android.app.timedetector.ManualTimeSuggestion; import android.app.timedetector.TelephonyTimeSuggestion; import android.util.IndentingPrintWriter; diff --git a/core/tests/coretests/src/android/app/timedetector/GnssTimeSuggestionTest.java b/services/tests/servicestests/src/com/android/server/timedetector/GnssTimeSuggestionTest.java similarity index 80% rename from core/tests/coretests/src/android/app/timedetector/GnssTimeSuggestionTest.java rename to services/tests/servicestests/src/com/android/server/timedetector/GnssTimeSuggestionTest.java index af403a20ae7be..f25d94e0d7eff 100644 --- a/core/tests/coretests/src/android/app/timedetector/GnssTimeSuggestionTest.java +++ b/services/tests/servicestests/src/com/android/server/timedetector/GnssTimeSuggestionTest.java @@ -14,11 +14,9 @@ * limitations under the License. */ -package android.app.timedetector; +package com.android.server.timedetector; -import static android.app.timezonedetector.ParcelableTestSupport.assertRoundTripParcelable; -import static android.app.timezonedetector.ParcelableTestSupport.roundTripParcelable; -import static android.app.timezonedetector.ShellCommandTestSupport.createShellCommandWithArgsAndOptions; +import static com.android.server.timezonedetector.ShellCommandTestSupport.createShellCommandWithArgsAndOptions; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; @@ -55,17 +53,6 @@ public class GnssTimeSuggestionTest { assertEquals(one, two); } - @Test - public void testParcelable() { - GnssTimeSuggestion suggestion = new GnssTimeSuggestion(ARBITRARY_TIME); - assertRoundTripParcelable(suggestion); - - // DebugInfo should also be stored (but is not checked by equals() - suggestion.addDebugInfo("This is debug info"); - GnssTimeSuggestion rtSuggestion = roundTripParcelable(suggestion); - assertEquals(suggestion.getDebugInfo(), rtSuggestion.getDebugInfo()); - } - @Test(expected = IllegalArgumentException.class) public void testParseCommandLineArg_noReferenceTime() { ShellCommand testShellCommand = createShellCommandWithArgsAndOptions( 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..6402e12981248 100644 --- a/services/tests/servicestests/src/com/android/server/timedetector/GnssTimeUpdateServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/timedetector/GnssTimeUpdateServiceTest.java @@ -19,15 +19,12 @@ 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; import static org.mockito.Mockito.when; import android.app.AlarmManager; -import android.app.timedetector.GnssTimeSuggestion; -import android.app.timedetector.TimeDetector; import android.content.Context; import android.location.Location; import android.location.LocationListener; @@ -56,10 +53,10 @@ public final class GnssTimeUpdateServiceTest { private static final long ELAPSED_REALTIME_MS = ELAPSED_REALTIME_NS / 1_000_000L; @Mock private Context mMockContext; - @Mock private TimeDetector mMockTimeDetector; @Mock private AlarmManager mMockAlarmManager; @Mock private LocationManager mMockLocationManager; - @Mock private LocationManagerInternal mLocationManagerInternal; + @Mock private LocationManagerInternal mMockLocationManagerInternal; + @Mock private TimeDetectorInternal mMockTimeDetectorInternal; private GnssTimeUpdateService mGnssTimeUpdateService; @@ -67,31 +64,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, + mMockTimeDetectorInternal); } @After @@ -105,7 +83,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(); @@ -124,7 +102,7 @@ public final class GnssTimeUpdateServiceTest { locationListener.onLocationChanged(location); verify(mMockLocationManager).removeUpdates(locationListener); - verify(mMockTimeDetector).suggestGnssTime(timeSuggestion); + verify(mMockTimeDetectorInternal).suggestGnssTime(timeSuggestion); verify(mMockAlarmManager).set( eq(AlarmManager.ELAPSED_REALTIME_WAKEUP), anyLong(), @@ -135,7 +113,7 @@ public final class GnssTimeUpdateServiceTest { @Test public void testLocationListenerOnLocationChanged_nullLocationTime_doesNotSuggestGnssTime() { - doReturn(null).when(mLocationManagerInternal).getGnssTimeMillis(); + doReturn(null).when(mMockLocationManagerInternal).getGnssTimeMillis(); mGnssTimeUpdateService.requestGnssTimeUpdates(); @@ -154,7 +132,7 @@ public final class GnssTimeUpdateServiceTest { locationListener.onLocationChanged(location); verify(mMockLocationManager).removeUpdates(locationListener); - verify(mMockTimeDetector, never()).suggestGnssTime(any()); + verify(mMockTimeDetectorInternal, never()).suggestGnssTime(any()); verify(mMockAlarmManager).set( eq(AlarmManager.ELAPSED_REALTIME_WAKEUP), anyLong(), diff --git a/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorInternalImplTest.java b/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorInternalImplTest.java index 898f0758e5f2b..f8092a67e8c75 100644 --- a/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorInternalImplTest.java +++ b/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorInternalImplTest.java @@ -77,4 +77,20 @@ public class TimeDetectorInternalImplTest { TimestampedValue timeValue = new TimestampedValue<>(100L, 1_000_000L); return new NetworkTimeSuggestion(timeValue, 123); } + + @Test + public void testSuggestGnssTime() throws Exception { + GnssTimeSuggestion gnssTimeSuggestion = createGnssTimeSuggestion(); + + mTimeDetectorInternal.suggestGnssTime(gnssTimeSuggestion); + mTestHandler.assertTotalMessagesEnqueued(1); + + mTestHandler.waitForMessagesToBeProcessed(); + mFakeTimeDetectorStrategy.verifySuggestGnssTimeCalled(gnssTimeSuggestion); + } + + private static GnssTimeSuggestion createGnssTimeSuggestion() { + TimestampedValue timeValue = new TimestampedValue<>(100L, 1_000_000L); + return new GnssTimeSuggestion(timeValue); + } } diff --git a/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java b/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java index 9725d3c21ed8b..1ee23fd962e68 100644 --- a/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java @@ -38,7 +38,6 @@ import static org.mockito.Mockito.when; import android.app.time.ExternalTimeSuggestion; import android.app.time.ITimeDetectorListener; import android.app.time.TimeConfiguration; -import android.app.timedetector.GnssTimeSuggestion; import android.app.timedetector.ManualTimeSuggestion; import android.app.timedetector.TelephonyTimeSuggestion; import android.app.timedetector.TimePoint; diff --git a/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorStrategyImplTest.java b/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorStrategyImplTest.java index be67ff1e15cc2..aeb5c65c8692f 100644 --- a/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorStrategyImplTest.java +++ b/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorStrategyImplTest.java @@ -29,7 +29,6 @@ import static org.junit.Assert.fail; import android.annotation.UserIdInt; import android.app.time.ExternalTimeSuggestion; -import android.app.timedetector.GnssTimeSuggestion; import android.app.timedetector.ManualTimeSuggestion; import android.app.timedetector.TelephonyTimeSuggestion; import android.os.TimestampedValue;