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

Commit 20b5ad30 authored by Christine Franks's avatar Christine Franks
Browse files

Require syncing be enabled before storing calls

Bug: 266740193
Test: atest CtsTelecomTestCases:android.telecom.cts.AdhocConferenceTest#testAddNewIncomingConferenceFailed --abi x86_64
Change-Id: I6cc7f3ccb954fc2224ebce780c3db4ad34b225c5
parent f2e07e6b
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -22,4 +22,6 @@ public abstract class CallMetadataSyncCallback {
    abstract void processCallControlAction(int crossDeviceCallId, int callControlAction);

    abstract void requestCrossDeviceSync(int userId);

    abstract void updateStatus(int userId, boolean shouldSyncCallMetadata);
}
+28 −5
Original line number Diff line number Diff line
@@ -39,6 +39,8 @@ public class CallMetadataSyncInCallService extends InCallService {

    @VisibleForTesting
    final Map<Call, CrossDeviceCall> mCurrentCalls = new HashMap<>();
    @VisibleForTesting
    boolean mShouldSync;
    final Call.Callback mTelecomCallback = new Call.Callback() {
        @Override
        public void onDetailsChanged(Call call, Call.Details details) {
@@ -92,12 +94,29 @@ public class CallMetadataSyncInCallService extends InCallService {
        @Override
        void requestCrossDeviceSync(int userId) {
        }

        @Override
        void updateStatus(int userId, boolean shouldSyncCallMetadata) {
            if (userId == getUserId()) {
                mShouldSync = shouldSyncCallMetadata;
                if (shouldSyncCallMetadata) {
                    initializeCalls();
                } else {
                    mCurrentCalls.clear();
                }
            }
        }
    };

    @Override
    public void onCreate() {
        super.onCreate();
        if (CompanionDeviceConfig.isEnabled(CompanionDeviceConfig.ENABLE_CONTEXT_SYNC_TELECOM)) {
        initializeCalls();
    }

    private void initializeCalls() {
        if (CompanionDeviceConfig.isEnabled(CompanionDeviceConfig.ENABLE_CONTEXT_SYNC_TELECOM)
                && mShouldSync) {
            mCurrentCalls.putAll(getCalls().stream().collect(Collectors.toMap(call -> call,
                    call -> new CrossDeviceCall(getPackageManager(), call, getCallAudioState()))));
        }
@@ -119,7 +138,8 @@ public class CallMetadataSyncInCallService extends InCallService {

    @Override
    public void onCallAdded(Call call) {
        if (CompanionDeviceConfig.isEnabled(CompanionDeviceConfig.ENABLE_CONTEXT_SYNC_TELECOM)) {
        if (CompanionDeviceConfig.isEnabled(CompanionDeviceConfig.ENABLE_CONTEXT_SYNC_TELECOM)
                && mShouldSync) {
            mCurrentCalls.put(call,
                    new CrossDeviceCall(getPackageManager(), call, getCallAudioState()));
        }
@@ -127,21 +147,24 @@ public class CallMetadataSyncInCallService extends InCallService {

    @Override
    public void onCallRemoved(Call call) {
        if (CompanionDeviceConfig.isEnabled(CompanionDeviceConfig.ENABLE_CONTEXT_SYNC_TELECOM)) {
        if (CompanionDeviceConfig.isEnabled(CompanionDeviceConfig.ENABLE_CONTEXT_SYNC_TELECOM)
                && mShouldSync) {
            mCurrentCalls.remove(call);
        }
    }

    @Override
    public void onMuteStateChanged(boolean isMuted) {
        if (CompanionDeviceConfig.isEnabled(CompanionDeviceConfig.ENABLE_CONTEXT_SYNC_TELECOM)) {
        if (CompanionDeviceConfig.isEnabled(CompanionDeviceConfig.ENABLE_CONTEXT_SYNC_TELECOM)
                && mShouldSync) {
            mCurrentCalls.values().forEach(call -> call.updateMuted(isMuted));
        }
    }

    @Override
    public void onSilenceRinger() {
        if (CompanionDeviceConfig.isEnabled(CompanionDeviceConfig.ENABLE_CONTEXT_SYNC_TELECOM)) {
        if (CompanionDeviceConfig.isEnabled(CompanionDeviceConfig.ENABLE_CONTEXT_SYNC_TELECOM)
                && mShouldSync) {
            mCurrentCalls.values().forEach(call -> call.updateSilencedIfRinging());
        }
    }