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

Commit 56d2342d authored by Ryan Lin's avatar Ryan Lin Committed by Android (Google) Code Review
Browse files

Merge "Do not redispatch/inject motionevent to private virtual display"

parents a691ff7d 4eccaf5e
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -29,8 +29,8 @@ import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.MotionEvent;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityEvent;


import com.android.server.accessibility.gestures.TouchExplorer;
import com.android.server.LocalServices;
import com.android.server.LocalServices;
import com.android.server.accessibility.gestures.TouchExplorer;
import com.android.server.policy.WindowManagerPolicy;
import com.android.server.policy.WindowManagerPolicy;


import java.util.ArrayList;
import java.util.ArrayList;
+16 −4
Original line number Original line Diff line number Diff line
@@ -2531,18 +2531,17 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
                    // to create event handler per display. The events should be handled by the
                    // to create event handler per display. The events should be handled by the
                    // display which is overlaid by it.
                    // display which is overlaid by it.
                    final Display display = displays[i];
                    final Display display = displays[i];
                    if (display.getType() == Display.TYPE_OVERLAY) {
                    if (isValidDisplay(display)) {
                        continue;
                    }
                        mDisplaysList.add(display);
                        mDisplaysList.add(display);
                    }
                    }
                }
                }
            }
            }
        }


        @Override
        @Override
        public void onDisplayAdded(int displayId) {
        public void onDisplayAdded(int displayId) {
            final Display display = mDisplayManager.getDisplay(displayId);
            final Display display = mDisplayManager.getDisplay(displayId);
            if (display == null || display.getType() == Display.TYPE_OVERLAY) {
            if (!isValidDisplay(display)) {
                return;
                return;
            }
            }


@@ -2593,6 +2592,19 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
        public void onDisplayChanged(int displayId) {
        public void onDisplayChanged(int displayId) {
            /* do nothing */
            /* do nothing */
        }
        }

        private boolean isValidDisplay(@Nullable Display display) {
            if (display == null || display.getType() == Display.TYPE_OVERLAY) {
                return false;
            }
            // Private virtual displays are created by the ap and is not allowed to access by other
            // aps. We assume we could ignore them.
            if ((display.getType() == Display.TYPE_VIRTUAL
                    && (display.getFlags() & Display.FLAG_PRIVATE) != 0)) {
                return false;
            }
            return true;
        }
    }
    }


    /** Represents an {@link AccessibilityManager} */
    /** Represents an {@link AccessibilityManager} */