telecom-bluetooth DND bug

Bugs came in about Do Not Disturb being on but still
interrupting users of incoming calls.  Turns out, this was a
result of BluetoothInCallService putting the headset into ring
mode before Telecom informed the InCallService to not ring.

Fix is to add a new EXTRA called EXTRA_IS_SUPPRESSED_BY_DO_NOT_DISTURB.
The extra is intended for InCallServices that may interrupt the user of
an incoming call.

Bug:   208652088

Test:  maual + unit tests,
         3 DndCallFilter tests,
         2 RingerTests,
         1 CallTests

Change-Id: If275c237040c2336ad80b38e84409b2893058cdc
This commit is contained in:
Thomas Stuart
2022-08-03 18:39:57 -07:00
parent 997a17f0df
commit cc1188aed0
4 changed files with 19 additions and 0 deletions

View File

@@ -40121,6 +40121,7 @@ package android.telecom {
field public static final String EVENT_DISPLAY_DIAGNOSTIC_MESSAGE = "android.telecom.event.DISPLAY_DIAGNOSTIC_MESSAGE";
field public static final String EXTRA_DIAGNOSTIC_MESSAGE = "android.telecom.extra.DIAGNOSTIC_MESSAGE";
field public static final String EXTRA_DIAGNOSTIC_MESSAGE_ID = "android.telecom.extra.DIAGNOSTIC_MESSAGE_ID";
field public static final String EXTRA_IS_SUPPRESSED_BY_DO_NOT_DISTURB = "android.telecom.extra.IS_SUPPRESSED_BY_DO_NOT_DISTURB";
field public static final String EXTRA_LAST_EMERGENCY_CALLBACK_TIME_MILLIS = "android.telecom.extra.LAST_EMERGENCY_CALLBACK_TIME_MILLIS";
field public static final String EXTRA_SILENT_RINGING_REQUESTED = "android.telecom.extra.SILENT_RINGING_REQUESTED";
field public static final String EXTRA_SUGGESTED_PHONE_ACCOUNTS = "android.telecom.extra.SUGGESTED_PHONE_ACCOUNTS";

View File

@@ -12327,6 +12327,8 @@ package android.telecom {
field public static final int CS_BOUND = 6; // 0x6
field public static final int DIRECT_TO_VM_FINISHED = 103; // 0x67
field public static final int DIRECT_TO_VM_INITIATED = 102; // 0x66
field public static final int DND_CHECK_COMPLETED = 110; // 0x6e
field public static final int DND_CHECK_INITIATED = 109; // 0x6d
field public static final int FILTERING_COMPLETED = 107; // 0x6b
field public static final int FILTERING_INITIATED = 106; // 0x6a
field public static final int FILTERING_TIMED_OUT = 108; // 0x6c
@@ -12366,6 +12368,7 @@ package android.telecom {
field @NonNull public static final android.os.Parcelable.Creator<android.telecom.ParcelableCallAnalytics.EventTiming> CREATOR;
field public static final int DIRECT_TO_VM_FINISHED_TIMING = 8; // 0x8
field public static final int DISCONNECT_TIMING = 2; // 0x2
field public static final int DND_PRE_CALL_PRE_CHECK_TIMING = 12; // 0xc
field public static final int FILTERING_COMPLETED_TIMING = 10; // 0xa
field public static final int FILTERING_TIMED_OUT_TIMING = 11; // 0xb
field public static final int HOLD_TIMING = 3; // 0x3

View File

@@ -167,6 +167,18 @@ public final class Call {
@Deprecated
public static final String AVAILABLE_PHONE_ACCOUNTS = "selectPhoneAccountAccounts";
/**
* Extra key intended for {@link InCallService}s that notify the user of an incoming call. When
* EXTRA_IS_SUPPRESSED_BY_DO_NOT_DISTURB returns true, the {@link InCallService} should not
* interrupt the user of the incoming call because the call is being suppressed by Do Not
* Disturb settings.
*
* This extra will be removed from the {@link Call} object for {@link InCallService}s that do
* not hold the {@link android.Manifest.permission#READ_CONTACTS} permission.
*/
public static final String EXTRA_IS_SUPPRESSED_BY_DO_NOT_DISTURB =
"android.telecom.extra.IS_SUPPRESSED_BY_DO_NOT_DISTURB";
/**
* Key for extra used to pass along a list of {@link PhoneAccountSuggestion}s to the in-call
* UI when a call enters the {@link #STATE_SELECT_PHONE_ACCOUNT} state. The list included here

View File

@@ -111,6 +111,8 @@ public class ParcelableCallAnalytics implements Parcelable {
public static final int FILTERING_INITIATED = 106;
public static final int FILTERING_COMPLETED = 107;
public static final int FILTERING_TIMED_OUT = 108;
public static final int DND_CHECK_INITIATED = 109;
public static final int DND_CHECK_COMPLETED = 110;
public static final int SKIP_RINGING = 200;
public static final int SILENCE = 201;
@@ -195,6 +197,7 @@ public class ParcelableCallAnalytics implements Parcelable {
public static final int BLOCK_CHECK_FINISHED_TIMING = 9;
public static final int FILTERING_COMPLETED_TIMING = 10;
public static final int FILTERING_TIMED_OUT_TIMING = 11;
public static final int DND_PRE_CALL_PRE_CHECK_TIMING = 12;
/** {@hide} */
public static final int START_CONNECTION_TO_REQUEST_DISCONNECT_TIMING = 12;