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

Commit ec798b52 authored by Hall Liu's avatar Hall Liu
Browse files

Fix Telecom PendingIntent mutability, logging fixes

Fix a non-marked PendingIntent in Telecom that's been causing crashes
during emergency call CTS.

Add some logging to reveal the crash logs that were being previously
swallowed by a completable future.

Also force unbind all incallservices during the special testing cleanup
command to further avoid cascading fails

Bug: 181057509
Test: atest EmergencyCallTests
Change-Id: I8bf6189535689d6c357c679f4de28915bcdbcf58
parent 0e44b583
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -3084,7 +3084,11 @@ public class CallsManager extends Call.ListenerBase
                Log.i(this, "Auto-unholding held foreground call (call doesn't support hold)");
                foregroundCall.unhold();
            }
        }, new LoggedHandlerExecutor(mHandler, "CM.mCAR", mLock));
        }, new LoggedHandlerExecutor(mHandler, "CM.mCAR", mLock))
                .exceptionally((throwable) -> {
                    Log.e(TAG, throwable, "Error while executing call removal");
                    return null;
                });
    }

    /**
+1 −1
Original line number Diff line number Diff line
@@ -1348,7 +1348,7 @@ public class InCallController extends CallsManagerListenerBase {
    /**
     * Unbinds an existing bound connection to the in-call app.
     */
    private void unbindFromServices() {
    public void unbindFromServices() {
        try {
            mContext.unregisterReceiver(mPackageChangedReceiver);
        } catch (IllegalArgumentException e) {
+1 −0
Original line number Diff line number Diff line
@@ -1790,6 +1790,7 @@ public class TelecomServiceImpl {
                                mCallsManager.markCallAsRemoved(call);
                            }
                        }
                        mCallsManager.getInCallController().unbindFromServices();
                    });
                }
            } finally {
+3 −2
Original line number Diff line number Diff line
@@ -333,7 +333,8 @@ public class DisconnectedCallNotifier extends CallsManagerListenerBase {
            UserHandle userHandle) {
        Intent intent = new Intent(action, data, mContext, TelecomBroadcastReceiver.class);
        intent.putExtra(TelecomBroadcastIntentProcessor.EXTRA_USERHANDLE, userHandle);
        return PendingIntent.getBroadcast(mContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        return PendingIntent.getBroadcast(mContext, 0, intent,
                PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
    }

    private boolean canRespondViaSms(@NonNull CallInfo call) {
@@ -354,7 +355,7 @@ public class DisconnectedCallNotifier extends CallsManagerListenerBase {
        TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(mContext);
        taskStackBuilder.addNextIntent(intent);

        return taskStackBuilder.getPendingIntent(0, 0, null, userHandle);
        return taskStackBuilder.getPendingIntent(0, PendingIntent.FLAG_IMMUTABLE, null, userHandle);
    }

    /**