DatabaseResultLoaderTest.java revision 6efea1e624bb4b48290000cfdb82df224a31b81d
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;
282078bc2358031ef3a191900d9036daf4251911c1Matthew Fritzeimport com.android.settings.search.DatabaseIndexingUtils;
292078bc2358031ef3a191900d9036daf4251911c1Matthew Fritzeimport com.android.settings.search.DatabaseResultLoader;
30b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritzeimport com.android.settings.search.IndexDatabaseHelper;
312078bc2358031ef3a191900d9036daf4251911c1Matthew Fritzeimport com.android.settings.search.InlineSwitchPayload;
322078bc2358031ef3a191900d9036daf4251911c1Matthew Fritzeimport com.android.settings.search.ResultPayload;
332078bc2358031ef3a191900d9036daf4251911c1Matthew Fritzeimport com.android.settings.search.ResultPayloadUtils;
342078bc2358031ef3a191900d9036daf4251911c1Matthew Fritzeimport com.android.settings.search.SearchResult;
35a8b089db8a6d495a18dc3ad91d3bd84b042fb004Fan Zhangimport com.android.settings.testutils.DatabaseTestUtils;
36a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport com.android.settings.testutils.FakeFeatureFactory;
37a8b089db8a6d495a18dc3ad91d3bd84b042fb004Fan Zhang
387fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.junit.After;
397fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.junit.Before;
407fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.junit.Test;
417fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.junit.runner.RunWith;
42a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport org.mockito.Answers;
43a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport org.mockito.Mock;
44a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport org.mockito.MockitoAnnotations;
457fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.robolectric.RuntimeEnvironment;
467fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.robolectric.annotation.Config;
477fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
48b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritzeimport java.util.List;
49b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze
507fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport static com.google.common.truth.Truth.assertThat;
51a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Matchers.anyString;
52a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Matchers.eq;
53a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Mockito.times;
54a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Mockito.verify;
55a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Mockito.when;
567fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
577fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze@RunWith(SettingsRobolectricTestRunner.class)
587fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
597fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzepublic class DatabaseResultLoaderTest {
607fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
61a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
62a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang    private Context mMockContext;
63a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang    @Mock
64a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang    private SiteMapManager mSiteMapManager;
65a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang    private Context mContext;
6652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
677fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    SQLiteDatabase mDb;
687fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
697fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Before
707fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    public void setUp() {
71a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang        MockitoAnnotations.initMocks(this);
727fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        mContext = RuntimeEnvironment.application;
73a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang        FakeFeatureFactory.setupForTest(mMockContext);
74a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang        FakeFeatureFactory factory =
75a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang                (FakeFeatureFactory) FakeFeatureFactory.getFactory(mMockContext);
76a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang        when(factory.searchFeatureProvider.getSiteMapManager())
77a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang                .thenReturn(mSiteMapManager);
787fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        mDb = IndexDatabaseHelper.getInstance(mContext).getWritableDatabase();
797fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        setUpDb();
807fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
817fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
827fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @After
837fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    public void cleanUp() {
84a8b089db8a6d495a18dc3ad91d3bd84b042fb004Fan Zhang        DatabaseTestUtils.clearDb();
857fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
867fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
877fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
887fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    public void testMatchTitle() {
896efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "title", mSiteMapManager);
903f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(2);
913f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        verify(mSiteMapManager, times(2)).buildBreadCrumb(eq(mContext), anyString(), anyString());
927fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
937fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
947fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
957fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    public void testMatchSummary() {
966efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "summary",
976efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze                mSiteMapManager);
983f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(2);
997fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1007fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
1017fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
1027fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    public void testMatchKeywords() {
1036efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "keywords",
1046efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze                mSiteMapManager);
1053f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(2);
1067fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1077fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
1087fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
1097fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    public void testMatchEntries() {
1106efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "entries",
1116efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze                mSiteMapManager);
1123f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(2);
1137fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1147fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
1157fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
11652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseWord_matchesNonPrefix() {
1177fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        insertSpecialCase("Data usage");
1186efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "usage", mSiteMapManager);
1197fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
1207fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1217fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
1227fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
12352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseSpace_matches() {
1247fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        insertSpecialCase("space");
1256efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, " space ",
1266efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze                mSiteMapManager);
1277fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
1287fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1297fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
1307fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
13152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseDash_matchesWordNoDash() {
1327fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        insertSpecialCase("wi-fi calling");
1336efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "wifi", mSiteMapManager);
1347fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
1357fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1367fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
1377fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
13852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseDash_matchesWordWithDash() {
1397fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        insertSpecialCase("priorités seulment");
1406efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "priorités",
1416efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze                mSiteMapManager);
1427fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
1437fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1447fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
1457fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
14652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseDash_matchesWordWithoutDash() {
1477fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        insertSpecialCase("priorités seulment");
1486efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "priorites",
1496efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze                mSiteMapManager);
1507fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
1517fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1527fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
1537fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
15452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseDash_matchesEntireQueryWithoutDash() {
1557fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        insertSpecialCase("wi-fi calling");
1566efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "wifi calling",
1576efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze                mSiteMapManager);
1587fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
1597fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1607fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
161314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    @Test
16252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCasePrefix_matchesPrefixOfEntry() {
163314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        insertSpecialCase("Photos");
1646efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "pho", mSiteMapManager);
165314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
166314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    }
167314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze
168314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    @Test
169314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    public void testSpecialCasePrefix_DoesNotMatchNonPrefixSubstring() {
170314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        insertSpecialCase("Photos");
1716efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "hot", mSiteMapManager);
172314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(0);
173314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    }
174314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze
175314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    @Test
17652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseMultiWordPrefix_matchesPrefixOfEntry() {
177314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        insertSpecialCase("Apps Notifications");
1786efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "Apps", mSiteMapManager);
179314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
180314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    }
181314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze
182314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    @Test
18352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseMultiWordPrefix_matchesSecondWordPrefixOfEntry() {
184314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        insertSpecialCase("Apps Notifications");
1856efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "Not", mSiteMapManager);
186314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
187314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    }
188314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze
189314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    @Test
190314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    public void testSpecialCaseMultiWordPrefix_DoesNotMatchMatchesPrefixOfFirstEntry() {
191314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        insertSpecialCase("Apps Notifications");
1926efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "pp", mSiteMapManager);
193314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(0);
194314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    }
195314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze
196314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    @Test
197314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    public void testSpecialCaseMultiWordPrefix_DoesNotMatchMatchesPrefixOfSecondEntry() {
198314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        insertSpecialCase("Apps Notifications");
1996efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "tion", mSiteMapManager);
200314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(0);
201314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    }
202314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze
203314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    @Test
20452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseMultiWordPrefixWithSpecial_matchesPrefixOfEntry() {
205314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        insertSpecialCase("Apps & Notifications");
2066efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "App", mSiteMapManager);
207314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
208314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    }
209314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze
210314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    @Test
21152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseMultiWordPrefixWithSpecial_matchesPrefixOfSecondEntry() {
212314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        insertSpecialCase("Apps & Notifications");
2136efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "No", mSiteMapManager);
214314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
215314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    }
216314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze
217b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze    @Test
2186efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze    public void testResultMatchedByMultipleQueries_duplicatesRemoved() {
2196efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        String key = "durr";
2206efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        insertSameValueAllFieldsCase(key);
2216efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, key, null);
22252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
2236efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
22452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    }
22552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
22652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    @Test
22752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseTwoWords_firstWordMatches_ranksHigher() {
228b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        final String caseOne = "Apple pear";
229b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        final String caseTwo = "Banana apple";
230b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        insertSpecialCase(caseOne);
231b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        insertSpecialCase(caseTwo);
2326efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "App", null);
233b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        List<? extends SearchResult> results = loader.loadInBackground();
234b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze
235b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        assertThat(results.get(0).title).isEqualTo(caseOne);
236b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        assertThat(results.get(1).title).isEqualTo(caseTwo);
237b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        assertThat(results.get(0).rank).isLessThan(results.get(1).rank);
238b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze    }
239b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze
2407fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    private void insertSpecialCase(String specialCase) {
2417fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        String normalized = DatabaseIndexingUtils.normalizeHyphen(specialCase);
2427fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        normalized = DatabaseIndexingUtils.normalizeString(normalized);
2433746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze        final ResultPayload payload = new ResultPayload(new Intent());
2447fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
2457fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        ContentValues values = new ContentValues();
246b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DOCID, normalized.hashCode());
2477fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us");
2487fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1);
2497fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, specialCase);
2507fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, normalized);
2517fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, "");
2527fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "");
2537fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, "");
2547fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "");
2557fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "");
2567fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "");
2577fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME,
2587fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze                "com.android.settings.gestures.GestureSettings");
2597fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves");
2607fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, "");
2617fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, "");
2627fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, "");
2637fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ICON, "");
2643f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true);
2656efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, normalized.hashCode());
2667fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0);
2677fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0);
2683746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, ResultPayloadUtils.marshall(payload));
2697fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
2707fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values);
2717fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
2727fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
2737fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    private void setUpDb() {
2743746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze        final byte[] payload = ResultPayloadUtils.marshall(new ResultPayload(new Intent()));
2753746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze
2767fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        ContentValues values = new ContentValues();
2776efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DOCID, 1);
2787fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us");
2797fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1);
2807fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, "alpha_title");
2817fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, "alpha title");
2827fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, "alpha_summary");
283314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "alpha summary");
2847fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, "alpha_summary");
285314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "alpha summary");
286314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "alpha entries");
287314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "alpha keywords");
2887fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME,
2897fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze                "com.android.settings.gestures.GestureSettings");
2907fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves");
2917fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, "");
2927fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, "");
2937fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, "");
2947fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ICON, "");
2953f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true);
2966efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power_0");
2977fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0);
2987fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0);
2993746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, payload);
3007fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
3017fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values);
3027fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
3037fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values = new ContentValues();
3046efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DOCID, 2);
3057fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us");
3067fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1);
3077fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, "bravo_title");
3087fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, "bravo title");
3097fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, "bravo_summary");
310314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "bravo summary");
3117fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, "bravo_summary");
312314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "bravo summary");
313314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "bravo entries");
314314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "bravo keywords");
3157fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME,
3167fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze                "com.android.settings.gestures.GestureSettings");
3177fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves");
3187fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, "");
3197fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, "");
3207fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, "");
3217fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ICON, "");
3223f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true);
3236efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power_1");
3247fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0);
3257fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0);
3263746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, payload);
3277fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values);
3287fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
3297fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values = new ContentValues();
3306efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DOCID, 3);
3317fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us");
3327fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1);
3337fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, "charlie_title");
3347fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, "charlie title");
3357fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, "charlie_summary");
336314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "charlie summary");
3377fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, "charlie_summary");
338314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "charlie summary");
339314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "charlie entries");
340314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "charlie keywords");
3417fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME,
3427fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze                "com.android.settings.gestures.GestureSettings");
3437fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves");
3447fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, "");
3457fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, "");
3467fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, "");
3477fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ICON, "");
3483f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ENABLED, false);
3496efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power_2");
3507fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0);
3517fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0);
3523746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, payload);
3537fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
3547fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values);
3557fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
3566efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze
3576efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze    private void insertSameValueAllFieldsCase(String key) {
3586efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        final ResultPayload payload = new ResultPayload(new Intent());
3596efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze
3606efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        ContentValues values = new ContentValues();
3616efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DOCID, key.hashCode());
3626efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us");
3636efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1);
3646efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, key);
3656efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, key);
3666efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, key);
3676efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, key);
3686efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, key);
3696efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, key);
3706efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, key);
3716efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, key);
3726efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME, key);
3736efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves");
3746efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, key);
3756efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, "");
3766efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, key);
3776efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ICON, "");
3786efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true);
3796efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, key.hashCode());
3806efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0);
3816efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0);
3826efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, ResultPayloadUtils.marshall(payload));
3836efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze
3846efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze        mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values);
3856efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze    }
386b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze}