From: Fan Zhang Date: Thu, 10 May 2018 21:11:49 +0000 (-0700) Subject: Make pref unsearchable for more availibility status. X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=80376a5b4632f21340e02d7b474efa3f088a1fdc;p=android-x86%2Fpackages-apps-Settings.git Make pref unsearchable for more availibility status. Bug: 72748524 Test: robotest Change-Id: I12b13ac3503f851857787df98a2d2f599c71b9b7 --- diff --git a/src/com/android/settings/core/BasePreferenceController.java b/src/com/android/settings/core/BasePreferenceController.java index ec93491759..88ba32952a 100644 --- a/src/com/android/settings/core/BasePreferenceController.java +++ b/src/com/android/settings/core/BasePreferenceController.java @@ -187,6 +187,7 @@ public abstract class BasePreferenceController extends AbstractPreferenceControl public final boolean isAvailable() { final int availabilityStatus = getAvailabilityStatus(); return (availabilityStatus == AVAILABLE + || availabilityStatus == AVAILABLE_UNSEARCHABLE || availabilityStatus == DISABLED_DEPENDENT_SETTING); } @@ -230,16 +231,15 @@ public abstract class BasePreferenceController extends AbstractPreferenceControl * Called by SearchIndexProvider#getNonIndexableKeys */ public void updateNonIndexableKeys(List keys) { - if (this instanceof AbstractPreferenceController) { - if (!isAvailable()) { - final String key = getPreferenceKey(); - if (TextUtils.isEmpty(key)) { - Log.w(TAG, - "Skipping updateNonIndexableKeys due to empty key " + this.toString()); - return; - } - keys.add(key); + final boolean shouldSuppressFromSearch = !isAvailable() + || getAvailabilityStatus() == AVAILABLE_UNSEARCHABLE; + if (shouldSuppressFromSearch) { + final String key = getPreferenceKey(); + if (TextUtils.isEmpty(key)) { + Log.w(TAG, "Skipping updateNonIndexableKeys due to empty key " + toString()); + return; } + keys.add(key); } } diff --git a/src/com/android/settings/security/LockdownButtonPreferenceController.java b/src/com/android/settings/security/LockdownButtonPreferenceController.java index dd6e0d0f7c..5b29868f06 100644 --- a/src/com/android/settings/security/LockdownButtonPreferenceController.java +++ b/src/com/android/settings/security/LockdownButtonPreferenceController.java @@ -21,7 +21,6 @@ import android.os.UserHandle; import android.provider.Settings; import com.android.internal.widget.LockPatternUtils; -import com.android.settings.core.BasePreferenceController; import com.android.settings.core.TogglePreferenceController; public class LockdownButtonPreferenceController extends TogglePreferenceController { @@ -36,9 +35,9 @@ public class LockdownButtonPreferenceController extends TogglePreferenceControll @Override public int getAvailabilityStatus() { if (mLockPatternUtils.isSecure(UserHandle.myUserId())) { - return BasePreferenceController.AVAILABLE; + return AVAILABLE; } else { - return BasePreferenceController.DISABLED_FOR_USER; + return DISABLED_FOR_USER; } } diff --git a/src/com/android/settings/slices/SettingsSliceProvider.java b/src/com/android/settings/slices/SettingsSliceProvider.java index 179af6e815..edeb2b5f28 100644 --- a/src/com/android/settings/slices/SettingsSliceProvider.java +++ b/src/com/android/settings/slices/SettingsSliceProvider.java @@ -27,9 +27,7 @@ import android.graphics.drawable.Icon; import android.net.Uri; import android.net.wifi.WifiManager; import android.provider.Settings; -import androidx.annotation.VisibleForTesting; import android.provider.SettingsSlicesContract; -import androidx.core.graphics.drawable.IconCompat; import android.text.TextUtils; import android.util.Log; import android.util.Pair; @@ -45,6 +43,8 @@ import java.util.Map; import java.util.WeakHashMap; import java.util.concurrent.ConcurrentHashMap; +import androidx.annotation.VisibleForTesting; +import androidx.core.graphics.drawable.IconCompat; import androidx.slice.Slice; import androidx.slice.SliceProvider; import androidx.slice.builders.ListBuilder; diff --git a/tests/robotests/src/com/android/settings/core/BasePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/core/BasePreferenceControllerTest.java index 611c1b5fb4..d5e8e15cfa 100644 --- a/tests/robotests/src/com/android/settings/core/BasePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/core/BasePreferenceControllerTest.java @@ -16,12 +16,12 @@ package com.android.settings.core; import static com.android.settings.core.BasePreferenceController.AVAILABLE; +import static com.android.settings.core.BasePreferenceController.AVAILABLE_UNSEARCHABLE; import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE; import static com.android.settings.core.BasePreferenceController.DISABLED_DEPENDENT_SETTING; import static com.android.settings.core.BasePreferenceController.DISABLED_FOR_USER; import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE; import static com.google.common.truth.Truth.assertThat; - import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -36,8 +36,10 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RuntimeEnvironment; +import java.util.ArrayList; +import java.util.List; + import androidx.preference.Preference; -import androidx.preference.PreferenceGroup; import androidx.preference.PreferenceScreen; @RunWith(SettingsRobolectricTestRunner.class) @@ -73,6 +75,13 @@ public class BasePreferenceControllerTest { } @Test + public void isAvailable_availableStatusUnSearchable_returnsTrue() { + mPreferenceController.setAvailability(AVAILABLE_UNSEARCHABLE); + + assertThat(mPreferenceController.isAvailable()).isTrue(); + } + + @Test public void isAvailable_availableStatusUnsupportedOnDevice_returnsFalse() { mPreferenceController.setAvailability(UNSUPPORTED_ON_DEVICE); @@ -159,6 +168,36 @@ public class BasePreferenceControllerTest { assertThat(preference.isEnabled()).isFalse(); } + @Test + public void updateNonIndexableKeys_controllerUnavailable_shouldAddKey() { + final List keys = new ArrayList<>(); + mPreferenceController.setAvailability(UNSUPPORTED_ON_DEVICE); + + mPreferenceController.updateNonIndexableKeys(keys); + + assertThat(keys).containsExactly(mPreferenceController.getPreferenceKey()); + } + + @Test + public void updateNonIndexableKeys_controllerUnsearchable_shouldAddKey() { + final List keys = new ArrayList<>(); + mPreferenceController.setAvailability(AVAILABLE_UNSEARCHABLE); + + mPreferenceController.updateNonIndexableKeys(keys); + + assertThat(keys).containsExactly(mPreferenceController.getPreferenceKey()); + } + + @Test + public void updateNonIndexableKeys_controllerAvailable_shouldNotAddKey() { + final List keys = new ArrayList<>(); + mPreferenceController.setAvailability(AVAILABLE); + + mPreferenceController.updateNonIndexableKeys(keys); + + assertThat(keys).isEmpty(); + } + private class FakeBasePreferenceController extends BasePreferenceController { public int mAvailable;