When displaying a bookmark item, only truncate the Strings that we display in the ListView rather than the ones used to index into the bookmarks database. This caused a crash when bookmarks had titles longer than the text view limit.
Fix for b/2219781
Change-Id: I4ea3cdfbaedce0dea6bd69f560aae9aea71ed7c1
diff --git a/src/com/android/browser/BookmarkItem.java b/src/com/android/browser/BookmarkItem.java
index a70dd4f..fbb362e 100644
--- a/src/com/android/browser/BookmarkItem.java
+++ b/src/com/android/browser/BookmarkItem.java
@@ -33,6 +33,7 @@
protected TextView mUrlText;
protected ImageView mImageView;
protected String mUrl;
+ protected String mTitle;
/**
* Instantiate a bookmark item, including a default favicon.
@@ -65,7 +66,7 @@
* Return the name assigned to this bookmark item.
*/
/* package */ String getName() {
- return mTextView.getText().toString();
+ return mTitle;
}
/**
@@ -99,6 +100,16 @@
* @param name The new name for the bookmark item.
*/
/* package */ void setName(String name) {
+ if (name == null) {
+ return;
+ }
+
+ mTitle = name;
+
+ if (name.length() > BrowserSettings.MAX_TEXTVIEW_LEN) {
+ name = name.substring(0, BrowserSettings.MAX_TEXTVIEW_LEN);
+ }
+
mTextView.setText(name);
}
@@ -107,7 +118,16 @@
* @param url The new url for the bookmark item.
*/
/* package */ void setUrl(String url) {
- mUrlText.setText(url);
+ if (url == null) {
+ return;
+ }
+
mUrl = url;
+
+ if (url.length() > BrowserSettings.MAX_TEXTVIEW_LEN) {
+ url = url.substring(0, BrowserSettings.MAX_TEXTVIEW_LEN);
+ }
+
+ mUrlText.setText(url);
}
}
diff --git a/src/com/android/browser/BrowserBookmarksAdapter.java b/src/com/android/browser/BrowserBookmarksAdapter.java
index dd56d2f..d1fdf07 100644
--- a/src/com/android/browser/BrowserBookmarksAdapter.java
+++ b/src/com/android/browser/BrowserBookmarksAdapter.java
@@ -540,15 +540,8 @@
private void bind(BookmarkItem b, int position) {
mCursor.moveToPosition(position- mExtraOffset);
- String title = mCursor.getString(Browser.HISTORY_PROJECTION_TITLE_INDEX);
- if (title.length() > BrowserSettings.MAX_TEXTVIEW_LEN) {
- title = title.substring(0, BrowserSettings.MAX_TEXTVIEW_LEN);
- }
- b.setName(title);
+ b.setName(mCursor.getString(Browser.HISTORY_PROJECTION_TITLE_INDEX));
String url = mCursor.getString(Browser.HISTORY_PROJECTION_URL_INDEX);
- if (url.length() > BrowserSettings.MAX_TEXTVIEW_LEN) {
- url = url.substring(0, BrowserSettings.MAX_TEXTVIEW_LEN);
- }
b.setUrl(url);
byte[] data = mCursor.getBlob(Browser.HISTORY_PROJECTION_FAVICON_INDEX);
if (data != null) {