merge in jb-release history after reset to jb-dev
diff --git a/res/drawable-hdpi/browsertab_add.png b/res/drawable-hdpi/browsertab_add.png
index 1e52bb1..7401eed 100644
--- a/res/drawable-hdpi/browsertab_add.png
+++ b/res/drawable-hdpi/browsertab_add.png
Binary files differ
diff --git a/res/drawable-xhdpi/browsertab_add.png b/res/drawable-xhdpi/browsertab_add.png
index e44f72b..ef7603e 100644
--- a/res/drawable-xhdpi/browsertab_add.png
+++ b/res/drawable-xhdpi/browsertab_add.png
Binary files differ
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 927de05..fc91f30 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -102,8 +102,7 @@
<string name="copy_page_url" msgid="1188679152608889555">"Капіяваць URL-адрас старонкі"</string>
<string name="share_page" msgid="593756995297268343">"Адправіць старонку"</string>
<string name="menu_save_snapshot" msgid="6935080344031126139">"Захаваць для чытання ў аўтаномным рэжыме"</string>
- <!-- no translation found for saving_snapshot (1693789062351182809) -->
- <skip />
+ <string name="saving_snapshot" msgid="1693789062351182809">"Захаванне..."</string>
<string name="snapshot_failed" msgid="4584580873565876033">"Немагчыма захаваць для чытання ў аўтаномным рэжыме."</string>
<string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"Закладак: <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>"</string>
<string name="contextheader_folder_empty" msgid="974171637803391651">"Ачысцiць тэчку"</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 6290383..e74bdc5 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -102,8 +102,7 @@
<string name="copy_page_url" msgid="1188679152608889555">"Копиране на URL адреса на страницата"</string>
<string name="share_page" msgid="593756995297268343">"Споделяне на страницата"</string>
<string name="menu_save_snapshot" msgid="6935080344031126139">"Запазване за четене офлайн"</string>
- <!-- no translation found for saving_snapshot (1693789062351182809) -->
- <skip />
+ <string name="saving_snapshot" msgid="1693789062351182809">"Запазва се…"</string>
<string name="snapshot_failed" msgid="4584580873565876033">"Не можа да се запази за четене офлайн."</string>
<string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> отметки"</string>
<string name="contextheader_folder_empty" msgid="974171637803391651">"Празна папка"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 5a6173c..59fb73f 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -102,8 +102,7 @@
<string name="copy_page_url" msgid="1188679152608889555">"Kopírovat adresu URL stránky"</string>
<string name="share_page" msgid="593756995297268343">"Sdílet stránku"</string>
<string name="menu_save_snapshot" msgid="6935080344031126139">"Uložit ke čtení offline"</string>
- <!-- no translation found for saving_snapshot (1693789062351182809) -->
- <skip />
+ <string name="saving_snapshot" msgid="1693789062351182809">"Ukládání…"</string>
<string name="snapshot_failed" msgid="4584580873565876033">"Uložení ke čtení offline se nezdařilo."</string>
<string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"Počet záložek: <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>"</string>
<string name="contextheader_folder_empty" msgid="974171637803391651">"Prázdná složka"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 8730e7a..cd04f72 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -102,7 +102,7 @@
<string name="copy_page_url" msgid="1188679152608889555">"Copiar la URL de la página"</string>
<string name="share_page" msgid="593756995297268343">"Compartir página"</string>
<string name="menu_save_snapshot" msgid="6935080344031126139">"Guardar para leer sin conexión"</string>
- <string name="saving_snapshot" msgid="1693789062351182809">"Guardando..."</string>
+ <string name="saving_snapshot" msgid="1693789062351182809">"Guardando…"</string>
<string name="snapshot_failed" msgid="4584580873565876033">"La página no se guardó para leer sin conexión."</string>
<string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> Marcadores"</string>
<string name="contextheader_folder_empty" msgid="974171637803391651">"Vaciar carpeta"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 8baad4c..022b294 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -102,8 +102,7 @@
<string name="copy_page_url" msgid="1188679152608889555">"کپی URL صفحه"</string>
<string name="share_page" msgid="593756995297268343">"اشتراک گذاری صفحه"</string>
<string name="menu_save_snapshot" msgid="6935080344031126139">"ذخیره برای مطالعه در حالت آفلاین"</string>
- <!-- no translation found for saving_snapshot (1693789062351182809) -->
- <skip />
+ <string name="saving_snapshot" msgid="1693789062351182809">"در حال ذخیره…"</string>
<string name="snapshot_failed" msgid="4584580873565876033">"برای خواندن آفلاین قابل ذخیره نیست."</string>
<string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> نشانک"</string>
<string name="contextheader_folder_empty" msgid="974171637803391651">"پوشه خالی"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 9827a59..d4b490d 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -102,8 +102,7 @@
<string name="copy_page_url" msgid="1188679152608889555">"Kopioi sivun URL-osoite"</string>
<string name="share_page" msgid="593756995297268343">"Jaa sivu"</string>
<string name="menu_save_snapshot" msgid="6935080344031126139">"Tallenna offline-tilassa luettavaksi"</string>
- <!-- no translation found for saving_snapshot (1693789062351182809) -->
- <skip />
+ <string name="saving_snapshot" msgid="1693789062351182809">"Tallennetaan..."</string>
<string name="snapshot_failed" msgid="4584580873565876033">"Ei voitu tallentaa offline-käyttöä varten."</string>
<string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> kirjanmerkkiä"</string>
<string name="contextheader_folder_empty" msgid="974171637803391651">"Tyhjä kansio"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 6bb492d..5061ebc 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -102,8 +102,7 @@
<string name="copy_page_url" msgid="1188679152608889555">"पृष्ठ url की प्रतिलिपि बनाएं"</string>
<string name="share_page" msgid="593756995297268343">"पृष्ठ शेयर करें"</string>
<string name="menu_save_snapshot" msgid="6935080344031126139">"ऑफ़लाइन पढ़ने के लिए सहेजें"</string>
- <!-- no translation found for saving_snapshot (1693789062351182809) -->
- <skip />
+ <string name="saving_snapshot" msgid="1693789062351182809">"सहेजा जा रहा है…"</string>
<string name="snapshot_failed" msgid="4584580873565876033">"ऑफ़लाइन पढ़ने के लिए सहेजा नहीं जा सका."</string>
<string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> बुकमार्क"</string>
<string name="contextheader_folder_empty" msgid="974171637803391651">"रिक्त फ़ोल्डर"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 89a19ac..ec6836c 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -102,8 +102,7 @@
<string name="copy_page_url" msgid="1188679152608889555">"Kopiraj URL stranice"</string>
<string name="share_page" msgid="593756995297268343">"Dijeli stranicu"</string>
<string name="menu_save_snapshot" msgid="6935080344031126139">"Spremi za izvanmrežno čitanje"</string>
- <!-- no translation found for saving_snapshot (1693789062351182809) -->
- <skip />
+ <string name="saving_snapshot" msgid="1693789062351182809">"Spremanje..."</string>
<string name="snapshot_failed" msgid="4584580873565876033">"Spremanje za izvanmrežno čitanje nije uspjelo."</string>
<string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"Br. oznaka: <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>"</string>
<string name="contextheader_folder_empty" msgid="974171637803391651">"Prazna mapa"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 89d27aa..12ce9e0 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -102,8 +102,7 @@
<string name="copy_page_url" msgid="1188679152608889555">"Salin URL laman"</string>
<string name="share_page" msgid="593756995297268343">"Bagikan lama"</string>
<string name="menu_save_snapshot" msgid="6935080344031126139">"Simpan untuk dibaca secara offline"</string>
- <!-- no translation found for saving_snapshot (1693789062351182809) -->
- <skip />
+ <string name="saving_snapshot" msgid="1693789062351182809">"Menyimpan..."</string>
<string name="snapshot_failed" msgid="4584580873565876033">"Tidak dapat menyimpan untuk dibaca secara offline."</string>
<string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> bookmark"</string>
<string name="contextheader_folder_empty" msgid="974171637803391651">"Folder kosong"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 5b4e2b0..6e91db5 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -102,8 +102,7 @@
<string name="copy_page_url" msgid="1188679152608889555">"ページのURLをコピー"</string>
<string name="share_page" msgid="593756995297268343">"ページを共有"</string>
<string name="menu_save_snapshot" msgid="6935080344031126139">"オフラインで読めるよう保存"</string>
- <!-- no translation found for saving_snapshot (1693789062351182809) -->
- <skip />
+ <string name="saving_snapshot" msgid="1693789062351182809">"保存中…"</string>
<string name="snapshot_failed" msgid="4584580873565876033">"オフラインでの閲覧用に保存できませんでした。"</string>
<string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g>件のブックマーク"</string>
<string name="contextheader_folder_empty" msgid="974171637803391651">"空のフォルダ"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 0e47f86..b59d57b 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -102,8 +102,7 @@
<string name="copy_page_url" msgid="1188679152608889555">"페이지 URL 복사"</string>
<string name="share_page" msgid="593756995297268343">"페이지 공유"</string>
<string name="menu_save_snapshot" msgid="6935080344031126139">"오프라인 보기로 저장"</string>
- <!-- no translation found for saving_snapshot (1693789062351182809) -->
- <skip />
+ <string name="saving_snapshot" msgid="1693789062351182809">"저장 중..."</string>
<string name="snapshot_failed" msgid="4584580873565876033">"오프라인 읽기용으로 저장하지 못했습니다."</string>
<string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"북마크 <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>개"</string>
<string name="contextheader_folder_empty" msgid="974171637803391651">"빈 폴더"</string>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index bc9e562..23a1125 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -102,8 +102,7 @@
<string name="copy_page_url" msgid="1188679152608889555">"Salin URL halaman"</string>
<string name="share_page" msgid="593756995297268343">"Kongsi halaman"</string>
<string name="menu_save_snapshot" msgid="6935080344031126139">"Simpan untuk pembacaan di luar talian"</string>
- <!-- no translation found for saving_snapshot (1693789062351182809) -->
- <skip />
+ <string name="saving_snapshot" msgid="1693789062351182809">"Menyimpan..."</string>
<string name="snapshot_failed" msgid="4584580873565876033">"Tidak dapat disimpan untuk pembacaan di luar talian."</string>
<string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> penanda halaman"</string>
<string name="contextheader_folder_empty" msgid="974171637803391651">"Folder kosong"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index c64788b..330928a 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -102,8 +102,7 @@
<string name="copy_page_url" msgid="1188679152608889555">"Kopiuj URL strony"</string>
<string name="share_page" msgid="593756995297268343">"Udostępnij stronę"</string>
<string name="menu_save_snapshot" msgid="6935080344031126139">"Zapisz do czytania offline"</string>
- <!-- no translation found for saving_snapshot (1693789062351182809) -->
- <skip />
+ <string name="saving_snapshot" msgid="1693789062351182809">"Zapisywanie…"</string>
<string name="snapshot_failed" msgid="4584580873565876033">"Nie można zapisać do czytania w trybie offline."</string>
<string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"Zakładki: <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>"</string>
<string name="contextheader_folder_empty" msgid="974171637803391651">"Pusty folder"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 52a1031..35b52c1 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -102,8 +102,7 @@
<string name="copy_page_url" msgid="1188679152608889555">"Copiar URL da página"</string>
<string name="share_page" msgid="593756995297268343">"Partilhar página"</string>
<string name="menu_save_snapshot" msgid="6935080344031126139">"Guardar para leitura off-line"</string>
- <!-- no translation found for saving_snapshot (1693789062351182809) -->
- <skip />
+ <string name="saving_snapshot" msgid="1693789062351182809">"A guardar..."</string>
<string name="snapshot_failed" msgid="4584580873565876033">"Não foi possível guardar para leitura off-line."</string>
<string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> marcadores"</string>
<string name="contextheader_folder_empty" msgid="974171637803391651">"Pasta vazia"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 35445bb..5b2e63e 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -102,8 +102,7 @@
<string name="copy_page_url" msgid="1188679152608889555">"Copiar URL da página"</string>
<string name="share_page" msgid="593756995297268343">"Compartilhar página"</string>
<string name="menu_save_snapshot" msgid="6935080344031126139">"Salvar para leitura off-line"</string>
- <!-- no translation found for saving_snapshot (1693789062351182809) -->
- <skip />
+ <string name="saving_snapshot" msgid="1693789062351182809">"Salvando…"</string>
<string name="snapshot_failed" msgid="4584580873565876033">"Não foi possível salvar para leitura off-line."</string>
<string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> favoritos"</string>
<string name="contextheader_folder_empty" msgid="974171637803391651">"Pasta vazia"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 81f00d0..3a29a76 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -102,8 +102,7 @@
<string name="copy_page_url" msgid="1188679152608889555">"Copiaţi adresa URL a paginii"</string>
<string name="share_page" msgid="593756995297268343">"Distribuiţi pagina"</string>
<string name="menu_save_snapshot" msgid="6935080344031126139">"Salvaţi pentru lectură offline"</string>
- <!-- no translation found for saving_snapshot (1693789062351182809) -->
- <skip />
+ <string name="saving_snapshot" msgid="1693789062351182809">"Se salvează..."</string>
<string name="snapshot_failed" msgid="4584580873565876033">"Nu s-a putut salva pentru citire offline."</string>
<string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> (de) marcaje"</string>
<string name="contextheader_folder_empty" msgid="974171637803391651">"Dosar gol"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 5843255..87e8037 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -102,8 +102,7 @@
<string name="copy_page_url" msgid="1188679152608889555">"Kopírovať adresu URL stránky"</string>
<string name="share_page" msgid="593756995297268343">"Zdieľať stránku"</string>
<string name="menu_save_snapshot" msgid="6935080344031126139">"Uložiť na čítanie offline"</string>
- <!-- no translation found for saving_snapshot (1693789062351182809) -->
- <skip />
+ <string name="saving_snapshot" msgid="1693789062351182809">"Prebieha ukladanie..."</string>
<string name="snapshot_failed" msgid="4584580873565876033">"Nepodarilo sa uložiť na čítanie v režime offline."</string>
<string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"Počet záložiek: <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>"</string>
<string name="contextheader_folder_empty" msgid="974171637803391651">"Prázdny priečinok"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 72d2996..f0997d5 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -102,8 +102,7 @@
<string name="copy_page_url" msgid="1188679152608889555">"Копирај URL адресу странице"</string>
<string name="share_page" msgid="593756995297268343">"Дели страницу"</string>
<string name="menu_save_snapshot" msgid="6935080344031126139">"Сачувај за читање ван мреже"</string>
- <!-- no translation found for saving_snapshot (1693789062351182809) -->
- <skip />
+ <string name="saving_snapshot" msgid="1693789062351182809">"Чување…"</string>
<string name="snapshot_failed" msgid="4584580873565876033">"Није било могуће сачувати за читање ван мреже."</string>
<string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> обележивача"</string>
<string name="contextheader_folder_empty" msgid="974171637803391651">"Празан директоријум"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index b41ef9a..28aaec8 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -102,8 +102,7 @@
<string name="copy_page_url" msgid="1188679152608889555">"Nakili URL ya ukurasa"</string>
<string name="share_page" msgid="593756995297268343">"Shiriki ukurasa"</string>
<string name="menu_save_snapshot" msgid="6935080344031126139">"Hifadhi kwa usomaji wa nje ya mtandao"</string>
- <!-- no translation found for saving_snapshot (1693789062351182809) -->
- <skip />
+ <string name="saving_snapshot" msgid="1693789062351182809">"Inahifadhi…"</string>
<string name="snapshot_failed" msgid="4584580873565876033">"Haikuweza kuhifadhi usomaji mkondoni."</string>
<string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"Alamisho <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>"</string>
<string name="contextheader_folder_empty" msgid="974171637803391651">"Folda iko tupu"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 4a4997f..8df58bf 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -102,8 +102,7 @@
<string name="copy_page_url" msgid="1188679152608889555">"คัดลอก URL ของหน้าเว็บ"</string>
<string name="share_page" msgid="593756995297268343">"แบ่งปันหน้าเว็บ"</string>
<string name="menu_save_snapshot" msgid="6935080344031126139">"บันทึกไว้อ่านออฟไลน์"</string>
- <!-- no translation found for saving_snapshot (1693789062351182809) -->
- <skip />
+ <string name="saving_snapshot" msgid="1693789062351182809">"กำลังบันทึก…"</string>
<string name="snapshot_failed" msgid="4584580873565876033">"ไม่สามารถบันทึกไว้อ่านแบบออฟไลน์ได้"</string>
<string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"บุ๊กมาร์ก <xliff:g id="BOOKMARK_COUNT">%d</xliff:g> รายการ"</string>
<string name="contextheader_folder_empty" msgid="974171637803391651">"โฟลเดอร์ว่าง"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index a668e3f..7784ac0 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -102,8 +102,7 @@
<string name="copy_page_url" msgid="1188679152608889555">"Kopyahin ang URL ng pahina"</string>
<string name="share_page" msgid="593756995297268343">"Ibahagi ang pahina"</string>
<string name="menu_save_snapshot" msgid="6935080344031126139">"I-save para sa offline na pagbabasa"</string>
- <!-- no translation found for saving_snapshot (1693789062351182809) -->
- <skip />
+ <string name="saving_snapshot" msgid="1693789062351182809">"Sine-save..."</string>
<string name="snapshot_failed" msgid="4584580873565876033">"Hindi ma-save para sa offline na pagbabasa."</string>
<string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> (na) bookmark"</string>
<string name="contextheader_folder_empty" msgid="974171637803391651">"Walang lamang folder"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 75b8135..35539f3 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -102,8 +102,7 @@
<string name="copy_page_url" msgid="1188679152608889555">"Sayfa URL\'sini kopyala"</string>
<string name="share_page" msgid="593756995297268343">"Sayfayı paylaş"</string>
<string name="menu_save_snapshot" msgid="6935080344031126139">"Çevrimdışı okuma için kaydet"</string>
- <!-- no translation found for saving_snapshot (1693789062351182809) -->
- <skip />
+ <string name="saving_snapshot" msgid="1693789062351182809">"Kaydediliyor…"</string>
<string name="snapshot_failed" msgid="4584580873565876033">"Çevrimdışı okuma için kaydedilemedi."</string>
<string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> yer işareti"</string>
<string name="contextheader_folder_empty" msgid="974171637803391651">"Boş klasör"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 53a26d3..3ab6a62 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -102,8 +102,7 @@
<string name="copy_page_url" msgid="1188679152608889555">"Sao chép url của trang"</string>
<string name="share_page" msgid="593756995297268343">"Chia sẻ trang"</string>
<string name="menu_save_snapshot" msgid="6935080344031126139">"Lưu để đọc ngoại tuyến"</string>
- <!-- no translation found for saving_snapshot (1693789062351182809) -->
- <skip />
+ <string name="saving_snapshot" msgid="1693789062351182809">"Đang lưu…"</string>
<string name="snapshot_failed" msgid="4584580873565876033">"Không thể lưu để đọc ngoại tuyến."</string>
<string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> dấu trang"</string>
<string name="contextheader_folder_empty" msgid="974171637803391651">"Thư mục trống"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index eef5ead..106ed3c 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -102,8 +102,7 @@
<string name="copy_page_url" msgid="1188679152608889555">"复制网页网址"</string>
<string name="share_page" msgid="593756995297268343">"分享网页"</string>
<string name="menu_save_snapshot" msgid="6935080344031126139">"保存以供离线阅读"</string>
- <!-- no translation found for saving_snapshot (1693789062351182809) -->
- <skip />
+ <string name="saving_snapshot" msgid="1693789062351182809">"正在保存..."</string>
<string name="snapshot_failed" msgid="4584580873565876033">"无法保存以供离线阅读。"</string>
<string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> 个书签"</string>
<string name="contextheader_folder_empty" msgid="974171637803391651">"空文件夹"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 159cf8d..646cb45 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -102,8 +102,7 @@
<string name="copy_page_url" msgid="1188679152608889555">"複製網頁網址"</string>
<string name="share_page" msgid="593756995297268343">"分享網頁"</string>
<string name="menu_save_snapshot" msgid="6935080344031126139">"儲存頁面以供離線閱讀"</string>
- <!-- no translation found for saving_snapshot (1693789062351182809) -->
- <skip />
+ <string name="saving_snapshot" msgid="1693789062351182809">"儲存中…"</string>
<string name="snapshot_failed" msgid="4584580873565876033">"無法儲存網頁以供離線閱讀。"</string>
<string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> 個書籤"</string>
<string name="contextheader_folder_empty" msgid="974171637803391651">"空資料夾"</string>
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index 8d2b6f0..7b7e25f 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -443,13 +443,13 @@
}
}
- public void editUrl(boolean clearInput) {
+ public void editUrl(boolean clearInput, boolean forceIME) {
if (mUiController.isInCustomActionMode()) {
mUiController.endActionMode();
}
showTitleBar();
if ((getActiveTab() != null) && !getActiveTab().isSnapshot()) {
- mNavigationBar.startEditingUrl(clearInput);
+ mNavigationBar.startEditingUrl(clearInput, forceIME);
}
}
diff --git a/src/com/android/browser/BookmarkDragHandler.java b/src/com/android/browser/BookmarkDragHandler.java
deleted file mode 100644
index fc0752f..0000000
--- a/src/com/android/browser/BookmarkDragHandler.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * 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;
-
-import android.app.Activity;
-import android.content.ClipData;
-import android.content.ContentResolver;
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.database.Cursor;
-import android.net.Uri;
-import android.provider.BrowserContract;
-import android.view.ActionMode;
-import android.view.ActionMode.Callback;
-import android.view.DragEvent;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.View.OnDragListener;
-import android.view.ViewGroup;
-
-public class BookmarkDragHandler implements Callback {
-
- public static interface BookmarkDragController {
- boolean startDrag(Cursor item);
-
- ViewGroup getActionModeView(ActionMode mode, BookmarkDragState state);
- void actionItemClicked(View v, BookmarkDragState state);
- }
-
- public static interface BookmarkDragAdapter {
- void setBookmarkDragHandler(BookmarkDragHandler handler);
- Cursor getItemForView(View v);
- }
-
- public static class BookmarkDragState {
- public long id;
- public long parent;
- public Object extraState;
- }
-
- static final String BOOKMARK_DRAG_LABEL = "com.android.browser.BOOKMARK_LABEL";
-
- private Activity mActivity;
- private BookmarkDragController mDragController;
- private BookmarkDragAdapter mDragAdapter;
- private ActionMode mActionMode;
- private BookmarkDragState mDragState;
-
- public BookmarkDragHandler(Activity activity, BookmarkDragController controller,
- BookmarkDragAdapter adapter) {
- mActivity = activity;
- mDragController = controller;
- mDragAdapter = adapter;
- mDragAdapter.setBookmarkDragHandler(this);
- }
-
- public boolean startDrag(View view, Cursor item, long id, Object extraState) {
- if (!mDragController.startDrag(item)) {
- return false;
- }
- Uri uri = ContentUris.withAppendedId(
- BrowserContract.Bookmarks.CONTENT_URI, id);
- ClipData data = ClipData.newRawUri(BOOKMARK_DRAG_LABEL, uri);
- BookmarkDragState state = new BookmarkDragState();
- state.id = id;
- state.parent = item.getLong(BookmarksLoader.COLUMN_INDEX_PARENT);
- state.extraState = extraState;
- mDragState = state;
- view.startDrag(data, new View.DragShadowBuilder(view), state, 0);
- mActionMode = view.startActionMode(this);
- return true;
- }
-
- public void registerBookmarkDragHandler(View view) {
- view.setOnDragListener(mBookmarkDragListener);
- }
-
- private OnDragListener mBookmarkDragListener = new OnDragListener() {
-
- @Override
- public boolean onDrag(View v, DragEvent event) {
- Cursor c = mDragAdapter.getItemForView(v);
- BookmarkDragState state = (BookmarkDragState) event.getLocalState();
- switch (event.getAction()) {
- case DragEvent.ACTION_DRAG_STARTED:
- return true;
- case DragEvent.ACTION_DROP:
- long id = c.getLong(BookmarksLoader.COLUMN_INDEX_ID);
- if (id == state.id) {
- // We dropped onto ourselves, show the context menu
- v.showContextMenu();
- return false;
- }
- long parent = c.getLong(BookmarksLoader.COLUMN_INDEX_PARENT);
- if (isFolder(c)) {
- parent = c.getLong(BookmarksLoader.COLUMN_INDEX_ID);
- }
- if (parent != state.parent) {
- ContentResolver cr = mActivity.getContentResolver();
- ContentValues values = new ContentValues();
- values.put(BrowserContract.Bookmarks.PARENT, parent);
- Uri uri = event.getClipData().getItemAt(0).getUri();
- cr.update(uri, values, null, null);
- }
- break;
- }
- return false;
- }
- };
-
- private OnDragListener mActionModeDragListener = new OnDragListener() {
-
- @Override
- public boolean onDrag(View v, DragEvent event) {
- BookmarkDragState state = (BookmarkDragState) event.getLocalState();
- switch (event.getAction()) {
- case DragEvent.ACTION_DRAG_STARTED:
- return true;
- case DragEvent.ACTION_DROP:
- mDragController.actionItemClicked(v, state);
- // fall through
- case DragEvent.ACTION_DRAG_ENDED:
- if (mActionMode != null) {
- mActionMode.finish();
- mActionMode = null;
- }
- return true;
- }
- return false;
- }
- };
-
- static boolean isFolder(Cursor c) {
- return c.getInt(BookmarksLoader.COLUMN_INDEX_IS_FOLDER) != 0;
- }
-
- @Override
- public boolean onCreateActionMode(ActionMode mode, Menu menu) {
- ViewGroup view = mDragController.getActionModeView(mode, mDragState);
- int count = view.getChildCount();
- for (int i = 0; i < count; i++) {
- view.getChildAt(i).setOnDragListener(mActionModeDragListener);
- }
- mode.setCustomView(view);
- return true;
- }
-
- @Override
- public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
- return true;
- }
-
- @Override
- public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
- return false;
- }
-
- @Override
- public void onDestroyActionMode(ActionMode mode) {
- }
-
-}
diff --git a/src/com/android/browser/BookmarksLoader.java b/src/com/android/browser/BookmarksLoader.java
index 80d4255..8601c98 100644
--- a/src/com/android/browser/BookmarksLoader.java
+++ b/src/com/android/browser/BookmarksLoader.java
@@ -20,7 +20,6 @@
import android.content.CursorLoader;
import android.net.Uri;
import android.provider.BrowserContract.Bookmarks;
-import android.provider.BrowserContract.ChromeSyncColumns;
public class BookmarksLoader extends CursorLoader {
public static final String ARG_ACCOUNT_TYPE = "acct_type";
diff --git a/src/com/android/browser/BrowserBookmarksAdapter.java b/src/com/android/browser/BrowserBookmarksAdapter.java
index be3c211..93cf5d9 100644
--- a/src/com/android/browser/BrowserBookmarksAdapter.java
+++ b/src/com/android/browser/BrowserBookmarksAdapter.java
@@ -35,52 +35,32 @@
ThreadedCursorAdapter<BrowserBookmarksAdapterItem> {
LayoutInflater mInflater;
- int mCurrentView;
Context mContext;
/**
* Create a new BrowserBookmarksAdapter.
*/
- public BrowserBookmarksAdapter(Context context, int defaultView) {
+ public BrowserBookmarksAdapter(Context context) {
// Make sure to tell the CursorAdapter to avoid the observer and auto-requery
// since the Loader will do that for us.
super(context, null);
mInflater = LayoutInflater.from(context);
mContext = context;
- selectView(defaultView);
}
@Override
public View newView(Context context, 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);
- }
+ return mInflater.inflate(R.layout.bookmark_thumbnail, parent, false);
}
@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);
- }
+ 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) {
@@ -117,53 +97,15 @@
}
}
- 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(item.title);
- if (item.is_folder) {
- // folder
- favicon.setImageResource(R.drawable.ic_folder_holo_dark);
- favicon.setBackground(null);
- } else {
- if (item.favicon == null) {
- favicon.setImageResource(R.drawable.app_web_browser_sm);
- } else {
- favicon.setImageDrawable(item.favicon);
- }
- favicon.setBackgroundResource(R.drawable.bookmark_list_favicon_bg);
- }
- }
-
- public void selectView(int view) {
- if (view != BrowserBookmarksPage.VIEW_LIST
- && view != BrowserBookmarksPage.VIEW_THUMBNAILS) {
- throw new IllegalArgumentException("Unknown view specified: " + view);
- }
- mCurrentView = view;
- }
-
- public int getViewMode() {
- return mCurrentView;
- }
-
@Override
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);
diff --git a/src/com/android/browser/BrowserBookmarksAdapterItem.java b/src/com/android/browser/BrowserBookmarksAdapterItem.java
index 913b0fd..64b1ca2 100644
--- a/src/com/android/browser/BrowserBookmarksAdapterItem.java
+++ b/src/com/android/browser/BrowserBookmarksAdapterItem.java
@@ -15,13 +15,11 @@
*/
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 5a609b1..b11162c 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -38,7 +38,6 @@
import android.os.Bundle;
import android.provider.BrowserContract;
import android.provider.BrowserContract.Accounts;
-import android.view.ActionMode;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
@@ -48,12 +47,8 @@
import android.view.ViewGroup;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
import android.widget.Toast;
-import com.android.browser.BookmarkDragHandler.BookmarkDragController;
-import com.android.browser.BookmarkDragHandler.BookmarkDragState;
import com.android.browser.provider.BrowserProvider2;
import com.android.browser.view.BookmarkExpandableView;
import com.android.browser.view.BookmarkExpandableView.BookmarkContextMenuInfo;
@@ -93,9 +88,6 @@
static final String ACCOUNT_TYPE = "account_type";
static final String ACCOUNT_NAME = "account_name";
- public static final int VIEW_THUMBNAILS = 1;
- public static final int VIEW_LIST = 2;
-
BookmarksPageCallbacks mCallbacks;
View mRoot;
BookmarkExpandableView mGrid;
@@ -104,7 +96,6 @@
View mEmptyView;
View mHeader;
HashMap<Integer, BrowserBookmarksAdapter> mBookmarkAdapters = new HashMap<Integer, BrowserBookmarksAdapter>();
- BookmarkDragHandler mDragHandler;
JSONObject mState;
@Override
@@ -134,7 +125,7 @@
args.putString(ACCOUNT_NAME, accountName);
args.putString(ACCOUNT_TYPE, accountType);
BrowserBookmarksAdapter adapter = new BrowserBookmarksAdapter(
- getActivity(), VIEW_THUMBNAILS);
+ getActivity());
mBookmarkAdapters.put(id, adapter);
boolean expand = true;
try {
@@ -161,6 +152,10 @@
@Override
public void onLoaderReset(Loader<Cursor> loader) {
+ if (loader.getId() >= LOADER_BOOKMARKS) {
+ BrowserBookmarksAdapter adapter = mBookmarkAdapters.get(loader.getId());
+ adapter.changeCursor(null);
+ }
}
@Override
@@ -400,8 +395,6 @@
mGrid.setColumnWidthFromLayout(R.layout.bookmark_thumbnail);
mGrid.setBreadcrumbController(this);
setEnableContextMenu(mEnableContextMenu);
- mDragHandler = new BookmarkDragHandler(getActivity(), mDragController,
- mGrid.getDragAdapter());
// Start the loaders
LoaderManager lm = getLoaderManager();
@@ -618,45 +611,6 @@
}
}
- private BookmarkDragController mDragController = new BookmarkDragController() {
-
- @Override
- public boolean startDrag(Cursor item) {
- return canEdit(item);
- }
-
- @Override
- public ViewGroup getActionModeView(ActionMode mode,
- BookmarkDragState state) {
- LayoutInflater inflater = LayoutInflater.from(getActivity());
- LinearLayout view = (LinearLayout) inflater.inflate(
- R.layout.bookmarks_drag_actionmode, null);
- view.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
- ExtraDragState extraState = (ExtraDragState) state.extraState;
- BrowserBookmarksAdapter adapter = getChildAdapter(extraState.groupPosition);
- Cursor c = adapter.getItem(extraState.childPosition);
- boolean isFolder = c.getInt(BookmarksLoader.COLUMN_INDEX_IS_FOLDER) != 0;
- if (isFolder) {
- view.findViewById(R.id.open_context_menu_id).setVisibility(View.GONE);
- ImageView iv = (ImageView) view.findViewById(
- R.id.new_window_context_menu_id);
- iv.setImageResource(R.drawable.ic_windows_holo_dark);
- }
- return view;
- }
-
- @Override
- public void actionItemClicked(View v, BookmarkDragState state) {
- if (v.getId() == R.id.info) {
- mGrid.showContextMenuForState(state);
- } else {
- ExtraDragState extraState = (ExtraDragState) state.extraState;
- handleContextItem(v.getId(), extraState.groupPosition,
- extraState.childPosition);
- }
- }
- };
-
private static class LookupBookmarkCount extends AsyncTask<Long, Void, Integer> {
Context mContext;
BookmarkItem mHeader;
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 36f6a1a..0c86988 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -1104,7 +1104,7 @@
// callback from phone title bar
public void editUrl() {
if (mOptionsMenuOpen) mActivity.closeOptionsMenu();
- mUi.editUrl(false);
+ mUi.editUrl(false, true);
}
public void startVoiceSearch() {
@@ -2837,7 +2837,7 @@
}
public boolean onSearchRequested() {
- mUi.editUrl(false);
+ mUi.editUrl(false, true);
return true;
}
diff --git a/src/com/android/browser/NavScreen.java b/src/com/android/browser/NavScreen.java
index 8314f73..1d2114e 100644
--- a/src/com/android/browser/NavScreen.java
+++ b/src/com/android/browser/NavScreen.java
@@ -242,7 +242,7 @@
switchToTab(tab);
mUi.getTitleBar().setSkipTitleBarAnimations(true);
close(position, false);
- mUi.editUrl(false);
+ mUi.editUrl(false, true);
mUi.getTitleBar().setSkipTitleBarAnimations(false);
} else if (tabview.isWebView(v)) {
close(position);
diff --git a/src/com/android/browser/NavigationBarBase.java b/src/com/android/browser/NavigationBarBase.java
index 41af619..d66c877 100644
--- a/src/com/android/browser/NavigationBarBase.java
+++ b/src/com/android/browser/NavigationBarBase.java
@@ -247,7 +247,7 @@
* called from the Ui when the user wants to edit
* @param clearInput clear the input field
*/
- void startEditingUrl(boolean clearInput) {
+ void startEditingUrl(boolean clearInput, boolean forceIME) {
// editing takes preference of progress
setVisibility(View.VISIBLE);
if (mTitleBar.useQuickControls()) {
@@ -261,7 +261,7 @@
} else if (mInVoiceMode) {
mUrlInput.showDropDown();
}
- if (mTitleBar.useQuickControls()) {
+ if (forceIME) {
mUrlInput.showIME();
}
}
diff --git a/src/com/android/browser/NavigationBarTablet.java b/src/com/android/browser/NavigationBarTablet.java
index 3403fd7..37b1f17 100644
--- a/src/com/android/browser/NavigationBarTablet.java
+++ b/src/com/android/browser/NavigationBarTablet.java
@@ -177,7 +177,7 @@
} else if (mAllButton == v) {
mUiController.bookmarksOrHistoryPicker(ComboViews.Bookmarks);
} else if (mSearchButton == v) {
- mBaseUi.editUrl(true);
+ mBaseUi.editUrl(true, false);
} else if (mStopButton == v) {
stopOrRefresh();
} else if (mGoButton == v) {
diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java
index 7f64643..b269586 100644
--- a/src/com/android/browser/PhoneUi.java
+++ b/src/com/android/browser/PhoneUi.java
@@ -76,11 +76,11 @@
}
@Override
- public void editUrl(boolean clearInput) {
+ public void editUrl(boolean clearInput, boolean forceIME) {
if (mUseQuickControls) {
mTitleBar.setShowProgressOnly(false);
}
- super.editUrl(clearInput);
+ super.editUrl(clearInput, forceIME);
}
@Override
diff --git a/src/com/android/browser/PieControl.java b/src/com/android/browser/PieControl.java
index f7e2c9f..abe8d37 100644
--- a/src/com/android/browser/PieControl.java
+++ b/src/com/android/browser/PieControl.java
@@ -197,7 +197,7 @@
web.reload();
}
} else if (mUrl.getView() == v) {
- mUi.editUrl(false);
+ mUi.editUrl(false, true);
} else if (mBookmarks.getView() == v) {
mUiController.bookmarksOrHistoryPicker(ComboViews.Bookmarks);
} else if (mHistory.getView() == v) {
@@ -206,10 +206,10 @@
mUiController.bookmarkCurrentPage();
} else if (mNewTab.getView() == v) {
mUiController.openTabToHomePage();
- mUi.editUrl(false);
+ mUi.editUrl(false, true);
} else if (mIncognito.getView() == v) {
mUiController.openIncognitoTab();
- mUi.editUrl(false);
+ mUi.editUrl(false, true);
} else if (mClose.getView() == v) {
mUiController.closeCurrentTab();
} else if (mOptions.getView() == v) {
diff --git a/src/com/android/browser/TabBar.java b/src/com/android/browser/TabBar.java
index bd17c74..cf82e01 100644
--- a/src/com/android/browser/TabBar.java
+++ b/src/com/android/browser/TabBar.java
@@ -197,7 +197,7 @@
mUi.hideTitleBar();
} else {
mUi.stopWebViewScrolling();
- mUi.editUrl(false);
+ mUi.editUrl(false, false);
}
} else if (mUi.isTitleBarShowing() && !isLoading()) {
mUi.stopEditingUrl();
diff --git a/src/com/android/browser/UI.java b/src/com/android/browser/UI.java
index 2bd3754..034f136 100644
--- a/src/com/android/browser/UI.java
+++ b/src/com/android/browser/UI.java
@@ -134,7 +134,7 @@
void showMaxTabsWarning();
- void editUrl(boolean clearInput);
+ void editUrl(boolean clearInput, boolean forceIME);
boolean isEditingUrl();
diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java
index e0a6be2..1969978 100644
--- a/src/com/android/browser/XLargeUi.java
+++ b/src/com/android/browser/XLargeUi.java
@@ -207,11 +207,11 @@
}
@Override
- public void editUrl(boolean clearInput) {
+ public void editUrl(boolean clearInput, boolean forceIME) {
if (mUseQuickControls) {
mTitleBar.setShowProgressOnly(false);
}
- super.editUrl(clearInput);
+ super.editUrl(clearInput, forceIME);
}
@Override
@@ -285,13 +285,13 @@
case KeyEvent.KEYCODE_DPAD_UP:
case KeyEvent.KEYCODE_DPAD_LEFT:
if ((web != null) && web.hasFocus() && !mTitleBar.hasFocus()) {
- editUrl(false);
+ editUrl(false, false);
return true;
}
}
boolean ctrl = event.hasModifiers(KeyEvent.META_CTRL_ON);
if (!ctrl && isTypingKey(event) && !mTitleBar.isEditingUrl()) {
- editUrl(true);
+ editUrl(true, false);
return mContentView.dispatchKeyEvent(event);
}
}
diff --git a/src/com/android/browser/util/ThreadedCursorAdapter.java b/src/com/android/browser/util/ThreadedCursorAdapter.java
index fe59ad1..b70ca36 100644
--- a/src/com/android/browser/util/ThreadedCursorAdapter.java
+++ b/src/com/android/browser/util/ThreadedCursorAdapter.java
@@ -21,8 +21,8 @@
import android.os.HandlerThread;
import android.os.Message;
import android.os.Process;
+import android.os.SystemProperties;
import android.util.Log;
-import android.util.SparseArray;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Adapter;
@@ -32,11 +32,10 @@
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 String LOGTAG = "BookmarksThreadedAdapter";
private static final boolean DEBUG = false;
private Context mContext;
@@ -46,6 +45,8 @@
private Handler mLoadHandler;
private Handler mHandler;
private int mSize;
+ private boolean mHasCursor;
+ private long mGeneration;
private class LoadContainer {
WeakReference<View> view;
@@ -53,10 +54,12 @@
T bind_object;
Adapter owner;
boolean loaded;
+ long generation;
}
public ThreadedCursorAdapter(Context context, Cursor c) {
mContext = context;
+ mHasCursor = (c != null);
mCursorAdapter = new CursorAdapter(context, c, 0) {
@Override
@@ -73,6 +76,7 @@
public void notifyDataSetChanged() {
super.notifyDataSetChanged();
mSize = getCount();
+ mGeneration++;
ThreadedCursorAdapter.this.notifyDataSetChanged();
}
@@ -80,6 +84,7 @@
public void notifyDataSetInvalidated() {
super.notifyDataSetInvalidated();
mSize = getCount();
+ mGeneration++;
ThreadedCursorAdapter.this.notifyDataSetInvalidated();
}
@@ -109,7 +114,9 @@
View view = container.view.get();
if (view == null
|| container.owner != ThreadedCursorAdapter.this
- || container.position != msg.what) {
+ || container.position != msg.what
+ || view.getWindowToken() == null
+ || container.generation != mGeneration) {
return;
}
container.loaded = true;
@@ -142,6 +149,9 @@
}
synchronized (mCursorLock) {
Cursor c = (Cursor) mCursorAdapter.getItem(position);
+ if (c == null || c.isClosed()) {
+ return;
+ }
container.bind_object = getRowObject(c, container.bind_object);
}
mHandler.obtainMessage(position, container).sendToTarget();
@@ -161,14 +171,18 @@
}
if (container.position == position
&& container.owner == this
- && container.loaded) {
+ && container.loaded
+ && container.generation == mGeneration) {
bindView(convertView, container.bind_object);
} else {
bindView(convertView, cachedLoadObject());
- container.position = position;
- container.loaded = false;
- container.owner = this;
- mLoadHandler.obtainMessage(position, container).sendToTarget();
+ if (mHasCursor) {
+ container.position = position;
+ container.loaded = false;
+ container.owner = this;
+ container.generation = mGeneration;
+ mLoadHandler.obtainMessage(position, container).sendToTarget();
+ }
}
return convertView;
}
@@ -181,7 +195,10 @@
}
public void changeCursor(Cursor cursor) {
+ mLoadHandler.removeCallbacksAndMessages(null);
+ mHandler.removeCallbacksAndMessages(null);
synchronized (mCursorLock) {
+ mHasCursor = (cursor != null);
mCursorAdapter.changeCursor(cursor);
}
}
diff --git a/src/com/android/browser/view/BookmarkExpandableView.java b/src/com/android/browser/view/BookmarkExpandableView.java
index 0283448..095bb7b 100644
--- a/src/com/android/browser/view/BookmarkExpandableView.java
+++ b/src/com/android/browser/view/BookmarkExpandableView.java
@@ -17,7 +17,6 @@
package com.android.browser.view;
import android.content.Context;
-import android.database.Cursor;
import android.database.DataSetObserver;
import android.provider.BrowserContract;
import android.util.AttributeSet;
@@ -33,13 +32,8 @@
import android.widget.LinearLayout;
import android.widget.TextView;
-import com.android.browser.BookmarkDragHandler;
-import com.android.browser.BookmarkDragHandler.BookmarkDragAdapter;
-import com.android.browser.BookmarkDragHandler.BookmarkDragState;
import com.android.browser.BreadCrumbView;
import com.android.browser.BrowserBookmarksAdapter;
-import com.android.browser.BrowserBookmarksPage;
-import com.android.browser.BrowserBookmarksPage.ExtraDragState;
import com.android.browser.R;
import com.android.internal.view.menu.MenuBuilder;
@@ -54,9 +48,6 @@
public static final String LOCAL_ACCOUNT_NAME = "local";
- // Experimental drag & drop
- private static final boolean ENABLE_DRAG_DROP = false;
-
private BookmarkAccountAdapter mAdapter;
private int mColumnWidth;
private Context mContext;
@@ -65,9 +56,7 @@
private OnCreateContextMenuListener mOnCreateContextMenuListener;
private boolean mLongClickable;
private BreadCrumbView.Controller mBreadcrumbController;
- private BookmarkDragHandler mDragHandler;
private int mMaxColumnCount;
- private int mCurrentView = -1;
public BookmarkExpandableView(Context context) {
super(context);
@@ -141,9 +130,6 @@
adapter.registerDataSetObserver(mAdapter.mObserver);
}
} else {
- if (mCurrentView >= 0) {
- adapter.selectView(mCurrentView);
- }
mAdapter.mGroups.add(accountName);
mAdapter.mChildren.add(adapter);
adapter.registerDataSetObserver(mAdapter.mObserver);
@@ -229,36 +215,6 @@
return mAdapter.mChildren.get(groupPosition);
}
- public BookmarkDragAdapter getDragAdapter() {
- return mDragAdapter;
- }
-
- public void showContextMenuForState(BookmarkDragState state) {
- ExtraDragState extraState = (ExtraDragState) state.extraState;
- mContextMenuInfo = new BookmarkContextMenuInfo(
- extraState.childPosition,
- extraState.groupPosition);
- if (getParent() != null) {
- getParent().showContextMenuForChild(BookmarkExpandableView.this);
- }
- }
-
- private BookmarkDragAdapter mDragAdapter = new BookmarkDragAdapter() {
-
- @Override
- public void setBookmarkDragHandler(BookmarkDragHandler handler) {
- mDragHandler = handler;
- }
-
- @Override
- public Cursor getItemForView(View v) {
- int groupPosition = (Integer) v.getTag(R.id.group_position);
- int childPosition = (Integer) v.getTag(R.id.child_position);
- return getChildAdapter(groupPosition).getItem(childPosition);
- }
-
- };
-
private OnClickListener mChildClickListener = new OnClickListener() {
@Override
@@ -293,35 +249,10 @@
}
};
- private OnLongClickListener mChildOnLongClickListener = new OnLongClickListener() {
-
- @Override
- public boolean onLongClick(View v) {
- if (!ENABLE_DRAG_DROP) {
- return false;
- }
- ExtraDragState state = new ExtraDragState();
- state.groupPosition = (Integer) v.getTag(R.id.group_position);
- state.childPosition = (Integer) v.getTag(R.id.child_position);
- long id = (Long) v.getTag(R.id.child_id);
- Cursor c = getChildAdapter(state.groupPosition)
- .getItem(state.childPosition);
- return mDragHandler.startDrag(v, c, id, state);
- }
- };
-
public BreadCrumbView getBreadCrumbs(int groupPosition) {
return mAdapter.getBreadCrumbView(groupPosition);
}
- public void selectView(int view) {
- mCurrentView = view;
- for (BrowserBookmarksAdapter adapter : mAdapter.mChildren) {
- adapter.selectView(mCurrentView);
- }
- mAdapter.notifyDataSetChanged();
- }
-
public JSONObject saveGroupState() throws JSONException {
JSONObject obj = new JSONObject();
int count = mAdapter.getGroupCount();
@@ -386,9 +317,6 @@
}
BrowserBookmarksAdapter childAdapter = mChildren.get(groupPosition);
int rowCount = mRowCount;
- if (childAdapter.getViewMode() == BrowserBookmarksPage.VIEW_LIST) {
- rowCount = 1;
- }
LinearLayout row = (LinearLayout) convertView;
if (row.getChildCount() > rowCount) {
row.removeViews(rowCount, row.getChildCount() - rowCount);
@@ -406,10 +334,6 @@
v.setTag(R.id.child_id, childAdapter.getItemId(realChildPosition));
v.setOnClickListener(mChildClickListener);
v.setLongClickable(mLongClickable);
- if (mDragHandler != null) {
- v.setOnLongClickListener(mChildOnLongClickListener);
- mDragHandler.registerBookmarkDragHandler(v);
- }
if (cv == null) {
row.addView(v);
} else if (cv != v) {
@@ -428,9 +352,6 @@
@Override
public int getChildrenCount(int groupPosition) {
BrowserBookmarksAdapter adapter = mChildren.get(groupPosition);
- if (adapter.getViewMode() == BrowserBookmarksPage.VIEW_LIST) {
- return adapter.getCount();
- }
return (int) Math.ceil(adapter.getCount() / (float)mRowCount);
}
@@ -517,20 +438,6 @@
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
-
- @Override
- public int getChildTypeCount() {
- return 2;
- }
-
- @Override
- public int getChildType(int groupPosition, int childPosition) {
- BrowserBookmarksAdapter adapter = mChildren.get(groupPosition);
- if (adapter.getViewMode() == BrowserBookmarksPage.VIEW_LIST) {
- return 1;
- }
- return 0;
- }
}
public static class BookmarkContextMenuInfo implements ContextMenuInfo {