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

Commit 7c95e968 authored by Suprabh Shukla's avatar Suprabh Shukla Committed by Android (Google) Code Review
Browse files

Merge "Adding SecureTouchListener to drop suspicious touches" into oc-dev

parents 1f74edd2 395b58d6
Loading
Loading
Loading
Loading
+44 −0
Original line number Diff line number Diff line
package com.android.settingslib;

import android.os.SystemClock;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;

/**
 * A touch listener which consumes touches when another window is partly or wholly obscuring the
 * window containing the view this listener is attached to.
 * Optionally accepts a string to show the user as a toast when consuming an insecure touch
 */
public class SecureTouchListener implements View.OnTouchListener {

    private static final long TAP_DEBOUNCE_TIME = 2000;
    private long mLastToastTime = 0;
    private String mWarningText;

    public SecureTouchListener() {
        this(null);
    }

    public SecureTouchListener(String warningText) {
        mWarningText = warningText;
    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if ((event.getFlags() & MotionEvent.FLAG_WINDOW_IS_OBSCURED) != 0
                || (event.getFlags() & MotionEvent.FLAG_WINDOW_IS_PARTIALLY_OBSCURED) != 0) {
            if (mWarningText != null) {
                // Show a toast warning the user
                final long currentTime = SystemClock.uptimeMillis();
                if (currentTime - mLastToastTime > TAP_DEBOUNCE_TIME) {
                    mLastToastTime = currentTime;
                    Toast.makeText(v.getContext(), mWarningText, Toast.LENGTH_SHORT).show();
                }
            }
            // Consume the touch event
            return true;
        }
        return false;
    }
}