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

Commit eb77bb80 authored by Christine Franks's avatar Christine Franks Committed by Android (Google) Code Review
Browse files

Merge "Require syncing be enabled before storing calls"

parents b86cf04b 20b5ad30
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());
        }
    }