DatabaseIndexingManagerTest.java revision 1dec073528352fcf036c5ba52d5d535ba32c472c
11dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze/* 21dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze * Copyright (C) 2016 The Android Open Source Project 31dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze * 41dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze * Licensed under the Apache License, Version 2.0 (the "License"); 51dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze * you may not use this file except in compliance with the License. 61dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze * You may obtain a copy of the License at 71dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze * 81dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze * http://www.apache.org/licenses/LICENSE-2.0 91dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze * 101dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze * Unless required by applicable law or agreed to in writing, software 111dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze * distributed under the License is distributed on an "AS IS" BASIS, 121dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze * See the License for the specific language governing permissions and 141dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze * limitations under the License. 151dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze * 161dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze */ 171dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 181dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritzepackage com.android.settings.search; 191dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 201dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritzeimport android.content.Context; 211dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritzeimport android.database.Cursor; 221dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritzeimport android.database.sqlite.SQLiteDatabase; 231dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritzeimport android.provider.SearchIndexableResource; 241dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritzeimport com.android.settings.R; 251dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritzeimport com.android.settings.SettingsRobolectricTestRunner; 261dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritzeimport com.android.settings.TestConfig; 271dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritzeimport com.android.settings.search2.DatabaseIndexingManager; 281dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 291dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritzeimport org.junit.After; 301dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritzeimport org.junit.Before; 311dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritzeimport org.junit.Test; 321dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritzeimport org.junit.runner.RunWith; 331dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritzeimport org.robolectric.annotation.Config; 341dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritzeimport org.robolectric.shadows.ShadowApplication; 351dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 361dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritzeimport java.lang.reflect.Field; 371dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritzeimport java.util.ArrayList; 381dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritzeimport java.util.Arrays; 391dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritzeimport java.util.HashMap; 401dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritzeimport java.util.List; 411dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritzeimport java.util.Locale; 421dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 431dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritzeimport static com.google.common.truth.Truth.assertThat; 441dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritzeimport static org.mockito.Mockito.spy; 451dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 461dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze@RunWith(SettingsRobolectricTestRunner.class) 471dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) 481dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritzepublic class DatabaseIndexingManagerTest { 491dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private final String localeStr = "en_US"; 501dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 511dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private final int rank = 42; 521dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private final String title = "title\u2011title"; 531dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private final String updatedTitle = "title-title"; 541dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private final String normalizedTitle = "titletitle"; 551dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private final String summaryOn = "summary\u2011on"; 561dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private final String updatedSummaryOn = "summary-on"; 571dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private final String normalizedSummaryOn = "summaryon"; 581dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private final String summaryOff = "summary\u2011off"; 591dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private final String updatedSummaryOff ="summary-off"; 601dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private final String normalizedSummaryOff = "summaryoff"; 611dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private final String entries = "entries"; 621dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private final String keywords = "keywords, keywordss, keywordsss"; 631dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private final String spaceDelimittedKeywords = "keywords keywordss keywordsss"; 641dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private final String screenTitle = "screen title"; 651dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private final String className = "class name"; 661dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private final int iconResId = 0xff; 671dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private final String action = "action"; 681dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private final String targetPackage = "target package"; 691dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private final String targetClass = "target class"; 701dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private final String packageName = "package name"; 711dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private final String key = "key"; 721dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private final int userId = -1; 731dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private final boolean enabled = true; 741dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 751dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private Context mContext; 761dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private DatabaseIndexingManager mManager; 771dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private SQLiteDatabase mDb; 781dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 791dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze @Before 801dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze public void setUp() { 811dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze mContext = ShadowApplication.getInstance().getApplicationContext(); 821dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze mManager = spy(new DatabaseIndexingManager(mContext, mContext.getPackageName())); 831dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze mDb = IndexDatabaseHelper.getInstance(mContext).getWritableDatabase(); 841dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze } 851dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 861dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze @After 871dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze public void cleanUp() { 881dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze Field instance; 891dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze Class clazz = IndexDatabaseHelper.class; 901dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze try { 911dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze instance = clazz.getDeclaredField("sSingleton"); 921dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze instance.setAccessible(true); 931dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze instance.set(null, null); 941dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze } catch (Exception e) { 951dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze throw new RuntimeException(); 961dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze } 971dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze } 981dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 991dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze @Test 1001dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze public void testDatabaseSchema() { 1011dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze Cursor dbCursor = mDb.query("prefs_index", null, null, null, null, null, null); 1021dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze List<String> columnNames = new ArrayList<>(Arrays.asList(dbCursor.getColumnNames())); 1031dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Note that docid is not included. 1041dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze List<String> expColumnNames = new ArrayList<>(Arrays.asList(new String[ ]{ 1051dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze "locale", 1061dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze "data_rank", 1071dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze "data_title", 1081dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze "data_title_normalized", 1091dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze "data_summary_on", 1101dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze "data_summary_on_normalized", 1111dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze "data_summary_off", 1121dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze "data_summary_off_normalized", 1131dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze "data_entries", 1141dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze "data_keywords", 1151dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze "class_name", 1161dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze "screen_title", 1171dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze "intent_action", 1181dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze "intent_target_package", 1191dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze "intent_target_class", 1201dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze "icon", 1211dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze "enabled", 1221dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze "data_key_reference", 1231dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze "user_id", 1241dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze "payload_type", 1251dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze "payload" 1261dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze })); 1271dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Prevent database schema regressions 1281dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(columnNames).containsAllIn(expColumnNames); 1291dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze } 1301dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 1311dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Tests for the flow: IndexOneRaw -> UpdateOneRowWithFilteredData -> UpdateOneRow 1321dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 1331dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze @Test 1341dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze public void testInsertRawColumn_RowInserted() { 1351dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze SearchIndexableRaw raw = getFakeRaw(); 1361dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze mManager.indexOneSearchIndexableData(mDb, localeStr, raw, null /* Non-indexable keys */); 1371dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index", null); 1381dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getCount()).isEqualTo(1); 1391dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze } 1401dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 1411dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze @Test 1421dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze public void testInsertRawColumn_RowMatches() { 1431dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze SearchIndexableRaw raw = getFakeRaw(); 1441dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze mManager.indexOneSearchIndexableData(mDb, localeStr, raw, null /* Non-indexable keys */); 1451dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index", null); 1461dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze cursor.moveToPosition(0); 1471dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 1481dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Locale 1491dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(0)).isEqualTo(localeStr); 1501dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Data Rank 1511dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(1)).isEqualTo(raw.rank); 1521dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Data Title 1531dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(2)).isEqualTo(updatedTitle); 1541dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Normalized Title 1551dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(3)).isEqualTo(normalizedTitle); 1561dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary On 1571dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(4)).isEqualTo(updatedSummaryOn); 1581dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary On Normalized 1591dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(5)).isEqualTo(normalizedSummaryOn); 1601dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary Off 1611dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(6)).isEqualTo(updatedSummaryOff); 1621dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary off normalized 1631dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(7)).isEqualTo(normalizedSummaryOff); 1641dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Entries 1651dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(8)).isEqualTo(raw.entries); 1661dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Keywords 1671dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(9)).isEqualTo(spaceDelimittedKeywords); 1681dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Screen Title 1691dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(10)).isEqualTo(raw.screenTitle); 1701dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Class Name 1711dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(11)).isEqualTo(raw.className); 1721dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Icon 1731dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(12)).isEqualTo(raw.iconResId); 1741dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Intent Action 1751dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(13)).isEqualTo(raw.intentAction); 1761dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Target Package 1771dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(14)).isEqualTo(raw.intentTargetPackage); 1781dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Target Class 1791dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(15)).isEqualTo(raw.intentTargetClass); 1801dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Enabled 1811dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(16) == 1).isEqualTo(raw.enabled); 1821dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Data ref key 1831dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(17)).isNotNull(); 1841dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // User Id 1851dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(18)).isEqualTo(raw.userId); 1861dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Payload Type - default is 0 1871dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(19)).isEqualTo(0); 1881dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Payload 1891dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getBlob(20)).isNull(); 1901dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze } 1911dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 1921dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze @Test 1931dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze public void testInsertRawColumnMismatchedLocale_NoRowInserted() { 1941dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze SearchIndexableRaw raw = getFakeRaw("ca-fr"); 1951dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze mManager.indexOneSearchIndexableData(mDb, localeStr, raw, null /* Non-indexable keys */); 1961dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index", null); 1971dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getCount()).isEqualTo(0); 1981dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze } 1991dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 2001dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Tests for the flow: IndexOneResource -> IndexFromResource -> 2011dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // UpdateOneRowWithFilteredData -> UpdateOneRow 2021dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 2031dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze @Test 2041dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze public void testNullResource_NothingInserted() { 2051dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze mManager.indexOneSearchIndexableData(mDb, localeStr, null /* searchIndexableResource */, 2061dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze new HashMap<String, List<String>>()); 2071dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index", null); 2081dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getCount()).isEqualTo(0); 2091dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze } 2101dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 2111dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze @Test 2121dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze public void testAddResource_RowsInserted() { 2131dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze SearchIndexableResource resource = getFakeResource(R.xml.gesture_settings); 2141dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze mManager.indexOneSearchIndexableData(mDb, localeStr, resource, 2151dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze new HashMap<String, List<String>>()); 2161dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index", null); 2171dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getCount()).isEqualTo(6); 2181dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze } 2191dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 2201dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze @Test 2211dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze public void testAddResourceHeader_RowsMatch() { 2221dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze SearchIndexableResource resource = getFakeResource(R.xml.application_settings); 2231dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze mManager.indexOneSearchIndexableData(mDb, localeStr, resource, 2241dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze new HashMap<String, List<String>>()); 2251dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 2261dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index ORDER BY data_title", null); 2271dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze cursor.moveToPosition(1); 2281dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 2291dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Locale 2301dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(0)).isEqualTo(localeStr); 2311dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Data Rank 2321dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(1)).isEqualTo(rank); 2331dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Data Title 2341dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(2)).isEqualTo("Apps"); 2351dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Normalized Title 2361dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(3)).isEqualTo("apps"); 2371dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary On 2381dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(4)).isEqualTo("Manage apps, set up quick launch shortcuts"); 2391dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary On Normalized 2401dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(5)).isEqualTo("manage apps, set up quick launch shortcuts"); 2411dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary Off - only on for checkbox preferences 2421dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(6)).isEmpty(); 2431dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary off normalized - only on for checkbox preferences 2441dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(7)).isEmpty(); 2451dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Entries - only on for list preferences 2461dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(8)).isNull(); 2471dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Keywords 2481dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(9)).isEmpty(); 2491dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Screen Title 2501dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(10)).isEqualTo("Apps"); 2511dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Class Name 2521dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(11)).isEqualTo(className); 2531dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Icon 2541dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(12)).isEqualTo(iconResId); 2551dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Intent Action 2561dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(13)).isEqualTo(action); 2571dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Target Package 2581dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(14)).isEqualTo(targetPackage); 2591dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Target Class 2601dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(15)).isEqualTo(targetClass); 2611dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Enabled 2621dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(16) == 1).isEqualTo(enabled); 2631dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Data ref key 2641dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(17)).isEqualTo("applications_settings"); 2651dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // User Id 2661dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(18)).isEqualTo(userId); 2671dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Payload Type - default is 0 2681dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(19)).isEqualTo(0); 2691dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Payload - should be updated to real payloads as controllers are added 2701dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getBlob(20)).isNull(); 2711dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze } 2721dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 2731dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze @Test 2741dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze public void testAddResourceCustomSetting_RowsMatch() { 2751dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze SearchIndexableResource resource = getFakeResource(R.xml.gesture_settings); 2761dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze mManager.indexOneSearchIndexableData(mDb, localeStr, resource, 2771dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze new HashMap<String, List<String>>()); 2781dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 2791dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index", null); 2801dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze cursor.moveToPosition(0); 2811dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 2821dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Locale 2831dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(0)).isEqualTo(localeStr); 2841dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Data Rank 2851dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(1)).isEqualTo(rank); 2861dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Data Title 2871dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(2)).isEqualTo("Swipe for notifications"); 2881dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Normalized Title 2891dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(3)).isEqualTo("swipe for notifications"); 2901dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary On 2911dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(4)).isEqualTo("To check your notifications, " + 2921dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze "swipe down on the fingerprint sensor on the back of your phone."); 2931dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary On Normalized 2941dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(5)).isEqualTo("to check your notifications, " + 2951dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze "swipe down on the fingerprint sensor on the back of your phone."); 2961dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary Off - only on for checkbox preferences 2971dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(6)).isEmpty(); 2981dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary off normalized - only on for checkbox preferences 2991dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(7)).isEmpty(); 3001dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Entries - only on for list preferences 3011dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(8)).isNull(); 3021dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Keywords 3031dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(9)).isEmpty(); 3041dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Screen Title 3051dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(10)).isEqualTo("Gestures"); 3061dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Class Name 3071dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(11)).isEqualTo(className); 3081dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Icon 3091dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(12)).isEqualTo(iconResId); 3101dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Intent Action 3111dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(13)).isEqualTo(action); 3121dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Target Package 3131dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(14)).isEqualTo(targetPackage); 3141dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Target Class 3151dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(15)).isEqualTo(targetClass); 3161dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Enabled 3171dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(16) == 1).isEqualTo(enabled); 3181dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Data ref key 3191dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(17)).isEqualTo("gesture_swipe_down_fingerprint"); 3201dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // User Id 3211dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(18)).isEqualTo(userId); 3221dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Payload Type - default is 0 3231dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(19)).isEqualTo(0); 3241dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Payload - should be updated to real payloads as controllers are added 3251dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getBlob(20)).isNull(); 3261dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze } 3271dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 3281dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze @Test 3291dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze public void testAddResourceCheckboxPreference_RowsMatch() { 3301dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze SearchIndexableResource resource = getFakeResource(R.xml.application_settings); 3311dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze mManager.indexOneSearchIndexableData(mDb, localeStr, resource, 3321dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze new HashMap<String, List<String>>()); 3331dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 3341dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze /* Should return 6 results, with the following titles: 3351dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze * Advanced Settings, Apps, Manage Apps, Preferred install location, Running Services 3361dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze */ 3371dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index ORDER BY data_title", null); 3381dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze cursor.moveToPosition(0); 3391dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Locale 3401dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(0)).isEqualTo(localeStr); 3411dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Data Rank 3421dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(1)).isEqualTo(rank); 3431dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Data Title 3441dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(2)).isEqualTo("Advanced settings"); 3451dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Normalized Title 3461dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(3)).isEqualTo("advanced settings"); 3471dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary On 3481dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(4)).isEqualTo("Enable more settings options"); 3491dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary On Normalized 3501dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(5)).isEqualTo("enable more settings options"); 3511dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary Off 3521dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(6)).isEqualTo("Enable more settings options"); 3531dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary Off 3541dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(7)).isEqualTo("enable more settings options"); 3551dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Entries - only on for list preferences 3561dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(8)).isNull(); 3571dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Keywords 3581dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(9)).isEmpty(); 3591dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Screen Title 3601dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(10)).isEqualTo("Apps"); 3611dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Class Name 3621dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(11)).isEqualTo(className); 3631dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Icon 3641dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(12)).isEqualTo(iconResId); 3651dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Intent Action 3661dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(13)).isEqualTo(action); 3671dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Target Package 3681dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(14)).isEqualTo(targetPackage); 3691dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Target Class 3701dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(15)).isEqualTo(targetClass); 3711dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Enabled 3721dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(16) == 1).isEqualTo(enabled); 3731dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Data ref key 3741dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(17)).isEqualTo("toggle_advanced_settings"); 3751dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // User Id 3761dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(18)).isEqualTo(userId); 3771dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Payload Type - default is 0 3781dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(19)).isEqualTo(0); 3791dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Payload - should be updated to real payloads as controllers are added 3801dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getBlob(20)).isNull(); 3811dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze } 3821dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 3831dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze @Test 3841dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze public void testAddResourceListPreference_RowsMatch() { 3851dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze SearchIndexableResource resource = getFakeResource(R.xml.application_settings); 3861dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze mManager.indexOneSearchIndexableData(mDb, localeStr, resource, 3871dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze new HashMap<String, List<String>>()); 3881dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 3891dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index ORDER BY data_title", null); 3901dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze cursor.moveToPosition(3); 3911dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Locale 3921dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(0)).isEqualTo(localeStr); 3931dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Data Rank 3941dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(1)).isEqualTo(rank); 3951dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Data Title 3961dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(2)).isEqualTo("Preferred install location"); 3971dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Normalized Title 3981dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(3)).isEqualTo("preferred install location"); 3991dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary On 4001dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(4)).isEqualTo("Change the preferred installation location for new apps"); 4011dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary On Normalized 4021dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(5)).isEqualTo("change the preferred installation location for new apps"); 4031dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary Off - only on for checkbox preferences 4041dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(6)).isEmpty(); 4051dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary off normalized - only on for checkbox preferences 4061dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(7)).isEmpty(); 4071dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Entries - only on for list preferences 4081dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(8)).isEqualTo("Internal device storage|Removable SD card|" + 4091dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze "Let the system decide|"); 4101dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Keywords 4111dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(9)).isEmpty(); 4121dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Screen Title 4131dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(10)).isEqualTo("Apps"); 4141dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Class Name 4151dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(11)).isEqualTo(className); 4161dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Icon 4171dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(12)).isEqualTo(iconResId); 4181dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Intent Action 4191dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(13)).isEqualTo(action); 4201dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Target Package 4211dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(14)).isEqualTo(targetPackage); 4221dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Target Class 4231dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(15)).isEqualTo(targetClass); 4241dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Enabled 4251dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(16) == 1).isEqualTo(enabled); 4261dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Data ref key 4271dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(17)).isEqualTo("app_install_location"); 4281dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // User Id 4291dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(18)).isEqualTo(userId); 4301dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Payload Type - default is 0 4311dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(19)).isEqualTo(0); 4321dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Payload - should be updated to real payloads as controllers are added 4331dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getBlob(20)).isNull(); 4341dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze } 4351dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 4361dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Tests for the flow: IndexOneResource -> IndexFromProvider -> IndexFromResource -> 4371dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // UpdateOneRowWithFilteredData -> UpdateOneRow 4381dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 4391dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze @Test 4401dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze public void testResourceProvider_RowInserted() { 4411dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze SearchIndexableResource resource = getFakeResource(R.xml.gesture_settings); 4421dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze resource.xmlResId = 0; 4431dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze resource.className = "com.android.settings.display.ScreenZoomSettings"; 4441dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 4451dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze mManager.indexOneSearchIndexableData(mDb, localeStr, resource, 4461dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze new HashMap<String, List<String>>()); 4471dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index", null); 4481dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getCount()).isEqualTo(1); 4491dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze } 4501dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 4511dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze @Test 4521dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze public void testResourceProvider_Matches() { 4531dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze SearchIndexableResource resource = getFakeResource(R.xml.gesture_settings); 4541dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze resource.xmlResId = 0; 4551dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze resource.className = "com.android.settings.display.ScreenZoomSettings"; 4561dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 4571dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze mManager.indexOneSearchIndexableData(mDb, localeStr, resource, 4581dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze new HashMap<String, List<String>>()); 4591dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index", null); 4601dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze cursor.moveToPosition(0); 4611dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 4621dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Locale 4631dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(0)).isEqualTo(localeStr); 4641dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Data Rank 4651dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(1)).isEqualTo(rank); 4661dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Data Title 4671dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(2)).isEqualTo("Display size"); 4681dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Normalized Title 4691dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(3)).isEqualTo("display size"); 4701dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary On 4711dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(4)).isEmpty(); 4721dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary On Normalized 4731dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(5)).isEmpty(); 4741dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary Off - only on for checkbox preferences 4751dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(6)).isEmpty(); 4761dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary off normalized - only on for checkbox preferences 4771dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(7)).isEmpty(); 4781dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Entries - only on for list preferences 4791dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(8)).isNull(); 4801dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Keywords 4811dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(9)).isEqualTo("display density screen zoom scale scaling"); 4821dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Screen Title 4831dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(10)).isEqualTo("Display size"); 4841dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Class Name 4851dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(11)) 4861dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze .isEqualTo("com.android.settings.display.ScreenZoomSettings"); 4871dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Icon 4881dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(12)).isEqualTo(iconResId); 4891dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Intent Action 4901dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(13)).isNull(); 4911dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Target Package 4921dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(14)).isNull(); 4931dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Target Class 4941dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(15)).isNull(); 4951dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Enabled 4961dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(16) == 1).isEqualTo(enabled); 4971dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Data ref key 4981dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(17)).isNull(); 4991dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // User Id 5001dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(18)).isEqualTo(userId); 5011dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Payload Type - default is 0 5021dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(19)).isEqualTo(0); 5031dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Payload - should be updated to real payloads as controllers are added 5041dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getBlob(20)).isNull(); 5051dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze } 5061dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 5071dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze @Test 5081dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze public void testResourceProvider_ResourceRowInserted() { 5091dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze SearchIndexableResource resource = getFakeResource(R.xml.gesture_settings); 5101dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze resource.xmlResId = 0; 5111dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze resource.className = "com.android.settings.LegalSettings"; 5121dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 5131dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze mManager.indexOneSearchIndexableData(mDb, localeStr, resource, 5141dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze new HashMap<String, List<String>>()); 5151dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index", null); 5161dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getCount()).isEqualTo(2); 5171dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze } 5181dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 5191dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze @Test 5201dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze public void testResourceProvider_ResourceRowMatches() { 5211dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze SearchIndexableResource resource = getFakeResource(R.xml.gesture_settings); 5221dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze resource.xmlResId = 0; 5231dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze resource.className = "com.android.settings.LegalSettings"; 5241dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 5251dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze mManager.indexOneSearchIndexableData(mDb, localeStr, resource, 5261dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze new HashMap<String, List<String>>()); 5271dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index ORDER BY data_title", null); 5281dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze cursor.moveToPosition(0); 5291dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 5301dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Locale 5311dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(0)).isEqualTo(localeStr); 5321dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Data Rank 5331dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(1)).isEqualTo(rank); 5341dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Data Title 5351dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(2)).isEqualTo("Legal information"); 5361dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Normalized Title 5371dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(3)).isEqualTo("legal information"); 5381dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary On 5391dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(4)).isEmpty(); 5401dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary On Normalized 5411dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(5)).isEmpty(); 5421dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary Off - only on for checkbox preferences 5431dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(6)).isEmpty(); 5441dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Summary off normalized - only on for checkbox preferences 5451dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(7)).isEmpty(); 5461dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Entries - only on for list preferences 5471dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(8)).isNull(); 5481dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Keywords 5491dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(9)).isEmpty(); 5501dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Screen Title 5511dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(10)).isEqualTo("Legal information"); 5521dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Class Name 5531dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(11)) 5541dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze .isEqualTo("com.android.settings.LegalSettings"); 5551dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Icon 5561dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(12)).isEqualTo(iconResId); 5571dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Intent Action 5581dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(13)).isNull(); 5591dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Target Package 5601dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(14)).isNull(); 5611dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Target Class 5621dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(15)).isNull(); 5631dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Enabled 5641dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(16) == 1).isEqualTo(enabled); 5651dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Data ref key 5661dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getString(17)).isNull(); 5671dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // User Id 5681dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(18)).isEqualTo(userId); 5691dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Payload Type - default is 0 5701dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getInt(19)).isEqualTo(0); 5711dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Payload - should be updated to real payloads as controllers are added 5721dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze assertThat(cursor.getBlob(20)).isNull(); 5731dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze } 5741dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 5751dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze // Util functions 5761dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 5771dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private SearchIndexableRaw getFakeRaw() { 5781dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze return getFakeRaw(localeStr); 5791dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze } 5801dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 5811dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private SearchIndexableRaw getFakeRaw(String localeStr) { 5821dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze SearchIndexableRaw data = new SearchIndexableRaw(mContext); 5831dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze data.locale = new Locale(localeStr); 5841dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze data.rank = rank; 5851dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze data.title = title; 5861dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze data.summaryOn = summaryOn; 5871dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze data.summaryOff = summaryOff; 5881dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze data.entries = entries; 5891dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze data.keywords = keywords; 5901dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze data.screenTitle = screenTitle; 5911dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze data.className = className; 5921dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze data.packageName = packageName; 5931dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze data.iconResId = iconResId; 5941dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze data.intentAction = action; 5951dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze data.intentTargetPackage = targetPackage; 5961dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze data.intentTargetClass = targetClass; 5971dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze data.key = key; 5981dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze data.userId = userId; 5991dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze data.enabled = enabled; 6001dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze return data; 6011dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze } 6021dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze 6031dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze private SearchIndexableResource getFakeResource(int xml) { 6041dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze SearchIndexableResource sir = new SearchIndexableResource(mContext); 6051dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze sir.rank = rank; 6061dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze sir.xmlResId = xml; 6071dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze sir.className = className; 6081dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze sir.packageName = packageName; 6091dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze sir.iconResId = iconResId; 6101dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze sir.intentAction = action; 6111dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze sir.intentTargetPackage = targetPackage; 6121dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze sir.intentTargetClass = targetClass; 6131dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze sir.enabled = enabled; 6141dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze return sir; 6151dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze } 6161dec073528352fcf036c5ba52d5d535ba32c472cMatthew Fritze} 617