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

Commit b536e4cd authored by Arthur Ishiguro's avatar Arthur Ishiguro
Browse files

Removes ParcelableHolder from HubServiceInfo

Fixes: 379880261
Flag: android.chre.flags.offload_api
Test: Verify no crash when populating HubServiceInfo through Parcel
Change-Id: If40f1c01a06ecc739fe85bcee6b9b238f47e67f1
parent 045ff263
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -5273,9 +5273,8 @@ package android.hardware.contexthub {
  }
  @FlaggedApi("android.chre.flags.offload_api") public final class HubServiceInfo implements android.os.Parcelable {
    ctor public HubServiceInfo(@NonNull String, int, int, int, @NonNull android.os.ParcelableHolder);
    ctor public HubServiceInfo(@NonNull String, int, int, int);
    method public int describeContents();
    method @NonNull public android.os.ParcelableHolder getExtendedInfo();
    method public int getFormat();
    method public int getMajorVersion();
    method public int getMinorVersion();
@@ -5290,7 +5289,6 @@ package android.hardware.contexthub {
  public static final class HubServiceInfo.Builder {
    ctor public HubServiceInfo.Builder(@NonNull String, int, int, int);
    method @NonNull public android.hardware.contexthub.HubServiceInfo build();
    method @NonNull public android.hardware.contexthub.HubServiceInfo.Builder setExtendedInfo(@Nullable android.os.Parcelable);
  }
  @FlaggedApi("android.chre.flags.offload_api") public interface IHubEndpointLifecycleCallback {
+3 −36
Original line number Diff line number Diff line
@@ -17,12 +17,10 @@ package android.hardware.contexthub;

import android.annotation.FlaggedApi;
import android.annotation.IntDef;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.chre.flags.Flags;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.ParcelableHolder;

import androidx.annotation.NonNull;

@@ -76,15 +74,12 @@ public final class HubServiceInfo implements Parcelable {
    private final int mMajorVersion;
    private final int mMinorVersion;

    @NonNull private final ParcelableHolder mExtendedInfo;

    /** @hide */
    public HubServiceInfo(android.hardware.contexthub.Service service) {
        mServiceDescriptor = service.serviceDescriptor;
        mFormat = service.format;
        mMajorVersion = service.majorVersion;
        mMinorVersion = service.minorVersion;
        mExtendedInfo = service.extendedInfo;
    }

    private HubServiceInfo(Parcel in) {
@@ -92,20 +87,17 @@ public final class HubServiceInfo implements Parcelable {
        mFormat = in.readInt();
        mMajorVersion = in.readInt();
        mMinorVersion = in.readInt();
        mExtendedInfo = ParcelableHolder.CREATOR.createFromParcel(in);
    }

    public HubServiceInfo(
            @NonNull String serviceDescriptor,
            @ServiceFormat int format,
            int majorVersion,
            int minorVersion,
            @NonNull ParcelableHolder extendedInfo) {
            int minorVersion) {
        mServiceDescriptor = serviceDescriptor;
        mFormat = format;
        mMajorVersion = majorVersion;
        mMinorVersion = minorVersion;
        mExtendedInfo = extendedInfo;
    }

    /** Get the unique identifier of this service. See {@link Builder} for more information. */
@@ -134,17 +126,10 @@ public final class HubServiceInfo implements Parcelable {
        return mMinorVersion;
    }

    /** Get the {@link ParcelableHolder} for the extended information about the service. */
    @NonNull
    public ParcelableHolder getExtendedInfo() {
        return mExtendedInfo;
    }

    /** Parcel implementation details */
    @Override
    public int describeContents() {
        // Passthrough describeContents flags for mExtendedInfo because we don't have FD otherwise.
        return mExtendedInfo.describeContents();
        return 0;
    }

    /** Parcel implementation details */
@@ -154,7 +139,6 @@ public final class HubServiceInfo implements Parcelable {
        dest.writeInt(mFormat);
        dest.writeInt(mMajorVersion);
        dest.writeInt(mMinorVersion);
        mExtendedInfo.writeToParcel(dest, flags);
    }

    /** Builder for a {@link HubServiceInfo} object. */
@@ -165,9 +149,6 @@ public final class HubServiceInfo implements Parcelable {
        private final int mMajorVersion;
        private final int mMinorVersion;

        private final ParcelableHolder mExtendedInfo =
                new ParcelableHolder(Parcelable.PARCELABLE_STABILITY_VINTF);

        /**
         * Create a builder for {@link HubServiceInfo} with a service descriptor.
         *
@@ -219,20 +200,6 @@ public final class HubServiceInfo implements Parcelable {
            mServiceDescriptor = serviceDescriptor;
        }

        /**
         * Set the extended information of this service.
         *
         * @param extendedInfo Parcelable with extended information about this service. The
         *     parcelable needs to have at least VINTF stability. Null can be used to clear a
         *     previously set value.
         * @throws android.os.BadParcelableException if the parcelable cannot be used.
         */
        @NonNull
        public Builder setExtendedInfo(@Nullable Parcelable extendedInfo) {
            mExtendedInfo.setParcelable(extendedInfo);
            return this;
        }

        /**
         * Build the {@link HubServiceInfo} object.
         *
@@ -244,7 +211,7 @@ public final class HubServiceInfo implements Parcelable {
                throw new IllegalStateException("Major and minor version must be set.");
            }
            return new HubServiceInfo(
                    mServiceDescriptor, mFormat, mMajorVersion, mMinorVersion, mExtendedInfo);
                    mServiceDescriptor, mFormat, mMajorVersion, mMinorVersion);
        }
    }