Merge "Require syncing be enabled before storing calls"

This commit is contained in:
Christine Franks
2023-01-26 14:11:48 +00:00
committed by Android (Google) Code Review
2 changed files with 30 additions and 5 deletions

View File

@@ -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);
}

View File

@@ -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());
}
}