diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index bb4c7701132..af13e86c293 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -1960,7 +1960,7 @@
"Ezarpenak"
"Zerbitzua bere aplikazioak hasi du. Gelditzen baduzu, agian aplikazioak huts egingo du."
"Ezin da aplikazioa modu seguruan gelditu. Geldituz gero, uneko lan batzuk gal ditzakezu."
- "Aplikazio-prozesu zaharra da hau, baina geroago behar bada erabiltzeko ari da exekutatzen. Normalean ez dago hori gelditzeko arrazoirik."
+ "Aplikazio-prozesu hau zaharra da, baina abian da oraindik ere, badaezpada berriro behar bada. Normalean ez dago hura gelditzeko arrazoirik."
"%1$s: beste norbait ari da erabiltzen. Zuk kontrolatzeko, saka ezazu Ezarpenak."
"Abian den prozesu nagusia."
"%1$s zerbitzua abian da."
@@ -2348,7 +2348,7 @@
- Aplikazio hauek ezin dira exekutatu atzeko planoan
- - Aplikazio hau ezin da exekutatu atzeko planoan
+ - Aplikazio hau ezin da abiarazi atzeko planoan
- %1$d aplikazio mugatu nahi dituzu?
@@ -2420,7 +2420,7 @@
"PUZaren aurreko planoa"
"Mantendu aktibo"
"GPS"
- "Wi-Fia exekutatzen"
+ "Wifiaren erabilera"
"Tableta"
"Telefonoa"
"Bidalitako pakete mugikorrak"
@@ -3460,9 +3460,9 @@
"Desaktibatu"
"Utzi"
"Errealitate birtualeko laguntza-zerbitzuak"
- "Ez dago errealitate birtualeko laguntza-zerbitzu gisa exekutatzea eskatu duen aplikaziorik instalatuta."
+ "Ez dago errealitate birtualeko laguntza-zerbitzu gisa abiaraztea eskatu duen aplikaziorik instalatuta."
"%1$s zerbitzuari errealitate birtualeko zerbitzuak atzitzeko baimena eman nahi diozu?"
- "Aplikazioak errealitate birtualean erabiltzen dituzunean exekutatu ahal izango da %1$s."
+ "Aplikazioak errealitate birtualean erabiltzen dituzunean abiarazi ahal izango da %1$s."
"Errealitate birtualeko moduan"
"Murriztu lausotzea (gomendatua)"
"Murriztu distira"
@@ -3766,9 +3766,9 @@
"Erabilera-datuek zer beste aplikazio eta zer maiztasunekin erabiltzen dituzun jakiteko baimena ematen die aplikazioei, baita zer operadore duzun, zer hizkuntza-ezarpen dituzun eta beste xehetasun batzuk ere."
"Memoria"
"Memoriaren xehetasunak"
- "Beti ari da exekutatzen (%s)"
- "Noizbehinka exekutatzen da (%s)"
- "Ez da ia inoiz exekutatzen (%s)"
+ "Beti dago abian (%s)"
+ "Noizbehinka abiarazten da (%s)"
+ "Ez da ia inoiz abiarazten (%s)"
"Gehienekoa"
"Batez besteko erabilera"
"Gehienekoa: %1$s"
@@ -3792,8 +3792,8 @@
"Bateria optimizatu egiten da"
"Bateria-optimizazioa ez dago erabilgarri"
"Ez aplikatu bateria-optimizazioa. Aukera horrekin, bizkorrago agortuko da bateria."
- "Beti atzeko planoan exekutatzeko baimena eman nahi diozu aplikazioari?"
- "%1$s aplikazioari atzeko planoan beti exekutatzeko baimena emanez gero, baliteke bateriak gutxiago irautea. \n\nAukera hori aldatzeko, sakatu Ezarpenak > Aplikazioak eta jakinarazpenak."
+ "Beti atzeko planoan abiarazteko baimena eman nahi diozu aplikazioari?"
+ "%1$s aplikazioari atzeko planoan beti abiarazteko baimena emanez gero, baliteke bateriak gutxiago irautea. \n\nAukera hori aldatzeko, sakatu Ezarpenak > Aplikazioak eta jakinarazpenak."
"Bateriaren %1$s erabili du bateria guztiz kargatu zenetik"
"Bateriaren kudeaketa"
"Ez du bateriarik erabili bateria guztiz kargatu zenetik"
diff --git a/src/com/android/settings/MasterClear.java b/src/com/android/settings/MasterClear.java
index 14a6aed9e79..0df39842f9d 100644
--- a/src/com/android/settings/MasterClear.java
+++ b/src/com/android/settings/MasterClear.java
@@ -182,8 +182,7 @@ public class MasterClear extends InstrumentedFragment implements OnGlobalLayoutL
void showFinalConfirmation() {
final Bundle args = new Bundle();
args.putBoolean(ERASE_EXTERNAL_EXTRA, mExternalStorage.isChecked());
- args.putBoolean(ERASE_ESIMS_EXTRA,
- mEsimStorageContainer.getVisibility() == View.VISIBLE && mEsimStorage.isChecked());
+ args.putBoolean(ERASE_ESIMS_EXTRA, mEsimStorage.isChecked());
new SubSettingLauncher(getContext())
.setDestination(MasterClearConfirm.class.getName())
.setArguments(args)
diff --git a/src/com/android/settings/biometrics/face/FaceProfileStatusPreferenceController.java b/src/com/android/settings/biometrics/face/FaceProfileStatusPreferenceController.java
index 287238a1567..56b325bdf89 100644
--- a/src/com/android/settings/biometrics/face/FaceProfileStatusPreferenceController.java
+++ b/src/com/android/settings/biometrics/face/FaceProfileStatusPreferenceController.java
@@ -25,7 +25,7 @@ import androidx.preference.Preference;
public class FaceProfileStatusPreferenceController extends FaceStatusPreferenceController {
- public static final String KEY_FACE_SETTINGS = "face_settings_profile";
+ private static final String KEY_FACE_SETTINGS = "face_settings_profile";
public FaceProfileStatusPreferenceController(Context context) {
super(context, KEY_FACE_SETTINGS);
diff --git a/src/com/android/settings/biometrics/face/FaceStatusPreferenceController.java b/src/com/android/settings/biometrics/face/FaceStatusPreferenceController.java
index 84505772092..cb82b5e8563 100644
--- a/src/com/android/settings/biometrics/face/FaceStatusPreferenceController.java
+++ b/src/com/android/settings/biometrics/face/FaceStatusPreferenceController.java
@@ -26,7 +26,7 @@ import com.android.settings.biometrics.BiometricStatusPreferenceController;
public class FaceStatusPreferenceController extends BiometricStatusPreferenceController {
- private static final String KEY_FACE_SETTINGS = "face_settings";
+ public static final String KEY_FACE_SETTINGS = "face_settings";
protected final FaceManager mFaceManager;
diff --git a/src/com/android/settings/deviceinfo/TopLevelStoragePreferenceController.java b/src/com/android/settings/deviceinfo/TopLevelStoragePreferenceController.java
index c6fc23b1df2..fdc5feb573e 100644
--- a/src/com/android/settings/deviceinfo/TopLevelStoragePreferenceController.java
+++ b/src/com/android/settings/deviceinfo/TopLevelStoragePreferenceController.java
@@ -20,10 +20,13 @@ import android.content.Context;
import android.os.storage.StorageManager;
import android.text.format.Formatter;
+import androidx.preference.Preference;
+
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settingslib.deviceinfo.PrivateStorageInfo;
import com.android.settingslib.deviceinfo.StorageManagerVolumeProvider;
+import com.android.settingslib.utils.ThreadUtils;
import java.text.NumberFormat;
@@ -44,14 +47,22 @@ public class TopLevelStoragePreferenceController extends BasePreferenceControlle
}
@Override
- public CharSequence getSummary() {
- // TODO: Register listener.
- final NumberFormat percentageFormat = NumberFormat.getPercentInstance();
- final PrivateStorageInfo info = PrivateStorageInfo.getPrivateStorageInfo(
- mStorageManagerVolumeProvider);
- double privateUsedBytes = info.totalBytes - info.freeBytes;
- return mContext.getString(R.string.storage_summary,
- percentageFormat.format(privateUsedBytes / info.totalBytes),
- Formatter.formatFileSize(mContext, info.freeBytes));
+ protected void refreshSummary(Preference preference) {
+ if (preference == null) {
+ return;
+ }
+
+ ThreadUtils.postOnBackgroundThread(() -> {
+ final NumberFormat percentageFormat = NumberFormat.getPercentInstance();
+ final PrivateStorageInfo info = PrivateStorageInfo.getPrivateStorageInfo(
+ mStorageManagerVolumeProvider);
+ final double privateUsedBytes = info.totalBytes - info.freeBytes;
+
+ ThreadUtils.postOnMainThread(() -> {
+ preference.setSummary(mContext.getString(R.string.storage_summary,
+ percentageFormat.format(privateUsedBytes / info.totalBytes),
+ Formatter.formatFileSize(mContext, info.freeBytes)));
+ });
+ });
}
}
diff --git a/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSlice.java b/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSlice.java
index 128d76bba2d..31539503350 100644
--- a/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSlice.java
+++ b/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSlice.java
@@ -25,7 +25,9 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.hardware.biometrics.BiometricManager;
+import android.hardware.face.FaceManager;
import android.net.Uri;
+import android.os.UserHandle;
import androidx.core.graphics.drawable.IconCompat;
import androidx.slice.Slice;
@@ -36,7 +38,7 @@ import androidx.slice.builders.SliceAction;
import com.android.settings.R;
import com.android.settings.SubSettings;
import com.android.settings.Utils;
-import com.android.settings.biometrics.face.FaceProfileStatusPreferenceController;
+import com.android.settings.biometrics.face.FaceStatusPreferenceController;
import com.android.settings.security.SecuritySettings;
import com.android.settings.slices.CustomSliceRegistry;
import com.android.settings.slices.CustomSliceable;
@@ -52,13 +54,8 @@ public class FaceSetupSlice implements CustomSliceable {
@Override
public Slice getSlice() {
- final BiometricManager biometricManager = mContext.getSystemService(BiometricManager.class);
- final PackageManager packageManager = mContext.getPackageManager();
- if (!packageManager.hasSystemFeature(PackageManager.FEATURE_FACE)) {
- // no face hardware
- return null;
- } else if (biometricManager.canAuthenticate() == BIOMETRIC_SUCCESS) {
- // face hardware, and already enrolled
+ final FaceManager faceManager = mContext.getSystemService(FaceManager.class);
+ if (faceManager == null || faceManager.hasEnrolledTemplates(UserHandle.myUserId())) {
return null;
}
@@ -84,7 +81,7 @@ public class FaceSetupSlice implements CustomSliceable {
public Intent getIntent() {
return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
SecuritySettings.class.getName(),
- FaceProfileStatusPreferenceController.KEY_FACE_SETTINGS,
+ FaceStatusPreferenceController.KEY_FACE_SETTINGS,
mContext.getText(R.string.security_settings_face_settings_enroll).toString(),
SettingsEnums.SLICE)
.setClassName(mContext.getPackageName(), SubSettings.class.getName());
diff --git a/tests/robotests/src/com/android/settings/MasterClearTest.java b/tests/robotests/src/com/android/settings/MasterClearTest.java
index 813e4aafa67..73adf937c86 100644
--- a/tests/robotests/src/com/android/settings/MasterClearTest.java
+++ b/tests/robotests/src/com/android/settings/MasterClearTest.java
@@ -163,7 +163,7 @@ public class MasterClearTest {
verify(context).startActivity(intent.capture());
assertThat(intent.getValue().getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS)
.getBoolean(MasterClear.ERASE_ESIMS_EXTRA, false))
- .isFalse();
+ .isTrue();
}
@Test
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSliceTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSliceTest.java
index f6c1821f120..5e364c073f9 100644
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSliceTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSliceTest.java
@@ -16,19 +16,15 @@
package com.android.settings.homepage.contextualcards.slices;
-import static android.hardware.biometrics.BiometricConstants.BIOMETRIC_ERROR_NO_BIOMETRICS;
-import static android.hardware.biometrics.BiometricManager.BIOMETRIC_SUCCESS;
-
-import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
-import android.content.pm.PackageManager;
-import android.hardware.biometrics.BiometricConstants;
-import android.hardware.biometrics.BiometricManager;
+import android.hardware.face.FaceManager;
+import android.os.UserHandle;
import androidx.slice.Slice;
import androidx.slice.SliceProvider;
@@ -46,43 +42,36 @@ import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
public class FaceSetupSliceTest {
- private BiometricManager mBiometricManager;
private Context mContext;
- private PackageManager mPackageManager;
@Before
public void setUp() {
// Set-up specs for SliceMetadata.
SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
mContext = spy(RuntimeEnvironment.application);
- mPackageManager = spy(mContext.getPackageManager());
- mBiometricManager = spy(mContext.getSystemService(BiometricManager.class));
}
@Test
- public void getSlice_noFaceSupported_shouldReturnNull() {
- when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_FACE)).thenReturn(false);
- when(mContext.getPackageManager()).thenReturn(mPackageManager);
+ public void getSlice_noFaceManager_shouldReturnNull() {
+ when(mContext.getSystemService(FaceManager.class)).thenReturn(null);
final FaceSetupSlice setupSlice = new FaceSetupSlice(mContext);
assertThat(setupSlice.getSlice()).isNull();
}
@Test
- public void getSlice_faceSupportedUserEnrolled_shouldReturnNull() {
- when(mBiometricManager.canAuthenticate()).thenReturn(BIOMETRIC_SUCCESS);
- when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_FACE)).thenReturn(true);
- when(mContext.getPackageManager()).thenReturn(mPackageManager);
- when(mContext.getSystemService(BiometricManager.class)).thenReturn(mBiometricManager);
+ public void getSlice_faceEnrolled_shouldReturnNull() {
+ final FaceManager faceManager = mock(FaceManager.class);
+ when(mContext.getSystemService(FaceManager.class)).thenReturn(faceManager);
+ when(faceManager.hasEnrolledTemplates(UserHandle.myUserId())).thenReturn(true);
final FaceSetupSlice setupSlice = new FaceSetupSlice(mContext);
assertThat(setupSlice.getSlice()).isNull();
}
@Test
- public void getSlice_faceSupportedUserNotEnrolled_shouldReturnNonNull() {
- when(mBiometricManager.canAuthenticate()).thenReturn(BIOMETRIC_ERROR_NO_BIOMETRICS);
- when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_FACE)).thenReturn(true);
- when(mContext.getPackageManager()).thenReturn(mPackageManager);
- when(mContext.getSystemService(BiometricManager.class)).thenReturn(mBiometricManager);
+ public void getSlice_faceNotEnrolled_shouldReturnNonNull() {
+ final FaceManager faceManager = mock(FaceManager.class);
+ when(mContext.getSystemService(FaceManager.class)).thenReturn(faceManager);
+ when(faceManager.hasEnrolledTemplates(UserHandle.myUserId())).thenReturn(false);
final FaceSetupSlice setupSlice = new FaceSetupSlice(mContext);
assertThat(setupSlice.getSlice()).isNotNull();
}