Merge "UCE API change: Remove the unused RCS UCE APIs" am: 29c9a7a937

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

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I91aa2ee57554f1d3845b3f2d3d1964aeb018149b
This commit is contained in:
James Lin
2021-03-12 23:44:27 +00:00
committed by Automerger Merge Worker
3 changed files with 1 additions and 149 deletions

View File

@@ -25,7 +25,6 @@ import android.os.Build;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
import android.util.Log;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -385,22 +384,6 @@ public final class RcsContactPresenceTuple implements Parcelable {
return this;
}
/**
* The optional timestamp indicating the data and time of the status change of this tuple.
* Per RFC3863 section 4.1.7, the timestamp is formatted as an IMPP datetime format
* string per RFC3339.
* @hide
*/
public @NonNull Builder setTimestamp(@NonNull String timestamp) {
try {
mPresenceTuple.mTimestamp =
DateTimeFormatter.ISO_OFFSET_DATE_TIME.parse(timestamp, Instant::from);
} catch (DateTimeParseException e) {
Log.d(LOG_TAG, "Parse timestamp failed " + e);
}
return this;
}
/**
* The optional timestamp indicating the data and time of the status change of this tuple.
* Per RFC3863 section 4.1.7, the timestamp is formatted as an IMPP datetime format
@@ -534,14 +517,6 @@ public final class RcsContactPresenceTuple implements Parcelable {
return mContactUri;
}
/**
* @return the timestamp element contained in the tuple if it exists
* @hide
*/
public @Nullable String getTimestamp() {
return (mTimestamp == null) ? null : mTimestamp.toString();
}
/** @return the timestamp element contained in the tuple if it exists */
public @Nullable Instant getTime() {
return mTimestamp;

View File

@@ -439,8 +439,7 @@ public class RcsUceAdapter {
/**
* The pending request has resulted in an error and may need to be retried, depending on the
* error code. The callback {@link #onCapabilitiesReceived(List)}
* for each contacts is required to be called before {@link #onError} is called.
* error code.
* @param errorCode The reason for the framework being unable to process the request.
* @param retryIntervalMillis The time in milliseconds the requesting application should
* wait before retrying, if non-zero.
@@ -464,93 +463,6 @@ public class RcsUceAdapter {
mPublishStateCallbacks = new HashMap<>();
}
/**
* Request the User Capability Exchange capabilities for one or more contacts.
* <p>
* This will return the cached capabilities of the contact and will not perform a capability
* poll on the network unless there are contacts being queried with stale information.
* <p>
* Be sure to check the availability of this feature using
* {@link ImsRcsManager#isAvailable(int, int)} and ensuring
* {@link RcsFeature.RcsImsCapabilities#CAPABILITY_TYPE_OPTIONS_UCE} or
* {@link RcsFeature.RcsImsCapabilities#CAPABILITY_TYPE_PRESENCE_UCE} is enabled or else
* this operation will fail with {@link #ERROR_NOT_AVAILABLE} or {@link #ERROR_NOT_ENABLED}.
*
* @param contactNumbers A list of numbers that the capabilities are being requested for.
* @param executor The executor that will be used when the request is completed and the
* {@link CapabilitiesCallback} is called.
* @param c A one-time callback for when the request for capabilities completes or there is an
* error processing the request.
* @throws ImsException if the subscription associated with this instance of
* {@link RcsUceAdapter} is valid, but the ImsService associated with the subscription is not
* available. This can happen if the ImsService has crashed, for example, or if the subscription
* becomes inactive. See {@link ImsException#getCode()} for more information on the error codes.
* @hide
*/
@RequiresPermission(allOf = {Manifest.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE,
Manifest.permission.READ_CONTACTS})
public void requestCapabilities(@NonNull List<Uri> contactNumbers,
@NonNull @CallbackExecutor Executor executor,
@NonNull CapabilitiesCallback c) throws ImsException {
if (c == null) {
throw new IllegalArgumentException("Must include a non-null CapabilitiesCallback.");
}
if (executor == null) {
throw new IllegalArgumentException("Must include a non-null Executor.");
}
if (contactNumbers == null) {
throw new IllegalArgumentException("Must include non-null contact number list.");
}
IImsRcsController imsRcsController = getIImsRcsController();
if (imsRcsController == null) {
Log.e(TAG, "requestCapabilities: IImsRcsController is null");
throw new ImsException("Can not find remote IMS service",
ImsException.CODE_ERROR_SERVICE_UNAVAILABLE);
}
IRcsUceControllerCallback internalCallback = new IRcsUceControllerCallback.Stub() {
@Override
public void onCapabilitiesReceived(List<RcsContactUceCapability> contactCapabilities) {
final long callingIdentity = Binder.clearCallingIdentity();
try {
executor.execute(() -> c.onCapabilitiesReceived(contactCapabilities));
} finally {
restoreCallingIdentity(callingIdentity);
}
}
@Override
public void onComplete() {
final long callingIdentity = Binder.clearCallingIdentity();
try {
executor.execute(() -> c.onComplete());
} finally {
restoreCallingIdentity(callingIdentity);
}
}
@Override
public void onError(int errorCode, long retryAfterMilliseconds) {
final long callingIdentity = Binder.clearCallingIdentity();
try {
executor.execute(() -> c.onError(errorCode, retryAfterMilliseconds));
} finally {
restoreCallingIdentity(callingIdentity);
}
}
};
try {
imsRcsController.requestCapabilities(mSubId, mContext.getOpPackageName(),
mContext.getAttributionTag(), contactNumbers, internalCallback);
} catch (ServiceSpecificException e) {
throw new ImsException(e.toString(), e.errorCode);
} catch (RemoteException e) {
Log.e(TAG, "Error calling IImsRcsController#requestCapabilities", e);
throw new ImsException("Remote IMS Service is not available",
ImsException.CODE_ERROR_SERVICE_UNAVAILABLE);
}
}
/**
* Request the User Capability Exchange capabilities for one or more contacts.
* <p>

View File

@@ -369,41 +369,6 @@ public class RcsCapabilityExchangeImplBase {
mBinderExecutor = executor;
}
/**
* The user capabilities of one or multiple contacts have been requested by the framework.
* <p>
* The implementer must follow up this call with an
* {@link SubscribeResponseCallback#onCommandError} call to indicate this operation has failed.
* The response from the network to the SUBSCRIBE request must be sent back to the framework
* using {@link SubscribeResponseCallback#onNetworkResponse(int, String)}.
* As NOTIFY requests come in from the network, the requested contacts capabilities should be
* sent back to the framework using
* {@link SubscribeResponseCallback#onNotifyCapabilitiesUpdate(List<String>}) and
* {@link SubscribeResponseCallback#onResourceTerminated(List<Pair<Uri, String>>)}
* should be called with the presence information for the contacts specified.
* <p>
* Once the subscription is terminated,
* {@link SubscribeResponseCallback#onTerminated(String, long)} must be called for the
* framework to finish listening for NOTIFY responses.
*
* @param uris A {@link List} of the {@link Uri}s that the framework is requesting the UCE
* capabilities for.
* @param cb The callback of the subscribe request.
* @hide
*/
// executor used is defined in the constructor.
@SuppressLint("ExecutorRegistration")
public void subscribeForCapabilities(@NonNull List<Uri> uris,
@NonNull SubscribeResponseCallback cb) {
// Stub - to be implemented by service
Log.w(LOG_TAG, "subscribeForCapabilities called with no implementation.");
try {
cb.onCommandError(COMMAND_CODE_NOT_SUPPORTED);
} catch (ImsException e) {
// Do not do anything, this is a stub implementation.
}
}
/**
* The user capabilities of one or multiple contacts have been requested by the framework.
* <p>