Enhance ImsPhoneCall/Tracker logging and fix swap on bad state change
ImsPhoneConnection: - Added check in update() to ensure we skip the update if we are putting the call into an ACTIVE state, but there is a pending request to hold the ImsCall. This is really a bug in the RIL; we are NOT getting the callSessionHeld callback when putting a recently formed conference call into the background. Without this check, we end up detaching the ImsPhoneConnection from the "background" ImsPhoneCall and attaching it to the "foreground" ImsPhoneConnection, which causes a scenario where there are multiple active calls at the same time. I will file a bug against the RIL to fix this missing state reporting. ImsPhoneCallTracker: - in switchWaitingOrHoldingAndActive check for the case where we are holding a foreground call and reset the flag indicating we're expecting to see a resume. This wasn't causing the bug I was working on but I can see how it might have undesirable effects. - added some extra debug logging to help track down hold/resumes - fixed some BAD logic in onCallMerged added in change ID I94abbae37eb6773f1824c0e5c3a267d345610ada. This code was swapping the ImsPhoneCall references for foreground and background directly in order to ensure that the right calls were passed in to ImsPhoneCall#merge. The ImsPhoneCallTracker assumes the ImsPhoneCalls mForegroundCall and mBackgroundCall will always stay the same; ImsPhoneConnections are attached and detached from these ImsPhoneCalls, but the original references must stay the same. Fixed up that code to ensure it does what its supposed to without messing up the original references. - Added logState method which can be turned on via debug flag to periodically dump verbose state of the calls tracked my ImsPhoneCallTracker. I had a hard time figuring out what was going on and this helped a lot. ImsPhoneCall: - Added enhanced logging when ImsPhoneConnections are moved between the foreground, background, etc calls. Also added knowledge of whether an ImsPhoneCall is a foreground or background call so that logging can be made more clear. - After operations which change which calls are FG or BG, calling ImsPhoneCallTracker.logState() which will log the full ImsPhoneCallTracker state for even easier debugging (but only if the stop-ship flag is on). Bug: 22173672 Change-Id: I704af9522a81ee036f290c7c723de4c3602229fd
Loading
Please register or sign in to comment