Commit Graph

183 Commits

Author SHA1 Message Date
Grace Jia
4e8dc10871 Add relative APIs for InCallService that can support self-managed
connections that want to expose itself.

Add PhoneAccount#EXTRA_ADD_SELF_MANAGED_CALLS_TO_INCALLSERVICE and
Connection#onInCallServiceTrackingChanged.

Bug: 161144815
Test: CtsTelecomTestCases
Change-Id: I0a42ea79a1cd46aa9df3399c4fa2e9396321778a
Merged-In: I0a42ea79a1cd46aa9df3399c4fa2e9396321778a
2021-02-01 14:51:31 +00:00
Sungjae
7f4137452d Use phoneAccountHandle based on connection
After triggering dial, phoneAccountHandle can be changed.
In this case, the stack to which dial is requested and
the stack to be displayed on the UI can be different.
So, modified to use phoneAccountHandle which base on
connection, not request.

Bug: 168681491
Test: manual

Signed-off-by: Sungjae <sung_jae.kim@samsung.com>
Change-Id: I56ac5b2d4f1b5e8d78741a43a332b025af7e4d54
2020-10-19 11:14:35 +09:00
Xin Li
628590d7ec Merge Android R (rvc-dev-plus-aosp-without-vendor@6692709)
Bug: 166295507
Merged-In: I3d92a6de21a938f6b352ec26dc23420c0fe02b27
Change-Id: Ifdb80563ef042738778ebb8a7581a97c4e3d96e2
2020-08-31 21:21:38 -07:00
Grace Jia
329c6ff777 Merge "Add adhoc conference APIs to RemoteConnection and RemoteConnectionService." 2020-08-13 18:06:19 +00:00
Tyler Gunn
560c97bc25 Merge "Improve remote connection logging." 2020-08-12 18:27:36 +00:00
Grace Jia
9a09c67075 Add adhoc conference APIs to RemoteConnection and
RemoteConnectionService.

Plumb through the adhoc conference APIs via these new APIs.

Bug: 159944852
Test: atest CtsTelecomTestCases:RemoteConnectionTest
Change-Id: Icfa27e0616dd35ba350f7a491e5c95337a286b9d
2020-08-11 19:26:33 +00:00
Tyler Gunn
c59fd0cd80 Improve remote connection logging.
This CL improves traceability of calls initiated via a remote connection
service.
For regular incoming/outgoing calls, when initiating a request to create
a remote connection in RemoteConnectionService, we set
EXTRA_REQUESTING_PACKAGE_NAME in the parcelled request to the package name
of the connection manager.  In ConnectionService this serves as an
indicator that the incoming request is via a connection manager and is
used to trigger setting of EXTRA_REMOTE_PHONE_ACCOUNT_HANDLE with the
phone account handle the remote connection service uses to place the call.
For conferences and existing connections, the initial request is from
the remote connection service to the connection manager so we can
just set the EXTRA_REMOTE_PHONE_ACCOUNT handle there directly.

Also cleaned up logging in the telecom session logging to remove the
assumption that the ownerInfo is an incall service.

Test: Manual testing with connection manager to verify logging.
Bug: 154353494
Fixes: 155097158
Merged-In: I916750e0f558db1eb9e581bab7a9fbc71f781709
Change-Id: Iee1b5cfd3334a5de08d7b04022b7c6d5af6a4b04
2020-08-05 13:45:33 -07:00
Tyler Gunn
a005cb30ed Merge "Update language to comply with Android's inclusive language guidance" 2020-07-30 20:42:55 +00:00
Tyler Gunn
460360d6b8 Update language to comply with Android's inclusive language guidance
See https://source.android.com/setup/contribute/respectful-code for reference

Test: Presubmit
Bug: 161896447
Change-Id: I4142f4819f5ed3e2ffddf471b90923985e72523a
2020-07-29 10:23:07 -07:00
Grace Jia
8587ee5cd5 Expose adhoc conference calling API as public.
Bug: 159944852
Test: make
Change-Id: I2cf39a6fd8a02ca4f2d0c83c484ab12bb13f74c3
2020-07-27 11:18:36 -07:00
Tyler Gunn
1036237bb5 Ensure conference state is posted to Telecom for new conferences.
There is an edge-case where an IMS conference fails to merge two
participants into a conference, AND the conference event package comes in
before the ImsCall indicates it is multiparty.  In this case, the CEP
will have a single participant which means we'll treat the call as a
standalone call.  ImsConference correctly sets the conference state, but
this was previously just passed along the ConnectionService adapter
to Telecom.  In this case the conference isn't even added to Telecom so
the method call in effect does nothing.

Changed to cache the conference state and ensure when adding the conference
to Telecom that we call the setConferenceState method (yeah, could have
put this in the ParcelableConference, but this is an edge case).

Test: Wrote unit test to verify property is set.
Bug: 134047008
Fixes: 155097934
Merged-In: I203880c593f6bac471a06eb9dcbb529d0bb75ba5
Change-Id: Ib48437abb1295d147e227727ce4ff2996f28b5de
2020-05-11 14:29:44 -07:00
Tyler Gunn
ffbcd89453 Improve connection manager logging.
1. In ConnectionService, upping the incoming log level to info from
debug; this ensures we can better trace whether methods are actually
called.
2. Added the ability in the logging class to get a new external session
which supplies the owner info which will be passed in to the recipient of
the external session.  This allows Telecom or a connection manager to
pass in a package abbreviation which will form the calling owner info
when the receiver continues the external session.
3. Add owner info to the Session.Info class so it can be passed about.
4. Ensure owner info is copied when getting Session.Info; subsessions were
not showing the owner info in the past; this corrects that.
5. When retrieving the external session info, creating a "package call
stack" with the owner info.  This lets us see the hierarchy of where calls
originated.
Example: cad/cast/ccme
Shows that com.android.dialer send a message to com.android.server.telecom
which relayed a message to com.connection.manager.example.
6. Start sessions in RemoteConnection API methods and pass along external
session info.  This bridges session tracing across a connection manager so
we can now trace a method call all the way from dialer, through telecom,
through the connection manager, and finally into telephony.

Test: Manual call testing with connection manager to verify log behavior.
Bug: 153899641
Change-Id: I4518a50550203818374b4e0b52eccb84ffd561dc
2020-05-05 09:34:07 -07:00
Brad Ebinger
f5ed9171e6 Merge "Add a new call direction parameter to conferences for multiparty" 2020-04-23 15:35:35 +00:00
Tyler Gunn
988ca64c3d Merge "Hide adhoc conference APIs." 2020-04-22 19:44:50 +00:00
Tyler Gunn
2c1bef9037 Hide adhoc conference APIs.
Most of this was previously hidden; these last stragglers were missed.

Test: make update-api ; verify hidden
Bug: 152394802
Fixes: 153376610
Merged-In: I90e05379d3c779bdc6b64e3ff68513bb3f302456
Change-Id: I41bda5b8ad368e1c88e4dd9e45d978a111a22e53
2020-04-22 16:08:28 +00:00
Brad Ebinger
0ae44ed738 Add a new call direction parameter to conferences for multiparty
1) Refactor ParcelableConference - too many optional params
2) Add a new call direction parameter for external multiparty
call scenarios, where a conference is assigned a direction.

Bug: 153595501
Fixes: 154246448
Test: atest TelecomUnitTests TeleServiceTests
Merged-In: Icb576a07b9a7a81e228babfea53474be83da7593
Change-Id: Icb576a07b9a7a81e228babfea53474be83da7593
2020-04-20 12:19:34 -07:00
Brad Ebinger
e0c12f4b88 Add new @hide API to pass call direction changes through Telecom
Bug: 153277327
Fixes: 154245581
Test: atest TelecomUnitTests
Merged-In: Icad12c4144bf185c24ee80bcbdd1aec29550bf4e
Change-Id: Icad12c4144bf185c24ee80bcbdd1aec29550bf4e
2020-04-20 12:14:33 -07:00
Tyler Gunn
815576c7d6 Improve remote connection logging.
This CL improves traceability of calls initiated via a remote connection
service.
For regular incoming/outgoing calls, when initiating a request to create
a remote connection in RemoteConnectionService, we set
EXTRA_REQUESTING_PACKAGE_NAME in the parcelled request to the package name
of the connection manager.  In ConnectionService this serves as an
indicator that the incoming request is via a connection manager and is
used to trigger setting of EXTRA_REMOTE_PHONE_ACCOUNT_HANDLE with the
phone account handle the remote connection service uses to place the call.
For conferences and existing connections, the initial request is from
the remote connection service to the connection manager so we can
just set the EXTRA_REMOTE_PHONE_ACCOUNT handle there directly.

Also cleaned up logging in the telecom session logging to remove the
assumption that the ownerInfo is an incall service.

Test: Manual testing with connection manager to verify logging.
Fixes: 154353494
Change-Id: Iee1b5cfd3334a5de08d7b04022b7c6d5af6a4b04
2020-04-17 15:46:29 -07:00
Tyler Gunn
cd5d9b29a1 Merge "Ensure conference state is posted to Telecom for new conferences." into rvc-dev 2020-04-14 23:16:54 +00:00
Tyler Gunn
79110a9fd7 Ensure conference state is posted to Telecom for new conferences.
There is an edge-case where an IMS conference fails to merge two
participants into a conference, AND the conference event package comes in
before the ImsCall indicates it is multiparty.  In this case, the CEP
will have a single participant which means we'll treat the call as a
standalone call.  ImsConference correctly sets the conference state, but
this was previously just passed along the ConnectionService adapter
to Telecom.  In this case the conference isn't even added to Telecom so
the method call in effect does nothing.

Changed to cache the conference state and ensure when adding the conference
to Telecom that we call the setConferenceState method (yeah, could have
put this in the ParcelableConference, but this is an edge case).

Test: Wrote unit test to verify property is set.
Fixes: 134047008
Change-Id: Ib48437abb1295d147e227727ce4ff2996f28b5de
2020-04-10 15:27:27 -07:00
Brad Ebinger
43e026594e Add a new call direction parameter to conferences for multiparty
1) Refactor ParcelableConference - too many optional params
2) Add a new call direction parameter for external multiparty
call scenarios, where a conference is assigned a direction.

Bug: 153595501
Test: atest TelecomUnitTests TeleServiceTests
Change-Id: Icb576a07b9a7a81e228babfea53474be83da7593
2020-04-09 16:46:11 -07:00
Brad Ebinger
31774ae752 Add new @hide API to pass call direction changes through Telecom
Bug: 153277327
Test: atest TelecomUnitTests
Change-Id: Icad12c4144bf185c24ee80bcbdd1aec29550bf4e
2020-04-08 17:08:10 -07:00
Tyler Gunn
703dd182fd Hide adhoc conference APIs.
Most of this was previously hidden; these last stragglers were missed.

Test: make update-api ; verify hidden
Fixes: 152394802
Change-Id: I41bda5b8ad368e1c88e4dd9e45d978a111a22e53
2020-03-25 08:50:48 -07:00
Ravi Paluri
f4b38e7ff1 IMS: Add support for IMS Explicit call transfer
Test: Manual
Bug: 62170207
Change-Id: I06a256adb0e1910d40809c91bcdd42c56a142842
2020-02-14 11:02:09 +05:30
Tyler Gunn
f2a5615087 Merge "API Review cleanups." 2020-02-13 18:16:25 +00:00
Tyler Gunn
c9503d6ea6 API Review cleanups.
- New @SystemApis on Conference and PhoneAccount were missing the required
permissions annotations.
- Rename PROPERTY_ASSISTED_DIALING_USED to PROPERTY_ASSISTED_DIALING
- Standardize get/setConnectionStartElapsedRealtimeMillis method naming
across Connection and Conference classes.
- Clarify Conference#sendConferenceEvent API documentation to match the
docs present for similar method in Connection; include some examples of
valid event/extras combinations.
- Update TelecomManager#getDefaultdialerPackage to use UserHandle instead
of userId.
- Move Conference#getConnectionStartElapsedRealtimeMillis to public API
since the setter is already part of the public API.

Test: Run Telecom and Telephony CTS tests.
Test: Run Telephony unit tests.
Test: Perform manual single-party-conference regression test to confirm
that conference behavior does not regress.

Bug: 147301297
Bug: 148286830
Bug: 148284863
Bug: 148284843
Bug: 148287068
Bug: 148285484
Bug: 148285560
Change-Id: I1f446d81859fa109d74af3661a42a0bd224de5aa
Merged-In: I1f446d81859fa109d74af3661a42a0bd224de5aa
2020-02-13 16:53:42 +00:00
Ravi Paluri
404babbb98 Ims: Add support to add participants to existing call
Supports initiation of a conference call
by directly adding participants to existing call

Test: Manual
Bug: 62151032
Change-Id: I4e60efafab4761ae65a460fdc6c4cacc3e233220
2020-02-11 13:30:38 -08:00
Tyler Gunn
facfdee122 Add support for rejecting Telecom call with a specified reason.
Adding a new Call API which supports passing a user-specified call
rejection reason down to the lower layers for reporting to the network.
Part of the VERSTAT spec involves support for this type of signaling, so
it makes sense to also support it here as well.
There are two potential types of reject reason:
declined - user declined the call because they want it to go to voicemail
or don't want to talk to the caller right now.
unwanted - this is a nuisance call and the user never wanted to receive it.

Bug: 135929421
Test: Added new CTS test to validate API pathways.
Test: Ran existing telecom and telephony unit tests.
Test: Modified test dialer app to use the new reject API and verified that
the reject reason signals down to the modem and translates to the correct
reject cause.

Change-Id: I6f25fafa2b2620e2839e5d3a9fb986f1130fa165
2020-01-23 13:10:37 -08:00
Ravi Paluri
80aa2140e3 Ims: Add support for Adhoc Conference calls
Add support for Adhoc Conference calls

Test: Manual
Bug: 62151032
Change-Id: Id50d235595d2133f867848ffdebdfe11e2f1c896
2020-01-22 03:22:58 +00:00
Tyler Gunn
d57d76c371 Add Verstat fields to Telecom call/connection classes.
Test: Added new CTS tests to verify operation.
Bug: 135929421
Change-Id: I42360dad677060e03ecec865f31145b1760cf46a
2019-12-02 13:59:17 -08:00
Tyler Gunn
5567d7408c More telephony updates for mainline.
Add new TelecomManager#getDefaultDialerPackage which is multiuse aware;
this is used when showing the voicemail notification.
Remove some @hide methods from Conference; push these inline.
Move ConferenceParticipantConnection into frameworks/opt/net/ims since
it is just an IMS implementation detail.

Bug: 141576016
Test: Manual smoke test.
Test: Run unit tests.
Test: Run CTS tests.
Change-Id: I39b6955cb14cc1ca68b05c620c3d09a2cdfe30c9
Merged-In: I39b6955cb14cc1ca68b05c620c3d09a2cdfe30c9
2019-11-08 21:27:32 +00:00
Brad Ebinger
99f17ced8f Expose ConnectionService Handler to remove flaky tests
Test: atest TelecomUnitTests
Change-Id: Ibb80b5739083ad9f85ee06f4d9f0017f4cb605bd
2019-09-17 10:44:11 -07:00
Tyler Gunn
6986a63325 Support indicating call direction on existing connections.
This is important for ensuring the original call direction for existing
connections added from Conference Event Packages matches the call direction
of the original calls merged into the conference.

Also moved a utility function into ConferenceParticipant from
ConferenceParticipantConnection to make it generically usable inside
Telephony.

Test: Run all unit tests.
Test: Manual testing using VoLTE conference calls with mix of MO and MT
calls; verify call logging is appropriate.
Bug: 134471046

Change-Id: Iab09397b811782ab0f876aac02070e3447d81f09
2019-06-25 13:48:29 -07:00
Tyler Gunn
ac60f9554e Enhancements to conference for non-conference host scenarios.
When a device A creates a conference call containing device B and C, both
B and C can receive IMS signaling to indicate that they are in a conference
call.  This occurs on most domestic carriers; the Telephony framework
uses the "multiparty" indicator on the IMS call to switch the call to a
conference call.

We made some changes to how conference calls are logged in Q which improves
the accuracy of the call durations.  We used to log calls as they're merged
into a conference.  In the case of a participant in a remotely hosted
conference call, we'd log the call as soon as they are remotely added
to the conference.  This is unfortunate as the call durations are grossly
under-reported.

The conference call logging changes now assume we'll log the conference
event package children in the conference instead of the participants which
merge into the conference itself.  On domestic carriers, since the
call on B (or C) becomes a conference, we would then no longer log the
call.

This is FURTHER complicated because on some carriers, B and C will ALSO
receive a conference event package from the network showing all the
participants in the conference.  So if B hangs up on the conference, they
will have entries in their call log for A and C, which is really strange
because a call to C was never originated on their device.

In Telecom we need to ensure we do not log remotely hosted conference
participants, and we need to ensure that we DO log a remotely hosted
conference as if its just a single party call.

To accomplish this we need:
1. the address and name display information associated with the call from
A-B / A-C prior to the call turning into a remotely hosted conference.
We need this to log to the call log
2. the remotely hosted conference and participants need to be marked in a
manner that Telecom can identify them.

Test: Manual test.
Test: Add unit test to cover this logging scenario.
Bug: 132325382
Change-Id: I65e713f68d1695a48d96dacbf7faa4476cd8d815
2019-05-31 12:45:19 -07:00
Tyler Gunn
4c69fb3d7b Make queryRemoteConnectionServices DSDS aware.
The method queryRemoteConnectionServices had the issue that it assumes
there is a single connection manager for the device.  This assumption does
not work on a multisim device.  Since the ConnectionManager is associated
with a particular carrier, this means that the connection mgr for one
carrier could try to impact calls destined for another carrier.

This change ensures that the calling package is passed into Telecom so
that we can determine which RemoteConnectionServices which are available to
the calling connection manager.

Test: Manual test on DSDS with a connection mgr carrier and another carrier.
Bug: 131856987
Change-Id: I46d80dc68adaab7fd4374f023d7ba4242804c253
2019-05-17 10:49:38 -07:00
Hall Liu
c9bc1c6639 Make connection events work for conferences
Pipe through the onConnectionEvent call between the conference host
connection and the android.telecom.Conference object.

Fixes: 130404376
Test: manual
Change-Id: Ifad3e59dc9764aa2efb2b9766271e18853bf1c76
2019-04-16 15:06:13 -07:00
Tyler Gunn
7b31759f0d Merge "Support for treating single party IMS conference as a standalone call." am: 89e53d81ce am: 955c9adb36
am: 4fd8e1b376

Change-Id: I7ab00c1b82858014fb3135474a64a9fa44d8283b
2019-01-22 07:31:55 -08:00
Tyler Gunn
4fd8e1b376 Merge "Support for treating single party IMS conference as a standalone call." am: 89e53d81ce
am: 955c9adb36

Change-Id: I5af4c4591cd825adfeab8be56d7c60d29905f1c4
2019-01-22 07:20:11 -08:00
Tyler Gunn
68a73a4d0d Support for treating single party IMS conference as a standalone call.
Adding @hide APIs which Telephony can use to make a conference call with
a single participant look like its a standalone call.

Test: Manual testing
Bug: 75975913
Change-Id: Id8532234ab295785fc749b120898f43911e12637
2019-01-19 10:27:23 -08:00
kopriva
dae6ec0db7 Merge "docs: fixing 'mange' instead of 'manage'" into pi-dev am: 14aa42cfda
am: 57adb99451

Change-Id: I477a610e0602e464847c1a1ccb13b21644ee1ae8
2018-10-08 19:30:00 -07:00
kopriva
57adb99451 Merge "docs: fixing 'mange' instead of 'manage'" into pi-dev
am: 14aa42cfda

Change-Id: Id461e2430301c62be5ee76f5046370069cb1a34c
2018-10-08 19:14:44 -07:00
kopriva
82c591b78b docs: fixing 'mange' instead of 'manage'
Test: make ds-docs

Bug: 117449040

Change-Id: I282a2e960bbf722bf3a72dd932e3bf685abb74e5
Exempt-From-Owner-Approval: Docs-only change
2018-10-08 15:57:00 -07:00
Hall Liu
6a2d7cc29d Merge "Telecom: Reset the duration after the CDMA call is accepted" am: 2cbf44dc2f am: e784d5e5ca am: a4c0632746
am: 47dceea7d8

Change-Id: I28e69d1b32e71b467dded2d90118a46f9ef3fffc
2018-08-01 18:41:20 -07:00
Hall Liu
e784d5e5ca Merge "Telecom: Reset the duration after the CDMA call is accepted"
am: 2cbf44dc2f

Change-Id: I823efd5765b77fcf55f4c38a6091d980530abae8
2018-08-01 16:09:51 -07:00
Mengjun Leng
2570774338 Telecom: Reset the duration after the CDMA call is accepted
In android original design, the duration of CDMA MO call is started from
the dial command sent, so it is not the real duration of the active time.

In this patch, a new message is registered to listen the event of the call
accepted, and then reset the duration when the event happens.

Change-Id: Icc447012030ae243f200ec2c83b7d5210af9b31c
2018-07-31 14:14:22 +08:00
Tyler Gunn
3193b1537c Merge "Merge "Ensure self-managed calls use voip audio mode." am: b62aa315d1 am: fd3e10b1bc" into pi-dev-plus-aosp
am: 6823c8a822

Change-Id: I1352a44cbb55fdeeb79771b27055a70b83a3cbb8
2018-06-06 18:08:05 -07:00
Tyler Gunn
2c556faf3d Merge "Ensure self-managed calls use voip audio mode." am: b62aa315d1
am: fd3e10b1bc

Change-Id: I8f7842fa84fcce91a292b32189cd827b4a125fb0
2018-06-06 16:33:19 -07:00
Tyler Gunn
f2e08b4c2c Ensure self-managed calls use voip audio mode.
Although Telecom ensures that new calls use voip audio mode, the default
value from a Connection would override the Telecom default.

Bug: 76362663
Test: Modify test app to ensure it does not set voip audio mode, ensure
Telecom uses voip audio mode for new calls.

Change-Id: Ie6477659cf6dabd08f371d4958ece1d258cd3106
2018-05-24 10:44:44 -07:00
Tyler Gunn
3a09dc185b API Documentation and Constant cleanup.
1. Update handover API docs for clarity.
2. Added an unknown value per API review comments.
3. Renamed HANDOVER_FAILURE_DEST_USER_REJECTED to
HANDOVER_FAILURE_USER_REJECTED
3. Removed the HANDOVER_FAILURE_DEST_INVALID_PERM constant since it isn't
used (methods which deal with permissions throw security exceptions).

Test: Make doc and verify documentation.
Fixes: 73751004
Fixes: 73750515
Fixes: 73750817
Merged-In: I7860fcd813f25adaaccf632f2c61dd4138a0a889
Change-Id: I7860fcd813f25adaaccf632f2c61dd4138a0a889
(cherry picked from commit c7a86b14a8)
2018-03-07 23:17:54 +00:00
Tyler Gunn
c7a86b14a8 Merge "API Documentation and Constant cleanup." am: 8882c55b21 am: 8917fc21cc
am: 168a77237f

Change-Id: I7860fcd813f25adaaccf632f2c61dd4138a0a889
2018-03-07 21:09:48 +00:00