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

Commit c88227fe authored by Tiger Huang's avatar Tiger Huang
Browse files

Test more about InsetsSourceProvider.updateControlForTarget

We added logic to the function, and this CL detects if the logic is
broken.

Bug; 149121559
Test: atest InsetsSourceProviderTest

Change-Id: I5eadae67aa0c2555441b16d8ae0146fe18ad0632
parent a0000893
Loading
Loading
Loading
Loading
+33 −0
Original line number Original line Diff line number Diff line
@@ -112,11 +112,44 @@ public class InsetsSourceProviderTest extends WindowTestsBase {
        final WindowState statusBar = createWindow(null, TYPE_APPLICATION, "statusBar");
        final WindowState statusBar = createWindow(null, TYPE_APPLICATION, "statusBar");
        final WindowState target = createWindow(null, TYPE_APPLICATION, "target");
        final WindowState target = createWindow(null, TYPE_APPLICATION, "target");
        statusBar.getFrameLw().set(0, 0, 500, 100);
        statusBar.getFrameLw().set(0, 0, 500, 100);

        // We must not have control or control target before we have the insets source window.
        mProvider.updateControlForTarget(target, true /* force */);
        assertNull(mProvider.getControl(target));
        assertNull(mProvider.getControlTarget());

        // We can have the control or the control target after we have the insets source window.
        mProvider.setWindow(statusBar, null, null);
        mProvider.setWindow(statusBar, null, null);
        mProvider.updateControlForTarget(target, false /* force */);
        mProvider.updateControlForTarget(target, false /* force */);
        assertNotNull(mProvider.getControl(target));
        assertNotNull(mProvider.getControl(target));
        assertNotNull(mProvider.getControlTarget());

        // We must not have control or control target while we are performing seamless rotation.
        // And the control and the control target must not be updated during that.
        mProvider.startSeamlessRotation();
        assertNull(mProvider.getControl(target));
        assertNull(mProvider.getControlTarget());
        mProvider.updateControlForTarget(target, true /* force */);
        assertNull(mProvider.getControl(target));
        assertNull(mProvider.getControlTarget());

        // We can have the control and the control target after seamless rotation.
        mProvider.finishSeamlessRotation(false /* timeout */);
        mProvider.updateControlForTarget(target, false /* force */);
        assertNotNull(mProvider.getControl(target));
        assertNotNull(mProvider.getControlTarget());

        // We can clear the control and the control target.
        mProvider.updateControlForTarget(null, false /* force */);
        mProvider.updateControlForTarget(null, false /* force */);
        assertNull(mProvider.getControl(target));
        assertNull(mProvider.getControl(target));
        assertNull(mProvider.getControlTarget());

        // We must not have control or control target if the insets source window doesn't have a
        // surface.
        statusBar.setSurfaceControl(null);
        mProvider.updateControlForTarget(target, true /* force */);
        assertNull(mProvider.getControl(target));
        assertNull(mProvider.getControlTarget());
    }
    }


    @Test
    @Test