Merge "Check cross user permission before clear calling identity in getSimCallManagerForUser." into sc-dev am: 90c0d19531 am: 91041aa1f8 am: 1bb435ce28
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/services/Telecomm/+/15332151
Change-Id: I58ba323cbd9c625fe799d0092eafee2bb5d0b95a
diff --git a/TEST_MAPPING b/TEST_MAPPING
index 2e14650..9be1710 100644
--- a/TEST_MAPPING
+++ b/TEST_MAPPING
@@ -15,6 +15,46 @@
"exclude-annotation": "androidx.test.filters.FlakyTest"
}
]
+ },
+ {
+ "name": "CtsTelephonySdk28TestCases",
+ "options": [
+ {
+ "exclude-annotation": "androidx.test.filters.FlakyTest"
+ }
+ ]
+ },
+ {
+ "name": "CtsTelephony2TestCases",
+ "options": [
+ {
+ "exclude-annotation": "androidx.test.filters.FlakyTest"
+ }
+ ]
+ },
+ {
+ "name": "CtsTelephony3TestCases",
+ "options": [
+ {
+ "exclude-annotation": "androidx.test.filters.FlakyTest"
+ }
+ ]
+ },
+ {
+ "name": "CtsSimRestrictedApisTestCases",
+ "options": [
+ {
+ "exclude-annotation": "androidx.test.filters.FlakyTest"
+ }
+ ]
+ },
+ {
+ "name": "CtsTelephonyProviderTestCases",
+ "options": [
+ {
+ "exclude-annotation": "androidx.test.filters.FlakyTest"
+ }
+ ]
}
],
"presubmit-large": [
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index e124de4..b7b9cff 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -99,7 +99,7 @@
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"Bloqueo de llamadas"</string>
<string name="notification_channel_background_calls" msgid="7785659903711350506">"Llamadas en segundo plano"</string>
<string name="notification_channel_disconnected_calls" msgid="8228636543997645757">"Llamadas interrumpidas"</string>
- <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Aplicaciones para teléfonos con bloqueos"</string>
+ <string name="notification_channel_in_call_service_crash" msgid="7313237519166984267">"Aplicaciones para teléfonos con fallos"</string>
<string name="alert_outgoing_call" msgid="5319895109298927431">"Si haces esta llamada, se finalizará la de <xliff:g id="OTHER_APP">%1$s</xliff:g>."</string>
<string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Elige cómo quieres hacer esta llamada"</string>
<string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Redirigir llamada con <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 74faab9..5061eda 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -104,7 +104,7 @@
<string name="alert_redirect_outgoing_call_or_not" msgid="665409645789521636">"Choisissez comment passer cet appel"</string>
<string name="alert_place_outgoing_call_with_redirection" msgid="5221065030959024121">"Rediriger l\'appel en utilisant <xliff:g id="OTHER_APP">%1$s</xliff:g>"</string>
<string name="alert_place_unredirect_outgoing_call" msgid="2467608535225764006">"Appeler en utilisant mon numéro de téléphone"</string>
- <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Impossible de passer l\'appel au moyen de l\'application <xliff:g id="OTHER_APP">%1$s</xliff:g>. Essayez d\'utiliser une autre application de redirection d\'appels ou de communiquer avec le concepteur de l\'application pour obtenir de l\'aide."</string>
+ <string name="alert_redirect_outgoing_call_timeout" msgid="5568101425637373060">"Impossible de passer l\'appel au moyen de l\'application <xliff:g id="OTHER_APP">%1$s</xliff:g>. Essayez d\'utiliser une autre application de redirection d\'appels ou de communiquer avec le développeur de l\'application pour obtenir de l\'aide."</string>
<string name="phone_settings_call_blocking_txt" msgid="7311523114822507178">"Blocage des appels"</string>
<string name="phone_settings_number_not_in_contact_txt" msgid="2602249106007265757">"Numéros non répertoriés dans les contacts"</string>
<string name="phone_settings_number_not_in_contact_summary_txt" msgid="963327038085718969">"Bloquer les numéros non répertoriés dans vos contacts"</string>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 42c55d6..c62fffc 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -88,7 +88,7 @@
<string name="answering_ends_other_managed_call" msgid="4031778317409881805">"Ao responder, finalizará a túa chamada en curso"</string>
<string name="answering_ends_other_managed_calls" msgid="3974069768615307659">"Ao responder, finalizarán as túas chamadas en curso"</string>
<string name="answering_ends_other_managed_video_call" msgid="1988508241432031327">"Ao responder, finalizarán as túas videochamadas en curso"</string>
- <string name="answer_incoming_call" msgid="2045888814782215326">"Responder"</string>
+ <string name="answer_incoming_call" msgid="2045888814782215326">"Contestar"</string>
<string name="decline_incoming_call" msgid="922147089348451310">"Rexeitar"</string>
<string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"Non se pode realizar a chamada porque non hai ningunha conta de chamadas que admita chamadas deste tipo."</string>
<string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"Non se pode realizar a chamada porque hai unha chamada en curso en <xliff:g id="OTHER_CALL">%1$s</xliff:g>."</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 23ebb73..f479340 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -65,13 +65,13 @@
<string name="blocked_numbers" msgid="8322134197039865180">"Nomor yang diblokir"</string>
<string name="blocked_numbers_msg" msgid="2797422132329662697">"Anda tidak akan menerima telepon atau SMS dari nomor yang diblokir."</string>
<string name="block_number" msgid="3784343046852802722">"Tambahkan nomor"</string>
- <string name="unblock_dialog_body" msgid="2723393535797217261">"Batalkan pemblokiran <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
- <string name="unblock_button" msgid="8732021675729981781">"Batalkan pemblokiran"</string>
+ <string name="unblock_dialog_body" msgid="2723393535797217261">"Berhenti memblokir <xliff:g id="NUMBER_TO_BLOCK">%1$s</xliff:g>?"</string>
+ <string name="unblock_button" msgid="8732021675729981781">"Berhenti memblokir"</string>
<string name="add_blocked_dialog_body" msgid="8599974422407139255">"Blokir panggilan telepon dan SMS dari"</string>
<string name="add_blocked_number_hint" msgid="8769422085658041097">"Nomor telepon"</string>
<string name="block_button" msgid="485080149164258770">"Blokir"</string>
<string name="non_primary_user" msgid="315564589279622098">"Hanya pemilik perangkat yang dapat melihat dan mengelola nomor yang diblokir."</string>
- <string name="delete_icon_description" msgid="5335959254954774373">"Bebaskan"</string>
+ <string name="delete_icon_description" msgid="5335959254954774373">"Berhenti memblokir"</string>
<string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blokir dinonaktifkan sementara"</string>
<string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Setelah Anda menelepon atau mengirim SMS ke nomor gawat darurat, blokir akan dinonaktifkan agar layanan gawat darurat tersebut dapat menghubungi Anda."</string>
<string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Aktifkan lagi sekarang"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 30a909b..17e4a1b 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -24,7 +24,7 @@
<string name="notification_missedCallsTitle" msgid="3910479625507893809">"שיחות שלא נענו"</string>
<string name="notification_missedCallsMsg" msgid="5055782736170916682">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> שיחות שלא נענו"</string>
<string name="notification_missedCallTicker" msgid="6731461957487087769">"שיחה שלא נענתה מאת <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
- <string name="notification_missedCall_call_back" msgid="7900333283939789732">"התקשר חזרה"</string>
+ <string name="notification_missedCall_call_back" msgid="7900333283939789732">"התקשרות בחזרה"</string>
<string name="notification_missedCall_message" msgid="4054698824390076431">"שליחת הודעה"</string>
<string name="notification_disconnectedCall_title" msgid="1790131923692416928">"השיחה נותקה"</string>
<string name="notification_disconnectedCall_body" msgid="600491714584417536">"השיחה עם <xliff:g id="CALLER">%s</xliff:g> נותקה בגלל שיחת חירום."</string>
@@ -37,7 +37,7 @@
<string name="accessibility_speakerphone_enabled" msgid="555386652061614267">"רמקול מופעל."</string>
<string name="respond_via_sms_canned_response_1" msgid="6332561460870382561">"לא נוח לי עכשיו. מה קורה?"</string>
<string name="respond_via_sms_canned_response_2" msgid="2052951316129952406">"תיכף אחזור אליך."</string>
- <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"אני אתקשר אליך יותר מאוחר."</string>
+ <string name="respond_via_sms_canned_response_3" msgid="6656147963478092035">"אתקשר אליך יותר מאוחר."</string>
<string name="respond_via_sms_canned_response_4" msgid="9141132488345561047">"לא נוח לי עכשיו. נדבר אחר כך?"</string>
<string name="respond_via_sms_setting_title" msgid="4762275482898830160">"תגובות מהירות"</string>
<string name="respond_via_sms_setting_title_2" msgid="4914853536609553457">"עריכת תגובות מהירות"</string>
@@ -48,15 +48,15 @@
<string name="enable_account_preference_title" msgid="6949224486748457976">"חשבונות לביצוע שיחות"</string>
<string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"ניתן לבצע רק שיחות חירום."</string>
<string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"לא ניתן להוציא שיחות באמצעות האפליקציה הזו ללא ההרשאה \'טלפון\'."</string>
- <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"כדי להתקשר, הזן מספר טלפון חוקי."</string>
+ <string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"כדי להתקשר, יש להזין מספר טלפון חוקי."</string>
<string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"לא ניתן כעת להוסיף את השיחה."</string>
<string name="no_vm_number" msgid="2179959110602180844">"חסר מספר של דואר קולי"</string>
<string name="no_vm_number_msg" msgid="1339245731058529388">"בכרטיס ה-SIM לא מאוחסן מספר של דואר קולי."</string>
- <string name="add_vm_number_str" msgid="5179510133063168998">"הוסף מספר"</string>
+ <string name="add_vm_number_str" msgid="5179510133063168998">"הוספת מספר"</string>
<string name="change_default_dialer_dialog_title" msgid="5861469279421508060">"האם להפוך את <xliff:g id="NEW_APP">%s</xliff:g> לברירת המחדל לאפליקציית \'טלפון\'?"</string>
- <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"הגדר כברירת מחדל"</string>
+ <string name="change_default_dialer_dialog_affirmative" msgid="8604665314757739550">"הגדרה כברירת מחדל"</string>
<string name="change_default_dialer_dialog_negative" msgid="8648669840052697821">"ביטול"</string>
- <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> תוכל להתקשר ולשלוט בכל ההיבטים של השיחות. מומלץ לבחור רק אפליקציות שאתה סומך עליהן כברירת המחדל לאפליקציית \'טלפון\'."</string>
+ <string name="change_default_dialer_warning_message" msgid="8461963987376916114">"<xliff:g id="NEW_APP">%s</xliff:g> תוכל להתקשר ולשלוט בכל ההיבטים של השיחות. מומלץ לבחור רק אפליקציות שסומכים עליהן כברירת המחדל לאפליקציית \'טלפון\'."</string>
<string name="change_default_call_screening_dialog_title" msgid="5365787219927262408">"רוצה להפוך את <xliff:g id="NEW_APP">%s</xliff:g> לאפליקציית ברירת המחדל שלך לסינון שיחות?"</string>
<string name="change_default_call_screening_warning_message_for_disable_old_app" msgid="2039830033533243164">"אפליקציית <xliff:g id="OLD_APP">%s</xliff:g> לא תוכל לסנן שיחות עוד."</string>
<string name="change_default_call_screening_warning_message" msgid="9020537562292754269">"אפליקציית <xliff:g id="NEW_APP">%s</xliff:g> תוכל לראות מידע על מתקשרים שאינם באנשי הקשר שלך ולחסום שיחות מהם. מומלץ לבחור רק אפליקציות שסומכים עליהן כברירת המחדל לסינון שיחות."</string>
@@ -74,12 +74,12 @@
<string name="delete_icon_description" msgid="5335959254954774373">"ביטול חסימה"</string>
<string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"החסימה הושבתה זמנית"</string>
<string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"לאחר חיוג או שליחת הודעה למספר חירום, החסימה תושבת כדי ששירותי החירום יוכלו ליצור איתך קשר."</string>
- <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"הפעל מחדש עכשיו"</string>
+ <string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"הפעלה מחדש עכשיו"</string>
<string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> נחסם"</string>
<string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"החסימה של <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> בוטלה"</string>
<string name="blocked_numbers_block_emergency_number_message" msgid="4198550501500893890">"אי אפשר לחסום מספרי חירום."</string>
<string name="blocked_numbers_number_already_blocked_message" msgid="2301270825735665458">"המספר <xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> כבר חסום."</string>
- <string name="toast_personal_call_msg" msgid="5817631570381795610">"משתמש בחייגן האישי כדי להתקשר"</string>
+ <string name="toast_personal_call_msg" msgid="5817631570381795610">"נעשה שימוש בחייגן האישי כדי להתקשר"</string>
<string name="notification_incoming_call" msgid="1233481138362230894">"<xliff:g id="CALL_FROM">%2$s</xliff:g> מתקשר/ת אליך ב-<xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
<string name="notification_incoming_video_call" msgid="5795968314037063900">"<xliff:g id="CALL_FROM">%2$s</xliff:g> מתקשר/ת אליך בשיחת וידאו ב-<xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
<string name="answering_ends_other_call" msgid="8653544281903986641">"מענה יסיים את השיחה ב-<xliff:g id="CALL_VIA">%1$s</xliff:g>"</string>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 331cf5c..c235aab 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -94,7 +94,7 @@
<string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"आपल्या <xliff:g id="OTHER_CALL">%1$s</xliff:g> कॉलमुळे कॉल केला जाऊ शकत नाही."</string>
<string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"आपल्या <xliff:g id="OTHER_CALL">%1$s</xliff:g> कॉलमुळे कॉल केला जाऊ शकत नाही."</string>
<string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"दुसर्या ॲपमधील कॉलमुळे कॉल केला जाऊ शकत नाही."</string>
- <string name="notification_channel_incoming_call" msgid="5245550964701715662">"येणारे कॉल"</string>
+ <string name="notification_channel_incoming_call" msgid="5245550964701715662">"इनकमिंग कॉल"</string>
<string name="notification_channel_missed_call" msgid="7168893015283909012">"मिस्ड कॉल"</string>
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"कॉल ब्लॉक करणे"</string>
<string name="notification_channel_background_calls" msgid="7785659903711350506">"बॅकग्राउंड कॉल"</string>
@@ -111,9 +111,9 @@
<string name="phone_settings_private_num_txt" msgid="6339272760338475619">"खाजगी"</string>
<string name="phone_settings_private_num_summary_txt" msgid="6755758240544021037">"अशा कॉलरना ब्लॉक करा, जे त्यांचे क्रमांक उघड करत नाहीत"</string>
<string name="phone_settings_payphone_txt" msgid="5003987966052543965">"पे फोन"</string>
- <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"पे फोनवरून येणारे कॉल ब्लॉक करा"</string>
+ <string name="phone_settings_payphone_summary_txt" msgid="3936631076065563665">"पे फोनवरून इनकमिंग कॉल ब्लॉक करा"</string>
<string name="phone_settings_unknown_txt" msgid="3577926178354772728">"अज्ञात"</string>
- <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"अनोळखी कॉलरकडून येणारे कॉल ब्लॉक करा"</string>
+ <string name="phone_settings_unknown_summary_txt" msgid="5446657192535779645">"अनोळखी कॉलरकडून इनकमिंग कॉल ब्लॉक करा"</string>
<string name="phone_strings_call_blocking_turned_off_notification_title_txt" msgid="2895809176537908791">"कॉल ब्लॉक करणे"</string>
<string name="phone_strings_call_blocking_turned_off_notification_text_txt" msgid="1713632946174016619">"कॉल ब्लॉक करणे बंद केले"</string>
<string name="phone_strings_emergency_call_made_dialog_title_txt" msgid="6629412508584507377">"आणीबाणी कॉल केला"</string>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 5d7eef0..5ef8bc0 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -93,7 +93,7 @@
<string name="cant_call_due_to_no_supported_service" msgid="1635626384149947077">"यस प्रकारका कलहरूलाई समर्थन गर्ने कुनै पनि कल गर्ने खाता नभएकाले कल गर्न सकिँदैन।"</string>
<string name="cant_call_due_to_ongoing_call" msgid="8004235328451385493">"तपाईंको <xliff:g id="OTHER_CALL">%1$s</xliff:g> कलका कारण कल गर्न सकिँदैन।"</string>
<string name="cant_call_due_to_ongoing_calls" msgid="6379163795277824868">"तपाईंका <xliff:g id="OTHER_CALL">%1$s</xliff:g> कलहरूका कारण कल गर्न सकिँदैन।"</string>
- <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"अर्को अनुप्रयोगमा जारी कलका कारण कल गर्न सकिँदैन।"</string>
+ <string name="cant_call_due_to_ongoing_unknown_call" msgid="8243532328969433172">"अर्को एपमा जारी कलका कारण कल गर्न सकिँदैन।"</string>
<string name="notification_channel_incoming_call" msgid="5245550964701715662">"आगमन कलहरू"</string>
<string name="notification_channel_missed_call" msgid="7168893015283909012">"मिस कलहरू"</string>
<string name="notification_channel_call_blocking" msgid="2028807677868598710">"कलमाथि रोक लगाउने सुविधा"</string>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index e6deb9c..0dece34 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -47,7 +47,7 @@
<string name="respond_via_sms_failure_format" msgid="5198680980054596391">"<xliff:g id="PHONE_NUMBER">%s</xliff:g>కు సందేశాన్ని పంపడం విఫలమైంది."</string>
<string name="enable_account_preference_title" msgid="6949224486748457976">"కాలింగ్ ఖాతాలు"</string>
<string name="outgoing_call_not_allowed_user_restriction" msgid="3424338207838851646">"కేవలం అత్యవసర కాల్లు మాత్రమే అనుమతించబడతాయి."</string>
- <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"ఈ అనువర్తనం ఫోన్ అనుమతి లేకుండా అవుట్గోయింగ్ కాల్లను చేయలేదు."</string>
+ <string name="outgoing_call_not_allowed_no_permission" msgid="8590468836581488679">"ఈ యాప్ ఫోన్ అనుమతి లేకుండా అవుట్గోయింగ్ కాల్లను చేయలేదు."</string>
<string name="outgoing_call_error_no_phone_number_supplied" msgid="7665135102566099778">"కాల్ చేయడానికి, చెల్లుబాటు అయ్యే నంబర్ను నమోదు చేయండి."</string>
<string name="duplicate_video_call_not_allowed" msgid="5754746140185781159">"ఈ సమయంలో కాల్ను జోడించడం సాధ్యపడదు."</string>
<string name="no_vm_number" msgid="2179959110602180844">"వాయిస్ మెయిల్ నంబర్ లేదు"</string>
diff --git a/src/com/android/server/telecom/Call.java b/src/com/android/server/telecom/Call.java
index ed6d223..36d2db7 100644
--- a/src/com/android/server/telecom/Call.java
+++ b/src/com/android/server/telecom/Call.java
@@ -85,6 +85,7 @@
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
/**
* Encapsulates all aspects of a given phone call throughout its lifecycle, starting
@@ -3160,6 +3161,13 @@
void setConferenceableCalls(List<Call> conferenceableCalls) {
mConferenceableCalls.clear();
mConferenceableCalls.addAll(conferenceableCalls);
+ String confCallIds = "";
+ if (!conferenceableCalls.isEmpty()) {
+ confCallIds = conferenceableCalls.stream()
+ .map(c -> c.getId())
+ .collect(Collectors.joining(","));
+ }
+ Log.addEvent(this, LogUtils.Events.CONF_CALLS_CHANGED, confCallIds);
for (Listener l : mListeners) {
l.onConferenceableCallsChanged(this);
diff --git a/src/com/android/server/telecom/CallAudioRouteStateMachine.java b/src/com/android/server/telecom/CallAudioRouteStateMachine.java
index e5a6ecc..7033a15 100644
--- a/src/com/android/server/telecom/CallAudioRouteStateMachine.java
+++ b/src/com/android/server/telecom/CallAudioRouteStateMachine.java
@@ -1678,8 +1678,8 @@
// may run as a separate user from the foreground user. If we
// used AudioManager directly, we would change mute for the system's
// user and not the current foreground, which we want to avoid.
- audio.setMicrophoneMute(
- mute, mContext.getOpPackageName(), getCurrentUserId());
+ audio.setMicrophoneMute(mute, mContext.getOpPackageName(),
+ getCurrentUserId(), mContext.getAttributionTag());
} catch (RemoteException e) {
Log.e(this, e, "Remote exception while toggling mute.");
}
diff --git a/src/com/android/server/telecom/ConnectionServiceWrapper.java b/src/com/android/server/telecom/ConnectionServiceWrapper.java
index 21c6844..da2669c 100755
--- a/src/com/android/server/telecom/ConnectionServiceWrapper.java
+++ b/src/com/android/server/telecom/ConnectionServiceWrapper.java
@@ -920,6 +920,45 @@
} else {
connectIdToCheck = callId;
}
+
+ // Handle the case where an existing connection was added by Telephony via
+ // a connection manager. The remote connection service API does not include
+ // the ability to specify a parent connection when adding an existing
+ // connection, so we stash the desired parent in the connection extras.
+ if (connectionExtras != null
+ && connectionExtras.containsKey(
+ Connection.EXTRA_ADD_TO_CONFERENCE_ID)
+ && connection.getParentCallId() == null) {
+ String parentId = connectionExtras.getString(
+ Connection.EXTRA_ADD_TO_CONFERENCE_ID);
+ Log.i(ConnectionServiceWrapper.this, "addExistingConnection: remote "
+ + "connection will auto-add to parent %s", parentId);
+ // Replace parcelable connection instance, swapping the new desired
+ // parent in.
+ connection = new ParcelableConnection(
+ connection.getPhoneAccount(),
+ connection.getState(),
+ connection.getConnectionCapabilities(),
+ connection.getConnectionProperties(),
+ connection.getSupportedAudioRoutes(),
+ connection.getHandle(),
+ connection.getHandlePresentation(),
+ connection.getCallerDisplayName(),
+ connection.getCallerDisplayNamePresentation(),
+ connection.getVideoProvider(),
+ connection.getVideoState(),
+ connection.isRingbackRequested(),
+ connection.getIsVoipAudioMode(),
+ connection.getConnectTimeMillis(),
+ connection.getConnectElapsedTimeMillis(),
+ connection.getStatusHints(),
+ connection.getDisconnectCause(),
+ connection.getConferenceableConnectionIds(),
+ connection.getExtras(),
+ parentId,
+ connection.getCallDirection(),
+ connection.getCallerNumberVerificationStatus());
+ }
// Check to see if this Connection has already been added.
Call alreadyAddedConnection = mCallsManager
.getAlreadyAddedConnection(connectIdToCheck);
diff --git a/src/com/android/server/telecom/LogUtils.java b/src/com/android/server/telecom/LogUtils.java
index 138e441..f53f239 100644
--- a/src/com/android/server/telecom/LogUtils.java
+++ b/src/com/android/server/telecom/LogUtils.java
@@ -138,6 +138,7 @@
public static final String REMOVE_CHILD = "REMOVE_CHILD";
public static final String SET_PARENT = "SET_PARENT";
public static final String CONF_STATE_CHANGED = "CONF_STATE_CHANGED";
+ public static final String CONF_CALLS_CHANGED = "CONF_CALLS_CHANGED";
public static final String CALL_DIRECTION_CHANGED = "CALL_DIRECTION_CHANGED";
public static final String MUTE = "MUTE";
public static final String UNMUTE = "UNMUTE";
diff --git a/src/com/android/server/telecom/callfiltering/CallScreeningServiceFilter.java b/src/com/android/server/telecom/callfiltering/CallScreeningServiceFilter.java
index 4a308e0..51b1bc6 100644
--- a/src/com/android/server/telecom/callfiltering/CallScreeningServiceFilter.java
+++ b/src/com/android/server/telecom/callfiltering/CallScreeningServiceFilter.java
@@ -313,11 +313,14 @@
private void bindCallScreeningService(
CompletableFuture<CallFilteringResult> resultFuture) {
- mConnection = new CallScreeningServiceConnection(resultFuture);
+ CallScreeningServiceConnection connection = new CallScreeningServiceConnection(
+ resultFuture);
if (!CallScreeningServiceHelper.bindCallScreeningService(mContext,
- mCallsManager.getCurrentUserHandle(), mPackageName, mConnection)) {
+ mCallsManager.getCurrentUserHandle(), mPackageName, connection)) {
Log.i(this, "Call screening service binding failed.");
resultFuture.complete(mPriorStageResult);
+ } else {
+ mConnection = connection;
}
}
diff --git a/tests/src/com/android/server/telecom/tests/BasicCallTests.java b/tests/src/com/android/server/telecom/tests/BasicCallTests.java
index a3b8654..6d47c2a 100644
--- a/tests/src/com/android/server/telecom/tests/BasicCallTests.java
+++ b/tests/src/com/android/server/telecom/tests/BasicCallTests.java
@@ -618,10 +618,12 @@
mInCallServiceFixtureX.mInCallAdapter.mute(true);
verify(mAudioService, timeout(TEST_TIMEOUT))
- .setMicrophoneMute(eq(true), any(String.class), any(Integer.class));
+ .setMicrophoneMute(eq(true), any(String.class), any(Integer.class),
+ nullable(String.class));
mInCallServiceFixtureX.mInCallAdapter.mute(false);
verify(mAudioService, timeout(TEST_TIMEOUT))
- .setMicrophoneMute(eq(false), any(String.class), any(Integer.class));
+ .setMicrophoneMute(eq(false), any(String.class), any(Integer.class),
+ nullable(String.class));
mInCallServiceFixtureX.mInCallAdapter.setAudioRoute(CallAudioState.ROUTE_SPEAKER, null);
waitForHandlerAction(mTelecomSystem.getCallsManager().getCallAudioManager()
@@ -1185,7 +1187,7 @@
ArgumentCaptor<Boolean> muteValueCaptor = ArgumentCaptor.forClass(Boolean.class);
verify(mAudioService, times(2)).setMicrophoneMute(muteValueCaptor.capture(),
- any(String.class), any(Integer.class));
+ any(String.class), any(Integer.class), nullable(String.class));
List<Boolean> muteValues = muteValueCaptor.getAllValues();
// Check mute status was changed twice with true and false.
assertTrue(muteValues.get(0));
diff --git a/tests/src/com/android/server/telecom/tests/TelecomSystemTest.java b/tests/src/com/android/server/telecom/tests/TelecomSystemTest.java
index 7f462d4..2d6fa4c 100644
--- a/tests/src/com/android/server/telecom/tests/TelecomSystemTest.java
+++ b/tests/src/com/android/server/telecom/tests/TelecomSystemTest.java
@@ -604,8 +604,8 @@
doReturn(args[0]).when(fakeAudioManager).isMicrophoneMute();
return null;
}
- }).when(audioService)
- .setMicrophoneMute(any(Boolean.class), any(String.class), any(Integer.class));
+ }).when(audioService).setMicrophoneMute(any(Boolean.class), any(String.class),
+ any(Integer.class), nullable(String.class));
} catch (android.os.RemoteException e) {
// Do nothing, leave the faked microphone state as-is