Merge "Extract TimeDetector/TimeZoneDetector interfaces"
am: 17ac92f460
Change-Id: I7e35f2eedbe57a8e77af8af70587a87dfa61bd26
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -30,8 +30,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;
|
||||
@@ -1288,7 +1290,7 @@ 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,
|
||||
@@ -1296,7 +1298,7 @@ final class SystemServiceRegistry {
|
||||
@Override
|
||||
public TimeZoneDetector createService(ContextImpl ctx)
|
||||
throws ServiceNotFoundException {
|
||||
return new TimeZoneDetector();
|
||||
return new TimeZoneDetectorImpl();
|
||||
}});
|
||||
|
||||
registerService(Context.TELEPHONY_IMS_SERVICE, android.telephony.ims.ImsManager.class,
|
||||
|
||||
@@ -21,73 +21,24 @@ 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;
|
||||
|
||||
private final ITimeDetectorService mITimeDetectorService;
|
||||
|
||||
/** @hide */
|
||||
public TimeDetector() throws ServiceNotFoundException {
|
||||
mITimeDetectorService = ITimeDetectorService.Stub.asInterface(
|
||||
ServiceManager.getServiceOrThrow(Context.TIME_DETECTOR_SERVICE));
|
||||
}
|
||||
|
||||
/**
|
||||
* Suggests the current phone-signal derived time to the detector. The detector may ignore the
|
||||
* signal if better signals are available such as those that come from more reliable sources or
|
||||
* 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();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Suggests the user's manually entered current time to the detector.
|
||||
*
|
||||
* @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();
|
||||
}
|
||||
}
|
||||
public interface TimeDetector {
|
||||
|
||||
/**
|
||||
* A shared utility method to create a {@link ManualTimeSuggestion}.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public static ManualTimeSuggestion createManualTimeSuggestion(long when, String why) {
|
||||
static ManualTimeSuggestion createManualTimeSuggestion(long when, String why) {
|
||||
TimestampedValue<Long> utcTime =
|
||||
new TimestampedValue<>(SystemClock.elapsedRealtime(), when);
|
||||
ManualTimeSuggestion manualTimeSuggestion = new ManualTimeSuggestion(utcTime);
|
||||
@@ -95,20 +46,27 @@ public class TimeDetector {
|
||||
return manualTimeSuggestion;
|
||||
}
|
||||
|
||||
/**
|
||||
* Suggests the current phone-signal derived time to the detector. The detector may ignore the
|
||||
* signal if better signals are available such as those that come from more reliable sources or
|
||||
* were determined more recently.
|
||||
*/
|
||||
@RequiresPermission(android.Manifest.permission.SUGGEST_PHONE_TIME_AND_ZONE)
|
||||
void suggestPhoneTime(@NonNull PhoneTimeSuggestion timeSuggestion);
|
||||
|
||||
/**
|
||||
* Suggests the user's manually entered current time to the detector.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@RequiresPermission(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE)
|
||||
void suggestManualTime(@NonNull ManualTimeSuggestion timeSuggestion);
|
||||
|
||||
/**
|
||||
* Suggests the time according to a network time source like NTP.
|
||||
*
|
||||
* @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);
|
||||
}
|
||||
|
||||
77
core/java/android/app/timedetector/TimeDetectorImpl.java
Normal file
77
core/java/android/app/timedetector/TimeDetectorImpl.java
Normal file
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user