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.TestConfig; 26a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport com.android.settings.dashboard.SiteMapManager; 27a8b089db8a6d495a18dc3ad91d3bd84b042fb004Fan Zhangimport com.android.settings.testutils.DatabaseTestUtils; 28a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport com.android.settings.testutils.FakeFeatureFactory; 29fbcf4e6e14d090aaced06d3f8708d6e9df1962baFan Zhangimport com.android.settings.testutils.SettingsRobolectricTestRunner; 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 41683ccdf97bd8b3ed30b7014f2df17227cff92561Soroosh Mariooryadimport java.util.Arrays; 42683ccdf97bd8b3ed30b7014f2df17227cff92561Soroosh Mariooryadimport java.util.HashSet; 43683ccdf97bd8b3ed30b7014f2df17227cff92561Soroosh Mariooryadimport java.util.Set; 44b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze 457fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport static com.google.common.truth.Truth.assertThat; 46a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Matchers.anyString; 47a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Matchers.eq; 48a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Mockito.times; 49a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Mockito.verify; 50a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Mockito.when; 517fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 527fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze@RunWith(SettingsRobolectricTestRunner.class) 537fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) 547fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzepublic class DatabaseResultLoaderTest { 557fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 56a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang @Mock(answer = Answers.RETURNS_DEEP_STUBS) 57a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang private Context mMockContext; 58a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang @Mock 59a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang private SiteMapManager mSiteMapManager; 60a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang private Context mContext; 6152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 627fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze SQLiteDatabase mDb; 637fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 647fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Before 657fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze public void setUp() { 66a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang MockitoAnnotations.initMocks(this); 677fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze mContext = RuntimeEnvironment.application; 68a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang FakeFeatureFactory.setupForTest(mMockContext); 69a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang FakeFeatureFactory factory = 70a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang (FakeFeatureFactory) FakeFeatureFactory.getFactory(mMockContext); 71a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang when(factory.searchFeatureProvider.getSiteMapManager()) 72a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang .thenReturn(mSiteMapManager); 737fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze mDb = IndexDatabaseHelper.getInstance(mContext).getWritableDatabase(); 747fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze setUpDb(); 757fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 767fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 777fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @After 787fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze public void cleanUp() { 79012028e3a320dd3eeca3c39f0e47c1c40697bdf6Fan Zhang DatabaseTestUtils.clearDb(mContext); 807fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 817fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 827fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 837fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze public void testMatchTitle() { 846efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "title", mSiteMapManager); 853f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(2); 863f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze verify(mSiteMapManager, times(2)).buildBreadCrumb(eq(mContext), anyString(), anyString()); 877fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 887fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 897fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 907fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze public void testMatchSummary() { 916efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "summary", 926efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze mSiteMapManager); 933f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(2); 947fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 957fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 967fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 977fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze public void testMatchKeywords() { 986efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "keywords", 996efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze mSiteMapManager); 1003f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(2); 1017fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 1027fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 1037fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 1047fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze public void testMatchEntries() { 1056efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "entries", 1066efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze mSiteMapManager); 1073f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(2); 1087fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 1097fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 1107fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 11152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testSpecialCaseWord_matchesNonPrefix() { 1127fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze insertSpecialCase("Data usage"); 1136efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "usage", mSiteMapManager); 1147fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 1157fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 1167fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 1177fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 11852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testSpecialCaseDash_matchesWordNoDash() { 1197fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze insertSpecialCase("wi-fi calling"); 1206efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "wifi", mSiteMapManager); 1217fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 1227fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 1237fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 1247fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 12552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testSpecialCaseDash_matchesWordWithDash() { 1267fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze insertSpecialCase("priorités seulment"); 1276efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "priorités", 1286efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze mSiteMapManager); 1297fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 1307fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 1317fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 1327fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 13352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testSpecialCaseDash_matchesWordWithoutDash() { 1347fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze insertSpecialCase("priorités seulment"); 1356efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "priorites", 1366efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze mSiteMapManager); 1377fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 1387fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 1397fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 1407fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 14152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testSpecialCaseDash_matchesEntireQueryWithoutDash() { 1427fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze insertSpecialCase("wi-fi calling"); 1436efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "wifi calling", 1446efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze mSiteMapManager); 1457fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 1467fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 1477fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 148314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze @Test 14952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testSpecialCasePrefix_matchesPrefixOfEntry() { 150314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze insertSpecialCase("Photos"); 1516efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "pho", mSiteMapManager); 152314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 153314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze } 154314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze 155314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze @Test 156314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze public void testSpecialCasePrefix_DoesNotMatchNonPrefixSubstring() { 157314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze insertSpecialCase("Photos"); 1586efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "hot", mSiteMapManager); 159314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(0); 160314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze } 161314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze 162314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze @Test 16352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testSpecialCaseMultiWordPrefix_matchesPrefixOfEntry() { 164314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze insertSpecialCase("Apps Notifications"); 1656efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "Apps", mSiteMapManager); 166314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 167314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze } 168314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze 169314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze @Test 17052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testSpecialCaseMultiWordPrefix_matchesSecondWordPrefixOfEntry() { 171314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze insertSpecialCase("Apps Notifications"); 1726efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "Not", mSiteMapManager); 173314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 174314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze } 175314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze 176314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze @Test 177314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze public void testSpecialCaseMultiWordPrefix_DoesNotMatchMatchesPrefixOfFirstEntry() { 178314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze insertSpecialCase("Apps Notifications"); 1796efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "pp", mSiteMapManager); 180314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(0); 181314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze } 182314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze 183314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze @Test 184314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze public void testSpecialCaseMultiWordPrefix_DoesNotMatchMatchesPrefixOfSecondEntry() { 185314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze insertSpecialCase("Apps Notifications"); 1866efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "tion", mSiteMapManager); 187314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(0); 188314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze } 189314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze 190314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze @Test 19152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testSpecialCaseMultiWordPrefixWithSpecial_matchesPrefixOfEntry() { 192314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze insertSpecialCase("Apps & Notifications"); 1936efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "App", mSiteMapManager); 194314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 195314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze } 196314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze 197314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze @Test 19852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testSpecialCaseMultiWordPrefixWithSpecial_matchesPrefixOfSecondEntry() { 199314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze insertSpecialCase("Apps & Notifications"); 2006efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "No", mSiteMapManager); 201314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 202314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze } 203314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze 204b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze @Test 2056efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze public void testResultMatchedByMultipleQueries_duplicatesRemoved() { 2066efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze String key = "durr"; 2076efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze insertSameValueAllFieldsCase(key); 2086efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze DatabaseResultLoader loader = new DatabaseResultLoader(mContext, key, null); 20952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 2106efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 21152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze } 21252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 21352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze @Test 214683ccdf97bd8b3ed30b7014f2df17227cff92561Soroosh Mariooryad public void testSpecialCaseTwoWords_multipleResults() { 215b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze final String caseOne = "Apple pear"; 216b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze final String caseTwo = "Banana apple"; 217b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze insertSpecialCase(caseOne); 218b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze insertSpecialCase(caseTwo); 2196efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "App", null); 220683ccdf97bd8b3ed30b7014f2df17227cff92561Soroosh Mariooryad Set<? extends SearchResult> results = loader.loadInBackground(); 221683ccdf97bd8b3ed30b7014f2df17227cff92561Soroosh Mariooryad Set<CharSequence> expectedTitles = new HashSet<>(Arrays.asList(caseOne, caseTwo)); 222683ccdf97bd8b3ed30b7014f2df17227cff92561Soroosh Mariooryad Set<CharSequence> actualTitles = new HashSet<>(); 223683ccdf97bd8b3ed30b7014f2df17227cff92561Soroosh Mariooryad for (SearchResult result : results) { 224683ccdf97bd8b3ed30b7014f2df17227cff92561Soroosh Mariooryad actualTitles.add(result.title); 225683ccdf97bd8b3ed30b7014f2df17227cff92561Soroosh Mariooryad } 226683ccdf97bd8b3ed30b7014f2df17227cff92561Soroosh Mariooryad assertThat(actualTitles).isEqualTo(expectedTitles); 227b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze } 228b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze 2297fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze private void insertSpecialCase(String specialCase) { 2307fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze String normalized = DatabaseIndexingUtils.normalizeHyphen(specialCase); 2317fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze normalized = DatabaseIndexingUtils.normalizeString(normalized); 2323746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze final ResultPayload payload = new ResultPayload(new Intent()); 2337fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 2347fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze ContentValues values = new ContentValues(); 235b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DOCID, normalized.hashCode()); 2367fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us"); 2377fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1); 2387fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, specialCase); 2397fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, normalized); 2407fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, ""); 2417fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, ""); 2427fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, ""); 2437fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, ""); 2447fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, ""); 2457fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, ""); 2467fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME, 2477fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze "com.android.settings.gestures.GestureSettings"); 2487fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves"); 2497fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, ""); 2507fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, ""); 2517fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, ""); 2527fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ICON, ""); 2533f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true); 2546efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, normalized.hashCode()); 2557fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0); 2567fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0); 2573746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, ResultPayloadUtils.marshall(payload)); 2587fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 2597fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values); 2607fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 2617fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 2627fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze private void setUpDb() { 2633746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze final byte[] payload = ResultPayloadUtils.marshall(new ResultPayload(new Intent())); 2643746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze 2657fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze ContentValues values = new ContentValues(); 2666efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DOCID, 1); 2677fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us"); 2687fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1); 2697fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, "alpha_title"); 2707fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, "alpha title"); 2717fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, "alpha_summary"); 272314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "alpha summary"); 2737fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, "alpha_summary"); 274314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "alpha summary"); 275314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "alpha entries"); 276314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "alpha keywords"); 2777fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME, 2787fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze "com.android.settings.gestures.GestureSettings"); 2797fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves"); 2807fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, ""); 2817fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, ""); 2827fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, ""); 2837fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ICON, ""); 2843f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true); 2856efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power_0"); 2867fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0); 2877fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0); 2883746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, payload); 2897fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 2907fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values); 2917fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 2927fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values = new ContentValues(); 2936efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DOCID, 2); 2947fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us"); 2957fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1); 2967fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, "bravo_title"); 2977fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, "bravo title"); 2987fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, "bravo_summary"); 299314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "bravo summary"); 3007fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, "bravo_summary"); 301314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "bravo summary"); 302314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "bravo entries"); 303314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "bravo keywords"); 3047fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME, 3057fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze "com.android.settings.gestures.GestureSettings"); 3067fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves"); 3077fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, ""); 3087fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, ""); 3097fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, ""); 3107fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ICON, ""); 3113f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true); 3126efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power_1"); 3137fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0); 3147fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0); 3153746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, payload); 3167fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values); 3177fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 3187fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values = new ContentValues(); 3196efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DOCID, 3); 3207fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us"); 3217fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1); 3227fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, "charlie_title"); 3237fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, "charlie title"); 3247fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, "charlie_summary"); 325314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "charlie summary"); 3267fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, "charlie_summary"); 327314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "charlie summary"); 328314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "charlie entries"); 329314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "charlie keywords"); 3307fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME, 3317fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze "com.android.settings.gestures.GestureSettings"); 3327fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves"); 3337fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, ""); 3347fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, ""); 3357fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, ""); 3367fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ICON, ""); 3373f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ENABLED, false); 3386efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power_2"); 3397fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0); 3407fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0); 3413746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, payload); 3427fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 3437fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values); 3447fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 3456efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze 3466efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze private void insertSameValueAllFieldsCase(String key) { 3476efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze final ResultPayload payload = new ResultPayload(new Intent()); 3486efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze 3496efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze ContentValues values = new ContentValues(); 3506efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DOCID, key.hashCode()); 3516efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us"); 3526efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1); 3536efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, key); 3546efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, key); 3556efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, key); 3566efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, key); 3576efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, key); 3586efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, key); 3596efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, key); 3606efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, key); 3616efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME, key); 3626efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves"); 3636efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, key); 3646efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, ""); 3656efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, key); 3666efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ICON, ""); 3676efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true); 3686efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, key.hashCode()); 3696efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0); 3706efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0); 3716efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, ResultPayloadUtils.marshall(payload)); 3726efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze 3736efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values); 3746efea1e624bb4b48290000cfdb82df224a31b81dMatthew Fritze } 375b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze}