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

Commit e4551568 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add factory for TaskPositioner."

parents 3752fc9e 6caf1d8c
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -59,6 +59,8 @@ class TaskPositioner {
    private static final String TAG_LOCAL = "TaskPositioner";
    private static final String TAG = TAG_WITH_CLASS_NAME ? TAG_LOCAL : TAG_WM;

    private static Factory sFactory;

    // The margin the pointer position has to be within the side of the screen to be
    // considered at the side of the screen.
    static final int SIDE_MARGIN_DIP = 100;
@@ -214,6 +216,7 @@ class TaskPositioner {
        }
    }

    /** Use {@link #create(WindowManagerService)} instead **/
    TaskPositioner(WindowManagerService service) {
        mService = service;
    }
@@ -622,4 +625,22 @@ class TaskPositioner {
    public String toShortString() {
        return TAG;
    }

    static void setFactory(Factory factory) {
        sFactory = factory;
    }

    static TaskPositioner create(WindowManagerService service) {
        if (sFactory == null) {
            sFactory = new Factory() {};
        }

        return sFactory.create(service);
    }

    interface Factory {
        default TaskPositioner create(WindowManagerService service) {
            return new TaskPositioner(service);
        }
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -126,7 +126,7 @@ class TaskPositioningController {
        }

        Display display = displayContent.getDisplay();
        mTaskPositioner = new TaskPositioner(mService);
        mTaskPositioner = TaskPositioner.create(mService);
        mTaskPositioner.register(displayContent);
        mInputMonitor.updateInputWindowsLw(true /*force*/);

+21 −1
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import static com.android.server.wm.WindowManagerService.dipToPixel;
import static com.android.server.wm.WindowState.MINIMUM_VISIBLE_HEIGHT_IN_DP;
import static com.android.server.wm.WindowState.MINIMUM_VISIBLE_WIDTH_IN_DP;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;

/**
@@ -57,6 +58,9 @@ public class TaskPositionerTests extends WindowTestsBase {
    @Before
    public void setUp() throws Exception {
        super.setUp();

        TaskPositioner.setFactory(null);

        final Display display = mDisplayContent.getDisplay();
        final DisplayMetrics dm = new DisplayMetrics();
        display.getMetrics(dm);
@@ -65,10 +69,26 @@ public class TaskPositionerTests extends WindowTestsBase {
        mMinVisibleWidth = dipToPixel(MINIMUM_VISIBLE_WIDTH_IN_DP, dm);
        mMinVisibleHeight = dipToPixel(MINIMUM_VISIBLE_HEIGHT_IN_DP, dm);

        mPositioner = new TaskPositioner(sWm);
        mPositioner = TaskPositioner.create(sWm);
        mPositioner.register(mDisplayContent);
    }

    @Test
    public void testOverrideFactory() throws Exception {
        final boolean[] created = new boolean[1];
        created[0] = false;
        TaskPositioner.setFactory(new TaskPositioner.Factory() {
            @Override
            public TaskPositioner create(WindowManagerService service) {
                created[0] = true;
                return null;
            }
        });

        assertNull(TaskPositioner.create(sWm));
        assertTrue(created[0]);
    }

    /**
     * This tests that free resizing will allow to change the orientation as well
     * as does some basic tests (e.g. dragging in Y only will keep X stable).