Snap for 4657601 from e1bb423f86a75793d39f3956535b2d43555c863a to oc-m4-release
Change-Id: Id7066d31e06c1cd5b031ba87e89eab7608eff0da
diff --git a/src/com/android/server/telecom/CallAudioRouteStateMachine.java b/src/com/android/server/telecom/CallAudioRouteStateMachine.java
index c695244..d96ed1c 100644
--- a/src/com/android/server/telecom/CallAudioRouteStateMachine.java
+++ b/src/com/android/server/telecom/CallAudioRouteStateMachine.java
@@ -1293,11 +1293,9 @@
}
private void setSpeakerphoneOn(boolean on) {
- if (mAudioManager.isSpeakerphoneOn() != on) {
- Log.i(this, "turning speaker phone %s", on);
- mAudioManager.setSpeakerphoneOn(on);
- mStatusBarNotifier.notifySpeakerphone(on);
- }
+ Log.i(this, "turning speaker phone %s", on);
+ mAudioManager.setSpeakerphoneOn(on);
+ mStatusBarNotifier.notifySpeakerphone(on);
}
private void setBluetoothOn(boolean on) {
@@ -1504,6 +1502,7 @@
mDeviceSupportedRoutes = initState.getSupportedRouteMask();
mAvailableRoutes = mDeviceSupportedRoutes & getCurrentCallSupportedRoutes();
mIsMuted = initState.isMuted();
+ setSpeakerphoneOn(initState.getRoute() == CallAudioState.ROUTE_SPEAKER);
setMuteOn(mIsMuted);
mWasOnSpeaker = false;
mHasUserExplicitlyLeftBluetooth = false;
diff --git a/src/com/android/server/telecom/CallLogManager.java b/src/com/android/server/telecom/CallLogManager.java
index ba03e5c..01b0de8 100755
--- a/src/com/android/server/telecom/CallLogManager.java
+++ b/src/com/android/server/telecom/CallLogManager.java
@@ -27,6 +27,7 @@
import android.os.UserHandle;
import android.os.PersistableBundle;
import android.provider.CallLog.Calls;
+import android.telecom.Connection;
import android.telecom.DisconnectCause;
import android.telecom.Log;
import android.telecom.PhoneAccount;
@@ -226,7 +227,9 @@
call.getCallDataUsage();
int callFeatures = getCallFeatures(call.getVideoStateHistory(),
- call.getDisconnectCause().getCode() == DisconnectCause.CALL_PULLED);
+ call.getDisconnectCause().getCode() == DisconnectCause.CALL_PULLED,
+ (call.getConnectionProperties() & Connection.PROPERTY_ASSISTED_DIALING_USED) ==
+ Connection.PROPERTY_ASSISTED_DIALING_USED);
logCall(call.getCallerInfo(), logNumber, call.getPostDialDigits(), formattedViaNumber,
call.getHandlePresentation(), callLogType, callFeatures, accountHandle,
creationTime, age, callDataUsage, call.isEmergencyCall(), call.getInitiatingUser(),
@@ -303,7 +306,8 @@
* @param isPulledCall {@code true} if this call was pulled to another device.
* @return The call features.
*/
- private static int getCallFeatures(int videoState, boolean isPulledCall) {
+ private static int getCallFeatures(int videoState, boolean isPulledCall,
+ boolean isUsingAssistedDialing) {
int features = 0;
if (VideoProfile.isVideo(videoState)) {
features |= Calls.FEATURES_VIDEO;
@@ -311,6 +315,9 @@
if (isPulledCall) {
features |= Calls.FEATURES_PULLED_EXTERNALLY;
}
+ if (isUsingAssistedDialing) {
+ features |= Calls.FEATURES_ASSISTED_DIALING_USED;
+ }
return features;
}
diff --git a/src/com/android/server/telecom/ParcelableCallUtils.java b/src/com/android/server/telecom/ParcelableCallUtils.java
index 07be216..527e8e6 100644
--- a/src/com/android/server/telecom/ParcelableCallUtils.java
+++ b/src/com/android/server/telecom/ParcelableCallUtils.java
@@ -336,7 +336,10 @@
android.telecom.Call.Details.PROPERTY_HAS_CDMA_VOICE_PRIVACY,
Connection.PROPERTY_SELF_MANAGED,
- android.telecom.Call.Details.PROPERTY_SELF_MANAGED
+ android.telecom.Call.Details.PROPERTY_SELF_MANAGED,
+
+ Connection.PROPERTY_ASSISTED_DIALING_USED,
+ android.telecom.Call.Details.PROPERTY_ASSISTED_DIALING_USED
};
private static int convertConnectionToCallProperties(int connectionProperties) {
diff --git a/tests/src/com/android/server/telecom/tests/CallAudioRouteStateMachineTest.java b/tests/src/com/android/server/telecom/tests/CallAudioRouteStateMachineTest.java
index 291152f..6e09c90 100644
--- a/tests/src/com/android/server/telecom/tests/CallAudioRouteStateMachineTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallAudioRouteStateMachineTest.java
@@ -68,6 +68,7 @@
private static final int NONE = 0;
private static final int ON = 1;
private static final int OFF = 2;
+ private static final int OPTIONAL = 3;
static class RoutingTestParameters extends TestParameters {
public String name;
@@ -405,7 +406,7 @@
"Connect headset during earpiece", // name
CallAudioState.ROUTE_EARPIECE, // initialRoute
CallAudioState.ROUTE_EARPIECE, // availableRoutes
- NONE, // speakerInteraction
+ OPTIONAL, // speakerInteraction
NONE, // bluetoothInteraction
CallAudioRouteStateMachine.CONNECT_WIRED_HEADSET, // action
CallAudioState.ROUTE_WIRED_HEADSET, // expectedRoute
@@ -418,7 +419,7 @@
"Connect headset during bluetooth", // name
CallAudioState.ROUTE_BLUETOOTH, // initialRoute
CallAudioState.ROUTE_EARPIECE | CallAudioState.ROUTE_BLUETOOTH, // availableRoutes
- NONE, // speakerInteraction
+ OPTIONAL, // speakerInteraction
OFF, // bluetoothInteraction
CallAudioRouteStateMachine.CONNECT_WIRED_HEADSET, // action
CallAudioState.ROUTE_WIRED_HEADSET, // expectedRoute
@@ -444,7 +445,7 @@
"Disconnect headset during headset", // name
CallAudioState.ROUTE_WIRED_HEADSET, // initialRoute
CallAudioState.ROUTE_WIRED_HEADSET, // availableRoutes
- NONE, // speakerInteraction
+ OPTIONAL, // speakerInteraction
NONE, // bluetoothInteraction
CallAudioRouteStateMachine.DISCONNECT_WIRED_HEADSET, // action
CallAudioState.ROUTE_EARPIECE, // expectedRoute
@@ -457,8 +458,8 @@
"Disconnect headset during headset with bluetooth available", // name
CallAudioState.ROUTE_WIRED_HEADSET, // initialRoute
CallAudioState.ROUTE_WIRED_HEADSET | CallAudioState.ROUTE_BLUETOOTH, // availableRou
- NONE, // speakerInteraction
- NONE, // bluetoothInteraction
+ OPTIONAL, // speakerInteraction
+ ON, // bluetoothInteraction
CallAudioRouteStateMachine.DISCONNECT_WIRED_HEADSET, // action
CallAudioState.ROUTE_BLUETOOTH, // expectedRoute
CallAudioState.ROUTE_EARPIECE | CallAudioState.ROUTE_BLUETOOTH, // expectedAvailable
@@ -470,7 +471,7 @@
"Disconnect headset during bluetooth", // name
CallAudioState.ROUTE_BLUETOOTH, // initialRoute
CallAudioState.ROUTE_WIRED_HEADSET | CallAudioState.ROUTE_BLUETOOTH, // availableRou
- NONE, // speakerInteraction
+ OPTIONAL, // speakerInteraction
NONE, // bluetoothInteraction
CallAudioRouteStateMachine.DISCONNECT_WIRED_HEADSET, // action
CallAudioState.ROUTE_BLUETOOTH, // expectedRoute
@@ -483,7 +484,7 @@
"Disconnect headset during speakerphone", // name
CallAudioState.ROUTE_SPEAKER, // initialRoute
CallAudioState.ROUTE_WIRED_HEADSET, // availableRoutes
- NONE, // speakerInteraction
+ OPTIONAL, // speakerInteraction
NONE, // bluetoothInteraction
CallAudioRouteStateMachine.DISCONNECT_WIRED_HEADSET, // action
CallAudioState.ROUTE_SPEAKER, // expectedRoute
@@ -496,7 +497,7 @@
"Disconnect headset during speakerphone with bluetooth available", // name
CallAudioState.ROUTE_SPEAKER, // initialRoute
CallAudioState.ROUTE_WIRED_HEADSET | CallAudioState.ROUTE_BLUETOOTH, // availableRou
- NONE, // speakerInteraction
+ OPTIONAL, // speakerInteraction
NONE, // bluetoothInteraction
CallAudioRouteStateMachine.DISCONNECT_WIRED_HEADSET, // action
CallAudioState.ROUTE_SPEAKER, // expectedRoute
@@ -509,7 +510,7 @@
"Connect bluetooth during earpiece", // name
CallAudioState.ROUTE_EARPIECE, // initialRoute
CallAudioState.ROUTE_EARPIECE, // availableRoutes
- NONE, // speakerInteraction
+ OPTIONAL, // speakerInteraction
ON, // bluetoothInteraction
CallAudioRouteStateMachine.CONNECT_BLUETOOTH, // action
CallAudioState.ROUTE_BLUETOOTH, // expectedRoute
@@ -522,7 +523,7 @@
"Connect bluetooth during wired headset", // name
CallAudioState.ROUTE_WIRED_HEADSET, // initialRoute
CallAudioState.ROUTE_WIRED_HEADSET, // availableRoutes
- NONE, // speakerInteraction
+ OPTIONAL, // speakerInteraction
ON, // bluetoothInteraction
CallAudioRouteStateMachine.CONNECT_BLUETOOTH, // action
CallAudioState.ROUTE_BLUETOOTH, // expectedRoute
@@ -548,7 +549,7 @@
"Disconnect bluetooth during bluetooth without headset in", // name
CallAudioState.ROUTE_BLUETOOTH, // initialRoute
CallAudioState.ROUTE_EARPIECE | CallAudioState.ROUTE_BLUETOOTH, // availableRoutes
- NONE, // speakerInteraction
+ OPTIONAL, // speakerInteraction
OFF, // bluetoothInteraction
CallAudioRouteStateMachine.DISCONNECT_BLUETOOTH, // action
CallAudioState.ROUTE_EARPIECE, // expectedRoute
@@ -561,7 +562,7 @@
"Disconnect bluetooth during bluetooth without headset in, priority mode ", // name
CallAudioState.ROUTE_BLUETOOTH, // initialRoute
CallAudioState.ROUTE_EARPIECE | CallAudioState.ROUTE_BLUETOOTH, // availableRoutes
- NONE, // speakerInteraction
+ OPTIONAL, // speakerInteraction
OFF, // bluetoothInteraction
CallAudioRouteStateMachine.DISCONNECT_BLUETOOTH, // action
CallAudioState.ROUTE_EARPIECE, // expectedRoute
@@ -574,7 +575,7 @@
"Disconnect bluetooth during bluetooth with headset in", // name
CallAudioState.ROUTE_BLUETOOTH, // initialRoute
CallAudioState.ROUTE_WIRED_HEADSET | CallAudioState.ROUTE_BLUETOOTH, // availableRou
- NONE, // speakerInteraction
+ OPTIONAL, // speakerInteraction
OFF, // bluetoothInteraction
CallAudioRouteStateMachine.DISCONNECT_BLUETOOTH, // action
CallAudioState.ROUTE_WIRED_HEADSET, // expectedRoute
@@ -587,7 +588,7 @@
"Disconnect bluetooth during speakerphone", // name
CallAudioState.ROUTE_SPEAKER, // initialRoute
CallAudioState.ROUTE_WIRED_HEADSET | CallAudioState.ROUTE_BLUETOOTH, // availableRou
- NONE, // speakerInteraction
+ OPTIONAL, // speakerInteraction
NONE, // bluetoothInteraction
CallAudioRouteStateMachine.DISCONNECT_BLUETOOTH, // action
CallAudioState.ROUTE_SPEAKER, // expectedRoute
@@ -600,7 +601,7 @@
"Disconnect bluetooth during earpiece", // name
CallAudioState.ROUTE_EARPIECE, // initialRoute
CallAudioState.ROUTE_EARPIECE | CallAudioState.ROUTE_BLUETOOTH, // availableRoutes
- NONE, // speakerInteraction
+ OPTIONAL, // speakerInteraction
NONE, // bluetoothInteraction
CallAudioRouteStateMachine.DISCONNECT_BLUETOOTH, // action
CallAudioState.ROUTE_EARPIECE, // expectedRoute
@@ -652,7 +653,7 @@
"Switch to earpiece from bluetooth", // name
CallAudioState.ROUTE_BLUETOOTH, // initialRoute
CallAudioState.ROUTE_EARPIECE | CallAudioState.ROUTE_BLUETOOTH, // availableRoutes
- NONE, // speakerInteraction
+ OPTIONAL, // speakerInteraction
OFF, // bluetoothInteraction
CallAudioRouteStateMachine.SWITCH_EARPIECE, // action
CallAudioState.ROUTE_EARPIECE, // expectedRoute
@@ -717,7 +718,7 @@
"Switch to bluetooth from earpiece", // name
CallAudioState.ROUTE_EARPIECE, // initialRoute
CallAudioState.ROUTE_EARPIECE | CallAudioState.ROUTE_BLUETOOTH, // availableRoutes
- NONE, // speakerInteraction
+ OPTIONAL, // speakerInteraction
ON, // bluetoothInteraction
CallAudioRouteStateMachine.SWITCH_BLUETOOTH, // action
CallAudioState.ROUTE_BLUETOOTH, // expectedRoute
@@ -730,7 +731,7 @@
"Switch to bluetooth from wired headset", // name
CallAudioState.ROUTE_WIRED_HEADSET, // initialRoute
CallAudioState.ROUTE_WIRED_HEADSET | CallAudioState.ROUTE_BLUETOOTH, // availableRou
- NONE, // speakerInteraction
+ OPTIONAL, // speakerInteraction
ON, // bluetoothInteraction
CallAudioRouteStateMachine.SWITCH_BLUETOOTH, // action
CallAudioState.ROUTE_BLUETOOTH, // expectedRoute
@@ -855,6 +856,10 @@
case OFF:
verify(mockBluetoothRouteManager, never()).connectBluetoothAudio(null);
verify(mockBluetoothRouteManager).disconnectBluetoothAudio();
+ break;
+ case OPTIONAL:
+ // optional, don't test
+ break;
}
switch (params.speakerInteraction) {
@@ -864,6 +869,10 @@
case ON: // fall through
case OFF:
verify(mockAudioManager).setSpeakerphoneOn(params.speakerInteraction == ON);
+ break;
+ case OPTIONAL:
+ // optional, don't test
+ break;
}
// Verify the end state