Fixes race condition in HistoryAdapter
Bug: 3245076
There was a race condition between the two loaders. If most visited
finished loading first, history would crash.
Change-Id: I561edffe0cadef452b5fa2d621466bf23a9c57cf
diff --git a/src/com/android/browser/BrowserHistoryPage.java b/src/com/android/browser/BrowserHistoryPage.java
index e9db667..f99e7b5 100644
--- a/src/com/android/browser/BrowserHistoryPage.java
+++ b/src/com/android/browser/BrowserHistoryPage.java
@@ -376,7 +376,6 @@
@Override
public long getChildId(int groupPosition, int childPosition) {
- if (!mDataValid) return 0;
if (moveCursorToChildPosition(groupPosition, childPosition)) {
Cursor cursor = getCursor(groupPosition);
return cursor.getLong(HistoryQuery.INDEX_ID);
@@ -418,7 +417,9 @@
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
if (groupPosition >= super.getGroupCount()) {
- if (!mDataValid) throw new IllegalStateException("Data is not valid");
+ if (mMostVisited == null || mMostVisited.isClosed()) {
+ throw new IllegalStateException("Data is not valid");
+ }
TextView item;
if (null == convertView || !(convertView instanceof TextView)) {
LayoutInflater factory = LayoutInflater.from(getContext());
@@ -436,7 +437,7 @@
boolean moveCursorToChildPosition(
int groupPosition, int childPosition) {
if (groupPosition >= super.getGroupCount()) {
- if (mDataValid && !mMostVisited.isClosed()) {
+ if (mMostVisited != null && !mMostVisited.isClosed()) {
mMostVisited.moveToPosition(childPosition);
return true;
}