From 71818bdf151cdffde74adc412f77d7b8ad1476a8 Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Thu, 30 Sep 2021 10:23:17 +0800 Subject: [PATCH 1/3] [Settings] Adopt comfirm SIM deletion to euicc reset UI There's an "Erase downloaded SIMs" option within reset options UI. When reset EUICC, eSIM profile might get removed. There's a security feature "Confirm SIM deletion" need to be applied in this case. Bug: 194145231 Test: local Change-Id: I1798dfe347be7d0610a12fb79f103efece2ab240 (cherry picked from commit ebca15a8617fe1775b727cea888e13b81707d484) --- .../network/EraseEuiccDataDialogFragment.java | 27 ++++++-- .../ConfirmationSimDeletionPredicate.java | 66 +++++++++++++++++++ ...onfirmSimDeletionPreferenceController.java | 4 +- 3 files changed, 89 insertions(+), 8 deletions(-) create mode 100644 src/com/android/settings/network/helper/ConfirmationSimDeletionPredicate.java diff --git a/src/com/android/settings/network/EraseEuiccDataDialogFragment.java b/src/com/android/settings/network/EraseEuiccDataDialogFragment.java index a141f0c7bab..819d3b1fc6e 100644 --- a/src/com/android/settings/network/EraseEuiccDataDialogFragment.java +++ b/src/com/android/settings/network/EraseEuiccDataDialogFragment.java @@ -32,7 +32,9 @@ import androidx.fragment.app.FragmentManager; import com.android.settings.R; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; +import com.android.settings.network.helper.ConfirmationSimDeletionPredicate; import com.android.settings.system.ResetDashboardFragment; +import com.android.settings.wifi.dpp.WifiDppUtils; public class EraseEuiccDataDialogFragment extends InstrumentedDialogFragment implements DialogInterface.OnClickListener { @@ -73,13 +75,24 @@ public class EraseEuiccDataDialogFragment extends InstrumentedDialogFragment imp } if (which == DialogInterface.BUTTON_POSITIVE) { - AsyncTask.execute(new Runnable() { - @Override - public void run() { - RecoverySystem.wipeEuiccData( - getContext(), PACKAGE_NAME_EUICC_DATA_MANAGEMENT_CALLBACK); - } - }); + if (ConfirmationSimDeletionPredicate.getSingleton().test(getContext())) { + // Create a "verify it's you" verification over keyguard + // when "erase" button been pressed. + // This might protect from erasing by some automation process. + WifiDppUtils.showLockScreen(getContext(), () -> runAsyncWipe()); + } else { + runAsyncWipe(); + } } } + + private void runAsyncWipe() { + AsyncTask.execute(new Runnable() { + @Override + public void run() { + RecoverySystem.wipeEuiccData( + getContext(), PACKAGE_NAME_EUICC_DATA_MANAGEMENT_CALLBACK); + } + }); + } } diff --git a/src/com/android/settings/network/helper/ConfirmationSimDeletionPredicate.java b/src/com/android/settings/network/helper/ConfirmationSimDeletionPredicate.java new file mode 100644 index 00000000000..420f6db6ee1 --- /dev/null +++ b/src/com/android/settings/network/helper/ConfirmationSimDeletionPredicate.java @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2021 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.network.helper; + +import android.app.KeyguardManager; +import android.content.Context; +import android.provider.Settings; + +import com.android.settings.R; + +import java.util.function.Predicate; + +/** + * {@link Predicate} for detecting the configuration of confirm SIM deletion. + */ +public class ConfirmationSimDeletionPredicate implements Predicate { + + public static final String KEY_CONFIRM_SIM_DELETION = "confirm_sim_deletion"; + + private static final ConfirmationSimDeletionPredicate sSingleton = + new ConfirmationSimDeletionPredicate(); + + // Get singleton of this predicate + public static final ConfirmationSimDeletionPredicate getSingleton() { + return sSingleton; + } + + /** + * Get default configuration of confirm SIM deletion. + * + * @param Context context + * @return the configuration of confirm SIM deletion + */ + private static boolean getDefaultValue(Context context) { + return context.getResources() + .getBoolean(R.bool.config_sim_deletion_confirmation_default_on); + } + + /** + * Get the configuration of confirm SIM deletion. + * + * @param Context context + * @return the configuration of confirm SIM deletion + */ + public boolean test(Context context) { + final KeyguardManager keyguardManager = context.getSystemService(KeyguardManager.class); + if ((keyguardManager != null) && !keyguardManager.isKeyguardSecure()) { + return false; + } + return Settings.Global.getInt(context.getContentResolver(), KEY_CONFIRM_SIM_DELETION, + getDefaultValue(context) ? 1 : 0) == 1; + } +} diff --git a/src/com/android/settings/security/ConfirmSimDeletionPreferenceController.java b/src/com/android/settings/security/ConfirmSimDeletionPreferenceController.java index bf807a19715..a7185e3f207 100644 --- a/src/com/android/settings/security/ConfirmSimDeletionPreferenceController.java +++ b/src/com/android/settings/security/ConfirmSimDeletionPreferenceController.java @@ -26,6 +26,7 @@ import androidx.preference.TwoStatePreference; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; +import com.android.settings.network.helper.ConfirmationSimDeletionPredicate; import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settings.overlay.FeatureFactory; import com.android.settings.wifi.dpp.WifiDppUtils; @@ -34,7 +35,8 @@ import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; /** Enable/disable user confirmation before deleting an eSim */ public class ConfirmSimDeletionPreferenceController extends BasePreferenceController implements Preference.OnPreferenceChangeListener{ - public static final String KEY_CONFIRM_SIM_DELETION = "confirm_sim_deletion"; + public static final String KEY_CONFIRM_SIM_DELETION = + ConfirmationSimDeletionPredicate.KEY_CONFIRM_SIM_DELETION; private boolean mConfirmationDefaultOn; private MetricsFeatureProvider mMetricsFeatureProvider; From 2b7a6c4407bbf8cad9bd6bef8653a68cd6d3ca1a Mon Sep 17 00:00:00 2001 From: Chen Chen Date: Tue, 5 Oct 2021 17:46:02 -0700 Subject: [PATCH 2/3] BluetoothSecurity: Add BLUETOOTH_PRIVILEGED permission for pairing dialog Bug: 194300867 Test: Build Change-Id: I5a496df50550ea7ee6986c960e28ae3e4a056b4b --- AndroidManifest.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 4e61909d2dc..fb3d7014471 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -2220,6 +2220,7 @@ Date: Thu, 7 Oct 2021 02:37:16 +0000 Subject: [PATCH 3/3] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: Ia9a8641798558c7df5e1d65aadaf5ca9f15fc080 --- res/values-as/strings.xml | 2 +- res/values-da/strings.xml | 2 +- res/values-in/strings.xml | 4 ++-- res/values-nb/strings.xml | 8 ++++---- res/values-or/strings.xml | 2 +- res/values-ru/strings.xml | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index 3832468e65d..e6afe88c41e 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -4971,7 +4971,7 @@ টা কেমেৰা এপ্‌ টা কেমেৰা এপ্‌ - "কেলণ্ডাৰ এপ্" + "Calendar এপ্" "সম্পৰ্কসূচীৰ এপ্" ইমেইল ক্লাইণ্ট এপসমূহ diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 3cc94ae72ca..d0575d4f57e 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -1430,7 +1430,7 @@ "Løft enheden for at vække den" "Aktiv låseskærm" "Hvornår skal det vises" - "Væk skærmen for notifikationer" + "Væk skærmen ved notifikationer" "Når skærmen er mørk, aktiveres den ved modtagelse af nye notifikationer" "Vis altid tidspunkt og info" "Øget batteriforbrug" diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index aff47839b60..8393c929a63 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -3400,8 +3400,8 @@ "VoLTE" "Advanced Calling" "Panggilan 4G" - "Gunakan layanan LTE untuk meningkatkan panggilan suara (direkomendasikan)" - "Gunakan layanan 4G untuk meningkatkan panggilan suara (direkomendasikan)" + "Gunakan layanan LTE untuk meningkatkan kualitas panggilan suara (direkomendasikan)" + "Gunakan layanan 4G untuk meningkatkan kualitas panggilan suara (direkomendasikan)" "Vo5G" "Gunakan 5G untuk panggilan suara" "Kirimkan kontak ke operator" diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index c8a7583d40a..650441ce778 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -2055,8 +2055,8 @@ "Avinstaller" "Avinstaller for alle brukere" "Installer" - "Slå av" - "Slå på" + "Deaktiver" + "Aktivér" "Tøm lagring" "Avinstaller oppdateringer" "Noen aktiviteter du har valgt, åpnes som standard i denne appen." @@ -3262,8 +3262,8 @@ "Et sertifikat mangler. Prøv å redigere profilen." "System" "Bruker" - "Slå av" - "Slå på" + "Deaktiver" + "Aktivér" "Avinstaller" "Angi som pålitelig" "Vil du slå på systemets CA-sertifikat?" diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index aae04edd225..109c13c766a 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -2251,7 +2251,7 @@ "ସେଟ୍‌ ଅପ୍‌ ଇନ୍‌ପୁଟ୍‌ ପଦ୍ଧତି" "ସେଟିଂସ୍" "ସେଟିଂସ୍" - "%1$s ସେଟିଙ୍ଗ" + "%1$s ସେଟିଂସ" "ସକ୍ରିୟ ଇନ୍‌ପୁଟ୍‌ ପଦ୍ଧତି ବାଛନ୍ତୁ" "ଅନ୍‌ସ୍କ୍ରୀନ୍‌ କୀ’ବୋର୍ଡ ସେଟିଙ୍ଗ" "ଫିଜିକଲ୍ କୀ’ବୋର୍ଡ" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index b3fecee4e8a..bf0b30b1a10 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -1900,7 +1900,7 @@ "Низкий расход заряда батареи" "Поиск сетей Wi‑Fi" "Разрешить приложениям и сервисам искать сети Wi-Fi, даже когда Wi-Fi отключен. Это может улучшить работу функций и сервисов, использующих данные о местоположении." - "Поиск Bluetooth-устройств" + "Поиск устройств Bluetooth" "Разрешить приложениям и сервисам искать устройства поблизости, даже когда Bluetooth отключен. Это может улучшить работу функций и сервисов, использующих данные о местоположении." "Геолокация" "Геолокация" @@ -5021,7 +5021,7 @@ "Нажмите, чтобы проверить планшет" "Нажмите, чтобы проверить устройство" "Чтобы увидеть время, уведомления и другую информацию, коснитесь экрана" - "Экстренный вызов" + "Экстренные вызовы" "Использовать функцию \"Экстренный вызов\"" "Под управлением приложения \"%1$s\"" "Быстро нажмите кнопку питания не менее пяти раз для выполнения перечисленных ниже действий"