Merge "Cache summary text to avoid flickering" into tm-dev
diff --git a/res/drawable/ic_error_outline.xml b/res/drawable/ic_error_outline.xml
deleted file mode 100644
index 2ddc6d4..0000000
--- a/res/drawable/ic_error_outline.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/**
- * Copyright (C) 2022 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.
- */
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0">
-    <path
-        android:pathData="M11,15h2v2h-2v-2zM11,7h2v6h-2L11,7zM11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM12,20c-4.42,0 -8,-3.58 -8,-8s3.58,-8 8,-8 8,3.58 8,8 -3.58,8 -8,8z"
-        android:fillColor="?android:attr/colorError"
-        android:fillType="evenOdd"/>
-</vector>
\ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 6cd29ed..9ab0cc2 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -500,15 +500,6 @@
     <!-- Title for the App's locale picker activity. [CHAR LIMIT=50]-->
     <string name="app_locale_picker_title">App Language</string>
 
-    <!-- Title for the warning message of the locale picker activity. [CHAR LIMIT=50]-->
-    <string name="warnings_title">Update the app</string>
-
-    <!-- Summary for the warning message of the locale picker activity. [CHAR LIMIT=70]-->
-    <string name="warnings_summary">You need to update the app for the latest available languages</string>
-
-    <!-- Button text on warning message [CHAR LIMIT=20]-->
-    <string name="warnings_button_update">Update now</string>
-
     <!-- Category for the suggested app's locales. [CHAR LIMIT=50]-->
     <string name="suggested_app_locales_title">Suggested languages</string>
 
@@ -7848,7 +7839,11 @@
     <string name="help_label">Help &amp; feedback</string>
 
     <!-- Summary text for support setting tile [CHAR LIMIT=None] -->
-    <string name="support_summary">Help articles, phone &amp; chat</string>
+    <string name="support_summary" product="default">Help articles, phone &amp; chat</string>
+    <!-- Summary text for support setting tile [CHAR LIMIT=None] -->
+    <string name="support_summary" product="tablet">Help articles, tablet &amp; chat</string>
+    <!-- Summary text for support setting tile [CHAR LIMIT=None] -->
+    <string name="support_summary" product="device">Help articles, device &amp; chat</string>
 
     <!-- Help URI, Default [DO NOT TRANSLATE] -->
     <string name="help_uri_default" translatable="false"></string>
diff --git a/res/xml/app_locale_details.xml b/res/xml/app_locale_details.xml
index e01db2f..f849441 100644
--- a/res/xml/app_locale_details.xml
+++ b/res/xml/app_locale_details.xml
@@ -24,13 +24,6 @@
         android:title="@string/desc_app_locale_disclaimer"
         android:order="1"/>
 
-    <com.android.settingslib.widget.BannerMessagePreference
-        android:key="key_warnings"
-        android:order="20"
-        android:icon="@drawable/ic_error_outline"
-        android:title="@string/warnings_title"
-        android:summary="@string/warnings_summary"/>
-
     <com.android.settingslib.widget.LayoutPreference
         android:key="app_locale_description"
         android:order="30"
diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
index a6aeb89..9289db6 100644
--- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
@@ -147,8 +147,7 @@
                 return AccessibilityGestureNavigationTutorial
                         .showAccessibilityGestureTutorialDialog(getPrefContext());
             case DialogEnums.MAGNIFICATION_EDIT_SHORTCUT:
-                final CharSequence dialogTitle = getPrefContext().getString(
-                        R.string.accessibility_shortcut_title, mPackageName);
+                final CharSequence dialogTitle = getShortcutTitle();
                 final int dialogType = WizardManagerHelper.isAnySetupWizard(getIntent())
                         ? DialogType.EDIT_SHORTCUT_MAGNIFICATION_SUW
                         : DialogType.EDIT_SHORTCUT_MAGNIFICATION;
diff --git a/src/com/android/settings/applications/AppLocaleUtil.java b/src/com/android/settings/applications/AppLocaleUtil.java
index 77fba89..3135796 100644
--- a/src/com/android/settings/applications/AppLocaleUtil.java
+++ b/src/com/android/settings/applications/AppLocaleUtil.java
@@ -99,7 +99,8 @@
      * Check the function of per app language is supported by current application.
      */
     public static boolean isAppLocaleSupported(Context context, String packageName) {
-        if (getPackageLocales(context, packageName) != null) {
+        LocaleList localeList = getPackageLocales(context, packageName);
+        if (localeList != null && localeList.size() > 0) {
             return true;
         }
 
diff --git a/src/com/android/settings/applications/appinfo/AppLocaleDetails.java b/src/com/android/settings/applications/appinfo/AppLocaleDetails.java
index 20cddec..88b9d51 100644
--- a/src/com/android/settings/applications/appinfo/AppLocaleDetails.java
+++ b/src/com/android/settings/applications/appinfo/AppLocaleDetails.java
@@ -21,12 +21,8 @@
 import android.app.LocaleManager;
 import android.app.settings.SettingsEnums;
 import android.content.Context;
-import android.content.Intent;
 import android.content.pm.ApplicationInfo;
-import android.content.pm.InstallSourceInfo;
 import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.net.Uri;
 import android.os.Bundle;
 import android.os.LocaleList;
 import android.os.UserHandle;
@@ -34,7 +30,6 @@
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
-import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.widget.TextView;
 
@@ -48,8 +43,6 @@
 import com.android.settings.widget.EntityHeaderController;
 import com.android.settingslib.applications.AppUtils;
 import com.android.settingslib.applications.ApplicationsState.AppEntry;
-import com.android.settingslib.widget.BannerMessagePreference;
-import com.android.settingslib.widget.BannerMessagePreference.AttentionLevel;
 import com.android.settingslib.widget.LayoutPreference;
 
 import java.util.Locale;
@@ -62,7 +55,6 @@
     private static final String TAG = "AppLocaleDetails";
 
     private static final String KEY_APP_DESCRIPTION = "app_locale_description";
-    private static final String KEY_WARNINGS = "key_warnings";
     private static final String KEY_APP_DISCLAIMER = "app_locale_disclaimer";
 
     private boolean mCreated = false;
@@ -96,7 +88,6 @@
         mPrefOfDescription = getPreferenceScreen().findPreference(KEY_APP_DESCRIPTION);
         mPrefOfDisclaimer = getPreferenceScreen().findPreference(KEY_APP_DISCLAIMER);
         mApplicationInfo = getApplicationInfo(mPackageName, getContext().getUserId());
-        setWarningMessage();
         setDisclaimerPreference();
     }
 
@@ -119,7 +110,6 @@
     }
 
     private void refreshUi() {
-        setWarningMessage();
         setDescription();
     }
 
@@ -156,26 +146,6 @@
         getPreferenceScreen().addPreference(pref);
     }
 
-    private void setWarningMessage() {
-        BannerMessagePreference warningPreference =
-                (BannerMessagePreference) getPreferenceScreen().findPreference(KEY_WARNINGS);
-        try {
-            InstallSourceInfo installSourceInfo =
-                    getContext().getPackageManager().getInstallSourceInfo(mPackageName);
-            if (mApplicationInfo.isSystemApp()
-                    && installSourceInfo.getInstallingPackageName() == null) {
-                warningPreference.setAttentionLevel(AttentionLevel.MEDIUM);
-                warningPreference.setPositiveButtonOnClickListener(mBannerButtonClickListener);
-                warningPreference.setPositiveButtonText(R.string.warnings_button_update);
-                warningPreference.setVisible(true);
-            } else {
-                warningPreference.setVisible(false);
-            }
-        } catch (NameNotFoundException e) {
-            Log.e(TAG, "Exception while retrieving the package installer of " + mPackageName, e);
-        }
-    }
-
     private void setDisclaimerPreference() {
         if (FeatureFlagUtils.isEnabled(
                 getContext(), FeatureFlagUtils.SETTINGS_APP_LOCALE_OPT_IN_ENABLED)) {
@@ -192,19 +162,6 @@
         }
     }
 
-    private OnClickListener mBannerButtonClickListener = new OnClickListener() {
-        @Override
-        public void onClick(View v) {
-            startActivity(getAppSearchIntent(mPackageName));
-        }
-    };
-
-    private static Intent getAppSearchIntent(String pkg) {
-        Intent intent = new Intent(Intent.ACTION_VIEW);
-        intent.setData(Uri.parse("market://details?id=" + pkg));
-        return intent;
-    }
-
     private ApplicationInfo getApplicationInfo(String packageName, int userId) {
         ApplicationInfo applicationInfo;
         try {
diff --git a/src/com/android/settings/applications/appinfo/ButtonActionDialogFragment.java b/src/com/android/settings/applications/appinfo/ButtonActionDialogFragment.java
index 80ce802..7b7e3e9 100644
--- a/src/com/android/settings/applications/appinfo/ButtonActionDialogFragment.java
+++ b/src/com/android/settings/applications/appinfo/ButtonActionDialogFragment.java
@@ -90,6 +90,12 @@
 
     @Override
     public void onClick(DialogInterface dialog, int which) {
+        // When it's in a multi-window mode, force stopping an app will lead to an activity
+        // recreate, and the dialog fragment will also be recreated. So dismiss the dialog before
+        // stopping the app.
+        if (mId == ButtonActionDialogFragment.DialogType.FORCE_STOP) {
+            dialog.dismiss();
+        }
         final AppButtonsDialogListener lsn =
                 (AppButtonsDialogListener) getTargetFragment();
         lsn.handleDialogClick(mId);
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java
index 66059e7..b5782cd 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java
@@ -111,6 +111,11 @@
                     lottieAnimationView.setVisibility(View.GONE);
                     lottieAnimationViewPortrait.setVisibility(View.VISIBLE);
                     break;
+                case Surface.ROTATION_180:
+                    lottieAnimationView.setVisibility(View.VISIBLE);
+                    lottieAnimationView.setRotation(180);
+                    lottieAnimationViewPortrait.setVisibility(View.GONE);
+                    break;
                 case Surface.ROTATION_270:
                     lottieAnimationView.setVisibility(View.GONE);
                     lottieAnimationViewPortrait.setVisibility(View.VISIBLE);
@@ -342,10 +347,7 @@
             @Override
             public void onOrientationChanged(int orientation) {
                 final int currentRotation = getDisplay().getRotation();
-                if ((mPreviousRotation == Surface.ROTATION_90
-                        && currentRotation == Surface.ROTATION_270) || (
-                        mPreviousRotation == Surface.ROTATION_270
-                                && currentRotation == Surface.ROTATION_90)) {
+                if ((currentRotation + 2) % 4 == mPreviousRotation) {
                     mPreviousRotation = currentRotation;
                     recreate();
                 }
diff --git a/src/com/android/settings/deviceinfo/VolumeOptionMenuController.java b/src/com/android/settings/deviceinfo/VolumeOptionMenuController.java
index d4f93fa..42a3a16 100644
--- a/src/com/android/settings/deviceinfo/VolumeOptionMenuController.java
+++ b/src/com/android/settings/deviceinfo/VolumeOptionMenuController.java
@@ -132,7 +132,6 @@
         if (mStorageEntry.isPrivate()) {
             if (!mStorageEntry.isDefaultInternalStorage()) {
                 mRename.setVisible(true);
-                mUnmount.setVisible(true);
                 mFormatAsPortable.setVisible(true);
             }
 
diff --git a/src/com/android/settings/notification/NotificationBackend.java b/src/com/android/settings/notification/NotificationBackend.java
index 5215a33..150dbe0 100644
--- a/src/com/android/settings/notification/NotificationBackend.java
+++ b/src/com/android/settings/notification/NotificationBackend.java
@@ -106,29 +106,20 @@
         return row;
     }
 
-    public AppRow loadAppRow(Context context, PackageManager pm,
-            RoleManager roleManager, PackageInfo app) {
+    public AppRow loadAppRow(Context context, PackageManager pm, PackageInfo app) {
         final AppRow row = loadAppRow(context, pm, app.applicationInfo);
-        recordCanBeBlocked(context, pm, roleManager, app, row);
+        recordCanBeBlocked(app, row);
         return row;
     }
 
-    void recordCanBeBlocked(Context context, PackageManager pm, RoleManager rm, PackageInfo app,
-            AppRow row) {
-
+    void recordCanBeBlocked(PackageInfo app, AppRow row) {
         try {
             row.systemApp = row.lockedImportance =
-                    sINM.isPermissionFixed(app.packageName, row.userId);
+                    sINM.isImportanceLocked(app.packageName, app.applicationInfo.uid);
         } 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) {
@@ -139,24 +130,6 @@
         }
     }
 
-    @VisibleForTesting static void markAppRowWithBlockables(String[] nonBlockablePkgs, AppRow row,
-            String packageName) {
-        if (nonBlockablePkgs != null) {
-            int N = nonBlockablePkgs.length;
-            for (int i = 0; i < N; i++) {
-                String pkg = nonBlockablePkgs[i];
-                if (pkg == null) {
-                    continue;
-                } else if (pkg.contains(":")) {
-                    // handled by NotificationChannel.isImportanceLockedByOEM()
-                    continue;
-                } else if (packageName.equals(nonBlockablePkgs[i])) {
-                    row.systemApp = row.lockedImportance = true;
-                }
-            }
-        }
-    }
-
     static public CharSequence getDeviceList(ICompanionDeviceManager cdm, LocalBluetoothManager lbm,
             String pkg, int userId) {
         boolean multiple = false;
@@ -191,10 +164,9 @@
     public boolean enableSwitch(Context context, ApplicationInfo app) {
         try {
             PackageInfo info = context.getPackageManager().getPackageInfo(
-                    app.packageName, PackageManager.GET_SIGNATURES);
-            RoleManager rm = context.getSystemService(RoleManager.class);
+                    app.packageName, PackageManager.GET_PERMISSIONS);
             final AppRow row = new AppRow();
-            recordCanBeBlocked(context, context.getPackageManager(), rm, info, row);
+            recordCanBeBlocked(info, row);
             boolean systemBlockable = !row.systemApp || (row.systemApp && row.banned);
             return systemBlockable && !row.lockedImportance;
         } catch (PackageManager.NameNotFoundException e) {
diff --git a/src/com/android/settings/notification/app/NotificationPreferenceController.java b/src/com/android/settings/notification/app/NotificationPreferenceController.java
index 9d339f0..fb19d9d 100644
--- a/src/com/android/settings/notification/app/NotificationPreferenceController.java
+++ b/src/com/android/settings/notification/app/NotificationPreferenceController.java
@@ -24,6 +24,7 @@
 import android.app.NotificationChannelGroup;
 import android.app.NotificationManager;
 import android.content.Context;
+import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ShortcutInfo;
 import android.graphics.drawable.Drawable;
@@ -171,7 +172,8 @@
             return overrideCanConfigureValue;
         }
         if (mAppRow != null) {
-            return !mAppRow.systemApp && !mAppRow.lockedImportance;
+            boolean systemBlockable = !mAppRow.systemApp || (mAppRow.systemApp && mAppRow.banned);
+            return systemBlockable && !mAppRow.lockedImportance;
         }
         return true;
     }
diff --git a/src/com/android/settings/notification/app/NotificationSettings.java b/src/com/android/settings/notification/app/NotificationSettings.java
index afc9a66..192a0ee 100644
--- a/src/com/android/settings/notification/app/NotificationSettings.java
+++ b/src/com/android/settings/notification/app/NotificationSettings.java
@@ -25,7 +25,6 @@
 import android.app.NotificationChannel;
 import android.app.NotificationChannelGroup;
 import android.app.NotificationManager;
-import android.app.role.RoleManager;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
@@ -69,7 +68,6 @@
     protected PackageManager mPm;
     protected NotificationBackend mBackend = new NotificationBackend();
     protected NotificationManager mNm;
-    protected RoleManager mRm;
     protected Context mContext;
 
     protected int mUid;
@@ -116,7 +114,6 @@
 
         mPm = getPackageManager();
         mNm = NotificationManager.from(mContext);
-        mRm = mContext.getSystemService(RoleManager.class);
 
         mPkg = mArgs != null && mArgs.containsKey(AppInfoBase.ARG_PACKAGE_NAME)
                 ? mArgs.getString(AppInfoBase.ARG_PACKAGE_NAME)
@@ -290,7 +287,7 @@
     }
 
     private void loadAppRow() {
-        mAppRow = mBackend.loadAppRow(mContext, mPm, mRm, mPkgInfo);
+        mAppRow = mBackend.loadAppRow(mContext, mPm, mPkgInfo);
     }
 
     private void loadChannelGroup() {
diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/ButtonActionDialogFragmentTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/ButtonActionDialogFragmentTest.java
index d9ed6b0..432104d 100644
--- a/tests/robotests/src/com/android/settings/applications/appinfo/ButtonActionDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/applications/appinfo/ButtonActionDialogFragmentTest.java
@@ -18,7 +18,9 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 
@@ -73,6 +75,21 @@
     }
 
     @Test
+    public void testOnClick_forceStop_dismissDialog() {
+        ButtonActionDialogFragment fragment =
+                spy(ButtonActionDialogFragment.newInstance(FORCE_STOP_ID));
+        FragmentController.setupFragment(fragment, FragmentActivity.class, 0 /* containerViewId */,
+                null /* bundle */);
+        doReturn(mTargetFragment).when(fragment).getTargetFragment();
+        doNothing().when(mTargetFragment).handleDialogClick(anyInt());
+        final AlertDialog dialog = mock(AlertDialog.class);
+
+        fragment.onClick(dialog, 0);
+
+        verify(dialog).dismiss();
+    }
+
+    @Test
     public void testOnCreateDialog_forceStopDialog() {
         ButtonActionDialogFragment fragment = ButtonActionDialogFragment.newInstance(FORCE_STOP_ID);
         FragmentController.setupFragment(fragment, FragmentActivity.class, 0 /* containerViewId */,
diff --git a/tests/robotests/src/com/android/settings/notification/NotificationBackendTest.java b/tests/robotests/src/com/android/settings/notification/NotificationBackendTest.java
index 5745aa0..764962f 100644
--- a/tests/robotests/src/com/android/settings/notification/NotificationBackendTest.java
+++ b/tests/robotests/src/com/android/settings/notification/NotificationBackendTest.java
@@ -20,6 +20,7 @@
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -80,69 +81,17 @@
     }
 
     @Test
-    public void testMarkAppRow_unblockablePackage() {
-        AppRow appRow = new AppRow();
-        String packageName = "foo.bar.unblockable";
-        appRow.pkg = packageName;
-        String[] nonBlockablePkgs = new String[2];
-        nonBlockablePkgs[0] = packageName;
-        nonBlockablePkgs[1] = "some.other.package";
-        NotificationBackend.markAppRowWithBlockables(nonBlockablePkgs, appRow, packageName);
-
-        // This package has a package lock but no locked channels
-        assertTrue(appRow.lockedImportance);
-    }
-
-    @Test
-    public void testMarkAppRow_defaultPackage() {
-        PackageInfo pi = new PackageInfo();
-        pi.packageName = "test";
-        pi.applicationInfo = new ApplicationInfo();
-        pi.applicationInfo.packageName = "test";
-        List<String> roles = new ArrayList<>();
-        roles.add(RoleManager.ROLE_DIALER);
-        RoleManager rm = mock(RoleManager.class);
-        when(rm.getHeldRolesFromController(anyString())).thenReturn(roles);
-
-        AppRow appRow = new NotificationBackend().loadAppRow(RuntimeEnvironment.application,
-                mock(PackageManager.class), rm, pi);
-
-        assertTrue(appRow.systemApp);
-    }
-
-    @Test
-    public void testMarkAppRow_fixedPermission_withRole() throws Exception {
+    public void testMarkAppRow_fixedImportance() throws Exception {
         PackageInfo pi = new PackageInfo();
         pi.packageName = "test";
         pi.applicationInfo = new ApplicationInfo();
         pi.applicationInfo.packageName = "test";
         pi.applicationInfo.uid = 123;
 
-        List<String> roles = new ArrayList<>();
-        roles.add(RoleManager.ROLE_DIALER);
-        RoleManager rm = mock(RoleManager.class);
-        when(rm.getHeldRolesFromController(anyString())).thenReturn(roles);
-        when(mInm.isPermissionFixed(pi.packageName, 0)).thenReturn(false);
+        when(mInm.isImportanceLocked(pi.packageName, 123)).thenReturn(true);
 
         AppRow appRow = new NotificationBackend().loadAppRow(RuntimeEnvironment.application,
-                mock(PackageManager.class), rm, pi);
-
-        assertTrue(appRow.systemApp);
-        assertTrue(appRow.lockedImportance);
-    }
-
-    @Test
-    public void testMarkAppRow_fixedPermission() throws Exception {
-        PackageInfo pi = new PackageInfo();
-        pi.packageName = "test";
-        pi.applicationInfo = new ApplicationInfo();
-        pi.applicationInfo.packageName = "test";
-        pi.applicationInfo.uid = 123;
-
-        when(mInm.isPermissionFixed(pi.packageName, 0)).thenReturn(true);
-
-        AppRow appRow = new NotificationBackend().loadAppRow(RuntimeEnvironment.application,
-                mock(PackageManager.class), mock(RoleManager.class), pi);
+                mock(PackageManager.class), pi);
 
         assertTrue(appRow.systemApp);
         assertTrue(appRow.lockedImportance);
@@ -156,10 +105,10 @@
         pi.applicationInfo.packageName = "test";
         pi.applicationInfo.uid = 123;
 
-        when(mInm.isPermissionFixed(pi.packageName, 0)).thenReturn(false);
+        when(mInm.isImportanceLocked(anyString(), anyInt())).thenReturn(false);
 
         AppRow appRow = new NotificationBackend().loadAppRow(RuntimeEnvironment.application,
-                mock(PackageManager.class), mock(RoleManager.class), pi);
+                mock(PackageManager.class), pi);
 
         assertFalse(appRow.systemApp);
         assertFalse(appRow.lockedImportance);
@@ -178,7 +127,7 @@
         when(mInm.isPermissionFixed(pi.packageName, 0)).thenReturn(false);
 
         AppRow appRow = new NotificationBackend().loadAppRow(RuntimeEnvironment.application,
-                mock(PackageManager.class), mock(RoleManager.class), pi);
+                mock(PackageManager.class), pi);
 
         assertFalse(appRow.systemApp);
         assertTrue(appRow.lockedImportance);
@@ -198,30 +147,13 @@
         when(mInm.isPermissionFixed(pi.packageName, 0)).thenReturn(false);
 
         AppRow appRow = new NotificationBackend().loadAppRow(RuntimeEnvironment.application,
-                mock(PackageManager.class), mock(RoleManager.class), pi);
+                mock(PackageManager.class), pi);
 
         assertFalse(appRow.systemApp);
         assertFalse(appRow.lockedImportance);
     }
 
     @Test
-    public void testMarkAppRow_notDefaultPackage() {
-        PackageInfo pi = new PackageInfo();
-        pi.packageName = "test";
-        pi.applicationInfo = new ApplicationInfo();
-        pi.applicationInfo.packageName = "test";
-        List<String> roles = new ArrayList<>();
-        roles.add(RoleManager.ROLE_HOME);
-        RoleManager rm = mock(RoleManager.class);
-        when(rm.getHeldRolesFromController(anyString())).thenReturn(roles);
-
-        AppRow appRow = new NotificationBackend().loadAppRow(RuntimeEnvironment.application,
-                mock(PackageManager.class), rm, pi);
-
-        assertFalse(appRow.systemApp);
-    }
-
-    @Test
     public void testGetAggregatedUsageEvents_multipleEventsAgg() {
         List<UsageEvents.Event> events = new ArrayList<>();
         UsageEvents.Event good = new UsageEvents.Event();
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 4ba5fe7..b2f1673 100644
--- a/tests/robotests/src/com/android/settings/notification/app/NotificationPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/app/NotificationPreferenceControllerTest.java
@@ -284,24 +284,36 @@
     }
 
     @Test
-    public void testIsAppBlockable_postMigration_locked() {
+    public void testIsAppBlockable_fixedPermission() {
         mController = new TestPreferenceController(mContext, mBackend);
 
         NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
-        appRow.lockedImportance = true;
+        appRow.systemApp = true;
         appRow.banned = false;
         mController.onResume(appRow, null, null, null, null, null, null);
         assertFalse(mController.isAppBlockable());
     }
 
     @Test
-    public void testIsAppBlockable_postMigration_locked_butAppOff() {
+    public void testIsAppBlockable_fixedPermission_butAppOff() {
         mController = new TestPreferenceController(mContext, mBackend);
 
         NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
-        appRow.lockedImportance = true;
+        appRow.systemApp = true;
         appRow.banned = true;
         mController.onResume(appRow, null, null, null, null, null, null);
+        assertTrue(mController.isAppBlockable());
+    }
+
+    @Test
+    public void testIsAppBlockable_notFixedButAppInBadState() {
+        mController = new TestPreferenceController(mContext, mBackend);
+
+        NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
+        appRow.systemApp = false;
+        appRow.banned = true;
+        appRow.lockedImportance = true;
+        mController.onResume(appRow, null, null, null, null, null, null);
         assertFalse(mController.isAppBlockable());
     }
 
diff --git a/tests/unit/src/com/android/settings/deviceinfo/VolumeOptionMenuControllerTest.java b/tests/unit/src/com/android/settings/deviceinfo/VolumeOptionMenuControllerTest.java
index 314f8c2..8bd9b01 100644
--- a/tests/unit/src/com/android/settings/deviceinfo/VolumeOptionMenuControllerTest.java
+++ b/tests/unit/src/com/android/settings/deviceinfo/VolumeOptionMenuControllerTest.java
@@ -142,7 +142,6 @@
         mController.onPrepareOptionsMenu(mMenu);
 
         verify(mController.mRename, atLeastOnce()).setVisible(true);
-        verify(mController.mUnmount, atLeastOnce()).setVisible(true);
         verify(mController.mFormatAsPortable, atLeastOnce()).setVisible(true);
         verify(mController.mMount, never()).setVisible(true);
         verify(mController.mFormat, never()).setVisible(true);