OSDN Git Service

Update fingerprint suggestion enable state when back pressed
authorcnchen <cnchen@google.com>
Wed, 17 Apr 2019 12:56:45 +0000 (20:56 +0800)
committercnchen <cnchen@google.com>
Thu, 18 Apr 2019 01:44:28 +0000 (09:44 +0800)
Test: manual test && atest SetupFingerprintEnrollFinishTest
Bug: b/130666973
Change-Id: Ie6be2f6ce77f29c9f25743f92597b5f7297048a9

src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFinish.java
tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFinishTest.java

index 05ee7be..b8ec103 100644 (file)
@@ -22,6 +22,7 @@ import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.hardware.fingerprint.FingerprintManager;
 import android.os.Bundle;
+import android.util.Log;
 import android.view.View;
 
 import androidx.annotation.VisibleForTesting;
@@ -38,6 +39,7 @@ import com.google.android.setupcompat.template.FooterButton;
  */
 public class FingerprintEnrollFinish extends BiometricEnrollBase {
 
+    private static final String TAG = "FingerprintEnrollFinish";
     @VisibleForTesting
     static final int REQUEST_ADD_ANOTHER = 1;
     @VisibleForTesting
@@ -70,6 +72,13 @@ public class FingerprintEnrollFinish extends BiometricEnrollBase {
     }
 
     @Override
+    public void onBackPressed() {
+        super.onBackPressed();
+
+        updateFingerprintSuggestionEnableState();
+    }
+
+    @Override
     protected void onResume() {
         super.onResume();
 
@@ -93,12 +102,12 @@ public class FingerprintEnrollFinish extends BiometricEnrollBase {
 
     @Override
     protected void onNextButtonClick(View view) {
-        setFingerprintSuggestionEnabled();
+        updateFingerprintSuggestionEnableState();
         setResult(RESULT_FINISHED);
         finish();
     }
 
-    private void setFingerprintSuggestionEnabled() {
+    private void updateFingerprintSuggestionEnableState() {
         final FingerprintManager fpm = Utils.getFingerprintManagerOrNull(this);
         if (fpm != null) {
             int enrolled = fpm.getEnrolledFingerprints(mUserId).size();
@@ -114,6 +123,7 @@ public class FingerprintEnrollFinish extends BiometricEnrollBase {
                     FINGERPRINT_SUGGESTION_ACTIVITY);
             getPackageManager().setComponentEnabledSetting(
                     componentName, flag, PackageManager.DONT_KILL_APP);
+            Log.d(TAG, FINGERPRINT_SUGGESTION_ACTIVITY + " enabled state = " + (enrolled == 1));
         }
     }
 
@@ -123,7 +133,7 @@ public class FingerprintEnrollFinish extends BiometricEnrollBase {
 
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        setFingerprintSuggestionEnabled();
+        updateFingerprintSuggestionEnableState();
         if (requestCode == REQUEST_ADD_ANOTHER && resultCode != RESULT_CANCELED) {
             setResult(resultCode, data);
             finish();
index 74b35c9..57a56fc 100644 (file)
@@ -142,4 +142,24 @@ public class SetupFingerprintEnrollFinishTest {
         assertThat(application.getPackageManager().getComponentEnabledSetting(
                 mComponentName)).isEqualTo(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
     }
+
+    @Test
+    public void onBackPressed_fingerprintCountIsNotOne_fingerprintSuggestionActivityDisabled() {
+        Shadows.shadowOf((FingerprintManager) mFingerprintManager).setDefaultFingerprints(2);
+
+        mActivity.onBackPressed();
+
+        assertThat(application.getPackageManager().getComponentEnabledSetting(
+                mComponentName)).isEqualTo(PackageManager.COMPONENT_ENABLED_STATE_DISABLED);
+    }
+
+    @Test
+    public void onBackPressed_fingerprintCountIsOne_fngerprintSuggestionActivityEnabled() {
+        Shadows.shadowOf((FingerprintManager) mFingerprintManager).setDefaultFingerprints(1);
+
+        mActivity.onBackPressed();
+
+        assertThat(application.getPackageManager().getComponentEnabledSetting(
+                mComponentName)).isEqualTo(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
+    }
 }
\ No newline at end of file