From: Beverly Date: Wed, 6 Sep 2017 14:23:29 +0000 (-0400) Subject: DO NOT MERGE Backporting potential usb tapjacking precaution. X-Git-Tag: android-x86-7.1-r3^2~51 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=ac9d3d4195861518c5fc23b51dd926b43ba3a758;hp=12b0a09224ae5c30c9dc55c97f25437d4023779c;p=android-x86%2Fframeworks-base.git DO NOT MERGE Backporting potential usb tapjacking precaution. Bug: 62187985 Test: manual, backport Change-Id: I6a4997ef71340d01b352e07ff035c28e19d36c34 (cherry picked from commit c8752a515963b1c8b67a553e2cb666f367743f32) --- diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 4a51329215e0..1ba90c3533e7 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -1701,4 +1701,9 @@ Your phone will automatically try to cool down. You can still use your phone, but it may run slower.\n\nOnce your phone has cooled down, it will run normally. + + Because an app is obscuring a permission request, Settings + can’t verify your response. diff --git a/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java b/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java index f5447a293503..6b7117946f2f 100644 --- a/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java +++ b/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java @@ -31,12 +31,15 @@ import android.os.ServiceManager; import android.os.SystemProperties; import android.util.Log; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; +import android.view.Window; +import android.view.WindowManager; import android.widget.CheckBox; - import com.android.internal.app.AlertActivity; import com.android.internal.app.AlertController; import com.android.systemui.R; +import android.widget.Toast; public class UsbDebuggingActivity extends AlertActivity implements DialogInterface.OnClickListener { @@ -48,6 +51,10 @@ public class UsbDebuggingActivity extends AlertActivity @Override public void onCreate(Bundle icicle) { + Window window = getWindow(); + window.addPrivateFlags(WindowManager.LayoutParams.PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS); + window.setType(WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG); + super.onCreate(icicle); if (SystemProperties.getInt("service.adb.tcp.port", 0) == 0) { @@ -79,6 +86,26 @@ public class UsbDebuggingActivity extends AlertActivity ap.mView = checkbox; setupAlert(); + + // adding touch listener on affirmative button - checks if window is obscured + // if obscured, do not let user give permissions (could be tapjacking involved) + final View.OnTouchListener filterTouchListener = new View.OnTouchListener() { + + public boolean onTouch(View v, MotionEvent event) { + // Filter obscured touches by consuming them. + if (((event.getFlags() & MotionEvent.FLAG_WINDOW_IS_OBSCURED) != 0) + || ((event.getFlags() & MotionEvent.FLAG_WINDOW_IS_PARTIALLY_OBSCURED) != 0)) { + if (event.getAction() == MotionEvent.ACTION_UP) { + Toast.makeText(v.getContext(), + R.string.touch_filtered_warning, + Toast.LENGTH_SHORT).show(); + } + return true; + } + return false; + } + }; + mAlert.getButton(BUTTON_POSITIVE).setOnTouchListener(filterTouchListener); } private class UsbDisconnectedReceiver extends BroadcastReceiver {