Merge cherrypicks of ['googleplex-android-review.googlesource.com/30085866'] into 24Q4-release. Change-Id: I8c841b7ab41ebe11d36ad4fab6aa8060b728e2b9
diff --git a/res/layout/user_picker.xml b/res/layout/user_picker.xml index 46467a4..73fbf0a 100644 --- a/res/layout/user_picker.xml +++ b/res/layout/user_picker.xml
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. --> -<FrameLayout +<com.android.systemui.car.userpicker.UserPickerFrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:systemui="http://schemas.android.com/apk/res-auto" @@ -139,4 +139,4 @@ systemui:amPmStyle="gone"/> </androidx.constraintlayout.widget.ConstraintLayout> </com.android.car.ui.ConstraintFocusArea> -</FrameLayout> +</com.android.systemui.car.userpicker.UserPickerFrameLayout>
diff --git a/src/com/android/systemui/car/userpicker/UserPickerActivity.java b/src/com/android/systemui/car/userpicker/UserPickerActivity.java index 006b391..cb8313e 100644 --- a/src/com/android/systemui/car/userpicker/UserPickerActivity.java +++ b/src/com/android/systemui/car/userpicker/UserPickerActivity.java
@@ -17,7 +17,6 @@ package com.android.systemui.car.userpicker; import static android.view.WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE; -import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS; import static android.window.OnBackInvokedDispatcher.PRIORITY_DEFAULT; import static com.android.systemui.car.userpicker.HeaderState.HEADER_STATE_CHANGE_USER; @@ -38,7 +37,6 @@ import android.view.Window; import android.view.WindowInsets; import android.view.WindowInsetsController; -import android.view.WindowManager; import android.window.OnBackInvokedCallback; import androidx.annotation.NonNull; @@ -188,12 +186,6 @@ mDumpManager.registerNormalDumpable(dumpableName, /* module= */ this); } - @Override - protected void onStart() { - super.onStart(); - getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS); - } - private void initViews() { View powerBtn = mRootView.findViewById(R.id.power_button_icon_view); powerBtn.setOnClickListener(v -> mController.screenOffDisplay()); @@ -281,16 +273,6 @@ } @Override - protected void onStop() { - Window window = getWindow(); - WindowManager.LayoutParams attrs = window.getAttributes(); - attrs.privateFlags &= ~SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS; - window.setAttributes(attrs); - - super.onStop(); - } - - @Override protected void onDestroy() { if (DEBUG) { Slog.d(TAG, "onDestroy: displayId=" + getDisplayId());
diff --git a/src/com/android/systemui/car/userpicker/UserPickerFrameLayout.java b/src/com/android/systemui/car/userpicker/UserPickerFrameLayout.java new file mode 100644 index 0000000..c1789de --- /dev/null +++ b/src/com/android/systemui/car/userpicker/UserPickerFrameLayout.java
@@ -0,0 +1,53 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.car.userpicker; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.widget.FrameLayout; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +/** Standard FrameLayout with added touch filtering when partially obscured. */ +public class UserPickerFrameLayout extends FrameLayout { + public UserPickerFrameLayout(@NonNull Context context) { + super(context); + } + + public UserPickerFrameLayout(@NonNull Context context, + @Nullable AttributeSet attrs) { + super(context, attrs); + } + + public UserPickerFrameLayout(@NonNull Context context, @Nullable AttributeSet attrs, + int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + public UserPickerFrameLayout(@NonNull Context context, @Nullable AttributeSet attrs, + int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + } + + @Override + public boolean onFilterTouchEventForSecurity(MotionEvent event) { + return ((event.getFlags() & MotionEvent.FLAG_WINDOW_IS_PARTIALLY_OBSCURED) == 0) + && super.onFilterTouchEventForSecurity(event); + } +}