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

Commit 82ec045d authored by Brad Ebinger's avatar Brad Ebinger Committed by Automerger Merge Worker
Browse files

Merge "[RCS UCE] Support the capabilities request with OPTIONS mechanism." am: d0a51a14

Original change: https://android-review.googlesource.com/c/platform/frameworks/opt/net/ims/+/1574903

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I4c31fec492ce44a199e572f3d8e201e76db04e06
parents 5d2cf055 d0a51a14
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import android.telephony.ims.aidl.IImsRcsFeature;
import android.telephony.ims.aidl.IImsRegistration;
import android.telephony.ims.aidl.IImsRegistrationCallback;
import android.telephony.ims.aidl.IPublishResponseCallback;
import android.telephony.ims.aidl.IOptionsResponseCallback;
import android.telephony.ims.aidl.ISipTransport;
import android.telephony.ims.aidl.ISubscribeResponseCallback;
import android.telephony.ims.feature.CapabilityChangeRequest;
@@ -242,6 +243,15 @@ public class RcsFeatureConnection extends FeatureConnection {
        }
    }

    public void sendOptionsCapabilityRequest(Uri contactUri, List<String> myCapabilities,
            IOptionsResponseCallback callback) throws RemoteException {
        synchronized (mLock) {
            checkServiceIsReady();
            getServiceInterface(mBinder).sendOptionsCapabilityRequest(contactUri, myCapabilities,
                    callback);
        }
    }

    @Override
    @VisibleForTesting
    public Integer retrieveFeatureState() {
+6 −0
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ import android.telephony.ims.aidl.IImsRcsFeature;
import android.telephony.ims.aidl.IImsRegistration;
import android.telephony.ims.aidl.IImsRegistrationCallback;
import android.telephony.ims.aidl.IOptionsRequestCallback;
import android.telephony.ims.aidl.IOptionsResponseCallback;
import android.telephony.ims.aidl.IPublishResponseCallback;
import android.telephony.ims.aidl.ISipTransport;
import android.telephony.ims.aidl.ISubscribeResponseCallback;
@@ -426,6 +427,11 @@ public class RcsFeatureManager implements FeatureUpdates {
        mRcsFeatureConnection.requestCapabilities(uris, c);
    }

    public void sendOptionsCapabilityRequest(Uri contactUri, List<String> myCapabilities,
            IOptionsResponseCallback callback) throws RemoteException {
        mRcsFeatureConnection.sendOptionsCapabilityRequest(contactUri, myCapabilities, callback);
    }

    /**
     * Disable all of the UCE capabilities.
     */
+10 −25
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.os.HandlerThread;
import android.os.Looper;
import android.os.RemoteException;
import android.telephony.ims.RcsContactUceCapability;
import android.telephony.ims.RcsContactUceCapability.CapabilityMechanism;
import android.telephony.ims.RcsUceAdapter;
import android.telephony.ims.RcsUceAdapter.PublishState;
import android.telephony.ims.RcsUceAdapter.StackPublishTriggerType;
@@ -86,7 +87,7 @@ public class UceController {
        /**
         * Retrieve the device's capabilities.
         */
        RcsContactUceCapability getDeviceCapabilities();
        RcsContactUceCapability getDeviceCapabilities(@CapabilityMechanism int mechanism);

        /**
         * The network reply that the request is forbidden.
@@ -109,13 +110,6 @@ public class UceController {
         */
        boolean isRequestForbiddenByNetwork();

        /**
         * Trigger the capabilities request with OPTIONS
         */
        void requestCapabilitiesByOptions(@NonNull Uri contactUri,
                @NonNull RcsContactUceCapability ownCapabilities,
                @NonNull IOptionsResponseCallback callback);

        /**
         * The method is called when the given contacts' capabilities are expired and need to be
         * refreshed.
@@ -172,8 +166,7 @@ public class UceController {
        /**
         * @return an {@link OptionsController} associated with the subscription id specified.
         */
        OptionsController createOptionsController(Context context, int subId,
                UceControllerCallback c, Looper looper);
        OptionsController createOptionsController(Context context, int subId);
    }

    private ControllerFactory mControllerFactory = new ControllerFactory() {
@@ -195,9 +188,8 @@ public class UceController {
        }

        @Override
        public OptionsController createOptionsController(Context context, int subId,
                UceControllerCallback c, Looper looper) {
            return new OptionsControllerImpl(context, subId, c, looper);
        public OptionsController createOptionsController(Context context, int subId) {
            return new OptionsControllerImpl(context, subId);
        }
    };

@@ -254,14 +246,14 @@ public class UceController {
        mPublishController = mControllerFactory.createPublishController(mContext, mSubId,
                mCtrlCallback, mLooper);
        mSubscribeController = mControllerFactory.createSubscribeController(mContext, mSubId);
        mOptionsController = mControllerFactory.createOptionsController(mContext, mSubId,
                mCtrlCallback, mLooper);
        mOptionsController = mControllerFactory.createOptionsController(mContext, mSubId);
    }

    private void initRequestManager() {
        mRequestManager = mRequestManagerFactory.createRequestManager(mContext, mSubId, mLooper,
                mCtrlCallback);
        mRequestManager.setSubscribeController(mSubscribeController);
        mRequestManager.setOptionsController(mOptionsController);
    }

    /**
@@ -339,8 +331,8 @@ public class UceController {
        }

        @Override
        public RcsContactUceCapability getDeviceCapabilities() {
            return mPublishController.getDeviceCapabilities();
        public RcsContactUceCapability getDeviceCapabilities(@CapabilityMechanism int mechanism) {
            return mPublishController.getDeviceCapabilities(mechanism);
        }

        @Override
@@ -359,13 +351,6 @@ public class UceController {
            return (mServerState.getForbiddenErrorCode() != null) ? true : false;
        }

        @Override
        public void requestCapabilitiesByOptions(@NonNull Uri uri,
                @NonNull RcsContactUceCapability ownCapabilities,
                @NonNull IOptionsResponseCallback callback) {
            mOptionsController.sendCapabilitiesRequest(uri, ownCapabilities, callback);
        }

        @Override
        public void refreshCapabilities(@NonNull List<Uri> contactNumbers,
                @NonNull IRcsUceControllerCallback callback) throws RemoteException{
@@ -520,7 +505,7 @@ public class UceController {
    public void retrieveOptionsCapabilitiesForRemote(@NonNull Uri contactUri,
            @NonNull List<String> remoteCapabilities, @NonNull IOptionsRequestCallback c) {
        logi("retrieveOptionsCapabilitiesForRemote");
        mOptionsController.retrieveCapabilitiesForRemote(contactUri, remoteCapabilities, c);
        mRequestManager.retrieveCapabilitiesForRemote(contactUri, remoteCapabilities, c);
    }

    /**
+3 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.util.Log;

import com.android.ims.rcs.uce.eab.EabProvider.ContactColumns;
import com.android.ims.rcs.uce.eab.EabProvider.EabCommonColumns;
import com.android.ims.rcs.uce.eab.EabProvider.OptionsColumns;
import com.android.ims.rcs.uce.eab.EabProvider.PresenceTupleColumns;
import com.android.ims.rcs.uce.util.UceUtils;

@@ -144,6 +145,8 @@ public class EabUtil {
        int count = 0;
        count = context.getContentResolver().delete(EabProvider.PRESENCE_URI,
                PresenceTupleColumns.EAB_COMMON_ID + "=?", new String[]{String.valueOf(commonId)});
        context.getContentResolver().delete(EabProvider.OPTIONS_URI,
                OptionsColumns.EAB_COMMON_ID + "=?", new String[]{String.valueOf(commonId)});
        context.getContentResolver().delete(EabProvider.COMMON_URI,
                EabCommonColumns.EAB_CONTACT_ID + "=?", new String[]{String.valueOf(contactId)});
        context.getContentResolver().delete(EabProvider.CONTACT_URI,
+7 −12
Original line number Diff line number Diff line
@@ -18,8 +18,7 @@ package com.android.ims.rcs.uce.options;

import android.annotation.NonNull;
import android.net.Uri;
import android.telephony.ims.RcsContactUceCapability;
import android.telephony.ims.aidl.IOptionsRequestCallback;
import android.os.RemoteException;
import android.telephony.ims.aidl.IOptionsResponseCallback;

import com.android.ims.rcs.uce.ControllerBase;
@@ -31,15 +30,11 @@ import java.util.List;
 */
public interface OptionsController extends ControllerBase {
    /**
     * Request the capabilities for the requested contact.
     * Request the contact's capabilities of the given contact.
     * @param contactUri The contact of the capabilities is being requested for.
     * @param deviceFeatureTags The feature tags of the device's capabilities.
     * @param c The response callback of the OPTIONS capabilities request.
     */
    void sendCapabilitiesRequest(@NonNull Uri contactUri,
            @NonNull RcsContactUceCapability ownCapabilities, @NonNull IOptionsResponseCallback c);

    /**
     * Retrieve the device's capabilities. This request is from the ImsService to send the
     * capabilities to the remote side.
     */
    void retrieveCapabilitiesForRemote(@NonNull Uri contactUri,
            @NonNull List<String> remoteCapabilities, @NonNull IOptionsRequestCallback c);
    void sendCapabilitiesRequest(@NonNull Uri contactUri, @NonNull List<String> deviceFeatureTags,
            @NonNull IOptionsResponseCallback c) throws RemoteException;
}
Loading