Merge "Use STREAM_VOICE_CALL when device connected to le BT device or hearing aid device to play tones get from ToneGenerator." into tm-dev
diff --git a/src/com/android/server/telecom/CallAudioManager.java b/src/com/android/server/telecom/CallAudioManager.java
index 39111f3..1863cde 100644
--- a/src/com/android/server/telecom/CallAudioManager.java
+++ b/src/com/android/server/telecom/CallAudioManager.java
@@ -468,10 +468,11 @@
@VisibleForTesting
public boolean startRinging() {
synchronized (mCallsManager.getLock()) {
- boolean result = mRinger.startRinging(mForegroundCall,
+ Call localForegroundCall = mForegroundCall;
+ boolean result = mRinger.startRinging(localForegroundCall,
mCallAudioRouteStateMachine.isHfpDeviceAvailable());
if (result) {
- mForegroundCall.setStartRingTime();
+ localForegroundCall.setStartRingTime();
}
return result;
}
diff --git a/src/com/android/server/telecom/CallsManager.java b/src/com/android/server/telecom/CallsManager.java
index d4526ad..ef98e5a 100755
--- a/src/com/android/server/telecom/CallsManager.java
+++ b/src/com/android/server/telecom/CallsManager.java
@@ -140,6 +140,7 @@
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
@@ -343,10 +344,8 @@
private RespondViaSmsManager mRespondViaSmsManager;
private final Ringer mRinger;
private final InCallWakeLockController mInCallWakeLockController;
- // For this set initial table size to 16 because we add 13 listeners in
- // the CallsManager constructor.
- private final Set<CallsManagerListener> mListeners = Collections.newSetFromMap(
- new ConcurrentHashMap<CallsManagerListener, Boolean>(16, 0.9f, 1));
+ private final CopyOnWriteArrayList<CallsManagerListener> mListeners =
+ new CopyOnWriteArrayList<>();
private final HeadsetMediaButton mHeadsetMediaButton;
private final WiredHeadsetManager mWiredHeadsetManager;
private final SystemStateHelper mSystemStateHelper;
@@ -579,7 +578,6 @@
mListeners.add(mInCallWakeLockController);
mListeners.add(statusBarNotifier);
mListeners.add(mCallLogManager);
- mListeners.add(mPhoneStateBroadcaster);
mListeners.add(mInCallController);
mListeners.add(mCallDiagnosticServiceController);
mListeners.add(mCallAudioManager);
@@ -590,6 +588,9 @@
mListeners.add(mProximitySensorManager);
mListeners.add(audioProcessingNotification);
+ // this needs to be after the mCallAudioManager
+ mListeners.add(mPhoneStateBroadcaster);
+
// There is no USER_SWITCHED broadcast for user 0, handle it here explicitly.
final UserManager userManager = UserManager.get(mContext);
// Don't load missed call if it is run in split user model.
diff --git a/src/com/android/server/telecom/PhoneAccountRegistrar.java b/src/com/android/server/telecom/PhoneAccountRegistrar.java
index 9597403..c566e5a 100644
--- a/src/com/android/server/telecom/PhoneAccountRegistrar.java
+++ b/src/com/android/server/telecom/PhoneAccountRegistrar.java
@@ -366,11 +366,11 @@
isSimAccount = true;
}
- Log.i(this, "setUserSelectedOutgoingPhoneAccount: %s", accountHandle);
mState.defaultOutgoingAccountHandles
.put(userHandle, new DefaultPhoneAccountHandle(userHandle, accountHandle,
account.getGroupId()));
}
+ Log.i(this, "setUserSelectedOutgoingPhoneAccount: %s", accountHandle);
// Potentially update the default voice subid in SubscriptionManager.
if (!Objects.equals(currentDefaultPhoneAccount, accountHandle)) {
diff --git a/src/com/android/server/telecom/TelecomServiceImpl.java b/src/com/android/server/telecom/TelecomServiceImpl.java
index f5dd786..06a190b 100644
--- a/src/com/android/server/telecom/TelecomServiceImpl.java
+++ b/src/com/android/server/telecom/TelecomServiceImpl.java
@@ -254,6 +254,14 @@
String callingFeatureId) {
try {
Log.startSession("TSI.gOSMPA", Log.getPackageAbbreviation(callingPackage));
+ try {
+ enforceCallingPackage(callingPackage, "getOwnSelfManagedPhoneAccounts");
+ }
+ catch(SecurityException se){
+ EventLog.writeEvent(0x534e4554, "231986341", Binder.getCallingUid(),
+ "getOwnSelfManagedPhoneAccounts: invalid calling package");
+ throw se;
+ }
if (!canReadMangeOwnCalls("Requires MANAGE_OWN_CALLS permission.")) {
throw new SecurityException("Requires MANAGE_OWN_CALLS permission.");
}