Merge "Remove notification permission feature flag" into tm-dev am: 23a85a1f96
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/18164272
Change-Id: Ifb623c3650ae1c46efa0485979f412b80896b11c
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/src/com/android/settings/notification/NotificationBackend.java b/src/com/android/settings/notification/NotificationBackend.java
index 2ae91e2..5215a33 100644
--- a/src/com/android/settings/notification/NotificationBackend.java
+++ b/src/com/android/settings/notification/NotificationBackend.java
@@ -115,40 +115,27 @@
void recordCanBeBlocked(Context context, PackageManager pm, RoleManager rm, PackageInfo app,
AppRow row) {
- if (Settings.Secure.getIntForUser(context.getContentResolver(),
- Settings.Secure.NOTIFICATION_PERMISSION_ENABLED, 0, USER_SYSTEM) != 0) {
- try {
- row.systemApp = row.lockedImportance =
- sINM.isPermissionFixed(app.packageName, row.userId);
- } catch (RemoteException e) {
- Log.w(TAG, "Error calling NMS", e);
- }
- // The permission system cannot make role permissions 'fixed', so check for these
- // roles explicitly
- List<String> roles = rm.getHeldRolesFromController(app.packageName);
- if (roles.contains(RoleManager.ROLE_DIALER)
- || roles.contains(RoleManager.ROLE_EMERGENCY)) {
- row.systemApp = row.lockedImportance = true;
- }
- // if the app targets T but has not requested the permission, we cannot change the
- // permission state
- if (app.applicationInfo.targetSdkVersion > Build.VERSION_CODES.S_V2) {
- if (app.requestedPermissions == null || Arrays.stream(app.requestedPermissions)
- .noneMatch(p -> p.equals(android.Manifest.permission.POST_NOTIFICATIONS))) {
- row.lockedImportance = true;
- }
- }
- } else {
- row.systemApp = Utils.isSystemPackage(context.getResources(), pm, app);
- List<String> roles = rm.getHeldRolesFromController(app.packageName);
- if (roles.contains(RoleManager.ROLE_DIALER)
- || roles.contains(RoleManager.ROLE_EMERGENCY)) {
- row.systemApp = true;
+ try {
+ row.systemApp = row.lockedImportance =
+ sINM.isPermissionFixed(app.packageName, row.userId);
+ } catch (RemoteException e) {
+ Log.w(TAG, "Error calling NMS", e);
+ }
+ // The permission system cannot make role permissions 'fixed', so check for these
+ // roles explicitly
+ List<String> roles = rm.getHeldRolesFromController(app.packageName);
+ if (roles.contains(RoleManager.ROLE_DIALER)
+ || roles.contains(RoleManager.ROLE_EMERGENCY)) {
+ row.systemApp = row.lockedImportance = true;
+ }
+ // if the app targets T but has not requested the permission, we cannot change the
+ // permission state
+ if (app.applicationInfo.targetSdkVersion > Build.VERSION_CODES.S_V2) {
+ if (app.requestedPermissions == null || Arrays.stream(app.requestedPermissions)
+ .noneMatch(p -> p.equals(android.Manifest.permission.POST_NOTIFICATIONS))) {
+ row.lockedImportance = true;
}
- final String[] nonBlockablePkgs = context.getResources().getStringArray(
- com.android.internal.R.array.config_nonBlockableNotificationPackages);
- markAppRowWithBlockables(nonBlockablePkgs, row, app.packageName);
}
}
diff --git a/src/com/android/settings/notification/app/NotificationPreferenceController.java b/src/com/android/settings/notification/app/NotificationPreferenceController.java
index 289f1ed..9d339f0 100644
--- a/src/com/android/settings/notification/app/NotificationPreferenceController.java
+++ b/src/com/android/settings/notification/app/NotificationPreferenceController.java
@@ -64,7 +64,6 @@
@Nullable
protected ShortcutInfo mConversationInfo;
protected List<String> mPreferenceFilter;
- boolean mMigratedPermission;
boolean overrideCanBlock;
boolean overrideCanConfigure;
@@ -78,8 +77,6 @@
mBackend = backend;
mUm = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
mPm = mContext.getPackageManager();
- mMigratedPermission = Settings.Secure.getIntForUser(context.getContentResolver(),
- Settings.Secure.NOTIFICATION_PERMISSION_ENABLED, 0, USER_SYSTEM) != 0;
}
/**
@@ -155,9 +152,7 @@
return overrideCanConfigureValue;
}
if (channel != null && mAppRow != null) {
- boolean locked = mMigratedPermission ? mAppRow.lockedImportance
- : channel.isImportanceLockedByCriticalDeviceFunction()
- || channel.isImportanceLockedByOEM();
+ boolean locked = mAppRow.lockedImportance;
if (locked) {
return channel.isBlockable() || channel.getImportance() == IMPORTANCE_NONE;
}
@@ -186,8 +181,7 @@
return overrideCanConfigureValue;
}
if (channel != null && mAppRow != null) {
- boolean locked = mMigratedPermission ? mAppRow.lockedImportance
- : channel.isImportanceLockedByOEM();
+ boolean locked = mAppRow.lockedImportance;
return !locked || channel.isBlockable();
}
return false;
diff --git a/tests/robotests/src/com/android/settings/notification/NotificationBackendTest.java b/tests/robotests/src/com/android/settings/notification/NotificationBackendTest.java
index a7ddec3..5745aa0 100644
--- a/tests/robotests/src/com/android/settings/notification/NotificationBackendTest.java
+++ b/tests/robotests/src/com/android/settings/notification/NotificationBackendTest.java
@@ -16,9 +16,6 @@
package com.android.settings.notification;
-import static android.os.UserHandle.USER_SYSTEM;
-import static android.provider.Settings.*;
-
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertFalse;
@@ -37,11 +34,9 @@
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
-import android.content.pm.PermissionInfo;
import android.net.MacAddress;
import android.os.Build;
import android.os.Parcel;
-import android.provider.Settings;
import com.android.settings.notification.NotificationBackend.AppRow;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
@@ -117,9 +112,6 @@
@Test
public void testMarkAppRow_fixedPermission_withRole() throws Exception {
- Secure.putIntForUser(RuntimeEnvironment.application.getContentResolver(),
- Settings.Secure.NOTIFICATION_PERMISSION_ENABLED, 1, USER_SYSTEM);
-
PackageInfo pi = new PackageInfo();
pi.packageName = "test";
pi.applicationInfo = new ApplicationInfo();
@@ -141,9 +133,6 @@
@Test
public void testMarkAppRow_fixedPermission() throws Exception {
- Secure.putIntForUser(RuntimeEnvironment.application.getContentResolver(),
- Settings.Secure.NOTIFICATION_PERMISSION_ENABLED, 1, USER_SYSTEM);
-
PackageInfo pi = new PackageInfo();
pi.packageName = "test";
pi.applicationInfo = new ApplicationInfo();
@@ -161,9 +150,6 @@
@Test
public void testMarkAppRow_notFixedPermission() throws Exception {
- Secure.putIntForUser(RuntimeEnvironment.application.getContentResolver(),
- Settings.Secure.NOTIFICATION_PERMISSION_ENABLED, 1, USER_SYSTEM);
-
PackageInfo pi = new PackageInfo();
pi.packageName = "test";
pi.applicationInfo = new ApplicationInfo();
@@ -181,9 +167,6 @@
@Test
public void testMarkAppRow_targetsT_noPermissionRequest() throws Exception {
- Secure.putIntForUser(RuntimeEnvironment.application.getContentResolver(),
- Settings.Secure.NOTIFICATION_PERMISSION_ENABLED, 1, USER_SYSTEM);
-
PackageInfo pi = new PackageInfo();
pi.packageName = "test";
pi.applicationInfo = new ApplicationInfo();
@@ -203,9 +186,6 @@
@Test
public void testMarkAppRow_targetsT_permissionRequest() throws Exception {
- Secure.putIntForUser(RuntimeEnvironment.application.getContentResolver(),
- Settings.Secure.NOTIFICATION_PERMISSION_ENABLED, 1, USER_SYSTEM);
-
PackageInfo pi = new PackageInfo();
pi.packageName = "test";
pi.applicationInfo = new ApplicationInfo();
diff --git a/tests/robotests/src/com/android/settings/notification/app/NotificationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/app/NotificationPreferenceControllerTest.java
index 8d31fe5..4ba5fe7 100644
--- a/tests/robotests/src/com/android/settings/notification/app/NotificationPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/app/NotificationPreferenceControllerTest.java
@@ -225,9 +225,6 @@
@Test
public void testIsChannelBlockable_postMigration_locked() {
- Settings.Secure.putIntForUser(RuntimeEnvironment.application.getContentResolver(),
- Settings.Secure.NOTIFICATION_PERMISSION_ENABLED, 1, USER_SYSTEM);
-
mController = new TestPreferenceController(mContext, mBackend);
NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
@@ -240,9 +237,6 @@
@Test
public void testIsChannelBlockable_postMigration_locked_butChannelOff() {
- Settings.Secure.putIntForUser(RuntimeEnvironment.application.getContentResolver(),
- Settings.Secure.NOTIFICATION_PERMISSION_ENABLED, 1, USER_SYSTEM);
-
mController = new TestPreferenceController(mContext, mBackend);
NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
@@ -255,9 +249,6 @@
@Test
public void testIsChannelBlockable_postMigration_locked_butChannelBlockable() {
- Settings.Secure.putIntForUser(RuntimeEnvironment.application.getContentResolver(),
- Settings.Secure.NOTIFICATION_PERMISSION_ENABLED, 1, USER_SYSTEM);
-
mController = new TestPreferenceController(mContext, mBackend);
NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
@@ -271,9 +262,6 @@
@Test
public void testIsChannelGroupBlockable_postMigration_locked() {
- Settings.Secure.putIntForUser(RuntimeEnvironment.application.getContentResolver(),
- Settings.Secure.NOTIFICATION_PERMISSION_ENABLED, 1, USER_SYSTEM);
-
mController = new TestPreferenceController(mContext, mBackend);
NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
@@ -285,9 +273,6 @@
@Test
public void testIsChannelGroupBlockable_postMigration_locked_butChannelGroupOff() {
- Settings.Secure.putIntForUser(RuntimeEnvironment.application.getContentResolver(),
- Settings.Secure.NOTIFICATION_PERMISSION_ENABLED, 1, USER_SYSTEM);
-
mController = new TestPreferenceController(mContext, mBackend);
NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
@@ -300,9 +285,6 @@
@Test
public void testIsAppBlockable_postMigration_locked() {
- Settings.Secure.putIntForUser(RuntimeEnvironment.application.getContentResolver(),
- Settings.Secure.NOTIFICATION_PERMISSION_ENABLED, 1, USER_SYSTEM);
-
mController = new TestPreferenceController(mContext, mBackend);
NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
@@ -314,9 +296,6 @@
@Test
public void testIsAppBlockable_postMigration_locked_butAppOff() {
- Settings.Secure.putIntForUser(RuntimeEnvironment.application.getContentResolver(),
- Settings.Secure.NOTIFICATION_PERMISSION_ENABLED, 1, USER_SYSTEM);
-
mController = new TestPreferenceController(mContext, mBackend);
NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
@@ -327,32 +306,6 @@
}
@Test
- public void testIsBlockable_oemAllowlist() {
- NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
- NotificationChannel channel = mock(NotificationChannel.class);
- when(channel.isImportanceLockedByOEM()).thenReturn(true);
- when(channel.getImportance()).thenReturn(IMPORTANCE_LOW);
-
- mController.onResume(appRow, channel, null, null, null, null, null);
- assertFalse(mController.isChannelBlockable());
-
- when(channel.isImportanceLockedByOEM()).thenReturn(false);
- mController.onResume(appRow, channel, null, null, null, null, null);
- assertTrue(mController.isChannelBlockable());
- }
-
- @Test
- public void testIsBlockable_defaultApp() {
- NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
- NotificationChannel channel = mock(NotificationChannel.class);
- when(channel.getImportance()).thenReturn(IMPORTANCE_LOW);
- when(channel.isImportanceLockedByCriticalDeviceFunction()).thenReturn(true);
-
- mController.onResume(appRow, channel, null, null, null, null, null);
- assertFalse(mController.isChannelBlockable());
- }
-
- @Test
public void testIsChannelBlockable_nonSystemAppsBlockable() {
NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
appRow.systemApp = false;
@@ -410,30 +363,6 @@
}
@Test
- public void testIsChannelBlockable_oemLocked() {
- NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
- appRow.systemApp = false;
- NotificationChannel channel = mock(NotificationChannel.class);
- when(channel.isImportanceLockedByOEM()).thenReturn(true);
- when(channel.getImportance()).thenReturn(IMPORTANCE_DEFAULT);
-
- mController.onResume(appRow, channel, null, null, null, null, null);
- assertFalse(mController.isChannelBlockable());
- }
-
- @Test
- public void testIsChannelBlockable_criticalDeviceFunction() {
- NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
- appRow.systemApp = false;
- NotificationChannel channel = mock(NotificationChannel.class);
- when(channel.isImportanceLockedByCriticalDeviceFunction()).thenReturn(true);
- when(channel.getImportance()).thenReturn(IMPORTANCE_DEFAULT);
-
- mController.onResume(appRow, channel, null, null, null, null, null);
- assertFalse(mController.isChannelBlockable());
- }
-
- @Test
public void testIsChannelGroupBlockable_SystemNotBlockable() {
NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
appRow.systemApp = true;