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

Commit 6cbb391b authored by Chris Antol's avatar Chris Antol Committed by Android (Google) Code Review
Browse files

Merge "Define Settings Preference Service API data models" into main

parents 4c0f1429 63345612
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",
@@ -1757,3 +1758,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";
  }
@@ -42003,6 +42005,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