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

Commit 63345612 authored by Chris Antol's avatar Chris Antol
Browse files

Define Settings Preference Service API data models

Bug: 375075504
Test: atest CtsSettingsPreferenceServiceTest
Flag: com.android.settingslib.flags.settings_catalyst
Change-Id: Ic491393b7617a2104b19aa1d64a83d6fe39529b8
parent ea0378dc
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ aconfig_declarations_group {
    java_aconfig_libraries: [
        // !!! KEEP THIS LIST ALPHABETICAL !!!
        "aconfig_mediacodec_flags_java_lib",
        "aconfig_settingslib_flags_java_lib",
        "aconfig_trade_in_mode_flags_java_lib",
        "android-sdk-flags-java",
        "android.adaptiveauth.flags-aconfig-java",
@@ -1749,3 +1750,19 @@ cc_aconfig_library {
    ],
    min_sdk_version: "apex_inherit",
}

// Settings Lib
aconfig_declarations {
    name: "aconfig_settingslib_flags",
    package: "com.android.settingslib.flags",
    container: "system",
    srcs: [
        "packages/SettingsLib/aconfig/settingslib.aconfig",
    ],
}

java_aconfig_library {
    name: "aconfig_settingslib_flags_java_lib",
    aconfig_declarations: "aconfig_settingslib_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}
+170 −0
Original line number Diff line number Diff line
@@ -263,6 +263,7 @@ package android {
    field public static final String READ_SMS = "android.permission.READ_SMS";
    field public static final String READ_SYNC_SETTINGS = "android.permission.READ_SYNC_SETTINGS";
    field public static final String READ_SYNC_STATS = "android.permission.READ_SYNC_STATS";
    field @FlaggedApi("com.android.settingslib.flags.settings_catalyst") public static final String READ_SYSTEM_PREFERENCES = "android.permission.READ_SYSTEM_PREFERENCES";
    field public static final String READ_VOICEMAIL = "com.android.voicemail.permission.READ_VOICEMAIL";
    field public static final String REBOOT = "android.permission.REBOOT";
    field public static final String RECEIVE_BOOT_COMPLETED = "android.permission.RECEIVE_BOOT_COMPLETED";
@@ -334,6 +335,7 @@ package android {
    field public static final String WRITE_SECURE_SETTINGS = "android.permission.WRITE_SECURE_SETTINGS";
    field public static final String WRITE_SETTINGS = "android.permission.WRITE_SETTINGS";
    field public static final String WRITE_SYNC_SETTINGS = "android.permission.WRITE_SYNC_SETTINGS";
    field @FlaggedApi("com.android.settingslib.flags.settings_catalyst") public static final String WRITE_SYSTEM_PREFERENCES = "android.permission.WRITE_SYSTEM_PREFERENCES";
    field public static final String WRITE_VOICEMAIL = "com.android.voicemail.permission.WRITE_VOICEMAIL";
  }
@@ -41985,6 +41987,174 @@ package android.service.restrictions {
}
package android.service.settings.preferences {
  @FlaggedApi("com.android.settingslib.flags.settings_catalyst") public final class GetValueRequest implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public String getPreferenceKey();
    method @NonNull public String getScreenKey();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.service.settings.preferences.GetValueRequest> CREATOR;
  }
  public static final class GetValueRequest.Builder {
    ctor public GetValueRequest.Builder(@NonNull String, @NonNull String);
    method @NonNull public android.service.settings.preferences.GetValueRequest build();
  }
  @FlaggedApi("com.android.settingslib.flags.settings_catalyst") public final class GetValueResult implements android.os.Parcelable {
    method public int describeContents();
    method @Nullable public android.service.settings.preferences.SettingsPreferenceMetadata getMetadata();
    method public int getResultCode();
    method @Nullable public android.service.settings.preferences.SettingsPreferenceValue getValue();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.service.settings.preferences.GetValueResult> CREATOR;
    field public static final int RESULT_DISALLOW = 4; // 0x4
    field public static final int RESULT_INTERNAL_ERROR = 6; // 0x6
    field public static final int RESULT_INVALID_REQUEST = 5; // 0x5
    field public static final int RESULT_OK = 0; // 0x0
    field public static final int RESULT_REQUIRE_APP_PERMISSION = 3; // 0x3
    field public static final int RESULT_UNAVAILABLE = 2; // 0x2
    field public static final int RESULT_UNSUPPORTED = 1; // 0x1
  }
  public static final class GetValueResult.Builder {
    ctor public GetValueResult.Builder(int);
    method @NonNull public android.service.settings.preferences.GetValueResult build();
    method @NonNull public android.service.settings.preferences.GetValueResult.Builder setMetadata(@Nullable android.service.settings.preferences.SettingsPreferenceMetadata);
    method @NonNull public android.service.settings.preferences.GetValueResult.Builder setValue(@Nullable android.service.settings.preferences.SettingsPreferenceValue);
  }
  @FlaggedApi("com.android.settingslib.flags.settings_catalyst") public final class MetadataRequest implements android.os.Parcelable {
    method public int describeContents();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.service.settings.preferences.MetadataRequest> CREATOR;
  }
  public static final class MetadataRequest.Builder {
    ctor public MetadataRequest.Builder();
    method @NonNull public android.service.settings.preferences.MetadataRequest build();
  }
  @FlaggedApi("com.android.settingslib.flags.settings_catalyst") public final class MetadataResult implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public java.util.List<android.service.settings.preferences.SettingsPreferenceMetadata> getMetadataList();
    method public int getResultCode();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.service.settings.preferences.MetadataResult> CREATOR;
    field public static final int RESULT_INTERNAL_ERROR = 2; // 0x2
    field public static final int RESULT_OK = 0; // 0x0
    field public static final int RESULT_UNSUPPORTED = 1; // 0x1
  }
  public static final class MetadataResult.Builder {
    ctor public MetadataResult.Builder(int);
    method @NonNull public android.service.settings.preferences.MetadataResult build();
    method @NonNull public android.service.settings.preferences.MetadataResult.Builder setMetadataList(@NonNull java.util.List<android.service.settings.preferences.SettingsPreferenceMetadata>);
  }
  @FlaggedApi("com.android.settingslib.flags.settings_catalyst") public final class SetValueRequest implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public String getPreferenceKey();
    method @NonNull public android.service.settings.preferences.SettingsPreferenceValue getPreferenceValue();
    method @NonNull public String getScreenKey();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.service.settings.preferences.SetValueRequest> CREATOR;
  }
  public static final class SetValueRequest.Builder {
    ctor public SetValueRequest.Builder(@NonNull String, @NonNull String, @NonNull android.service.settings.preferences.SettingsPreferenceValue);
    method @NonNull public android.service.settings.preferences.SetValueRequest build();
  }
  @FlaggedApi("com.android.settingslib.flags.settings_catalyst") public final class SetValueResult implements android.os.Parcelable {
    method public int describeContents();
    method public int getResultCode();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.service.settings.preferences.SetValueResult> CREATOR;
    field public static final int RESULT_DISABLED = 2; // 0x2
    field public static final int RESULT_DISALLOW = 7; // 0x7
    field public static final int RESULT_INTERNAL_ERROR = 9; // 0x9
    field public static final int RESULT_INVALID_REQUEST = 8; // 0x8
    field public static final int RESULT_OK = 0; // 0x0
    field public static final int RESULT_REQUIRE_APP_PERMISSION = 5; // 0x5
    field public static final int RESULT_REQUIRE_USER_CONSENT = 6; // 0x6
    field public static final int RESULT_RESTRICTED = 3; // 0x3
    field public static final int RESULT_UNAVAILABLE = 4; // 0x4
    field public static final int RESULT_UNSUPPORTED = 1; // 0x1
  }
  public static final class SetValueResult.Builder {
    ctor public SetValueResult.Builder(int);
    method @NonNull public android.service.settings.preferences.SetValueResult build();
  }
  @FlaggedApi("com.android.settingslib.flags.settings_catalyst") public final class SettingsPreferenceMetadata implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public java.util.List<java.lang.String> getBreadcrumbs();
    method @NonNull public android.os.Bundle getExtras();
    method @NonNull public String getKey();
    method @Nullable public android.app.PendingIntent getLaunchIntent();
    method @NonNull public java.util.List<java.lang.String> getReadPermissions();
    method @NonNull public String getScreenKey();
    method @Nullable public String getSummary();
    method @Nullable public String getTitle();
    method @NonNull public java.util.List<java.lang.String> getWritePermissions();
    method public int getWriteSensitivity();
    method public boolean isAvailable();
    method public boolean isEnabled();
    method public boolean isRestricted();
    method public boolean isWritable();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.service.settings.preferences.SettingsPreferenceMetadata> CREATOR;
    field public static final int INTENT_ONLY = 2; // 0x2
    field public static final int NOT_SENSITIVE = 0; // 0x0
    field public static final int SENSITIVE = 1; // 0x1
  }
  public static final class SettingsPreferenceMetadata.Builder {
    ctor public SettingsPreferenceMetadata.Builder(@NonNull String, @NonNull String);
    method @NonNull public android.service.settings.preferences.SettingsPreferenceMetadata build();
    method @NonNull public android.service.settings.preferences.SettingsPreferenceMetadata.Builder setAvailable(boolean);
    method @NonNull public android.service.settings.preferences.SettingsPreferenceMetadata.Builder setBreadcrumbs(@NonNull java.util.List<java.lang.String>);
    method @NonNull public android.service.settings.preferences.SettingsPreferenceMetadata.Builder setEnabled(boolean);
    method @NonNull public android.service.settings.preferences.SettingsPreferenceMetadata.Builder setExtras(@NonNull android.os.Bundle);
    method @NonNull public android.service.settings.preferences.SettingsPreferenceMetadata.Builder setLaunchIntent(@Nullable android.app.PendingIntent);
    method @NonNull public android.service.settings.preferences.SettingsPreferenceMetadata.Builder setReadPermissions(@NonNull java.util.List<java.lang.String>);
    method @NonNull public android.service.settings.preferences.SettingsPreferenceMetadata.Builder setRestricted(boolean);
    method @NonNull public android.service.settings.preferences.SettingsPreferenceMetadata.Builder setSummary(@Nullable String);
    method @NonNull public android.service.settings.preferences.SettingsPreferenceMetadata.Builder setTitle(@Nullable String);
    method @NonNull public android.service.settings.preferences.SettingsPreferenceMetadata.Builder setWritable(boolean);
    method @NonNull public android.service.settings.preferences.SettingsPreferenceMetadata.Builder setWritePermissions(@NonNull java.util.List<java.lang.String>);
    method @NonNull public android.service.settings.preferences.SettingsPreferenceMetadata.Builder setWriteSensitivity(int);
  }
  @FlaggedApi("com.android.settingslib.flags.settings_catalyst") public final class SettingsPreferenceValue implements android.os.Parcelable {
    method public int describeContents();
    method public boolean getBooleanValue();
    method public double getDoubleValue();
    method public long getLongValue();
    method @Nullable public String getStringValue();
    method public int getType();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.service.settings.preferences.SettingsPreferenceValue> CREATOR;
    field public static final int TYPE_BOOLEAN = 0; // 0x0
    field public static final int TYPE_DOUBLE = 2; // 0x2
    field public static final int TYPE_LONG = 1; // 0x1
    field public static final int TYPE_STRING = 3; // 0x3
  }
  public static final class SettingsPreferenceValue.Builder {
    ctor public SettingsPreferenceValue.Builder(int);
    method @NonNull public android.service.settings.preferences.SettingsPreferenceValue build();
    method @NonNull public android.service.settings.preferences.SettingsPreferenceValue.Builder setBooleanValue(boolean);
    method @NonNull public android.service.settings.preferences.SettingsPreferenceValue.Builder setDoubleValue(double);
    method @NonNull public android.service.settings.preferences.SettingsPreferenceValue.Builder setLongValue(long);
    method @NonNull public android.service.settings.preferences.SettingsPreferenceValue.Builder setStringValue(@Nullable String);
  }
}
package android.service.textservice {
  public abstract class SpellCheckerService extends android.app.Service {
+4 −0
Original line number Diff line number Diff line
package android.service.settings.preferences;

/** @hide */
parcelable GetValueRequest;
 No newline at end of file
+139 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 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.service.settings.preferences;

import android.annotation.FlaggedApi;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;

import androidx.annotation.NonNull;

import com.android.settingslib.flags.Flags;

import java.util.Objects;

/**
 * Request parameters to retrieve the current value of a Settings Preference.
 *
 * <p>This object passed to {@link SettingsPreferenceService#onGetPreferenceValue} will result
 * in a {@link GetValueResult}.
 *
 * <ul>
 *   <li>{@link #getScreenKey} is a parameter to distinguish the container screen
 *   of a preference as a preference key may not be unique within its application.
 *   <li>{@link #getPreferenceKey} is a parameter to identify the preference for which the value is
 *   being requested. These keys will be unique with their Preference Screen, but may not be unique
 *   within their application, so it is required to pair this with {@link #getScreenKey} to
 *   ensure this request matches the intended target.
 * </ul>
 */
@FlaggedApi(Flags.FLAG_SETTINGS_CATALYST)
public final class GetValueRequest implements Parcelable {

    @NonNull
    private final String mScreenKey;
    @NonNull
    private final String mPreferenceKey;

    /**
     * Returns the screen key of requested Preference.
     */
    @NonNull
    public String getScreenKey() {
        return mScreenKey;
    }

    /**
     * Returns the key of requested Preference.
     */
    @NonNull
    public String getPreferenceKey() {
        return mPreferenceKey;
    }

    private GetValueRequest(@NonNull Builder builder) {
        mScreenKey = builder.mScreenKey;
        mPreferenceKey = builder.mPreferenceKey;
    }

    private GetValueRequest(@NonNull Parcel in) {
        mScreenKey = Objects.requireNonNull(in.readString8());
        mPreferenceKey = Objects.requireNonNull(in.readString8());
    }

    /** @hide */
    @Override
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        dest.writeString8(mScreenKey);
        dest.writeString8(mPreferenceKey);
    }

    /** @hide */
    @Override
    public int describeContents() {
        return 0;
    }

    /**
     * Parcelable Creator for {@link GetValueRequest}.
     */
    @NonNull
    public static final Creator<GetValueRequest> CREATOR = new Creator<GetValueRequest>() {
        @Override
        public GetValueRequest createFromParcel(@NonNull Parcel in) {
            return new GetValueRequest(in);
        }

        @Override
        public GetValueRequest[] newArray(int size) {
            return new GetValueRequest[size];
        }
    };

    /**
     * Builder to construct {@link GetValueRequest}.
     */
    public static final class Builder {
        private final String mScreenKey;
        private final String mPreferenceKey;

        /**
         * Create Builder instance.
         * @param screenKey required to be not empty
         * @param preferenceKey required to be not empty
         */
        public Builder(@NonNull String screenKey, @NonNull String preferenceKey) {
            if (TextUtils.isEmpty(screenKey)) {
                throw new IllegalArgumentException("screenKey cannot be empty");
            }
            if (TextUtils.isEmpty(preferenceKey)) {
                throw new IllegalArgumentException("preferenceKey cannot be empty");
            }
            mScreenKey = screenKey;
            mPreferenceKey = preferenceKey;
        }

        /**
         * Constructs an immutable {@link GetValueRequest} object.
         */
        @NonNull
        public GetValueRequest build() {
            return new GetValueRequest(this);
        }
    }
}
+4 −0
Original line number Diff line number Diff line
package android.service.settings.preferences;

/** @hide */
parcelable GetValueResult;
 No newline at end of file
Loading