Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 54848533 authored by Fan Zhang's avatar Fan Zhang
Browse files

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
parent 2357c1cd
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -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;
    }

+7 −4
Original line number Diff line number Diff line
@@ -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());
    }
}