DatabaseResultLoaderTest.java revision 012028e3a320dd3eeca3c39f0e47c1c40697bdf6
17fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze/*
27fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * Copyright (C) 2017 The Android Open Source Project
37fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze *
47fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * Licensed under the Apache License, Version 2.0 (the "License");
57fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * you may not use this file except in compliance with the License.
67fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * You may obtain a copy of the License at
77fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze *
87fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze *      http://www.apache.org/licenses/LICENSE-2.0
97fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze *
107fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * Unless required by applicable law or agreed to in writing, software
117fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * distributed under the License is distributed on an "AS IS" BASIS,
127fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * See the License for the specific language governing permissions and
147fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * limitations under the License.
157fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze *
167fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze */
177fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
182078bc2358031ef3a191900d9036daf4251911c1Matthew Fritzepackage com.android.settings.search;
197fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
207fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport android.content.ContentValues;
217fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport android.content.Context;
2252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritzeimport android.content.Intent;
237fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport android.database.sqlite.SQLiteDatabase;
24a8b089db8a6d495a18dc3ad91d3bd84b042fb004Fan Zhang
257fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport com.android.settings.SettingsRobolectricTestRunner;
267fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport com.android.settings.TestConfig;
27a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport com.android.settings.dashboard.SiteMapManager;
28a8b089db8a6d495a18dc3ad91d3bd84b042fb004Fan Zhangimport com.android.settings.testutils.DatabaseTestUtils;
29a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport com.android.settings.testutils.FakeFeatureFactory;
30a8b089db8a6d495a18dc3ad91d3bd84b042fb004Fan Zhang
317fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.junit.After;
327fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.junit.Before;
337fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.junit.Test;
347fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.junit.runner.RunWith;
35a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport org.mockito.Answers;
36a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport org.mockito.Mock;
37a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport org.mockito.MockitoAnnotations;
387fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.robolectric.RuntimeEnvironment;
397fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.robolectric.annotation.Config;
407fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
41b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritzeimport java.util.List;
42b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze
437fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport static com.google.common.truth.Truth.assertThat;
44a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Matchers.anyString;
45a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Matchers.eq;
46a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Mockito.times;
47a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Mockito.verify;
48a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Mockito.when;
497fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
507fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze@RunWith(SettingsRobolectricTestRunner.class)
517fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
527fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzepublic class DatabaseResultLoaderTest {
537fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
54a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
55a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang    private Context mMockContext;
56a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang    @Mock
57a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang    private SiteMapManager mSiteMapManager;
58a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang    private Context mContext;
5952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
607fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    SQLiteDatabase mDb;
617fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
627fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Before
637fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    public void setUp() {
64a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang        MockitoAnnotations.initMocks(this);
657fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        mContext = RuntimeEnvironment.application;
66a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang        FakeFeatureFactory.setupForTest(mMockContext);
67a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang        FakeFeatureFactory factory =
68a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang                (FakeFeatureFactory) FakeFeatureFactory.getFactory(mMockContext);
69a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang        when(factory.searchFeatureProvider.getSiteMapManager())
70a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang                .thenReturn(mSiteMapManager);
717fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        mDb = IndexDatabaseHelper.getInstance(mContext).getWritableDatabase();
727fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        setUpDb();
737fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
747fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
757fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @After
767fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    public void cleanUp() {
77012028e3a320dd3eeca3c39f0e47c1c40697bdf6Fan Zhang        DatabaseTestUtils.clearDb(mContext);
787fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
797fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
807fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
817fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    public void testMatchTitle() {
826efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "title", mSiteMapManager);
833f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(2);
843f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        verify(mSiteMapManager, times(2)).buildBreadCrumb(eq(mContext), anyString(), anyString());
857fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
867fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
877fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
887fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    public void testMatchSummary() {
896efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "summary",
906efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze                mSiteMapManager);
913f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(2);
927fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
937fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
947fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
957fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    public void testMatchKeywords() {
966efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "keywords",
976efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze                mSiteMapManager);
983f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(2);
997fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1007fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
1017fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
1027fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    public void testMatchEntries() {
1036efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "entries",
1046efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze                mSiteMapManager);
1053f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(2);
1067fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1077fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
1087fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
10952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseWord_matchesNonPrefix() {
1107fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        insertSpecialCase("Data usage");
1116efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "usage", mSiteMapManager);
1127fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
1137fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1147fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
1157fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
11652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseSpace_matches() {
1177fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        insertSpecialCase("space");
1186efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, " space ",
1196efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze                mSiteMapManager);
1207fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
1217fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1227fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
1237fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
12452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseDash_matchesWordNoDash() {
1257fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        insertSpecialCase("wi-fi calling");
1266efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "wifi", mSiteMapManager);
1277fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
1287fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1297fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
1307fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
13152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseDash_matchesWordWithDash() {
1327fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        insertSpecialCase("priorités seulment");
1336efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "priorités",
1346efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze                mSiteMapManager);
1357fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
1367fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1377fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
1387fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
13952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseDash_matchesWordWithoutDash() {
1407fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        insertSpecialCase("priorités seulment");
1416efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "priorites",
1426efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze                mSiteMapManager);
1437fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
1447fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1457fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
1467fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
14752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseDash_matchesEntireQueryWithoutDash() {
1487fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        insertSpecialCase("wi-fi calling");
1496efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "wifi calling",
1506efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze                mSiteMapManager);
1517fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
1527fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1537fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
154314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    @Test
15552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCasePrefix_matchesPrefixOfEntry() {
156314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        insertSpecialCase("Photos");
1576efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "pho", mSiteMapManager);
158314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
159314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    }
160314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze
161314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    @Test
162314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    public void testSpecialCasePrefix_DoesNotMatchNonPrefixSubstring() {
163314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        insertSpecialCase("Photos");
1646efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "hot", mSiteMapManager);
165314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(0);
166314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    }
167314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze
168314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    @Test
16952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseMultiWordPrefix_matchesPrefixOfEntry() {
170314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        insertSpecialCase("Apps Notifications");
1716efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "Apps", mSiteMapManager);
172314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
173314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    }
174314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze
175314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    @Test
17652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseMultiWordPrefix_matchesSecondWordPrefixOfEntry() {
177314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        insertSpecialCase("Apps Notifications");
1786efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "Not", mSiteMapManager);
179314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
180314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    }
181314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze
182314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    @Test
183314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    public void testSpecialCaseMultiWordPrefix_DoesNotMatchMatchesPrefixOfFirstEntry() {
184314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        insertSpecialCase("Apps Notifications");
1856efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "pp", mSiteMapManager);
186314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(0);
187314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    }
188314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze
189314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    @Test
190314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    public void testSpecialCaseMultiWordPrefix_DoesNotMatchMatchesPrefixOfSecondEntry() {
191314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        insertSpecialCase("Apps Notifications");
1926efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "tion", mSiteMapManager);
193314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(0);
194314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    }
195314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze
196314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    @Test
19752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseMultiWordPrefixWithSpecial_matchesPrefixOfEntry() {
198314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        insertSpecialCase("Apps & Notifications");
1996efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "App", mSiteMapManager);
200314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
201314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    }
202314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze
203314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    @Test
20452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseMultiWordPrefixWithSpecial_matchesPrefixOfSecondEntry() {
205314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        insertSpecialCase("Apps & Notifications");
2066efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "No", mSiteMapManager);
207314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
208314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    }
209314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze
210b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze    @Test
2116efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze    public void testResultMatchedByMultipleQueries_duplicatesRemoved() {
2126efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        String key = "durr";
2136efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        insertSameValueAllFieldsCase(key);
2146efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, key, null);
21552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
2166efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
21752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    }
21852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
21952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    @Test
22052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseTwoWords_firstWordMatches_ranksHigher() {
221b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        final String caseOne = "Apple pear";
222b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        final String caseTwo = "Banana apple";
223b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        insertSpecialCase(caseOne);
224b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        insertSpecialCase(caseTwo);
2256efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "App", null);
226b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        List<? extends SearchResult> results = loader.loadInBackground();
227b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze
228b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        assertThat(results.get(0).title).isEqualTo(caseOne);
229b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        assertThat(results.get(1).title).isEqualTo(caseTwo);
230b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        assertThat(results.get(0).rank).isLessThan(results.get(1).rank);
231b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze    }
232b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze
2337fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    private void insertSpecialCase(String specialCase) {
2347fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        String normalized = DatabaseIndexingUtils.normalizeHyphen(specialCase);
2357fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        normalized = DatabaseIndexingUtils.normalizeString(normalized);
2363746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze        final ResultPayload payload = new ResultPayload(new Intent());
2377fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
2387fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        ContentValues values = new ContentValues();
239b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DOCID, normalized.hashCode());
2407fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us");
2417fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1);
2427fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, specialCase);
2437fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, normalized);
2447fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, "");
2457fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "");
2467fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, "");
2477fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "");
2487fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "");
2497fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "");
2507fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME,
2517fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze                "com.android.settings.gestures.GestureSettings");
2527fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves");
2537fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, "");
2547fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, "");
2557fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, "");
2567fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ICON, "");
2573f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true);
2586efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, normalized.hashCode());
2597fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0);
2607fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0);
2613746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, ResultPayloadUtils.marshall(payload));
2627fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
2637fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values);
2647fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
2657fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
2667fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    private void setUpDb() {
2673746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze        final byte[] payload = ResultPayloadUtils.marshall(new ResultPayload(new Intent()));
2683746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze
2697fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        ContentValues values = new ContentValues();
2706efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DOCID, 1);
2717fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us");
2727fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1);
2737fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, "alpha_title");
2747fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, "alpha title");
2757fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, "alpha_summary");
276314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "alpha summary");
2777fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, "alpha_summary");
278314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "alpha summary");
279314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "alpha entries");
280314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "alpha keywords");
2817fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME,
2827fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze                "com.android.settings.gestures.GestureSettings");
2837fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves");
2847fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, "");
2857fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, "");
2867fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, "");
2877fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ICON, "");
2883f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true);
2896efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power_0");
2907fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0);
2917fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0);
2923746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, payload);
2937fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
2947fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values);
2957fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
2967fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values = new ContentValues();
2976efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DOCID, 2);
2987fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us");
2997fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1);
3007fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, "bravo_title");
3017fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, "bravo title");
3027fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, "bravo_summary");
303314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "bravo summary");
3047fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, "bravo_summary");
305314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "bravo summary");
306314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "bravo entries");
307314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "bravo keywords");
3087fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME,
3097fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze                "com.android.settings.gestures.GestureSettings");
3107fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves");
3117fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, "");
3127fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, "");
3137fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, "");
3147fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ICON, "");
3153f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true);
3166efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power_1");
3177fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0);
3187fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0);
3193746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, payload);
3207fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values);
3217fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
3227fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values = new ContentValues();
3236efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DOCID, 3);
3247fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us");
3257fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1);
3267fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, "charlie_title");
3277fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, "charlie title");
3287fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, "charlie_summary");
329314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "charlie summary");
3307fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, "charlie_summary");
331314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "charlie summary");
332314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "charlie entries");
333314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "charlie keywords");
3347fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME,
3357fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze                "com.android.settings.gestures.GestureSettings");
3367fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves");
3377fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, "");
3387fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, "");
3397fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, "");
3407fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ICON, "");
3413f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ENABLED, false);
3426efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power_2");
3437fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0);
3447fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0);
3453746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, payload);
3467fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
3477fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values);
3487fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
3496efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze
3506efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze    private void insertSameValueAllFieldsCase(String key) {
3516efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        final ResultPayload payload = new ResultPayload(new Intent());
3526efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze
3536efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        ContentValues values = new ContentValues();
3546efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DOCID, key.hashCode());
3556efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us");
3566efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1);
3576efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, key);
3586efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, key);
3596efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, key);
3606efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, key);
3616efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, key);
3626efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, key);
3636efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, key);
3646efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, key);
3656efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME, key);
3666efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves");
3676efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, key);
3686efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, "");
3696efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, key);
3706efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ICON, "");
3716efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true);
3726efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, key.hashCode());
3736efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0);
3746efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0);
3756efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, ResultPayloadUtils.marshall(payload));
3766efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze
3776efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values);
3786efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze    }
379b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze}