diff options
author | 2020-01-29 10:38:45 +0000 | |
---|---|---|
committer | 2020-01-29 10:38:45 +0000 | |
commit | 3daccde5262d1949d5e604265d9fcf5a25e253b5 (patch) | |
tree | 7f3412a885f04e3e8c2e7c9371fbb21a8fc1d65d | |
parent | d43771e5b74358a8f6ec840102737e9bb2a0093f (diff) | |
parent | f751b9ec06563dc988f48c61a6dbd7e1070667ca (diff) |
Merge "Extract TimeDetector/TimeZoneDetector interfaces" am: 17ac92f460 am: a9e81b53a9 am: f751b9ec06
Change-Id: Ic029c262cc34f8c0232cda3558a57f2fcaceb797
6 files changed, 175 insertions, 106 deletions
diff --git a/api/module-lib-current.txt b/api/module-lib-current.txt index 6f4a27ecfb0b..4787e11098f3 100644 --- a/api/module-lib-current.txt +++ b/api/module-lib-current.txt @@ -19,7 +19,7 @@ package android.app.timedetector { method @NonNull public android.app.timedetector.PhoneTimeSuggestion.Builder setUtcTime(@Nullable android.os.TimestampedValue<java.lang.Long>); } - public class TimeDetector { + public interface TimeDetector { method @RequiresPermission("android.permission.SUGGEST_PHONE_TIME_AND_ZONE") public void suggestPhoneTime(@NonNull android.app.timedetector.PhoneTimeSuggestion); } @@ -59,7 +59,7 @@ package android.app.timezonedetector { method @NonNull public android.app.timezonedetector.PhoneTimeZoneSuggestion.Builder setZoneId(@Nullable String); } - public class TimeZoneDetector { + public interface TimeZoneDetector { method @RequiresPermission("android.permission.SUGGEST_PHONE_TIME_AND_ZONE") public void suggestPhoneTimeZone(@NonNull android.app.timezonedetector.PhoneTimeZoneSuggestion); } diff --git a/core/java/android/app/SystemServiceRegistry.java b/core/java/android/app/SystemServiceRegistry.java index f170b5dfbc27..59c171923f2b 100644 --- a/core/java/android/app/SystemServiceRegistry.java +++ b/core/java/android/app/SystemServiceRegistry.java @@ -33,8 +33,10 @@ import android.app.role.RoleControllerManager; import android.app.role.RoleManager; import android.app.slice.SliceManager; import android.app.timedetector.TimeDetector; +import android.app.timedetector.TimeDetectorImpl; import android.app.timezone.RulesManager; import android.app.timezonedetector.TimeZoneDetector; +import android.app.timezonedetector.TimeZoneDetectorImpl; import android.app.trust.TrustManager; import android.app.usage.IStorageStatsManager; import android.app.usage.IUsageStatsManager; @@ -1196,7 +1198,7 @@ public final class SystemServiceRegistry { @Override public TimeDetector createService(ContextImpl ctx) throws ServiceNotFoundException { - return new TimeDetector(); + return new TimeDetectorImpl(); }}); registerService(Context.TIME_ZONE_DETECTOR_SERVICE, TimeZoneDetector.class, @@ -1204,7 +1206,7 @@ public final class SystemServiceRegistry { @Override public TimeZoneDetector createService(ContextImpl ctx) throws ServiceNotFoundException { - return new TimeZoneDetector(); + return new TimeZoneDetectorImpl(); }}); registerService(Context.PERMISSION_SERVICE, PermissionManager.class, diff --git a/core/java/android/app/timedetector/TimeDetector.java b/core/java/android/app/timedetector/TimeDetector.java index 7c29f017c02b..2412fb3994ed 100644 --- a/core/java/android/app/timedetector/TimeDetector.java +++ b/core/java/android/app/timedetector/TimeDetector.java @@ -21,31 +21,29 @@ import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.annotation.SystemService; import android.content.Context; -import android.os.RemoteException; -import android.os.ServiceManager; -import android.os.ServiceManager.ServiceNotFoundException; import android.os.SystemClock; import android.os.TimestampedValue; -import android.util.Log; /** * The interface through which system components can send signals to the TimeDetectorService. * - * <p>This class is marked non-final for mockito. * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) @SystemService(Context.TIME_DETECTOR_SERVICE) -public class TimeDetector { - private static final String TAG = "timedetector.TimeDetector"; - private static final boolean DEBUG = false; +public interface TimeDetector { - private final ITimeDetectorService mITimeDetectorService; - - /** @hide */ - public TimeDetector() throws ServiceNotFoundException { - mITimeDetectorService = ITimeDetectorService.Stub.asInterface( - ServiceManager.getServiceOrThrow(Context.TIME_DETECTOR_SERVICE)); + /** + * A shared utility method to create a {@link ManualTimeSuggestion}. + * + * @hide + */ + static ManualTimeSuggestion createManualTimeSuggestion(long when, String why) { + TimestampedValue<Long> utcTime = + new TimestampedValue<>(SystemClock.elapsedRealtime(), when); + ManualTimeSuggestion manualTimeSuggestion = new ManualTimeSuggestion(utcTime); + manualTimeSuggestion.addDebugInfo(why); + return manualTimeSuggestion; } /** @@ -54,16 +52,7 @@ public class TimeDetector { * were determined more recently. */ @RequiresPermission(android.Manifest.permission.SUGGEST_PHONE_TIME_AND_ZONE) - public void suggestPhoneTime(@NonNull PhoneTimeSuggestion timeSuggestion) { - if (DEBUG) { - Log.d(TAG, "suggestPhoneTime called: " + timeSuggestion); - } - try { - mITimeDetectorService.suggestPhoneTime(timeSuggestion); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } - } + void suggestPhoneTime(@NonNull PhoneTimeSuggestion timeSuggestion); /** * Suggests the user's manually entered current time to the detector. @@ -71,29 +60,7 @@ public class TimeDetector { * @hide */ @RequiresPermission(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE) - public void suggestManualTime(@NonNull ManualTimeSuggestion timeSuggestion) { - if (DEBUG) { - Log.d(TAG, "suggestManualTime called: " + timeSuggestion); - } - try { - mITimeDetectorService.suggestManualTime(timeSuggestion); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } - } - - /** - * A shared utility method to create a {@link ManualTimeSuggestion}. - * - * @hide - */ - public static ManualTimeSuggestion createManualTimeSuggestion(long when, String why) { - TimestampedValue<Long> utcTime = - new TimestampedValue<>(SystemClock.elapsedRealtime(), when); - ManualTimeSuggestion manualTimeSuggestion = new ManualTimeSuggestion(utcTime); - manualTimeSuggestion.addDebugInfo(why); - return manualTimeSuggestion; - } + void suggestManualTime(@NonNull ManualTimeSuggestion timeSuggestion); /** * Suggests the time according to a network time source like NTP. @@ -101,14 +68,5 @@ public class TimeDetector { * @hide */ @RequiresPermission(android.Manifest.permission.SET_TIME) - public void suggestNetworkTime(NetworkTimeSuggestion timeSuggestion) { - if (DEBUG) { - Log.d(TAG, "suggestNetworkTime called: " + timeSuggestion); - } - try { - mITimeDetectorService.suggestNetworkTime(timeSuggestion); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } - } + void suggestNetworkTime(NetworkTimeSuggestion timeSuggestion); } diff --git a/core/java/android/app/timedetector/TimeDetectorImpl.java b/core/java/android/app/timedetector/TimeDetectorImpl.java new file mode 100644 index 000000000000..1683817740c3 --- /dev/null +++ b/core/java/android/app/timedetector/TimeDetectorImpl.java @@ -0,0 +1,77 @@ +/* + * 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; + +import android.annotation.NonNull; +import android.content.Context; +import android.os.RemoteException; +import android.os.ServiceManager; +import android.os.ServiceManager.ServiceNotFoundException; +import android.util.Log; + +/** + * The real implementation of {@link TimeDetector}. + * + * @hide + */ +public final class TimeDetectorImpl implements TimeDetector { + private static final String TAG = "timedetector.TimeDetector"; + private static final boolean DEBUG = false; + + private final ITimeDetectorService mITimeDetectorService; + + public TimeDetectorImpl() throws ServiceNotFoundException { + mITimeDetectorService = ITimeDetectorService.Stub.asInterface( + ServiceManager.getServiceOrThrow(Context.TIME_DETECTOR_SERVICE)); + } + + @Override + public void suggestPhoneTime(@NonNull PhoneTimeSuggestion timeSuggestion) { + if (DEBUG) { + Log.d(TAG, "suggestPhoneTime called: " + timeSuggestion); + } + try { + mITimeDetectorService.suggestPhoneTime(timeSuggestion); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + @Override + public void suggestManualTime(@NonNull ManualTimeSuggestion timeSuggestion) { + if (DEBUG) { + Log.d(TAG, "suggestManualTime called: " + timeSuggestion); + } + try { + mITimeDetectorService.suggestManualTime(timeSuggestion); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + @Override + public void suggestNetworkTime(NetworkTimeSuggestion timeSuggestion) { + if (DEBUG) { + Log.d(TAG, "suggestNetworkTime called: " + timeSuggestion); + } + try { + mITimeDetectorService.suggestNetworkTime(timeSuggestion); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } +} diff --git a/core/java/android/app/timezonedetector/TimeZoneDetector.java b/core/java/android/app/timezonedetector/TimeZoneDetector.java index 5b5f311264e3..b4f608787d4a 100644 --- a/core/java/android/app/timezonedetector/TimeZoneDetector.java +++ b/core/java/android/app/timezonedetector/TimeZoneDetector.java @@ -21,29 +21,25 @@ import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.annotation.SystemService; import android.content.Context; -import android.os.RemoteException; -import android.os.ServiceManager; -import android.os.ServiceManager.ServiceNotFoundException; -import android.util.Log; /** * The interface through which system components can send signals to the TimeZoneDetectorService. * - * <p>This class is non-final for mockito. * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) @SystemService(Context.TIME_ZONE_DETECTOR_SERVICE) -public class TimeZoneDetector { - private static final String TAG = "timezonedetector.TimeZoneDetector"; - private static final boolean DEBUG = false; +public interface TimeZoneDetector { - private final ITimeZoneDetectorService mITimeZoneDetectorService; - - /** @hide */ - public TimeZoneDetector() throws ServiceNotFoundException { - mITimeZoneDetectorService = ITimeZoneDetectorService.Stub.asInterface( - ServiceManager.getServiceOrThrow(Context.TIME_ZONE_DETECTOR_SERVICE)); + /** + * A shared utility method to create a {@link ManualTimeZoneSuggestion}. + * + * @hide + */ + static ManualTimeZoneSuggestion createManualTimeZoneSuggestion(String tzId, String debugInfo) { + ManualTimeZoneSuggestion suggestion = new ManualTimeZoneSuggestion(tzId); + suggestion.addDebugInfo(debugInfo); + return suggestion; } /** @@ -55,16 +51,7 @@ public class TimeZoneDetector { */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) @RequiresPermission(android.Manifest.permission.SUGGEST_PHONE_TIME_AND_ZONE) - public void suggestPhoneTimeZone(@NonNull PhoneTimeZoneSuggestion timeZoneSuggestion) { - if (DEBUG) { - Log.d(TAG, "suggestPhoneTimeZone called: " + timeZoneSuggestion); - } - try { - mITimeZoneDetectorService.suggestPhoneTimeZone(timeZoneSuggestion); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } - } + void suggestPhoneTimeZone(@NonNull PhoneTimeZoneSuggestion timeZoneSuggestion); /** * Suggests the current time zone, determined for the user's manually information, to the @@ -73,25 +60,5 @@ public class TimeZoneDetector { * @hide */ @RequiresPermission(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE) - public void suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion timeZoneSuggestion) { - if (DEBUG) { - Log.d(TAG, "suggestManualTimeZone called: " + timeZoneSuggestion); - } - try { - mITimeZoneDetectorService.suggestManualTimeZone(timeZoneSuggestion); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } - } - - /** - * A shared utility method to create a {@link ManualTimeZoneSuggestion}. - * - * @hide - */ - public static ManualTimeZoneSuggestion createManualTimeZoneSuggestion(String tzId, String why) { - ManualTimeZoneSuggestion suggestion = new ManualTimeZoneSuggestion(tzId); - suggestion.addDebugInfo(why); - return suggestion; - } + void suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion timeZoneSuggestion); } diff --git a/core/java/android/app/timezonedetector/TimeZoneDetectorImpl.java b/core/java/android/app/timezonedetector/TimeZoneDetectorImpl.java new file mode 100644 index 000000000000..27b8374db172 --- /dev/null +++ b/core/java/android/app/timezonedetector/TimeZoneDetectorImpl.java @@ -0,0 +1,65 @@ +/* + * 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.timezonedetector; + +import android.annotation.NonNull; +import android.content.Context; +import android.os.RemoteException; +import android.os.ServiceManager; +import android.os.ServiceManager.ServiceNotFoundException; +import android.util.Log; + +/** + * The real implementation of {@link TimeZoneDetector}. + * + * @hide + */ +public final class TimeZoneDetectorImpl implements TimeZoneDetector { + private static final String TAG = "timezonedetector.TimeZoneDetector"; + private static final boolean DEBUG = false; + + private final ITimeZoneDetectorService mITimeZoneDetectorService; + + public TimeZoneDetectorImpl() throws ServiceNotFoundException { + mITimeZoneDetectorService = ITimeZoneDetectorService.Stub.asInterface( + ServiceManager.getServiceOrThrow(Context.TIME_ZONE_DETECTOR_SERVICE)); + } + + @Override + public void suggestPhoneTimeZone(@NonNull PhoneTimeZoneSuggestion timeZoneSuggestion) { + if (DEBUG) { + Log.d(TAG, "suggestPhoneTimeZone called: " + timeZoneSuggestion); + } + try { + mITimeZoneDetectorService.suggestPhoneTimeZone(timeZoneSuggestion); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + @Override + public void suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion timeZoneSuggestion) { + if (DEBUG) { + Log.d(TAG, "suggestManualTimeZone called: " + timeZoneSuggestion); + } + try { + mITimeZoneDetectorService.suggestManualTimeZone(timeZoneSuggestion); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } +} |