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

Commit 5400101e authored by Grace Jia's avatar Grace Jia
Browse files

Add new API to notify CallRedirectionService timed out.

Currently, CallRedirectionService is unable to know if a call failed due
to timeout. Add new API to notify them and call it when Telecom wait too
long to complete a call redirection request.

Bug: 187346611
Test: CTS test
Change-Id: I65aa0a893b3e35a412851ec969f6cdec74af8fab
parent 6efa908b
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -38094,6 +38094,7 @@ package android.telecom {
    method public final void cancelCall();
    method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
    method public abstract void onPlaceCall(@NonNull android.net.Uri, @NonNull android.telecom.PhoneAccountHandle, boolean);
    method public void onRedirectionTimeout();
    method public final boolean onUnbind(@NonNull android.content.Intent);
    method public final void placeCallUnmodified();
    method public final void redirectCall(@NonNull android.net.Uri, @NonNull android.telecom.PhoneAccountHandle, boolean);
+25 −0
Original line number Diff line number Diff line
@@ -88,6 +88,13 @@ public abstract class CallRedirectionService extends Service {
                                     @NonNull PhoneAccountHandle initialPhoneAccount,
                                     boolean allowInteractiveResponse);

    /**
     * Telecom calls this method when times out waiting for the {@link CallRedirectionService} to
     * call {@link #placeCallUnmodified()}, {@link #redirectCall(Uri, PhoneAccountHandle, boolean)},
     * or {@link #cancelCall()}
     */
    public void onRedirectionTimeout() {}

    /**
     * The implemented {@link CallRedirectionService} calls this method to response a request
     * received via {@link #onPlaceCall(Uri, PhoneAccountHandle, boolean)} to inform Telecom that
@@ -157,6 +164,12 @@ public abstract class CallRedirectionService extends Service {
     */
    private static final int MSG_PLACE_CALL = 1;

    /**
     * A handler message to process the attempt to notify the operation of redirection service timed
     * out from Telecom
     */
    private static final int MSG_TIMEOUT = 2;

    /**
     * A handler to process the attempt to place call with redirection service from Telecom
     */
@@ -174,6 +187,9 @@ public abstract class CallRedirectionService extends Service {
                        args.recycle();
                    }
                    break;
                case MSG_TIMEOUT:
                    onRedirectionTimeout();
                    break;
            }
        }
    };
@@ -200,6 +216,15 @@ public abstract class CallRedirectionService extends Service {
            args.arg4 = allowInteractiveResponse;
            mHandler.obtainMessage(MSG_PLACE_CALL, args).sendToTarget();
        }

        /**
         * Telecom calls this method to inform the CallRedirectionService of the timeout waiting for
         * it to complete its operation.
         */
        @Override
        public void notifyTimeout() {
            mHandler.obtainMessage(MSG_TIMEOUT).sendToTarget();
        }
    }

    @Override
+2 −0
Original line number Diff line number Diff line
@@ -31,4 +31,6 @@ import com.android.internal.telecom.ICallRedirectionAdapter;
oneway interface ICallRedirectionService {
    void placeCall(in ICallRedirectionAdapter adapter, in Uri handle,
            in PhoneAccountHandle initialPhoneAccount, boolean allowInteractiveResponse);

    void notifyTimeout();
}