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

Commit 83877c7f authored by James Lin's avatar James Lin Committed by Automerger Merge Worker
Browse files

Merge "UCE OPTIONS APIs updated" into sc-dev am: 7f65df99

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/13916857

Change-Id: Ifce95972a575882677d57e3a09b426106a1b626c
parents 4a59d0fb 7f65df99
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -13293,6 +13293,7 @@ package android.telephony.ims {
    method @Nullable public android.telephony.ims.RcsContactPresenceTuple getCapabilityTuple(@NonNull String);
    method @NonNull public java.util.List<android.telephony.ims.RcsContactPresenceTuple> getCapabilityTuples();
    method @NonNull public android.net.Uri getContactUri();
    method @NonNull public java.util.Set<java.lang.String> getFeatureTags();
    method public int getRequestResult();
    method public int getSourceType();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
@@ -13307,6 +13308,14 @@ package android.telephony.ims {
    field public static final int SOURCE_TYPE_NETWORK = 0; // 0x0
  }
  public static final class RcsContactUceCapability.OptionsBuilder {
    ctor public RcsContactUceCapability.OptionsBuilder(@NonNull android.net.Uri);
    method @NonNull public android.telephony.ims.RcsContactUceCapability.OptionsBuilder addFeatureTag(@NonNull String);
    method @NonNull public android.telephony.ims.RcsContactUceCapability.OptionsBuilder addFeatureTags(@NonNull java.util.Set<java.lang.String>);
    method @NonNull public android.telephony.ims.RcsContactUceCapability build();
    method @NonNull public android.telephony.ims.RcsContactUceCapability.OptionsBuilder setRequestResult(int);
  }
  public static final class RcsContactUceCapability.PresenceBuilder {
    ctor public RcsContactUceCapability.PresenceBuilder(@NonNull android.net.Uri, int, int);
    method @NonNull public android.telephony.ims.RcsContactUceCapability.PresenceBuilder addCapabilityTuple(@NonNull android.telephony.ims.RcsContactPresenceTuple);
@@ -13600,7 +13609,7 @@ package android.telephony.ims.feature {
package android.telephony.ims.stub {
  public interface CapabilityExchangeEventListener {
    method public void onRemoteCapabilityRequest(@NonNull android.net.Uri, @NonNull java.util.List<java.lang.String>, @NonNull android.telephony.ims.stub.CapabilityExchangeEventListener.OptionsRequestCallback) throws android.telephony.ims.ImsException;
    method public void onRemoteCapabilityRequest(@NonNull android.net.Uri, @NonNull java.util.Set<java.lang.String>, @NonNull android.telephony.ims.stub.CapabilityExchangeEventListener.OptionsRequestCallback) throws android.telephony.ims.ImsException;
    method public void onRequestPublishCapabilities(int) throws android.telephony.ims.ImsException;
    method public void onUnpublish() throws android.telephony.ims.ImsException;
  }
@@ -13797,7 +13806,7 @@ package android.telephony.ims.stub {
  public class RcsCapabilityExchangeImplBase {
    ctor public RcsCapabilityExchangeImplBase(@NonNull java.util.concurrent.Executor);
    method public void publishCapabilities(@NonNull String, @NonNull android.telephony.ims.stub.RcsCapabilityExchangeImplBase.PublishResponseCallback);
    method public void sendOptionsCapabilityRequest(@NonNull android.net.Uri, @NonNull java.util.List<java.lang.String>, @NonNull android.telephony.ims.stub.RcsCapabilityExchangeImplBase.OptionsResponseCallback);
    method public void sendOptionsCapabilityRequest(@NonNull android.net.Uri, @NonNull java.util.Set<java.lang.String>, @NonNull android.telephony.ims.stub.RcsCapabilityExchangeImplBase.OptionsResponseCallback);
    method public void subscribeForCapabilities(@NonNull java.util.Collection<android.net.Uri>, @NonNull android.telephony.ims.stub.RcsCapabilityExchangeImplBase.SubscribeResponseCallback);
    field public static final int COMMAND_CODE_FETCH_ERROR = 3; // 0x3
    field public static final int COMMAND_CODE_GENERIC_FAILURE = 1; // 0x1
+22 −6
Original line number Diff line number Diff line
@@ -29,7 +29,9 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * Contains the User Capability Exchange capabilities corresponding to a contact's URI.
@@ -110,7 +112,6 @@ public final class RcsContactUceCapability implements Parcelable {
    /**
     * Builder to help construct {@link RcsContactUceCapability} instances when capabilities were
     * queried through SIP OPTIONS.
     * @hide
     */
    public static final class OptionsBuilder {

@@ -151,7 +152,7 @@ public final class RcsContactUceCapability implements Parcelable {
         * @param tags the list of the supported feature tags
         * @return this OptionBuilder
         */
        public @NonNull OptionsBuilder addFeatureTags(@NonNull List<String> tags) {
        public @NonNull OptionsBuilder addFeatureTags(@NonNull Set<String> tags) {
            mCapabilities.mFeatureTags.addAll(tags);
            return this;
        }
@@ -220,7 +221,7 @@ public final class RcsContactUceCapability implements Parcelable {
    private @CapabilityMechanism int mCapabilityMechanism;
    private @RequestResult int mRequestResult;

    private final List<String> mFeatureTags = new ArrayList<>();
    private final Set<String> mFeatureTags = new HashSet<>();
    private final List<RcsContactPresenceTuple> mPresenceTuples = new ArrayList<>();

    private RcsContactUceCapability(@NonNull Uri contactUri, @CapabilityMechanism int mechanism,
@@ -235,7 +236,9 @@ public final class RcsContactUceCapability implements Parcelable {
        mCapabilityMechanism = in.readInt();
        mSourceType = in.readInt();
        mRequestResult = in.readInt();
        in.readStringList(mFeatureTags);
        List<String> featureTagList = new ArrayList<>();
        in.readStringList(featureTagList);
        mFeatureTags.addAll(featureTagList);
        in.readParcelableList(mPresenceTuples, RcsContactPresenceTuple.class.getClassLoader());
    }

@@ -245,7 +248,7 @@ public final class RcsContactUceCapability implements Parcelable {
        out.writeInt(mCapabilityMechanism);
        out.writeInt(mSourceType);
        out.writeInt(mRequestResult);
        out.writeStringList(mFeatureTags);
        out.writeStringList(new ArrayList<>(mFeatureTags));
        out.writeParcelableList(mPresenceTuples, flags);
    }

@@ -285,7 +288,20 @@ public final class RcsContactUceCapability implements Parcelable {
        if (mCapabilityMechanism != CAPABILITY_MECHANISM_OPTIONS) {
            return Collections.emptyList();
        }
        return Collections.unmodifiableList(mFeatureTags);
        return Collections.unmodifiableList(new ArrayList<>(mFeatureTags));
    }

    /**
     * @return The feature tags present in the OPTIONS response from the network.
     * <p>
     * Note: this is only populated if {@link #getCapabilityMechanism} is
     * {@link RcsContactUceCapability#CAPABILITY_MECHANISM_OPTIONS}
     */
    public @NonNull Set<String> getFeatureTags() {
        if (mCapabilityMechanism != CAPABILITY_MECHANISM_OPTIONS) {
            return Collections.emptySet();
        }
        return Collections.unmodifiableSet(mFeatureTags);
    }

    /**
+5 −3
Original line number Diff line number Diff line
@@ -26,7 +26,8 @@ import android.telephony.ims.RcsContactUceCapability;
import android.telephony.ims.stub.CapabilityExchangeEventListener;
import android.util.Log;

import java.util.List;
import java.util.ArrayList;
import java.util.Set;

/**
 * The ICapabilityExchangeEventListener wrapper class to store the listener which is registered by
@@ -84,7 +85,7 @@ public class CapabilityExchangeAidlWrapper implements CapabilityExchangeEventLis
     * request to the framework.
     */
    public void onRemoteCapabilityRequest(@NonNull Uri contactUri,
            @NonNull List<String> remoteCapabilities, @NonNull OptionsRequestCallback callback)
            @NonNull Set<String> remoteCapabilities, @NonNull OptionsRequestCallback callback)
            throws ImsException {
        ICapabilityExchangeEventListener listener = mListenerBinder;
        if (listener == null) {
@@ -114,7 +115,8 @@ public class CapabilityExchangeAidlWrapper implements CapabilityExchangeEventLis
        };

        try {
            listener.onRemoteCapabilityRequest(contactUri, remoteCapabilities, internalCallback);
            listener.onRemoteCapabilityRequest(contactUri, new ArrayList<>(remoteCapabilities),
                    internalCallback);
        } catch (RemoteException e) {
            Log.w(LOG_TAG, "Remote capability request exception: " + e);
            throw new ImsException("Remote is not available",
+3 −2
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ import com.android.internal.telephony.util.TelephonyUtils;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.HashSet;
import java.util.List;
import java.util.concurrent.CancellationException;
import java.util.concurrent.CompletableFuture;
@@ -145,8 +146,8 @@ public class RcsFeature extends ImsFeature {
                throws RemoteException {
            OptionsResponseCallback callbackWrapper = new RcsOptionsResponseAidlWrapper(callback);
            executeMethodAsync(() -> mReference.getCapabilityExchangeImplBaseInternal()
                    .sendOptionsCapabilityRequest(contactUri, myCapabilities, callbackWrapper),
                    "sendOptionsCapabilityRequest");
                    .sendOptionsCapabilityRequest(contactUri, new HashSet<>(myCapabilities),
                        callbackWrapper), "sendOptionsCapabilityRequest");
        }

        // Call the methods with a clean calling identity on the executor and wait indefinitely for
+4 −3
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ import android.telephony.ims.RcsUceAdapter;
import android.telephony.ims.feature.ImsFeature;
import android.telephony.ims.feature.RcsFeature;

import java.util.List;
import java.util.Set;

/**
 * The interface that is used by the framework to listen to events from the vendor RCS stack
@@ -98,7 +98,8 @@ public interface CapabilityExchangeEventListener {
     * {@link OptionsRequestCallback#onRespondToCapabilityRequestWithError}.
     * @param contactUri The URI associated with the remote contact that is
     * requesting capabilities.
     * @param remoteCapabilities The remote contact's capability information.
     * @param remoteCapabilities The remote contact's capability information. The capability
     * information is in the format defined in RCC.07 section 2.6.1.3.
     * @param callback The callback of this request which is sent from the remote user.
     * @throws ImsException If this {@link RcsCapabilityExchangeImplBase} instance is not
     * currently connected to the framework. This can happen if the {@link RcsFeature} is not
@@ -107,6 +108,6 @@ public interface CapabilityExchangeEventListener {
     * cases when the Telephony stack has crashed.
     */
    void onRemoteCapabilityRequest(@NonNull Uri contactUri,
            @NonNull List<String> remoteCapabilities,
            @NonNull Set<String> remoteCapabilities,
            @NonNull OptionsRequestCallback callback) throws ImsException;
}
Loading