Merge "Only process intents if user-visible"
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 8f31ceb..077f798 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"جارٍ تعيين الخلفية..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"الإشارات"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"ليست هناك أية إشارات مرجعية."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"إشارات مرجعية أخرى"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"اختيار حساب"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"المزامنة مع حساب Google"</string>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 5b7f932..3f885f4 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Усталяванне шпалер..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Закладкі"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Няма закладак"</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Іншыя закладкі"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Выбраць уліковы запіс"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Сінхранізаваць з уліковым запісам Google"</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 9c9dceb..d639fcf 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Тапетът се задава..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Отметки"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Няма отметки."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Други отметки"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Изберете профил"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Синхронизиране с профил в Google"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index d62824f..c749e4a 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Nastavování tapety..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Záložky"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Žádné záložky"</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Jiné záložky"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Vyberte účet"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Synchronizovat s účtem Google"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index ee00b4b..477c601 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Angiver baggrund..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Bogmærker"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Ingen bogmærker."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Andre bogmærker"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Vælg konto"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Synkroniser med Google-konto"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index a13b045..cbe512f 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Hintergrund wird festgelegt..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Lesezeichen"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Keine Lesezeichen"</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Weitere Lesezeichen"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Konto auswählen"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Mit Google-Konto synchronisieren"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 71bb8c0..c312349 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Ορισμός ταπετσαρίας..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Σελιδοδείκτες"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Δεν υπάρχουν σελιδοδείκτες"</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Άλλοι σελιδοδείκτες"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Επιλογή λογαριασμού"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Συγχρον. με Λογαριασμό Google"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 2d34446..bfb3a56 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Configurando el fondo de pantalla..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Marcadores"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"No hay marcadores."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Otros marcadores"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Seleccionar la cuenta"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sincronización con cta de Google"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index fe6983f..b42618a 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Estableciendo fondo de pantalla..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Marcadores"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"No hay marcadores."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Otros marcadores"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Seleccionar cuenta"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sincronizar con cuenta de Google"</string>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 4b23a9b..1680ebb 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Taustapildi seadmine ..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Järjehoidjad"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Järjehoidjaid pole"</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Muud järjehoidjad"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Konto valimine"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sünkroonige Google\'i kontoga"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 612f3a3..5a8e87a 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"تنظیم تصویر زمینه..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"نشانک ها"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"نشانکی موجود نیست."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"نشانک‌های دیگر"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"انتخاب حساب"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"همگام سازی با حساب Google"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index a5a6426..594eae3 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Asetetaan taustakuvaa..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Kirjanmerkit"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Ei kirjanmerkkejä"</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Muut kirjanmerkit"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Valitse tili"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Synkronoi Google-tilin kanssa"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 3d87590..379523f 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Définition du fond d\'écran…"</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Favoris"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Aucun favori"</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Autres favoris"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Choisir un compte"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Synchronisation avec un compte Google"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 47749a3..dace797 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"वॉलपेपर सेट कर रहा है..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"बुकमार्क"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"कोई बुकमार्क नहीं."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"अन्य बुकमार्क"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"खाता चुनें"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Google खाते से सिंक करें"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 3a3b609..b86ec0b 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Postavljanje pozadinske slike..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Oznake"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Nema oznaka."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Druge oznake"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Odaberite račun"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sinkronizacija s Google Računom"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 9059529..698778c 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Háttérkép beállítása..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Könyvjelzők"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Nincsenek könyvjelzők"</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Egyéb könyvjelzők"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Fiók kiválasztása"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Szinkronizálás Google Fiókkal"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 5beaec8..e25771b 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Menyetel wallpaper..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Bookmark"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Tidak ada bookmark."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Bookmark Lainnya"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Pilih akun"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sinkronkan dengan akun Google"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index e3b380a..aaf0b72 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Impostazione sfondo..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Segnalibri"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Nessun segnalibro."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Altri Preferiti"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Scegli account"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sincronizza con l\'account Google"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index dfe5630..021aad2 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"מגדיר טפט..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"סימניות"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"ללא סימניות."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"סימניות אחרות"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"בחר חשבון"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"סינכרון עם חשבון Google"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 871e8fb..50417a3 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"壁紙を設定しています..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"ブックマーク"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"ブックマークはありません。"</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"その他のブックマーク"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"アカウントの選択"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Googleアカウントと同期"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 84fc468..cca8540 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"배경화면을 설정하는 중..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"북마크"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"북마크가 없습니다."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"기타 북마크"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"계정 선택"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Google 계정과 동기화"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index e6b0f0c..758b431 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Nustatomas darbalaukio fonas..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Žymės"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Žymių nėra."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Kitos žymės"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Pasirinkite paskyrą"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sinchron. su „Google“ paskyra"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 4726d0d..75dc841 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Notiek fona tapetes iestatīšana..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Grāmatzīmes"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Nav grāmatzīmju."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Citas grāmatzīmes"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Konta izvēle"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sinhronizācija ar Google kontu"</string>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 53a51a9..0b005c0 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Menetapkan kertas dinding…"</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Penanda halaman"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Tiada penanda halaman."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Penanda Halaman Lain"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Pilih akaun"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Segerakkan dengan akaun Google"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 8eeae8e..8ff8b6d 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Angir bakgrunn …"</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Bokmerker"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Ingen bokmerker."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Andre bokmerker"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Velg konto"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Synkroniser med Google-konto"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 47c6656..692e7ad 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Achtergrond instellen..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Bladwijzers"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Geen bladwijzers."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Andere bladwijzers"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"J1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Account selecteren"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Synchroniseren met Google-account"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index f62a50b..8acb401 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Ustawianie tapety…"</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Zakładki"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Brak zakładek"</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Inne zakładki"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Wybierz konto"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Synchronizuj z kontem Google"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 1862289..93595f9 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"A definir imagem de fundo..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Marcadores"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Sem marcadores."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Outros Marcadores"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Escolher conta"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sincronizar com conta Google"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index cf87fb8..767f2b3 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Definindo papel de parede..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Favoritos"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Não há favoritos."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Outros favoritos"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Escolher conta"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sincronizar com Conta do Google"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 9b46400..ae93e00 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Se setează imaginea de fundal..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Marcaje"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Nu există marcaje."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Alte marcaje"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Alegeţi un cont"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sincronizaţi cu un Cont Google"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 96bb6b3..ac4a717 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Установка обоев..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Закладки"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Нет закладок"</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Другие закладки"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Выберите аккаунт"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Синхронизация с аккаунтом Google"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 0e71cd6..670b5f2 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Prebieha nastavenie tapety..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Záložky"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Žiadne záložky."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Iné záložky"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Vyberte účet"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Synchronizovať s účtom Google"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 718d3f9..563e831 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Nastavljanje slike za ozadje ..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Zaznamki"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Ni zaznamkov."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Drugi zaznamki"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Izberite račun"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sinhroniziraj z Google Računom"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index a920c55..81a75d0 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Подешавање позадине..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Обележивачи"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Нема обележивача."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Други обележивачи"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Избор налога"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Синхронизуј са Google налогом"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 9025f9c..75dabf9 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Bakgrund ställs in ..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Bokmärken"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Inga bokmärken."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Övriga bokmärken"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Välj konto"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Synkronisera med Google-konto"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 28b3645..72d17b8 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Inaweka karatasi ya ukuta..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Alamisho"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Hakuna alamisho"</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Alamisho Zingine"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Chagua akaunti"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sawazisha kwa akaunti ya Google"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 2a90c12..021be1b 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"กำลังตั้งค่าวอลเปเปอร์..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"บุ๊กมาร์ก"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"ไม่มีบุ๊กมาร์ก"</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"บุ๊กมาร์กอื่นๆ"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"เลือกบัญชี"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"ซิงค์กับบัญชี Google"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 89b5ae7..be6ae22 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Itinatakda ang wallpaper…"</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Mga Bookmark"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Walang mga bookmark."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Iba Pang Mga Bookmark"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Pumili ng account"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Mag-sync sa Google account"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 1483c98..ae7cc53 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Duvar kağıdı ayarlanıyor..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Yer işaretleri"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Yer işareti yok."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Diğer Yer İşaretleri"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Hesap seçin"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Google hesabı ile senkronize et"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index a46b299..c995f53 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Встановлення фонового малюнка…"</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Закладки"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Закладок немає."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Інші закладки"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Виберіть обліковий запис"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Синхроніз. з обл. записом Google"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index c9666bc..0b834cd 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Đang đặt hình nền..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Dấu trang"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"Không có dấu trang nào."</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"Dấu trang khác"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Chọn tài khoản"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Đồng bộ hóa với tài khoản Google"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index d4da826..59b7d1a 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"正在设置壁纸..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"书签"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"没有书签。"</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"其他书签"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"选择帐户"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"与 Google 帐户同步"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 15fd98f..536941b 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -349,8 +349,7 @@
     <string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"正在設定桌布..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"書籤"</string>
     <string name="empty_bookmarks_folder" msgid="6239830231917618556">"沒有書籤。"</string>
-    <!-- no translation found for other_bookmarks (8021889794475657319) -->
-    <skip />
+    <string name="other_bookmarks" msgid="8021889794475657319">"其他書籤"</string>
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"選擇帳戶"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"與 Google 帳戶保持同步"</string>
diff --git a/res/values/ids.xml b/res/values/ids.xml
index f342d4c..211b02f 100644
--- a/res/values/ids.xml
+++ b/res/values/ids.xml
@@ -20,4 +20,6 @@
     <item type="id" name="child_position" />
     <item type="id" name="child_id" />
     <item type="id" name="tab_view" />
+    <item type="id" name="position" />
+    <item type="id" name="load_object" />
 </resources>
diff --git a/src/com/android/browser/BrowserBookmarksAdapter.java b/src/com/android/browser/BrowserBookmarksAdapter.java
index fcc3f27..be3c211 100644
--- a/src/com/android/browser/BrowserBookmarksAdapter.java
+++ b/src/com/android/browser/BrowserBookmarksAdapter.java
@@ -19,19 +19,24 @@
 import android.content.Context;
 import android.database.Cursor;
 import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
+import android.graphics.drawable.BitmapDrawable;
 import android.provider.BrowserContract.Bookmarks;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.CursorAdapter;
 import android.widget.ImageView;
 import android.widget.ImageView.ScaleType;
 import android.widget.TextView;
 
-public class BrowserBookmarksAdapter extends CursorAdapter {
+import com.android.browser.util.ThreadedCursorAdapter;
+import com.android.browser.view.BookmarkContainer;
+
+public class BrowserBookmarksAdapter extends
+        ThreadedCursorAdapter<BrowserBookmarksAdapterItem> {
+
     LayoutInflater mInflater;
     int mCurrentView;
+    Context mContext;
 
     /**
      *  Create a new BrowserBookmarksAdapter.
@@ -39,30 +44,53 @@
     public BrowserBookmarksAdapter(Context context, int defaultView) {
         // Make sure to tell the CursorAdapter to avoid the observer and auto-requery
         // since the Loader will do that for us.
-        super(context, null, 0);
+        super(context, null);
         mInflater = LayoutInflater.from(context);
+        mContext = context;
         selectView(defaultView);
     }
 
     @Override
-    public void bindView(View view, Context context, Cursor cursor) {
+    public View newView(Context context, ViewGroup parent) {
         if (mCurrentView == BrowserBookmarksPage.VIEW_LIST) {
-            bindListView(view, context, cursor);
+            return mInflater.inflate(R.layout.bookmark_list, parent, false);
         } else {
-            bindGridView(view, context, cursor);
+            return mInflater.inflate(R.layout.bookmark_thumbnail, parent, false);
         }
     }
 
-    CharSequence getTitle(Cursor cursor, Context context) {
+    @Override
+    public void bindView(View view, BrowserBookmarksAdapterItem object) {
+        BookmarkContainer container = (BookmarkContainer) view;
+        container.setIgnoreRequestLayout(true);
+        if (mCurrentView == BrowserBookmarksPage.VIEW_LIST) {
+            bindListView(view, mContext, object);
+        } else {
+            bindGridView(view, mContext, object);
+        }
+        container.setIgnoreRequestLayout(false);
+    }
+
+    void clearView(View view) {
+        if (mCurrentView == BrowserBookmarksPage.VIEW_LIST) {
+            ImageView favicon = (ImageView) view.findViewById(R.id.favicon);
+            favicon.setImageBitmap(null);
+        } else {
+            ImageView thumb = (ImageView) view.findViewById(R.id.thumb);
+            thumb.setImageBitmap(null);
+        }
+    }
+
+    CharSequence getTitle(Cursor cursor) {
         int type = cursor.getInt(BookmarksLoader.COLUMN_INDEX_TYPE);
         switch (type) {
         case Bookmarks.BOOKMARK_TYPE_OTHER_FOLDER:
-            return context.getText(R.string.other_bookmarks);
+            return mContext.getText(R.string.other_bookmarks);
         }
         return cursor.getString(BookmarksLoader.COLUMN_INDEX_TITLE);
     }
 
-    void bindGridView(View view, Context context, Cursor cursor) {
+    void bindGridView(View view, Context context, BrowserBookmarksAdapterItem item) {
         // We need to set this to handle rotation and other configuration change
         // events. If the padding didn't change, this is a no op.
         int padding = context.getResources()
@@ -72,63 +100,42 @@
         ImageView thumb = (ImageView) view.findViewById(R.id.thumb);
         TextView tv = (TextView) view.findViewById(R.id.label);
 
-        tv.setText(getTitle(cursor, context));
-        if (cursor.getInt(BookmarksLoader.COLUMN_INDEX_IS_FOLDER) != 0) {
+        tv.setText(item.title);
+        if (item.is_folder) {
             // folder
             thumb.setImageResource(R.drawable.thumb_bookmark_widget_folder_holo);
             thumb.setScaleType(ScaleType.FIT_END);
-            thumb.setBackgroundDrawable(null);
+            thumb.setBackground(null);
         } else {
-            byte[] thumbData = cursor.getBlob(BookmarksLoader.COLUMN_INDEX_THUMBNAIL);
-            Bitmap thumbBitmap = null;
-            if (thumbData != null) {
-                thumbBitmap = BitmapFactory.decodeByteArray(thumbData, 0, thumbData.length);
-            }
-
             thumb.setScaleType(ScaleType.CENTER_CROP);
-            if (thumbBitmap == null) {
+            if (item.thumbnail == null) {
                 thumb.setImageResource(R.drawable.browser_thumbnail);
             } else {
-                thumb.setImageBitmap(thumbBitmap);
+                thumb.setImageDrawable(item.thumbnail);
             }
             thumb.setBackgroundResource(R.drawable.border_thumb_bookmarks_widget_holo);
         }
     }
 
-    void bindListView(View view, Context context, Cursor cursor) {
+    void bindListView(View view, Context context, BrowserBookmarksAdapterItem item) {
         ImageView favicon = (ImageView) view.findViewById(R.id.favicon);
         TextView tv = (TextView) view.findViewById(R.id.label);
 
-        tv.setText(getTitle(cursor, context));
-        if (cursor.getInt(BookmarksLoader.COLUMN_INDEX_IS_FOLDER) != 0) {
+        tv.setText(item.title);
+        if (item.is_folder) {
             // folder
             favicon.setImageResource(R.drawable.ic_folder_holo_dark);
-            favicon.setBackgroundDrawable(null);
+            favicon.setBackground(null);
         } else {
-            byte[] faviconData = cursor.getBlob(BookmarksLoader.COLUMN_INDEX_FAVICON);
-            Bitmap faviconBitmap = null;
-            if (faviconData != null) {
-                faviconBitmap = BitmapFactory.decodeByteArray(faviconData, 0, faviconData.length);
-            }
-
-            if (faviconBitmap == null) {
+            if (item.favicon == null) {
                 favicon.setImageResource(R.drawable.app_web_browser_sm);
             } else {
-                favicon.setImageBitmap(faviconBitmap);
+                favicon.setImageDrawable(item.favicon);
             }
             favicon.setBackgroundResource(R.drawable.bookmark_list_favicon_bg);
         }
     }
 
-    @Override
-    public View newView(Context context, Cursor cursor, ViewGroup parent) {
-        if (mCurrentView == BrowserBookmarksPage.VIEW_LIST) {
-            return mInflater.inflate(R.layout.bookmark_list, parent, false);
-        } else {
-            return mInflater.inflate(R.layout.bookmark_thumbnail, parent, false);
-        }
-    }
-
     public void selectView(int view) {
         if (view != BrowserBookmarksPage.VIEW_LIST
                 && view != BrowserBookmarksPage.VIEW_THUMBNAILS) {
@@ -142,7 +149,34 @@
     }
 
     @Override
-    public Cursor getItem(int position) {
-        return (Cursor) super.getItem(position);
+    public BrowserBookmarksAdapterItem getRowObject(Cursor c,
+            BrowserBookmarksAdapterItem item) {
+        if (item == null) {
+            item = new BrowserBookmarksAdapterItem();
+        }
+        Bitmap favicon = item.favicon != null ? item.favicon.getBitmap() : null;
+        Bitmap thumbnail = item.thumbnail != null ? item.thumbnail.getBitmap() : null;
+        favicon = BrowserBookmarksPage.getBitmap(c,
+                BookmarksLoader.COLUMN_INDEX_FAVICON, favicon);
+        thumbnail = BrowserBookmarksPage.getBitmap(c,
+                BookmarksLoader.COLUMN_INDEX_THUMBNAIL, thumbnail);
+        if (favicon != null
+                && (item.favicon == null || item.favicon.getBitmap() != favicon)) {
+            item.favicon = new BitmapDrawable(mContext.getResources(), favicon);
+        }
+        if (thumbnail != null
+                && (item.thumbnail == null || item.thumbnail.getBitmap() != thumbnail)) {
+            item.thumbnail = new BitmapDrawable(mContext.getResources(), thumbnail);
+        }
+        item.is_folder = c.getInt(BookmarksLoader.COLUMN_INDEX_IS_FOLDER) != 0;
+        item.title = getTitle(c);
+        item.url = c.getString(BookmarksLoader.COLUMN_INDEX_URL);
+        return item;
+    }
+
+    @Override
+    public BrowserBookmarksAdapterItem getLoadingObject() {
+        BrowserBookmarksAdapterItem item = new BrowserBookmarksAdapterItem();
+        return item;
     }
 }
diff --git a/src/com/android/browser/BrowserBookmarksAdapterItem.java b/src/com/android/browser/BrowserBookmarksAdapterItem.java
new file mode 100644
index 0000000..913b0fd
--- /dev/null
+++ b/src/com/android/browser/BrowserBookmarksAdapterItem.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.browser;
+
+import android.graphics.Bitmap;
+import android.graphics.drawable.BitmapDrawable;
+
+public class BrowserBookmarksAdapterItem {
+    public String url;
+    public CharSequence title;
+    public BitmapDrawable favicon;
+    public BitmapDrawable thumbnail;
+    public boolean is_folder;
+}
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index 2c8a27a..5a609b1 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -32,6 +32,7 @@
 import android.database.Cursor;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
+import android.graphics.BitmapFactory.Options;
 import android.net.Uri;
 import android.os.AsyncTask;
 import android.os.Bundle;
@@ -235,11 +236,30 @@
     }
 
     static Bitmap getBitmap(Cursor cursor, int columnIndex) {
+        return getBitmap(cursor, columnIndex, null);
+    }
+
+    static ThreadLocal<Options> sOptions = new ThreadLocal<Options>() {
+        @Override
+        protected Options initialValue() {
+            return new Options();
+        };
+    };
+    static Bitmap getBitmap(Cursor cursor, int columnIndex, Bitmap inBitmap) {
         byte[] data = cursor.getBlob(columnIndex);
         if (data == null) {
             return null;
         }
-        return BitmapFactory.decodeByteArray(data, 0, data.length);
+        Options opts = sOptions.get();
+        opts.inBitmap = inBitmap;
+        opts.inSampleSize = 1;
+        opts.inScaled = false;
+        try {
+            return BitmapFactory.decodeByteArray(data, 0, data.length, opts);
+        } catch (IllegalArgumentException ex) {
+            // Failed to re-use bitmap, create a new one
+            return BitmapFactory.decodeByteArray(data, 0, data.length);
+        }
     }
 
     private MenuItem.OnMenuItemClickListener mContextItemClickListener =
diff --git a/src/com/android/browser/PageDialogsHandler.java b/src/com/android/browser/PageDialogsHandler.java
index 19cbfcd..3ed1004 100644
--- a/src/com/android/browser/PageDialogsHandler.java
+++ b/src/com/android/browser/PageDialogsHandler.java
@@ -137,6 +137,7 @@
     void showPageInfo(final Tab tab,
             final boolean fromShowSSLCertificateOnError,
             final String urlCertificateOnError) {
+        if (tab == null) return;
         final LayoutInflater factory = LayoutInflater.from(mContext);
 
         final View pageInfoView = factory.inflate(R.layout.page_info, null);
diff --git a/src/com/android/browser/util/ThreadedCursorAdapter.java b/src/com/android/browser/util/ThreadedCursorAdapter.java
new file mode 100644
index 0000000..fe59ad1
--- /dev/null
+++ b/src/com/android/browser/util/ThreadedCursorAdapter.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.browser.util;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.Message;
+import android.os.Process;
+import android.util.Log;
+import android.util.SparseArray;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Adapter;
+import android.widget.BaseAdapter;
+import android.widget.CursorAdapter;
+
+import com.android.browser.R;
+
+import java.lang.ref.WeakReference;
+import java.util.HashMap;
+
+public abstract class ThreadedCursorAdapter<T> extends BaseAdapter {
+
+    private static final String LOGTAG = "tca";
+    private static final boolean DEBUG = false;
+
+    private Context mContext;
+    private Object mCursorLock = new Object();
+    private CursorAdapter mCursorAdapter;
+    private T mLoadingObject;
+    private Handler mLoadHandler;
+    private Handler mHandler;
+    private int mSize;
+
+    private class LoadContainer {
+        WeakReference<View> view;
+        int position;
+        T bind_object;
+        Adapter owner;
+        boolean loaded;
+    }
+
+    public ThreadedCursorAdapter(Context context, Cursor c) {
+        mContext = context;
+        mCursorAdapter = new CursorAdapter(context, c, 0) {
+
+            @Override
+            public View newView(Context context, Cursor cursor, ViewGroup parent) {
+                throw new IllegalStateException("not supported");
+            }
+
+            @Override
+            public void bindView(View view, Context context, Cursor cursor) {
+                throw new IllegalStateException("not supported");
+            }
+
+            @Override
+            public void notifyDataSetChanged() {
+                super.notifyDataSetChanged();
+                mSize = getCount();
+                ThreadedCursorAdapter.this.notifyDataSetChanged();
+            }
+
+            @Override
+            public void notifyDataSetInvalidated() {
+                super.notifyDataSetInvalidated();
+                mSize = getCount();
+                ThreadedCursorAdapter.this.notifyDataSetInvalidated();
+            }
+
+        };
+        mSize = mCursorAdapter.getCount();
+        HandlerThread thread = new HandlerThread("threaded_adapter_" + this,
+                Process.THREAD_PRIORITY_BACKGROUND);
+        thread.start();
+        mLoadHandler = new Handler(thread.getLooper()) {
+            @SuppressWarnings("unchecked")
+            @Override
+            public void handleMessage(Message msg) {
+                if (DEBUG) {
+                    Log.d(LOGTAG, "loading: " + msg.what);
+                }
+                loadRowObject(msg.what, (LoadContainer) msg.obj);
+            }
+        };
+        mHandler = new Handler() {
+            @Override
+            public void handleMessage(Message msg) {
+                @SuppressWarnings("unchecked")
+                LoadContainer container = (LoadContainer) msg.obj;
+                if (container == null) {
+                    return;
+                }
+                View view = container.view.get();
+                if (view == null
+                        || container.owner != ThreadedCursorAdapter.this
+                        || container.position != msg.what) {
+                    return;
+                }
+                container.loaded = true;
+                bindView(view, container.bind_object);
+            }
+        };
+    }
+
+    @Override
+    public int getCount() {
+        return mSize;
+    }
+
+    @Override
+    public Cursor getItem(int position) {
+        return (Cursor) mCursorAdapter.getItem(position);
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return position;
+    }
+
+    private void loadRowObject(int position, LoadContainer container) {
+        if (container == null
+                || container.position != position
+                || container.owner != ThreadedCursorAdapter.this
+                || container.view.get() == null) {
+            return;
+        }
+        synchronized (mCursorLock) {
+            Cursor c = (Cursor) mCursorAdapter.getItem(position);
+            container.bind_object = getRowObject(c, container.bind_object);
+        }
+        mHandler.obtainMessage(position, container).sendToTarget();
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        if (convertView == null) {
+            convertView = newView(mContext, parent);
+        }
+        @SuppressWarnings("unchecked")
+        LoadContainer container = (LoadContainer) convertView.getTag(R.id.load_object);
+        if (container == null) {
+            container = new LoadContainer();
+            container.view = new WeakReference<View>(convertView);
+            convertView.setTag(R.id.load_object, container);
+        }
+        if (container.position == position
+                && container.owner == this
+                && container.loaded) {
+            bindView(convertView, container.bind_object);
+        } else {
+            bindView(convertView, cachedLoadObject());
+            container.position = position;
+            container.loaded = false;
+            container.owner = this;
+            mLoadHandler.obtainMessage(position, container).sendToTarget();
+        }
+        return convertView;
+    }
+
+    private T cachedLoadObject() {
+        if (mLoadingObject == null) {
+            mLoadingObject = getLoadingObject();
+        }
+        return mLoadingObject;
+    }
+
+    public void changeCursor(Cursor cursor) {
+        synchronized (mCursorLock) {
+            mCursorAdapter.changeCursor(cursor);
+        }
+    }
+
+    public abstract View newView(Context context, ViewGroup parent);
+    public abstract void bindView(View view, T object);
+    public abstract T getRowObject(Cursor c, T recycleObject);
+    public abstract T getLoadingObject();
+}
\ No newline at end of file
diff --git a/src/com/android/browser/view/BookmarkContainer.java b/src/com/android/browser/view/BookmarkContainer.java
index 260b05e..5175589 100644
--- a/src/com/android/browser/view/BookmarkContainer.java
+++ b/src/com/android/browser/view/BookmarkContainer.java
@@ -29,7 +29,8 @@
 public class BookmarkContainer extends RelativeLayout implements OnClickListener {
 
     private OnClickListener mClickListener;
-    
+    private boolean mIgnoreRequestLayout = false;
+
     public BookmarkContainer(Context context) {
         super(context);
         init();
@@ -89,4 +90,15 @@
             mClickListener.onClick(view);
         }
     }
+
+    public void setIgnoreRequestLayout(boolean ignore) {
+        mIgnoreRequestLayout = ignore;
+    }
+
+    @Override
+    public void requestLayout() {
+        if (!mIgnoreRequestLayout) {
+            super.requestLayout();
+        }
+    }
 }