History log of /frameworks/opt/net/ims/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
9d6410a77eefdb35f72a17d62e3c4dc21a71ea18 18-Aug-2017 Tyler Gunn <tgunn@google.com> Ensure upgrade to video requests are ignored when video disabled.

When video is disabled (due to mobile data being off), we will automatically
reject any incoming requests to upgrade to video.

Test: Manual
Bug: 36900451
Change-Id: I9991cc9940aef417ec7f05cb61e777bf0d354c93
/frameworks/opt/net/ims/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java
28552fbbf08d9652b259aaae8661f98d865408c1 14-Jul-2017 Tyler Gunn <tgunn@google.com> Filter resume requests when video is already resumed.

If the request being sent to the video provider is to resume the video,
but the video stream is already resumed, do not send this request to the
modem.

In the case of swapping between calls, the video appears to resume
automatically on the modem-side, so sending another resume request is
redundant.

Also, in VideoPauseTracker, correcting the case where we get a resume
request, but there are no remaining pause requests in the tracker.
Although that case shouldn't run up in reality, if it did we should still
let the resume request pass along (since it would otherwise be re-written
as a pause).

Test: Manual test.
Change-Id: Ib9b9acaf2d92b1485e4766a13701fd472d6c117d
Fixes: 63606238
/frameworks/opt/net/ims/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java
567a70c96dcab6d5d78a73f3aaab87e551ce25a5 06-Jul-2017 Tyler Gunn <tgunn@google.com> Change how unpause of video is detected.

ImsVideoCallProviderWrapper was modified recently to check for the case
where the video is paused, and the video state changes to an unpaused state.
It used this to trigger a clear of the video pause tracker.
It did this by checking if the video pause tracker thought the video was
paused. In reality, it makes more sense for a change in the videostate
from paused to unpaused to be detected, and THAT used as a basis to
clear the video pause tracker.

The previous functionality caused a problem when the user, in quick
succession:
1. Turned off the camera
2. Went to the background.

The two requests would hit the framework, causing the video pause
tracker to record the current video state as paused (as requested by
the user). Shortly thereafter, the modem reports the fact that the
camera is off with a state of Audio RX. This would be misinterpreted
and cause the pause tracker to be cleared.

Test: Manually tested the bug, as well as regression tested b/62784036.
Change-Id: Iaa736e93e05ef3ae5dec21cd8ebc18be464f18ae
Fixes: 63410964
/frameworks/opt/net/ims/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java
efa7be99a6daec6cd4919eb19d04bcbbc284419f 06-Jul-2017 Tyler Gunn <tgunn@google.com> Remove framework performance optimization for null video requests.

In N-MR2 we made a performance optimization to not bother sending
no-op video requests to the vendor IMS layer. In concept this performance
optimization makes sense; if a higher layer tells us to change from
the current video state to the current video state, then don't send it.

It turns out that the vendor IMS layer does not interpret the delta
style video requests as they were intended.

To fix this, we'll remove the performance optization and opt to make the
contract between the framework and the vendor IMS layer more explicit in
the future to avoid this kind of problem.

This fix corrects an issue where:
A and B are in a video call.
A pauses the video
B pauses the video
A un-pauses the video

When A un-pauses the video B would also unpause, even though it should
not. As it turns out the performance optimization was resulting in B
not issuing the pause request to the modem.

Test: Manual test
Change-Id: Ia29471b3f13d5b104affcf634e1315fb7c71451b
Fixes: 62954065
/frameworks/opt/net/ims/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java
077dd3fef020b839e37b0c02fb5df7fadc7bf875 21-Jun-2017 Tyler Gunn <tgunn@google.com> Clear video pause tracker when video un-pause reported by the modem.

When video calls are swapped, the video stream automatically unpauses
without the UI requesting the pause/resume. Thus, the video pause tracker,
which tracks pause requests from the UI, can get into a state where it
thinks the video is paused, do it will ignore further pause requests.

Test: Manual
Bug: 62779713
Bug: 62784036
Change-Id: Ia8add452dbe9a79957e8a49e20ce58317136403b
/frameworks/opt/net/ims/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java
3aadc8a6c9c0b681587ad61aee73138b87c0ae35 11-May-2017 Tyler Gunn <tgunn@google.com> Add workaround for broken vendor camera on/off requests.

Scenario: A and B are in video call.
A goes to the background, pausing the video.
B attempts to turn off their camera.
The request fails to be interpreted by vendor code.

Reason: This SHOULD really be a request to go from/to:
Audio/TX/RX/Paused --> Audio/RX/Paused
However, it MUST be sent as:
Audio/TX/RX/Paused --> Audio/RX

The introduction of the VideoPauseTracker in N caused the request to be
sent in the former correct format rather than the latter incorrect format.

The VideoPauseTracker attempts to ensure that a request to pause sent by
the framework vs the incall ui are kept in sync (we use pause to disable
video on a call when the data limit is reached). In the process of ensuring
pause and resume requests were handled properly, this code was
fixing the malformed request.

Added a workaround to the code to ensure the requests remain in the same
broken format vendor code depends on.

Test: Manual, unit
Bug: 35304446
Change-Id: I9b974542234d3f567aba3f2996a815e39bc8963e
/frameworks/opt/net/ims/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java
9f6d8b2893929e0dc38d82feca4913e841fb94ed 22-Dec-2016 Tyler Gunn <tgunn@google.com> Use pause signaling to halt a video call when data limit is reached. am: 266d3920dd
am: 9139f28b30

Change-Id: I062f00a882dfca98bf409f5d87e5dee23ea90eae
266d3920ddc1e4cb95f9e21bc0ff0f2e0d0314cd 21-Dec-2016 Tyler Gunn <tgunn@google.com> Use pause signaling to halt a video call when data limit is reached.

This proved to be problematic as the InCallUI is the only place where
we would previously get a pause signal. Added a VideoPauseTracker
class which is responsible for tracking the source of pause requests and
ensuring that the video is only paused on the first request, and only
resumed on the last resume request.

Added some new logic to ImsVideoCallProviderWrapper to support receiving
pause and resume requests from other sources, and to ensure that requests
to pause or resume use the VideoPauseTracker to determine if the pause
or resume should actually be passed along to the modem.

Test: manual
Bug: 30760683
Change-Id: Id54b2a955745132ab09feb01b5c961f6115ef3df
/frameworks/opt/net/ims/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java
0c76f5a4157c821a64b39ce4803a154b089ab629 01-Dec-2016 Tyler Gunn <tgunn@google.com> Modify ImsVideoCallProvider to include calling UID for permission check.

Modify the ImsVideoCallProvider, which the vendor IMS stack implements to
include the UID of telephony. The vendor IMS stack will use this when
opening the camera for the purpose of camera permission verification by
the camera service.

Test: Unit, manual.
Bug: 32747443
Change-Id: I0884cc08ea4afa23c08e3fe1e2873b3f5aac2b40
/frameworks/opt/net/ims/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java
359bcd029c232605fbed6df66c6c3b220474c026 22-Jul-2016 Tyler Gunn <tgunn@google.com> Add ImsVideoProviderWrapperCallback to notify local components.

Added a callback class in ImsVideoProviderWrapperCallback so that local
components such as ImsPhoneConnection can listen to incoming session
modification responses.

Bug: 29381561
Change-Id: I38e5be1996c22be2e5f8797c825e0ab90d49fda1
/frameworks/opt/net/ims/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java
b42ff55315201e1c971ff601eab6a5e645f8641d 22-Jun-2016 Jack Yu <jackyu@google.com> Report VT data usage to the client

Report the aggregated VT data usage per call to the registered
client.

bug: 20888836
Change-Id: I6d9629aebfde641f96fbfe2071346ae3bc362cdb
/frameworks/opt/net/ims/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java
95bd67621513f910787214f07c37f0d366ffaf37 13-May-2015 Yorke Lee <yorkelee@google.com> More video related API fixes

android.telecom.Connection.VideoProvider
* onSetPauseImage takes Uri instead of String
* changeCallDataUsage -> setCallDataUsage
* add quality constants to changeVideoQuality() docs

android.telecom.InCallService.VideoCall
* setPauseImage takes Uri instea dof String

android.telecom.VideoProfile.VideoState
* Move constants to VideoProfile, prefix with STATE_

Bug: 21040387
Bug: 21066505
Change-Id: I764e72aced9d1e2d30d6d0cf0862100860d47c79
/frameworks/opt/net/ims/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java
33d827a95dcb4e007c3e94a591fe1c02fe3d7836 12-May-2015 Yorke Lee <yorkelee@google.com> Fixes for APi review

Move CameraCapabilities into VideoProfile
Make PhoneAccount and PhoneAccountHandle final

Bug: 21040387
Bug: 21066505
Change-Id: I72453c89ae3765f9b9cf263938fce96d5978d2e0
/frameworks/opt/net/ims/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java
0a625b7ee9586e573442629beb4ac833d45f6e0d 06-May-2015 Tyler Gunn <tgunn@google.com> Change sendSessionModifyRequest VideoProvider API signature.

Bug: 20704229
Change-Id: I7650b6ae21532b10f901449f702f3a4b59477696
/frameworks/opt/net/ims/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java
5aec2e957365f20b2e75d3b8c7034e3289729b81 24-Mar-2015 Rekha Kumar <rekhak@codeaurora.org> IMS-VT: Fix propagation of device orientation.
Orientation received at VT Service is incorrect.
Fixed propagation of device orientation to VT service

Notify listeners of video quality changed event
- Propagate the video quality changed message.

IMS: Add support for video quality
- Add Config interface to get/set video quality

IMS-VT: Change call data usage parameters
Change call data usage methods to take parameter of long type
instead of int

Change-Id: I543aa082337d437ec7c2bf249bafb9658f34dd1b

Propagate the call substate changed message to the UI

Change-Id: I695736ccfa4e4446912ba6c3df1713bae6d4486a
/frameworks/opt/net/ims/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java
f348775aec349cf205f711352345c8f4e89875de 21-Nov-2014 Ihab Awad <ihab@google.com> Telecom API updates (6/6)

Bug: 18292176
Change-Id: Ie42fb083cf505ff5bd5c13c6424d2606dec494de
/frameworks/opt/net/ims/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java
3ddaa6ec08d417d2848775ad3b5b01b865a9c891 11-Sep-2014 Tyler Gunn <tgunn@google.com> Renaming Telecomm to Telecom.

- Changing package from android.telecomm to android.telecom
- Changing package from com.android.telecomm to
com.android.server.telecomm.
- Renaming TelecommManager to TelecomManager.

Bug: 17364651
Change-Id: Ibf964b6d88935e7787304954295528f8921c0e21
/frameworks/opt/net/ims/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java
ed7fbd60ee7f2d72d7bdf78718663774f526a1bc 13-Aug-2014 Ihab Awad <ihab@google.com> Final structural tweaks to Telecomm API (7/8)

Bug: 16416927
Bug: 16494880
Change-Id: I572145da40cda2bd9cc20d5277491c99cc66bb95
/frameworks/opt/net/ims/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java
01b4ea445b5cdc6c1b32153d4f0216f429ede8af 08-Aug-2014 Andrew Lee <anwlee@google.com> Implement Ims's VideoCallProvider, including a wrapper.

+ Implements ConnectionService.VideoCallProvider as
ImsVideoCallProviderWrapper. ConnectionService treats this as
the concrete implementation of VideoCallProvider. In detail though,
it is a wrapper around ImsVideoCallProvider which should be extended
in ImsService and implements the actual video call provider
functionality. This wrapper intermediates communication for commands
sent through Telephony and carried out in ImsService. It also
implements the callback class whose binder is provided to the
ImsVideoCallProvider.
+ ImsVideoCallProvider is an abstract class which defines
functionality which satisfies ConnectionService.VideoCallProvider.
We don't directly extend VideoCallProvider because of the
inter-process communication necessary across Telephony and
ImsService. This class provides a binder which is passed to the
ImsVideoCallProviderWrapper.
+ Implement getVideoCallProvider on ImsCallSession.

Bug: 16886403
Change-Id: I9b995baa74149b3c046789f797ab0ff49ae7165b
/frameworks/opt/net/ims/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java