Merge "Make Splash-screens touch opaque cross uid"

This commit is contained in:
Linus Tufvesson
2022-01-17 10:19:03 +00:00
committed by Android (Google) Code Review
2 changed files with 6 additions and 7 deletions

View File

@@ -269,6 +269,8 @@ public class StartingSurfaceDrawer {
// touchable or focusable by the user. We also add in the ALT_FOCUSABLE_IM
// flag because we do know that the next window will take input
// focus, so we want to get the IME window up on top of us right away.
// Touches will only pass through to the host activity window and will be blocked from
// passing to any other windows.
windowFlags |= WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
@@ -276,9 +278,6 @@ public class StartingSurfaceDrawer {
params.token = appToken;
params.packageName = activityInfo.packageName;
params.privateFlags |= WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS;
// Setting as trusted overlay to let touches pass through. This is safe because this
// window is controlled by the system.
params.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_TRUSTED_OVERLAY;
if (!context.getResources().getCompatibilityInfo().supportsScreen()) {
params.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_COMPATIBLE_WINDOW;

View File

@@ -26,6 +26,7 @@ import android.compat.annotation.Disabled;
import android.os.IBinder;
import android.os.InputConstants;
import android.os.Looper;
import android.os.Process;
import android.util.Slog;
import android.view.InputChannel;
import android.view.InputEvent;
@@ -113,14 +114,13 @@ class ActivityRecordInputSink {
}
private InputWindowHandle createInputWindowHandle() {
InputWindowHandle inputWindowHandle = new InputWindowHandle(
mActivityRecord.getInputApplicationHandle(false),
InputWindowHandle inputWindowHandle = new InputWindowHandle(null,
mActivityRecord.getDisplayId());
inputWindowHandle.replaceTouchableRegionWithCrop(
mActivityRecord.getParentSurfaceControl());
inputWindowHandle.name = mName;
inputWindowHandle.ownerUid = mActivityRecord.getUid();
inputWindowHandle.ownerPid = mActivityRecord.getPid();
inputWindowHandle.ownerUid = Process.myUid();
inputWindowHandle.ownerPid = Process.myPid();
inputWindowHandle.layoutParamsFlags =
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_SPLIT_TOUCH;