From bc97628dd5cb92c186a48273cc335a23380e84be Mon Sep 17 00:00:00 2001 From: Christoffer Adamsen Date: Mon, 6 Jan 2025 13:00:46 +0100 Subject: [PATCH 1/6] Explicitly keep default constructor in rules without members R8 implicitly keeps the default constructor when no member rules are specified. Future versions of R8 will require apps to explicitly keep the default constructors that are required for the build to work. This conservatively changes all keep rules that currently keep the default constructor to explicitly keep the default constructor. Future work will attempt to tighten up the rules that do not require the default constructor to be kept. Bug: 373579455 Test: existing Change-Id: I58cf6b4286f696ea38290d888f20c8dcf18b9ede --- proguard.flags | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/proguard.flags b/proguard.flags index d1c97f36da5..4ac544a7e47 100644 --- a/proguard.flags +++ b/proguard.flags @@ -6,7 +6,10 @@ -keepattributes Exceptions # Keep all Fragments in this package, which are used by reflection. --keep public class com.android.settings*.** extends androidx.fragment.app.Fragment +# TODO(b/373579455): Evaluate if needs to be kept. +-keep public class com.android.settings*.** extends androidx.fragment.app.Fragment { + void (); +} # Keep all preference controllers needed by slice and DashboardFragment. -keep class * extends com.android.settings.core.BasePreferenceController { @@ -49,7 +52,10 @@ public static ** SEARCH_INDEX_DATA_PROVIDER; public static ** SUMMARY_PROVIDER_FACTORY; } --keep class androidx.core.app.CoreComponentFactory +# TODO(b/373579455): Evaluate if needs to be kept. +-keep class androidx.core.app.CoreComponentFactory { + void (); +} # Keep classes that implements CustomSliceable, which are used by reflection. -keepclasseswithmembers class * implements com.android.settings.slices.CustomSliceable { From f5ed187ffb6f5a25ac1c06a1e8b023b0c7d8d4b8 Mon Sep 17 00:00:00 2001 From: Guojing Yuan Date: Tue, 28 Jan 2025 11:57:16 -0800 Subject: [PATCH 2/6] [CDM] Checks NLS component name instead of package name Bug: 386216637 Change-Id: I1be52fcb3d52b8b84353ea00fd57d8360ddd966c Flag: EXEMPT bugfix Test: CTS --- .../notification/NotificationAccessConfirmationActivity.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/notification/NotificationAccessConfirmationActivity.java b/src/com/android/settings/notification/NotificationAccessConfirmationActivity.java index 8448a8e752a..541c1051913 100644 --- a/src/com/android/settings/notification/NotificationAccessConfirmationActivity.java +++ b/src/com/android/settings/notification/NotificationAccessConfirmationActivity.java @@ -123,7 +123,7 @@ public class NotificationAccessConfirmationActivity extends Activity NLSIntent, /* flags */ 0, mUserId); boolean hasNLSIntentFilter = false; for (ResolveInfo service : matchedServiceList) { - if (service.serviceInfo.packageName.equals(mComponentName.getPackageName())) { + if (service.serviceInfo.getComponentName().equals(mComponentName)) { if (!requiredPermission.equals(service.serviceInfo.permission)) { Slog.e(LOG_TAG, "Service " + mComponentName + " lacks permission " + requiredPermission); @@ -157,7 +157,7 @@ public class NotificationAccessConfirmationActivity extends Activity .installContent(p); // Consistent with the permission dialog // Used instead of p.mCancelable as that is only honored for AlertDialog - getWindow().setCloseOnTouchOutside(false); + getWindow().setCloseOnTouchOutside(false); } private void onAllow() { From 6e26457b846dc46e4524c77859f1bf173cc36443 Mon Sep 17 00:00:00 2001 From: Jack Yu Date: Mon, 27 Jan 2025 13:40:06 -0800 Subject: [PATCH 3/6] Cleaned up the flag enable_identifier_disclosure_transparency_unsol_events Cleaned up the 24Q3 flag enable_identifier_disclosure_transparency_unsol_events Bug: 276752426 Test: Basic telephony functionality tests Test: atest FrameworksTelephonyTests Flag: EXEMPT removing flag Change-Id: Ia96d406bd354f766e57363b74700ca07ac79c895 --- .../CellularSecurityPreferenceController.java | 1 - ...rSecurityNotificationsDividerController.java | 3 +-- ...curityNotificationsPreferenceController.java | 3 +-- ...ellularSecurityPreferenceControllerTest.java | 17 ----------------- ...urityNotificationsDividerControllerTest.java | 16 ---------------- ...tyNotificationsPreferenceControllerTest.java | 17 ----------------- 6 files changed, 2 insertions(+), 55 deletions(-) diff --git a/src/com/android/settings/network/CellularSecurityPreferenceController.java b/src/com/android/settings/network/CellularSecurityPreferenceController.java index 087cfaf840a..b36e35c15c5 100644 --- a/src/com/android/settings/network/CellularSecurityPreferenceController.java +++ b/src/com/android/settings/network/CellularSecurityPreferenceController.java @@ -72,7 +72,6 @@ public class CellularSecurityPreferenceController extends BasePreferenceControll @Override public int getAvailabilityStatus() { if (!mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY) - || !Flags.enableIdentifierDisclosureTransparencyUnsolEvents() || !Flags.enableModemCipherTransparencyUnsolEvents() || !Flags.enableModemCipherTransparency()) { return UNSUPPORTED_ON_DEVICE; diff --git a/src/com/android/settings/network/telephony/CellularSecurityNotificationsDividerController.java b/src/com/android/settings/network/telephony/CellularSecurityNotificationsDividerController.java index 51d91a48a89..4ff92abaee3 100644 --- a/src/com/android/settings/network/telephony/CellularSecurityNotificationsDividerController.java +++ b/src/com/android/settings/network/telephony/CellularSecurityNotificationsDividerController.java @@ -60,8 +60,7 @@ public class CellularSecurityNotificationsDividerController extends @Override public int getAvailabilityStatus() { - if (!Flags.enableIdentifierDisclosureTransparencyUnsolEvents() - || !Flags.enableModemCipherTransparencyUnsolEvents() + if (!Flags.enableModemCipherTransparencyUnsolEvents() || !Flags.enableModemCipherTransparency()) { return UNSUPPORTED_ON_DEVICE; } diff --git a/src/com/android/settings/network/telephony/CellularSecurityNotificationsPreferenceController.java b/src/com/android/settings/network/telephony/CellularSecurityNotificationsPreferenceController.java index 17aca091b73..b7325260e2e 100644 --- a/src/com/android/settings/network/telephony/CellularSecurityNotificationsPreferenceController.java +++ b/src/com/android/settings/network/telephony/CellularSecurityNotificationsPreferenceController.java @@ -178,8 +178,7 @@ public class CellularSecurityNotificationsPreferenceController extends } private boolean areFlagsEnabled() { - if (!Flags.enableIdentifierDisclosureTransparencyUnsolEvents() - || !Flags.enableModemCipherTransparencyUnsolEvents() + if (!Flags.enableModemCipherTransparencyUnsolEvents() || !Flags.enableModemCipherTransparency()) { return false; } diff --git a/tests/unit/src/com/android/settings/network/CellularSecurityPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/CellularSecurityPreferenceControllerTest.java index 03f6bcdb238..3e6ca5091c8 100644 --- a/tests/unit/src/com/android/settings/network/CellularSecurityPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/network/CellularSecurityPreferenceControllerTest.java @@ -134,28 +134,11 @@ public final class CellularSecurityPreferenceControllerTest { assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE); } - @Test - public void getAvailabilityStatus_flagsDisabled_shouldReturnFalse() { - // Both flags disabled - enableFlags(false); - assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE); - - // One flag is disabled - mSetFlagsRule.disableFlags( - Flags.FLAG_ENABLE_IDENTIFIER_DISCLOSURE_TRANSPARENCY_UNSOL_EVENTS); - assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE); - } - private void enableFlags(boolean enabled) { if (enabled) { - mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_MODEM_CIPHER_TRANSPARENCY_UNSOL_EVENTS); - mSetFlagsRule.enableFlags( - Flags.FLAG_ENABLE_IDENTIFIER_DISCLOSURE_TRANSPARENCY_UNSOL_EVENTS); mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_MODEM_CIPHER_TRANSPARENCY); } else { mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_MODEM_CIPHER_TRANSPARENCY_UNSOL_EVENTS); - mSetFlagsRule.disableFlags( - Flags.FLAG_ENABLE_IDENTIFIER_DISCLOSURE_TRANSPARENCY_UNSOL_EVENTS); mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_MODEM_CIPHER_TRANSPARENCY); } } diff --git a/tests/unit/src/com/android/settings/network/telephony/CellularSecurityNotificationsDividerControllerTest.java b/tests/unit/src/com/android/settings/network/telephony/CellularSecurityNotificationsDividerControllerTest.java index 998f82ef9eb..9bd25f4fcf3 100644 --- a/tests/unit/src/com/android/settings/network/telephony/CellularSecurityNotificationsDividerControllerTest.java +++ b/tests/unit/src/com/android/settings/network/telephony/CellularSecurityNotificationsDividerControllerTest.java @@ -111,28 +111,12 @@ public class CellularSecurityNotificationsDividerControllerTest { assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE); } - @Test - public void getAvailabilityStatus_flagsDisabled_shouldReturnFalse() { - // Both flags disabled - enableFlags(false); - assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE); - - // One flag is disabled - mSetFlagsRule.disableFlags( - Flags.FLAG_ENABLE_IDENTIFIER_DISCLOSURE_TRANSPARENCY_UNSOL_EVENTS); - assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE); - } - private void enableFlags(boolean enabled) { if (enabled) { mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_MODEM_CIPHER_TRANSPARENCY_UNSOL_EVENTS); - mSetFlagsRule.enableFlags( - Flags.FLAG_ENABLE_IDENTIFIER_DISCLOSURE_TRANSPARENCY_UNSOL_EVENTS); mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_MODEM_CIPHER_TRANSPARENCY); } else { mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_MODEM_CIPHER_TRANSPARENCY_UNSOL_EVENTS); - mSetFlagsRule.disableFlags( - Flags.FLAG_ENABLE_IDENTIFIER_DISCLOSURE_TRANSPARENCY_UNSOL_EVENTS); mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_MODEM_CIPHER_TRANSPARENCY); } } diff --git a/tests/unit/src/com/android/settings/network/telephony/CellularSecurityNotificationsPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/telephony/CellularSecurityNotificationsPreferenceControllerTest.java index c520918c665..7d9ff9e73b2 100644 --- a/tests/unit/src/com/android/settings/network/telephony/CellularSecurityNotificationsPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/network/telephony/CellularSecurityNotificationsPreferenceControllerTest.java @@ -112,19 +112,6 @@ public class CellularSecurityNotificationsPreferenceControllerTest { assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE); } - @Test - public void getAvailabilityStatus_flagsDisabled_shouldReturnFalse() { - // All flags disabled - enableFlags(false); - assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE); - - // One flag is disabled - enableFlags(true); - mSetFlagsRule.disableFlags( - Flags.FLAG_ENABLE_IDENTIFIER_DISCLOSURE_TRANSPARENCY_UNSOL_EVENTS); - assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE); - } - @Test public void setChecked_flagsDisabled_shouldReturnFalse() { // Flags disabled @@ -230,13 +217,9 @@ public class CellularSecurityNotificationsPreferenceControllerTest { private void enableFlags(boolean enabled) { if (enabled) { mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_MODEM_CIPHER_TRANSPARENCY_UNSOL_EVENTS); - mSetFlagsRule.enableFlags( - Flags.FLAG_ENABLE_IDENTIFIER_DISCLOSURE_TRANSPARENCY_UNSOL_EVENTS); mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_MODEM_CIPHER_TRANSPARENCY); } else { mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_MODEM_CIPHER_TRANSPARENCY_UNSOL_EVENTS); - mSetFlagsRule.disableFlags( - Flags.FLAG_ENABLE_IDENTIFIER_DISCLOSURE_TRANSPARENCY_UNSOL_EVENTS); mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_MODEM_CIPHER_TRANSPARENCY); } } From d7769ad1805aaf53d22feeeca5d0b766bc202f54 Mon Sep 17 00:00:00 2001 From: Aishwarya Mallampati Date: Wed, 29 Jan 2025 21:57:26 +0000 Subject: [PATCH 4/6] Do not show satellite messaging in sim settings if sms is not supported Bug: 393181741 Test: 393186308 Flag: EXEMPT bugfix Change-Id: I1cb1d22541ba68ce20a0fd9319ddb2d5fc5d6715 --- .../telephony/SatelliteSettingPreferenceController.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/network/telephony/SatelliteSettingPreferenceController.java b/src/com/android/settings/network/telephony/SatelliteSettingPreferenceController.java index ed81e3bdf7d..e2c6412ba57 100644 --- a/src/com/android/settings/network/telephony/SatelliteSettingPreferenceController.java +++ b/src/com/android/settings/network/telephony/SatelliteSettingPreferenceController.java @@ -95,7 +95,13 @@ public class SatelliteSettingPreferenceController extends return UNSUPPORTED_ON_DEVICE; } - return mIsCarrierSatelliteAttachSupported ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; + int availabilityStatus = mIsCarrierSatelliteAttachSupported + ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; + if (availabilityStatus == AVAILABLE && mIsCarrierRoamingNtnConnectedTypeManual + && !mIsSatelliteSmsAvailableForManualType) { + availabilityStatus = CONDITIONALLY_UNAVAILABLE; + } + return availabilityStatus; } @Override From 43b3159db214e03438bf88b70c96f5bc11d1a777 Mon Sep 17 00:00:00 2001 From: Shawn Lin Date: Thu, 30 Jan 2025 03:59:46 +0000 Subject: [PATCH 5/6] Fixed userId not updated when user changed The userId for "Unlock your phone" & "verify it's you in app" settings in face setting page are not updated correctly when user changed. Bug: 393236814 Test: Manual - go face settings and enable/disable these two button Flag: com.android.settings.flags.biometrics_onboarding_education Change-Id: I840eaaab13b8ad9f4e79ae2cf2e47dd22ed2ff8b --- src/com/android/settings/biometrics/face/FaceSettings.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/com/android/settings/biometrics/face/FaceSettings.java b/src/com/android/settings/biometrics/face/FaceSettings.java index 26b5c3735c5..6263bc53e94 100644 --- a/src/com/android/settings/biometrics/face/FaceSettings.java +++ b/src/com/android/settings/biometrics/face/FaceSettings.java @@ -246,6 +246,8 @@ public class FaceSettings extends DashboardFragment { final PreferenceCategory category = findPreference(PREF_KEY_USE_FACE_TO_CATEGORY); category.setVisible(true); + use(FaceSettingsKeyguardUnlockPreferenceController.class).setUserId(mUserId); + use(FaceSettingsAppsPreferenceController.class).setUserId(mUserId); } } From 3bfa1734b42a1355f448b67d0a9ce3df92d88f0a Mon Sep 17 00:00:00 2001 From: Hani Kazmi Date: Tue, 28 Jan 2025 10:33:24 -0800 Subject: [PATCH 6/6] [AAPM] Add help uri This URL is used by the Advanced Protection dialog to point users to the AAPM settings page. The resource is empty by default and should be overriden to get the "Learn More" link to show Bug:389080341 Test atest GtsFeaturesTestCases Flag: EXEMPT resource only Change-Id: I3a9b02c33ba1366a4ca9539f41c0a7da2cac030b --- res/values/strings.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/res/values/strings.xml b/res/values/strings.xml index 5aae3eb6729..b9a23c42ac2 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -12021,6 +12021,9 @@ + + + Update Do Not Disturb