OSDN Git Service

Update security screen summary text when no fingerprint
authorFan Zhang <zhfan@google.com>
Tue, 14 Feb 2017 19:58:25 +0000 (11:58 -0800)
committerFan Zhang <zhfan@google.com>
Tue, 14 Feb 2017 23:05:40 +0000 (15:05 -0800)
Change-Id: I810c533b0daeab3bd67d9d5be8a89d93738b4962
Fix: 35339887
Test: RunSettingsRoboTest

src/com/android/settings/SecuritySettings.java
tests/robotests/src/com/android/settings/SecuritySettingsTest.java

index f274114..b66f2f5 100644 (file)
@@ -1300,8 +1300,13 @@ public class SecuritySettings extends SettingsPreferenceFragment
                         dashboardFeatureProvider.getTilesForCategory(CategoryKey.CATEGORY_SECURITY);
                 mSummaryLoader.setSummary(this, getPackageVerifierSummary(dashboardCategory));
             } else {
-                mSummaryLoader.setSummary(this,
-                        mContext.getString(R.string.security_dashboard_summary));
+                final FingerprintManager fpm = Utils.getFingerprintManagerOrNull(mContext);
+                if (fpm != null && fpm.isHardwareDetected()) {
+                    mSummaryLoader.setSummary(this,
+                            mContext.getString(R.string.security_dashboard_summary));
+                } else {
+                    mSummaryLoader.setSummary(this, null);
+                }
             }
         }
 
@@ -1319,8 +1324,7 @@ public class SecuritySettings extends SettingsPreferenceFragment
                 String summaryUri = tile.metaData.getString(
                         TileUtils.META_DATA_PREFERENCE_SUMMARY_URI, null);
                 return TileUtils.getTextFromUri(mContext, summaryUri,
-                            new ArrayMap<String, IContentProvider>(),
-                            TileUtils.META_DATA_PREFERENCE_SUMMARY);
+                        new ArrayMap<>(), TileUtils.META_DATA_PREFERENCE_SUMMARY);
             }
             return null;
         }
index 92214e3..51c0d9b 100644 (file)
 
 package com.android.settings;
 
-import android.content.Context;
 import android.content.ContentResolver;
+import android.content.Context;
 import android.content.IContentProvider;
-import android.provider.Settings;
+import android.content.pm.PackageManager;
+import android.hardware.fingerprint.FingerprintManager;
 import android.os.Bundle;
+import android.provider.Settings;
 
-import com.android.settings.SettingsRobolectricTestRunner;
-import com.android.settings.TestConfig;
 import com.android.settings.dashboard.SummaryLoader;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settingslib.drawer.DashboardCategory;
@@ -46,7 +46,7 @@ import java.util.Map;
 import static com.google.common.truth.Truth.assertThat;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.isNull;
-import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
@@ -121,6 +121,27 @@ public class SecuritySettingsTest {
     }
 
     @Test
+    @Config(shadows = {
+            ShadowSecureSettings.class,
+    })
+    public void testSummaryProvider_hasFingerPrint_hasStaticSummary() {
+        // Package verifier state is set to disabled.
+        ShadowSecureSettings.putInt(null, Settings.Secure.PACKAGE_VERIFIER_STATE, -1);
+        final FingerprintManager fpm = mock(FingerprintManager.class);
+        when(mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_FINGERPRINT))
+                .thenReturn(true);
+
+        // Cast to Object to workaround a robolectric casting bug
+        when((Object) mContext.getSystemService(FingerprintManager.class)).thenReturn(fpm);
+        when(fpm.isHardwareDetected()).thenReturn(true);
+
+        mSummaryProvider.setListening(true);
+
+        verify(mContext).getString(R.string.security_dashboard_summary);
+    }
+
+
+    @Test
     public void testGetPackageVerifierSummary_nullInput() {
         assertThat(mSummaryProvider.getPackageVerifierSummary(null)).isNull();