Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c98eb64a authored by Graciela Wissen Putri's avatar Graciela Wissen Putri
Browse files

[1/n] Order DesktopModeLoggerTransitionObserver after desk transition

This is to ensure the session is logged as active from desk transitions
so task update is logged after session update.

Flag: EXEMPT refactor
Bug: 423560267
Test: atest DesktopInOrderTransitionObserverTest
      atest FreeformTaskTransitionObserverTest
Change-Id: I9f1f978aabe90b830fb6b59f9879c87942a048d5
parent f7468497
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -559,7 +559,8 @@ public abstract class WMShellModule {
            DesktopState desktopState,
            Optional<DesktopImeHandler> desktopImeHandler,
            Optional<DesktopBackNavTransitionObserver> desktopBackNavTransitionObserver,
            Optional<DesktopInOrderTransitionObserver> desktopInOrderTransitionObserver) {
            Optional<DesktopInOrderTransitionObserver> desktopInOrderTransitionObserver,
            DesktopModeLoggerTransitionObserver desktopModeLoggerTransitionObserver) {
        return new FreeformTaskTransitionObserver(
                shellInit,
                transitions,
@@ -572,7 +573,8 @@ public abstract class WMShellModule {
                desktopState,
                desktopImeHandler,
                desktopBackNavTransitionObserver,
                desktopInOrderTransitionObserver);
                desktopInOrderTransitionObserver,
                desktopModeLoggerTransitionObserver);
    }

    @WMSingleton
@@ -1037,7 +1039,8 @@ public abstract class WMShellModule {
            Optional<DesksTransitionObserver> desksTransitionObserver,
            DesktopState desktopState,
            Optional<DesktopImeHandler> desktopImeHandler,
            Optional<DesktopBackNavTransitionObserver> desktopBackNavTransitionObserver) {
            Optional<DesktopBackNavTransitionObserver> desktopBackNavTransitionObserver,
            DesktopModeLoggerTransitionObserver desktopModeLoggerTransitionObserver) {
        if (enableInorderTransitionCallbacksForDesktop()
                && ENABLE_WINDOWING_TRANSITION_HANDLERS_OBSERVERS.isTrue()
                && desktopState.canEnterDesktopMode()) {
@@ -1046,7 +1049,8 @@ public abstract class WMShellModule {
                    focusTransitionObserver,
                    desksTransitionObserver,
                    desktopImeHandler,
                    desktopBackNavTransitionObserver));
                    desktopBackNavTransitionObserver,
                    desktopModeLoggerTransitionObserver));
        }
        return Optional.empty();
    }
@@ -1556,13 +1560,12 @@ public abstract class WMShellModule {
    @Provides
    static DesktopModeLoggerTransitionObserver provideDesktopModeLoggerTransitionObserver(
            ShellInit shellInit,
            Transitions transitions,
            DesktopModeEventLogger desktopModeEventLogger,
            Optional<DesktopTasksLimiter> desktopTasksLimiter,
            DesktopState desktopState,
            DesksOrganizer desksOrganizer) {
        return new DesktopModeLoggerTransitionObserver(
                shellInit, transitions, desktopModeEventLogger,
                shellInit, desktopModeEventLogger,
                desktopTasksLimiter, desktopState, desksOrganizer);
    }

+2 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ class DesktopInOrderTransitionObserver(
    private val desksTransitionObserver: Optional<DesksTransitionObserver>,
    private val desktopImeHandler: Optional<DesktopImeHandler>,
    private val desktopBackNavTransitionObserver: Optional<DesktopBackNavTransitionObserver>,
    private val desktopModeLoggerTransitionObserver: DesktopModeLoggerTransitionObserver,
) : Transitions.TransitionObserver {

    override fun onTransitionReady(
@@ -62,6 +63,7 @@ class DesktopInOrderTransitionObserver(
        // Call after the focus state update to have the correct focused window.
        desktopImeHandler.ifPresent { it.onTransitionReady(transition, info) }
        desktopBackNavTransitionObserver.ifPresent { it.onTransitionReady(transition, info) }
        desktopModeLoggerTransitionObserver.onTransitionReady(transition, info, startT, finishT)
    }

    override fun onTransitionStarting(transition: IBinder) {
+0 −2
Original line number Diff line number Diff line
@@ -68,7 +68,6 @@ import kotlin.jvm.optionals.getOrNull
 */
class DesktopModeLoggerTransitionObserver(
    shellInit: ShellInit,
    private val transitions: Transitions,
    private val desktopModeEventLogger: DesktopModeEventLogger,
    private val desktopTasksLimiter: Optional<DesktopTasksLimiter>,
    desktopState: DesktopState,
@@ -100,7 +99,6 @@ class DesktopModeLoggerTransitionObserver(
    @VisibleForTesting var isSessionActive: Boolean = false

    fun onInit() {
        transitions.registerObserver(this)
        SystemProperties.set(
            VISIBLE_TASKS_COUNTER_SYSTEM_PROPERTY,
            VISIBLE_TASKS_COUNTER_SYSTEM_PROPERTY_DEFAULT_VALUE,
+7 −1
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import com.android.wm.shell.desktopmode.DesktopBackNavTransitionObserver;
import com.android.wm.shell.desktopmode.DesktopImeHandler;
import com.android.wm.shell.desktopmode.DesktopImmersiveController;
import com.android.wm.shell.desktopmode.DesktopInOrderTransitionObserver;
import com.android.wm.shell.desktopmode.DesktopModeLoggerTransitionObserver;
import com.android.wm.shell.desktopmode.multidesks.DesksOrganizer;
import com.android.wm.shell.desktopmode.multidesks.DesksTransitionObserver;
import com.android.wm.shell.shared.desktopmode.DesktopState;
@@ -66,6 +67,7 @@ public class FreeformTaskTransitionObserver implements Transitions.TransitionObs
    private final Optional<DesktopImeHandler> mDesktopImeHandler;
    private final Optional<DesktopBackNavTransitionObserver> mDesktopBackNavTransitionObserver;
    private final Optional<DesktopInOrderTransitionObserver> mDesktopInOrderTransitionObserver;
    private final DesktopModeLoggerTransitionObserver mDesktopModeLoggerTransitionObserver;

    private final Map<IBinder, List<ActivityManager.RunningTaskInfo>> mTransitionToTaskInfo =
            new HashMap<>();
@@ -85,7 +87,8 @@ public class FreeformTaskTransitionObserver implements Transitions.TransitionObs
            DesktopState desktopState,
            Optional<DesktopImeHandler> desktopImeHandler,
            Optional<DesktopBackNavTransitionObserver> desktopBackNavTransitionObserver,
            Optional<DesktopInOrderTransitionObserver> desktopInOrderTransitionObserver) {
            Optional<DesktopInOrderTransitionObserver> desktopInOrderTransitionObserver,
            DesktopModeLoggerTransitionObserver desktopModeLoggerTransitionObserver) {
        mTransitions = transitions;
        mDesktopImmersiveController = desktopImmersiveController;
        mWindowDecorViewModel = windowDecorViewModel;
@@ -96,6 +99,7 @@ public class FreeformTaskTransitionObserver implements Transitions.TransitionObs
        mDesktopImeHandler = desktopImeHandler;
        mDesktopBackNavTransitionObserver = desktopBackNavTransitionObserver;
        mDesktopInOrderTransitionObserver = desktopInOrderTransitionObserver;
        mDesktopModeLoggerTransitionObserver = desktopModeLoggerTransitionObserver;
        if (FreeformComponents.requiresFreeformComponents(desktopState)) {
            shellInit.addInitCallback(this::onInit, this);
        }
@@ -137,6 +141,8 @@ public class FreeformTaskTransitionObserver implements Transitions.TransitionObs
            // Call after the focus state update to have the correct focused window.
            mDesktopImeHandler.ifPresent(o -> o.onTransitionReady(transition, info));
            mDesktopBackNavTransitionObserver.ifPresent(o -> o.onTransitionReady(transition, info));
            mDesktopModeLoggerTransitionObserver.onTransitionReady(transition, info, startT,
                    finishT);

        }
        final ArrayList<ActivityManager.RunningTaskInfo> taskInfoList = new ArrayList<>();
+21 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mockito
import org.mockito.kotlin.inOrder
import org.mockito.kotlin.mock
import org.mockito.kotlin.verify

@@ -50,6 +51,7 @@ class DesktopInOrderTransitionObserverTest : ShellTestCase() {
    private val desksTransitionObserver = mock<DesksTransitionObserver>()
    private val desktopImeHandler = mock<DesktopImeHandler>()
    private val desktopBackNavTransitionObserver = mock<DesktopBackNavTransitionObserver>()
    private val desktopModeLoggerTransitionObserver = mock<DesktopModeLoggerTransitionObserver>()
    private lateinit var transitionObserver: DesktopInOrderTransitionObserver

    @Before
@@ -61,6 +63,7 @@ class DesktopInOrderTransitionObserverTest : ShellTestCase() {
                Optional.of(desksTransitionObserver),
                Optional.of(desktopImeHandler),
                Optional.of(desktopBackNavTransitionObserver),
                desktopModeLoggerTransitionObserver,
            )
    }

@@ -151,4 +154,22 @@ class DesktopInOrderTransitionObserverTest : ShellTestCase() {

        verify(desksTransitionObserver).onTransitionFinished(transition)
    }

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_INORDER_TRANSITION_CALLBACKS_FOR_DESKTOP)
    fun onTransitionReady_forwardsToDesktopModeLoggerTransitionObserver() {
        val transition = Mockito.mock(IBinder::class.java)
        val info = TransitionInfoBuilder(TRANSIT_CHANGE, /* flags= */ 0).build()
        val startT = mock<SurfaceControl.Transaction>()
        val finishT = mock<SurfaceControl.Transaction>()

        val inorder = inOrder(desktopModeLoggerTransitionObserver, desksTransitionObserver)

        transitionObserver.onTransitionReady(transition, info, startT, finishT)

        inorder.verify(desksTransitionObserver).onTransitionReady(transition, info)
        inorder
            .verify(desktopModeLoggerTransitionObserver)
            .onTransitionReady(transition, info, startT, finishT)
    }
}
Loading