Perform Additonal checks in SuggestionsAdapter
When querying for a value in cursor using getColumnIndex
method, it can return -1 if column name passed does not exist.
Thus we do a precheck on getColumnIndex and return back
if any call to getColumnIndex returns -1.
Change-Id: I8af4a9fac5c2d3e6377d8fa736b37d0670dcbe50
diff --git a/src/com/android/browser/SuggestionsAdapter.java b/src/com/android/browser/SuggestionsAdapter.java
index 78c454f..18a48b0 100644
--- a/src/com/android/browser/SuggestionsAdapter.java
+++ b/src/com/android/browser/SuggestionsAdapter.java
@@ -502,6 +502,26 @@
@Override
public SuggestItem getItem() {
if (mCursor != null) {
+
+ String[] colIndexList = {
+ SearchManager.SUGGEST_COLUMN_TEXT_1,
+ SearchManager.SUGGEST_COLUMN_TEXT_2,
+ SearchManager.SUGGEST_COLUMN_TEXT_2_URL,
+ SearchManager.SUGGEST_COLUMN_INTENT_DATA,
+ SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA
+ };
+
+ for (String currentColIndex: colIndexList) {
+ /*
+ * As defined in documentation getColumnIndex can return
+ * a value of -1,
+ * if the column does not exists, so we need to return back
+ */
+ if (mCursor.getColumnIndex(currentColIndex) == -1) {
+ return null;
+ }
+ }
+
String title = mCursor.getString(
mCursor.getColumnIndex(SearchManager.SUGGEST_COLUMN_TEXT_1));
String text2 = mCursor.getString(
@@ -510,11 +530,13 @@
mCursor.getColumnIndex(SearchManager.SUGGEST_COLUMN_TEXT_2_URL));
String uri = mCursor.getString(
mCursor.getColumnIndex(SearchManager.SUGGEST_COLUMN_INTENT_DATA));
+
int type = (TextUtils.isEmpty(url)) ? TYPE_SUGGEST : TYPE_SUGGEST_URL;
SuggestItem item = new SuggestItem(title, url, type);
item.extra = mCursor.getString(
mCursor.getColumnIndex(SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA));
return item;
+
}
return null;
}