Add external gate transition to TaskViewTransitions
In some scenarios we want to block the TaskView transitions from running until we complete some other work. To accomplish this we were adding already running transitions as external transitions to the TaskViewTransitions pending queue. There was a scenario where these could not be cleared from the queue anymore. If the queue already had something in there, the queued external transition was not started immediately. If we tried to clear this external transition from the queue, before it was started, the removal failed. As the removal happens based on the started transition identified. Which never got set. The removal code was not aware of the failure to clear the external transition. And did not retry. Once the TaskViewTransitions queue reached the external transition, it got started, but because the cleanup for it was already done, this transition never got cleared from the pending queue. This caused the queue to get stuck. Where it would not process any new TaskView transitions. To avoid this issue, we are adding a new way to enqueue external transitions. If they do not need to be started, as in they are already running, by the time we add them to the queue, add them as already claimed. They will still hold up the queue and require to be cleared, but this ensures that they always can be cleared. And do not neccesarily need to be started. Bug: 433879169 Test: atest WMShellUnitTests:TaskViewTransitionsTest Test: atest WMShellUnitTests:BubbleTransitionsTest Flag: EXEMPT bugfix Change-Id: Ia53b738755c29177ad1ebe3382d29e1ebc0a80bf
Loading
Please register or sign in to comment