From 9e4c753b3036d669eda6a5295018e1967a40ed9f Mon Sep 17 00:00:00 2001 From: Sunny Shao Date: Thu, 2 Jul 2020 14:10:00 +0800 Subject: [PATCH] Enable the filterTouchesWhenObscured in Special app access - Enable the filterTouchesWhenObscured attribute on all toggle switches in all pages of the special app access Bug: 155288585 Test: make RunSettingsRoboTests Merged-In: I011cfe4b7e4e624a8338332ac47a353f7f3ab661 Merged-In: I0731057ec6e77c6a0867784c729c3f5812ef6170 Change-Id: I02c372423287366d0706bcdf7cdecff48db2e22a --- res/xml/app_ops_permissions_details.xml | 2 +- res/xml/change_wifi_state_details.xml | 2 +- res/xml/draw_overlay_permissions_details.xml | 2 +- res/xml/external_sources_details.xml | 2 +- ...picture_in_picture_permissions_details.xml | 2 +- ...te_system_settings_permissions_details.xml | 2 +- .../settings/widget/AppSwitchPreference.java | 6 ++ ...lterTouchesRestrictedSwitchPreference.java | 58 +++++++++++++++++++ .../widget/FilterTouchesSwitchPreference.java | 56 ++++++++++++++++++ 9 files changed, 126 insertions(+), 6 deletions(-) create mode 100644 src/com/android/settings/widget/FilterTouchesRestrictedSwitchPreference.java create mode 100644 src/com/android/settings/widget/FilterTouchesSwitchPreference.java diff --git a/res/xml/app_ops_permissions_details.xml b/res/xml/app_ops_permissions_details.xml index cb8711cb09a..cbf3e127fdc 100644 --- a/res/xml/app_ops_permissions_details.xml +++ b/res/xml/app_ops_permissions_details.xml @@ -17,7 +17,7 @@ - - diff --git a/res/xml/draw_overlay_permissions_details.xml b/res/xml/draw_overlay_permissions_details.xml index 3e7bec590bb..d3397a707b7 100644 --- a/res/xml/draw_overlay_permissions_details.xml +++ b/res/xml/draw_overlay_permissions_details.xml @@ -18,7 +18,7 @@ android:key="draw_overlay_permission_detail_settings" android:title="@string/draw_overlay"> - diff --git a/res/xml/external_sources_details.xml b/res/xml/external_sources_details.xml index ea2abdc52bc..57d5587c69f 100644 --- a/res/xml/external_sources_details.xml +++ b/res/xml/external_sources_details.xml @@ -17,7 +17,7 @@ - diff --git a/res/xml/picture_in_picture_permissions_details.xml b/res/xml/picture_in_picture_permissions_details.xml index c215c9d9cf7..5f2a45ae55c 100644 --- a/res/xml/picture_in_picture_permissions_details.xml +++ b/res/xml/picture_in_picture_permissions_details.xml @@ -18,7 +18,7 @@ android:key="picture_in_picture_permission_detail_settings" android:title="@string/picture_in_picture_app_detail_title"> - diff --git a/res/xml/write_system_settings_permissions_details.xml b/res/xml/write_system_settings_permissions_details.xml index 82a6931592c..21ea7065e1b 100644 --- a/res/xml/write_system_settings_permissions_details.xml +++ b/res/xml/write_system_settings_permissions_details.xml @@ -18,7 +18,7 @@ android:key="write_system_settings_permission_detail_settings" android:title="@string/write_settings"> - diff --git a/src/com/android/settings/widget/AppSwitchPreference.java b/src/com/android/settings/widget/AppSwitchPreference.java index d67e895766a..96f0e7b9db1 100644 --- a/src/com/android/settings/widget/AppSwitchPreference.java +++ b/src/com/android/settings/widget/AppSwitchPreference.java @@ -37,5 +37,11 @@ public class AppSwitchPreference extends SwitchPreference { view.findViewById(R.id.summary_container) .setVisibility(TextUtils.isEmpty(getSummary()) ? View.GONE : View.VISIBLE); + + final View switchView = view.findViewById(android.R.id.switch_widget); + if (switchView != null) { + final View rootView = switchView.getRootView(); + rootView.setFilterTouchesWhenObscured(true); + } } } diff --git a/src/com/android/settings/widget/FilterTouchesRestrictedSwitchPreference.java b/src/com/android/settings/widget/FilterTouchesRestrictedSwitchPreference.java new file mode 100644 index 00000000000..bd694bc388c --- /dev/null +++ b/src/com/android/settings/widget/FilterTouchesRestrictedSwitchPreference.java @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2020 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.settings.widget; + +import android.content.Context; +import android.support.v7.preference.PreferenceViewHolder; +import android.util.AttributeSet; +import android.view.View; + +import com.android.settingslib.RestrictedSwitchPreference; + +/** + * This widget with enabled filterTouchesWhenObscured attribute use to replace + * the {@link RestrictedSwitchPreference} in the Special access app pages for + * security. + */ +public class FilterTouchesRestrictedSwitchPreference extends RestrictedSwitchPreference { + public FilterTouchesRestrictedSwitchPreference(Context context, AttributeSet attrs, + int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + } + + public FilterTouchesRestrictedSwitchPreference(Context context, AttributeSet attrs, + int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + public FilterTouchesRestrictedSwitchPreference(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public FilterTouchesRestrictedSwitchPreference(Context context) { + super(context); + } + + @Override + public void onBindViewHolder(PreferenceViewHolder holder) { + super.onBindViewHolder(holder); + final View switchView = holder.findViewById(android.R.id.switch_widget); + if (switchView != null) { + final View rootView = switchView.getRootView(); + rootView.setFilterTouchesWhenObscured(true); + } + } +} diff --git a/src/com/android/settings/widget/FilterTouchesSwitchPreference.java b/src/com/android/settings/widget/FilterTouchesSwitchPreference.java new file mode 100644 index 00000000000..7ffa1965d67 --- /dev/null +++ b/src/com/android/settings/widget/FilterTouchesSwitchPreference.java @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2020 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.settings.widget; + +import android.content.Context; +import android.support.v14.preference.SwitchPreference; +import android.support.v7.preference.PreferenceViewHolder; +import android.util.AttributeSet; +import android.view.View; + +/** + * This widget with enabled filterTouchesWhenObscured attribute use to replace + * the {@link SwitchPreference} in the Special access app pages for security. + */ +public class FilterTouchesSwitchPreference extends SwitchPreference { + + public FilterTouchesSwitchPreference(Context context, AttributeSet attrs, int defStyleAttr, + int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + } + + public FilterTouchesSwitchPreference(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + public FilterTouchesSwitchPreference(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public FilterTouchesSwitchPreference(Context context) { + super(context); + } + + @Override + public void onBindViewHolder(PreferenceViewHolder holder) { + super.onBindViewHolder(holder); + final View switchView = holder.findViewById(android.R.id.switch_widget); + if (switchView != null) { + final View rootView = switchView.getRootView(); + rootView.setFilterTouchesWhenObscured(true); + } + } +}