From 548485336f08d1a9d2c0fd40de7d6e79e22eb3d4 Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Fri, 25 May 2018 16:05:58 -0700 Subject: [PATCH] Fix a bug where device index is not skipped correct. When checking language/build fingerprint to skip reindex, language check was comparing Locale object and String object, so they would never be equal, so we accidentally reindex every time. - Switched Objects.equal to TextUtils.equal, this catches the error at compiler level. Bug: 80065409 Test: compile/robotest Change-Id: I2b3c68bb1c2fd876338f42321605567d7e64d64b --- .../settings/search/DeviceIndexFeatureProvider.java | 9 +++++---- .../search/DeviceIndexFeatureProviderTest.java | 11 +++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/com/android/settings/search/DeviceIndexFeatureProvider.java b/src/com/android/settings/search/DeviceIndexFeatureProvider.java index 1c25399c8fa..c4d3abfcaa8 100644 --- a/src/com/android/settings/search/DeviceIndexFeatureProvider.java +++ b/src/com/android/settings/search/DeviceIndexFeatureProvider.java @@ -24,6 +24,7 @@ import android.content.Context; import android.net.Uri; import android.os.Build; import android.provider.Settings; +import android.text.TextUtils; import android.util.Log; import com.android.settings.R; @@ -32,7 +33,6 @@ import com.android.settings.slices.SettingsSliceProvider; import java.util.List; import java.util.Locale; -import java.util.Objects; public interface DeviceIndexFeatureProvider { @@ -96,10 +96,11 @@ public interface DeviceIndexFeatureProvider { } static boolean skipIndex(Context context) { - final boolean isSameVersion = Objects.equals( + final boolean isSameVersion = TextUtils.equals( Settings.Secure.getString(context.getContentResolver(), INDEX_VERSION), VERSION); - final boolean isSameLanguage = Objects.equals( - Settings.Secure.getString(context.getContentResolver(), INDEX_LANGUAGE), LANGUAGE); + final boolean isSameLanguage = TextUtils.equals( + Settings.Secure.getString(context.getContentResolver(), INDEX_LANGUAGE), + LANGUAGE.toString()); return isSameLanguage && isSameVersion; } diff --git a/tests/robotests/src/com/android/settings/search/DeviceIndexFeatureProviderTest.java b/tests/robotests/src/com/android/settings/search/DeviceIndexFeatureProviderTest.java index a900db033bc..ebba3f310ce 100644 --- a/tests/robotests/src/com/android/settings/search/DeviceIndexFeatureProviderTest.java +++ b/tests/robotests/src/com/android/settings/search/DeviceIndexFeatureProviderTest.java @@ -23,7 +23,6 @@ import static org.mockito.Mockito.when; import android.app.Activity; import android.app.job.JobScheduler; -import android.os.Build; import android.provider.Settings; import com.android.settings.testutils.FakeFeatureFactory; @@ -113,15 +112,19 @@ public class DeviceIndexFeatureProviderTest { @Test public void updateIndex_enabled_provisioned_sameBuild_sameLang_shouldNotIndex() { + // Enabled + when(mProvider.isIndexingEnabled()).thenReturn(true); + // Provisioned Settings.Global.putInt(mActivity.getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 1); + // Same build and same language DeviceIndexFeatureProvider.setIndexState(mActivity); - JobScheduler jobScheduler = mock(JobScheduler.class); - when(mProvider.isIndexingEnabled()).thenReturn(true); + + final JobScheduler jobScheduler = mock(JobScheduler.class); when(mActivity.getSystemService(JobScheduler.class)).thenReturn(jobScheduler); mProvider.updateIndex(mActivity, false); - verify(mProvider, never()).index(any(), any(), any(), any(), any()); + verify(jobScheduler, never()).schedule(any()); } }