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

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

System API annotation and API .txt changes

New APIs are being exposed for use by SetUp Wizard, which requires
System APIs.

The APIs enable the calling app to determine the capabilities for /
config of the current user that affect time zone detection and then
alter them.

This commit also contains changes to the Shell package needed for the
CTS tests being added to test the new APIs. See the associated CTS
commit for details.

The primary usecase:

The rules for who can do what and when for time zone detection are
becoming more complicated, and device and user capabilities will be
affected by compile time constants, device config (resources) and device
hardware. By exposing this API, the complex logic can be encoded in one
place (the system server), rather than duplicating them in multiple
client apps.

These APIs are also intended for use by SettingsUI (and the various form
factor versions of that), but settings apps do not require them to be
marked with @SystemApi.

Bug: 159891384
Test: atest CtsTimeTestCases
Change-Id: I1eb6a68a74217106f81cb9525ad9370c805eecf2
parent 02d943f4
Loading
Loading
Loading
Loading
+52 −0
Original line number Diff line number Diff line
@@ -125,6 +125,7 @@ package android {
    field public static final String MANAGE_SENSOR_PRIVACY = "android.permission.MANAGE_SENSOR_PRIVACY";
    field public static final String MANAGE_SOUND_TRIGGER = "android.permission.MANAGE_SOUND_TRIGGER";
    field public static final String MANAGE_SUBSCRIPTION_PLANS = "android.permission.MANAGE_SUBSCRIPTION_PLANS";
    field public static final String MANAGE_TIME_AND_ZONE_DETECTION = "android.permission.MANAGE_TIME_AND_ZONE_DETECTION";
    field public static final String MANAGE_USB = "android.permission.MANAGE_USB";
    field public static final String MANAGE_USERS = "android.permission.MANAGE_USERS";
    field public static final String MANAGE_USER_OEM_UNLOCK_STATE = "android.permission.MANAGE_USER_OEM_UNLOCK_STATE";
@@ -1389,6 +1390,57 @@ package android.app.role {
}
package android.app.time {
  public final class TimeManager {
    method @RequiresPermission(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION) public void addTimeZoneDetectorListener(@NonNull java.util.concurrent.Executor, @NonNull android.app.time.TimeManager.TimeZoneDetectorListener);
    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION) public android.app.time.TimeZoneCapabilitiesAndConfig getTimeZoneCapabilitiesAndConfig();
    method @RequiresPermission(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION) public void removeTimeZoneDetectorListener(@NonNull android.app.time.TimeManager.TimeZoneDetectorListener);
    method @RequiresPermission(android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION) public boolean updateTimeZoneConfiguration(@NonNull android.app.time.TimeZoneConfiguration);
  }
  @java.lang.FunctionalInterface public static interface TimeManager.TimeZoneDetectorListener {
    method public void onChange();
  }
  public final class TimeZoneCapabilities implements android.os.Parcelable {
    method public int describeContents();
    method public int getConfigureAutoDetectionEnabledCapability();
    method public int getConfigureGeoDetectionEnabledCapability();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field public static final int CAPABILITY_NOT_ALLOWED = 20; // 0x14
    field public static final int CAPABILITY_NOT_APPLICABLE = 30; // 0x1e
    field public static final int CAPABILITY_NOT_SUPPORTED = 10; // 0xa
    field public static final int CAPABILITY_POSSESSED = 40; // 0x28
    field @NonNull public static final android.os.Parcelable.Creator<android.app.time.TimeZoneCapabilities> CREATOR;
  }
  public final class TimeZoneCapabilitiesAndConfig implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public android.app.time.TimeZoneCapabilities getCapabilities();
    method @NonNull public android.app.time.TimeZoneConfiguration getConfiguration();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.app.time.TimeZoneCapabilitiesAndConfig> CREATOR;
  }
  public final class TimeZoneConfiguration implements android.os.Parcelable {
    method public int describeContents();
    method public boolean isAutoDetectionEnabled();
    method public boolean isGeoDetectionEnabled();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.app.time.TimeZoneConfiguration> CREATOR;
  }
  public static final class TimeZoneConfiguration.Builder {
    ctor public TimeZoneConfiguration.Builder();
    ctor public TimeZoneConfiguration.Builder(@NonNull android.app.time.TimeZoneConfiguration);
    method @NonNull public android.app.time.TimeZoneConfiguration build();
    method @NonNull public android.app.time.TimeZoneConfiguration.Builder setAutoDetectionEnabled(boolean);
    method @NonNull public android.app.time.TimeZoneConfiguration.Builder setGeoDetectionEnabled(boolean);
  }
}
package android.app.usage {
  public final class CacheQuotaHint implements android.os.Parcelable {
+2 −1
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.app.time;

import android.annotation.NonNull;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.app.timezonedetector.ITimeZoneDetectorService;
import android.content.Context;
@@ -36,7 +37,7 @@ import java.util.concurrent.Executor;
 *
 * @hide
 */
// @SystemApi
@SystemApi
@SystemService(Context.TIME_MANAGER)
public final class TimeManager {
    private static final String TAG = "time.TimeManager";
+2 −1
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package android.app.time;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.app.timezonedetector.ManualTimeZoneSuggestion;
import android.app.timezonedetector.TimeZoneDetector;
import android.os.Parcel;
@@ -50,7 +51,7 @@ import java.util.Objects;
 *
 * @hide
 */
// @SystemApi
@SystemApi
public final class TimeZoneCapabilities implements Parcelable {

    /** @hide */
+2 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package android.app.time;

import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;

@@ -27,7 +28,7 @@ import java.util.Objects;
 *
 * @hide
 */
// @SystemApi
@SystemApi
public final class TimeZoneCapabilitiesAndConfig implements Parcelable {

    public static final @NonNull Creator<TimeZoneCapabilitiesAndConfig> CREATOR =
+3 −2
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.app.time;

import android.annotation.NonNull;
import android.annotation.StringDef;
import android.annotation.SystemApi;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
@@ -41,7 +42,7 @@ import java.util.Objects;
 *
 * @hide
 */
// @SystemApi
@SystemApi
public final class TimeZoneConfiguration implements Parcelable {

    public static final @NonNull Creator<TimeZoneConfiguration> CREATOR =
@@ -188,7 +189,7 @@ public final class TimeZoneConfiguration implements Parcelable {
     *
     * @hide
     */
    // @SystemApi
    @SystemApi
    public static final class Builder {

        private final Bundle mBundle = new Bundle();
Loading