diff --git a/res/drawable/ic_error_outline.xml b/res/drawable/ic_error_outline.xml
deleted file mode 100644
index 2ddc6d4d501..00000000000
--- a/res/drawable/ic_error_outline.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 81858b759c5..4b208990faf 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -500,15 +500,6 @@
App Language
-
- Update the app
-
-
- You need to update the app for the latest available languages
-
-
- Update now
-
Suggested languages
@@ -4751,7 +4742,7 @@
Reset app preferences?
- This will reset all preferences for:\n\nDisabled apps\nDisabled app notifications\nDefault applications for actions\nBackground data restrictions for apps\nAny permission restrictions\n\nYou will not lose any app data.
+ This will reset all preferences for:\n\nDisabled apps\nDisabled app notifications\nDefault applications for actions\nBackground data restrictions for apps\nAny permission restrictions\nBattery usage settings\n\nYou will not lose any app data.
Reset apps
@@ -7860,7 +7851,11 @@
Help & feedback
- Help articles, phone & chat
+ Help articles, phone & chat
+
+ Help articles, tablet & chat
+
+ Help articles, device & chat
diff --git a/res/xml/app_locale_details.xml b/res/xml/app_locale_details.xml
index e01db2f9389..f849441b03f 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"/>
-
-
{
tryCommitFontSizeConfig();
tryCommitDisplaySizeConfig();
@@ -92,8 +99,8 @@ class TextReadingPreviewController extends BasePreferenceController implements
/* message= */ "Display size preference is null, the preview controller"
+ " couldn't get the info");
- mLastFontProgress = mFontSizePreference.getProgress();
- mLastDisplayProgress = mDisplaySizePreference.getProgress();
+ mLastFontProgress = mFontSizeData.getInitialIndex();
+ mLastDisplayProgress = mDisplaySizeData.getInitialIndex();
final Configuration origConfig = mContext.getResources().getConfiguration();
final boolean isLayoutRtl =
@@ -131,6 +138,15 @@ class TextReadingPreviewController extends BasePreferenceController implements
postCommitDelayed(CHANGE_BY_SEEKBAR_DELAY_MS);
}
+ /**
+ * The entry point is used for logging.
+ *
+ * @param entryPoint from which settings page
+ */
+ void setEntryPoint(@EntryPoint int entryPoint) {
+ mEntryPoint = entryPoint;
+ }
+
/**
* Avoids the flicker when switching to the previous or next level.
*
@@ -162,6 +178,16 @@ class TextReadingPreviewController extends BasePreferenceController implements
if (fontProgress != mLastFontProgress) {
mFontSizeData.commit(fontProgress);
mLastFontProgress = fontProgress;
+
+ if (Log.isLoggable(TAG, Log.DEBUG)) {
+ Log.d(TAG, "Font size: " + fontProgress);
+ }
+
+ SettingsStatsLog.write(
+ SettingsStatsLog.ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED,
+ AccessibilityStatsLogUtils.convertToItemKeyName(mFontSizePreference.getKey()),
+ fontProgress,
+ AccessibilityStatsLogUtils.convertToEntryPoint(mEntryPoint));
}
}
@@ -170,6 +196,17 @@ class TextReadingPreviewController extends BasePreferenceController implements
if (displayProgress != mLastDisplayProgress) {
mDisplaySizeData.commit(displayProgress);
mLastDisplayProgress = displayProgress;
+
+ if (Log.isLoggable(TAG, Log.DEBUG)) {
+ Log.d(TAG, "Display size: " + displayProgress);
+ }
+
+ SettingsStatsLog.write(
+ SettingsStatsLog.ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED,
+ AccessibilityStatsLogUtils.convertToItemKeyName(
+ mDisplaySizePreference.getKey()),
+ displayProgress,
+ AccessibilityStatsLogUtils.convertToEntryPoint(mEntryPoint));
}
}
diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
index a6aeb897357..9289db61f21 100644
--- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
@@ -147,8 +147,7 @@ public class ToggleScreenMagnificationPreferenceFragment extends
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 77fba89e861..31357968a07 100644
--- a/src/com/android/settings/applications/AppLocaleUtil.java
+++ b/src/com/android/settings/applications/AppLocaleUtil.java
@@ -99,7 +99,8 @@ public class AppLocaleUtil {
* 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 20cddeca629..88b9d513c82 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.Activity;
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.FeatureFlagUtils;
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.applications.AppLocaleUtil;
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 @@ public class AppLocaleDetails extends SettingsPreferenceFragment {
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 @@ public class AppLocaleDetails extends SettingsPreferenceFragment {
mPrefOfDescription = getPreferenceScreen().findPreference(KEY_APP_DESCRIPTION);
mPrefOfDisclaimer = getPreferenceScreen().findPreference(KEY_APP_DISCLAIMER);
mApplicationInfo = getApplicationInfo(mPackageName, getContext().getUserId());
- setWarningMessage();
setDisclaimerPreference();
}
@@ -119,7 +110,6 @@ public class AppLocaleDetails extends SettingsPreferenceFragment {
}
private void refreshUi() {
- setWarningMessage();
setDescription();
}
@@ -156,26 +146,6 @@ public class AppLocaleDetails extends SettingsPreferenceFragment {
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 @@ public class AppLocaleDetails extends SettingsPreferenceFragment {
}
}
- 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 80ce8020035..7b7e3e944ea 100644
--- a/src/com/android/settings/applications/appinfo/ButtonActionDialogFragment.java
+++ b/src/com/android/settings/applications/appinfo/ButtonActionDialogFragment.java
@@ -90,6 +90,12 @@ public class ButtonActionDialogFragment extends InstrumentedDialogFragment imple
@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 547869f7393..387f21603e6 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java
@@ -111,6 +111,11 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements
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);
@@ -353,10 +358,7 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements
@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 d4f93fa83cd..42a3a16da3e 100644
--- a/src/com/android/settings/deviceinfo/VolumeOptionMenuController.java
+++ b/src/com/android/settings/deviceinfo/VolumeOptionMenuController.java
@@ -132,7 +132,6 @@ public class VolumeOptionMenuController implements LifecycleObserver, OnCreateOp
if (mStorageEntry.isPrivate()) {
if (!mStorageEntry.isDefaultInternalStorage()) {
mRename.setVisible(true);
- mUnmount.setVisible(true);
mFormatAsPortable.setVisible(true);
}
diff --git a/src/com/android/settings/location/TopLevelLocationPreferenceController.java b/src/com/android/settings/location/TopLevelLocationPreferenceController.java
index ec58a3422d2..5effe6c6210 100644
--- a/src/com/android/settings/location/TopLevelLocationPreferenceController.java
+++ b/src/com/android/settings/location/TopLevelLocationPreferenceController.java
@@ -31,9 +31,9 @@ public class TopLevelLocationPreferenceController extends BasePreferenceControll
private static final IntentFilter INTENT_FILTER_LOCATION_MODE_CHANGED =
new IntentFilter(LocationManager.MODE_CHANGED_ACTION);
private final LocationManager mLocationManager;
- /** Total number of apps that has location permission. */
- private int mNumTotal = -1;
private int mNumTotalLoading = 0;
+ /** Summary text. */
+ private static String sSummary = null;
private BroadcastReceiver mReceiver;
private Preference mPreference;
private AtomicInteger loadingInProgress = new AtomicInteger(0);
@@ -51,12 +51,11 @@ public class TopLevelLocationPreferenceController extends BasePreferenceControll
@Override
public CharSequence getSummary() {
if (mLocationManager.isLocationEnabled()) {
- if (mNumTotal == -1) {
- return mContext.getString(R.string.location_settings_loading_app_permission_stats);
+ if (sSummary == null) {
+ sSummary = mContext.getString(
+ R.string.location_settings_loading_app_permission_stats);
}
- return mContext.getResources().getQuantityString(
- R.plurals.location_settings_summary_location_on,
- mNumTotal, mNumTotal);
+ return sSummary;
} else {
return mContext.getString(R.string.location_settings_summary_location_off);
}
@@ -64,7 +63,8 @@ public class TopLevelLocationPreferenceController extends BasePreferenceControll
@VisibleForTesting
void setLocationAppCount(int numApps) {
- mNumTotal = numApps;
+ sSummary = mContext.getResources().getQuantityString(
+ R.plurals.location_settings_summary_location_on, numApps, numApps);
refreshSummary(mPreference);
}
diff --git a/src/com/android/settings/notification/NotificationBackend.java b/src/com/android/settings/notification/NotificationBackend.java
index 5215a33fcc4..150dbe0483d 100644
--- a/src/com/android/settings/notification/NotificationBackend.java
+++ b/src/com/android/settings/notification/NotificationBackend.java
@@ -106,29 +106,20 @@ public class NotificationBackend {
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 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 @@ public class NotificationBackend {
}
}
- @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 class NotificationBackend {
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 9d339f02737..fb19d9d6b4c 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.NotificationChannel;
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 @@ public abstract class NotificationPreferenceController extends AbstractPreferenc
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 afc9a66716d..192a0ee9fc7 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.Notification;
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 @@ abstract public class NotificationSettings extends DashboardFragment {
protected PackageManager mPm;
protected NotificationBackend mBackend = new NotificationBackend();
protected NotificationManager mNm;
- protected RoleManager mRm;
protected Context mContext;
protected int mUid;
@@ -116,7 +114,6 @@ abstract public class NotificationSettings extends DashboardFragment {
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 @@ abstract public class NotificationSettings extends DashboardFragment {
}
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 d9ed6b08b63..432104d27cc 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 @@ package com.android.settings.applications.appinfo;
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;
@@ -72,6 +74,21 @@ public class ButtonActionDialogFragmentTest {
verify(mTargetFragment).handleDialogClick(anyInt());
}
+ @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);
diff --git a/tests/robotests/src/com/android/settings/location/TopLevelLocationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/location/TopLevelLocationPreferenceControllerTest.java
index 68e7f88ddf5..f0bc705c491 100644
--- a/tests/robotests/src/com/android/settings/location/TopLevelLocationPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/location/TopLevelLocationPreferenceControllerTest.java
@@ -56,31 +56,41 @@ public class TopLevelLocationPreferenceControllerTest {
}
@Test
- public void getSummary_whenLocationIsOn_shouldShowLoadingString() {
+ public void getSummary_whenLocationIsOn_shouldPreservePreviousText() {
+ final int locationAppCount = 5;
+ // Retrieve summary text once.
+ mLocationManager.setLocationEnabledForUser(true, android.os.Process.myUserHandle());
+ mController.setLocationAppCount(locationAppCount);
+ mController.getSummary();
+ // Turn off location.
+ mLocationManager.setLocationEnabledForUser(false, android.os.Process.myUserHandle());
+ // Turn on location again and check if the previous summary text is still cached.
mLocationManager.setLocationEnabledForUser(true, android.os.Process.myUserHandle());
assertThat(mController.getSummary()).isEqualTo(
- mContext.getString(R.string.location_settings_loading_app_permission_stats));
+ mContext.getResources().getQuantityString(
+ R.plurals.location_settings_summary_location_on, locationAppCount,
+ locationAppCount));
}
@Test
public void getSummary_whenLocationAppCountIsOne_shouldShowSingularString() {
- final int LOCATION_APP_COUNT = 1;
+ final int locationAppCount = 1;
mLocationManager.setLocationEnabledForUser(true, android.os.Process.myUserHandle());
- mController.setLocationAppCount(LOCATION_APP_COUNT);
+ mController.setLocationAppCount(locationAppCount);
assertThat(mController.getSummary()).isEqualTo(
mContext.getResources().getQuantityString(
R.plurals.location_settings_summary_location_on,
- LOCATION_APP_COUNT, LOCATION_APP_COUNT));
+ locationAppCount, locationAppCount));
}
@Test
public void getSummary_whenLocationAppCountIsGreaterThanOne_shouldShowPluralString() {
- final int LOCATION_APP_COUNT = 5;
+ final int locationAppCount = 5;
mLocationManager.setLocationEnabledForUser(true, android.os.Process.myUserHandle());
- mController.setLocationAppCount(LOCATION_APP_COUNT);
+ mController.setLocationAppCount(locationAppCount);
assertThat(mController.getSummary()).isEqualTo(
mContext.getResources().getQuantityString(
R.plurals.location_settings_summary_location_on,
- LOCATION_APP_COUNT, LOCATION_APP_COUNT));
+ locationAppCount, locationAppCount));
}
}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/notification/NotificationBackendTest.java b/tests/robotests/src/com/android/settings/notification/NotificationBackendTest.java
index 5745aa0718d..764962fa3b2 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 com.google.common.truth.Truth.assertThat;
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 @@ public class NotificationBackendTest {
}
@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 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 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 @@ public class NotificationBackendTest {
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 @@ public class NotificationBackendTest {
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,29 +147,12 @@ public class NotificationBackendTest {
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 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 events = new ArrayList<>();
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 4ba5fe7f644..b2f1673f317 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 @@ public class NotificationPreferenceControllerTest {
}
@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 314f8c22138..8bd9b018d18 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 @@ public class VolumeOptionMenuControllerTest {
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);