diff --git a/src/com/android/settings/security/LockscreenDashboardFragment.java b/src/com/android/settings/security/LockscreenDashboardFragment.java index e2147209eac..71130ea5350 100644 --- a/src/com/android/settings/security/LockscreenDashboardFragment.java +++ b/src/com/android/settings/security/LockscreenDashboardFragment.java @@ -19,6 +19,8 @@ package com.android.settings.security; import android.content.Context; import android.provider.SearchIndexableResource; +import androidx.annotation.VisibleForTesting; + import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; @@ -29,6 +31,7 @@ import com.android.settings.gestures.DoubleTapScreenPreferenceController; import com.android.settings.gestures.PickupGesturePreferenceController; import com.android.settings.notification.LockScreenNotificationPreferenceController; import com.android.settings.search.BaseSearchIndexProvider; +import com.android.settings.security.screenlock.LockScreenPreferenceController; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.search.SearchIndexable; @@ -37,8 +40,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import androidx.annotation.VisibleForTesting; - /** * Settings screen for lock screen preference */ @@ -157,5 +158,11 @@ public class LockscreenDashboardFragment extends DashboardFragment niks.add(KEY_LOCK_SCREEN_NOTIFICATON_WORK_PROFILE_HEADER); return niks; } + + @Override + protected boolean isPageSearchEnabled(Context context) { + return new LockScreenPreferenceController(context, "anykey") + .isAvailable(); + } }; } diff --git a/tests/robotests/src/com/android/settings/security/LockscreenDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/security/LockscreenDashboardFragmentTest.java index 173f56b01d8..7e8c0d52202 100644 --- a/tests/robotests/src/com/android/settings/security/LockscreenDashboardFragmentTest.java +++ b/tests/robotests/src/com/android/settings/security/LockscreenDashboardFragmentTest.java @@ -17,17 +17,22 @@ package com.android.settings.security; import static com.google.common.truth.Truth.assertThat; + import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import android.content.Context; +import com.android.internal.widget.LockPatternUtils; import com.android.settings.display.AmbientDisplayAlwaysOnPreferenceController; import com.android.settings.display.AmbientDisplayNotificationsPreferenceController; import com.android.settings.gestures.DoubleTapScreenPreferenceController; import com.android.settings.gestures.PickupGesturePreferenceController; +import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.XmlTestUtils; import com.android.settings.testutils.shadow.ShadowLockPatternUtils; @@ -37,6 +42,7 @@ import com.android.settingslib.core.AbstractPreferenceController; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; @@ -49,12 +55,18 @@ import java.util.List; }) public class LockscreenDashboardFragmentTest { + @Mock + private LockPatternUtils mLockPatternUtils; + private FakeFeatureFactory mFeatureFactory; private TestFragment mTestFragment; private Context mContext; @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); + mFeatureFactory = FakeFeatureFactory.setupForTest(); + when(mFeatureFactory.securityFeatureProvider.getLockPatternUtils(any(Context.class))) + .thenReturn(mLockPatternUtils); mContext = RuntimeEnvironment.application; mTestFragment = spy(new TestFragment()); } @@ -112,6 +124,16 @@ public class LockscreenDashboardFragmentTest { verify(controller).setConfig(any()); } + @Test + public void isPageSearchable_notLocked_shouldNotBeSearchable() { + when(mLockPatternUtils.isSecure(anyInt())).thenReturn(false); + when(mLockPatternUtils.isLockScreenDisabled(anyInt())).thenReturn(true); + + assertThat(LockscreenDashboardFragment.SEARCH_INDEX_DATA_PROVIDER + .getNonIndexableKeys(mContext)) + .contains("security_lockscreen_settings_screen"); + } + public static class TestFragment extends LockscreenDashboardFragment { @Override protected T use(Class clazz) {