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

Commit 974305c2 authored by Daniel Norman's avatar Daniel Norman
Browse files

Uses DisplayManager to get default display for landscape layout.

The previous mLayout.getDisplay() was returning null, causing this code
path to trigger a NPE in display.getRotation() for landscape devices.

Bug: 261252772
Test: Install AccessibilityMenu on a large-screen device.
      Enable the a11y service and interact with the UI.
Change-Id: Ie4f96ba22e9874c81d70b5ad449c3ead5da437ff
parent 4fcb6f4e
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.content.res.Configuration;
import android.graphics.Insets;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.hardware.display.DisplayManager;
import android.os.Handler;
import android.os.Looper;
import android.view.Display;
@@ -73,6 +74,7 @@ public class A11yMenuOverlayLayout {

    private final AccessibilityMenuService mService;
    private final WindowManager mWindowManager;
    private final DisplayManager mDisplayManager;
    private ViewGroup mLayout;
    private WindowManager.LayoutParams mLayoutParameter;
    private A11yMenuViewPager mA11yMenuViewPager;
@@ -82,6 +84,7 @@ public class A11yMenuOverlayLayout {
    public A11yMenuOverlayLayout(AccessibilityMenuService service) {
        mService = service;
        mWindowManager = mService.getSystemService(WindowManager.class);
        mDisplayManager = mService.getSystemService(DisplayManager.class);
        configureLayout();
        mHandler = new Handler(Looper.getMainLooper());
        mAccessibilityManager = mService.getSystemService(AccessibilityManager.class);
@@ -161,9 +164,9 @@ public class A11yMenuOverlayLayout {

    /** Updates a11y menu layout position by configuring layout params. */
    private void updateLayoutPosition() {
        Display display = mLayout.getDisplay();
        final Display display = mDisplayManager.getDisplay(Display.DEFAULT_DISPLAY);
        final int orientation = mService.getResources().getConfiguration().orientation;
        if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
        if (display != null && orientation == Configuration.ORIENTATION_LANDSCAPE) {
            switch (display.getRotation()) {
                case Surface.ROTATION_90:
                case Surface.ROTATION_180: