merge in jb-release history after reset to master
diff --git a/res/drawable-hdpi/ic_desktop_holo_dark.png b/res/drawable-hdpi/ic_desktop_holo_dark.png
new file mode 100644
index 0000000..76fbb85
--- /dev/null
+++ b/res/drawable-hdpi/ic_desktop_holo_dark.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_desktop_holo_dark.png b/res/drawable-mdpi/ic_desktop_holo_dark.png
new file mode 100644
index 0000000..1bb8120
--- /dev/null
+++ b/res/drawable-mdpi/ic_desktop_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_desktop_holo_dark.png b/res/drawable-xhdpi/ic_desktop_holo_dark.png
new file mode 100644
index 0000000..1689e9d
--- /dev/null
+++ b/res/drawable-xhdpi/ic_desktop_holo_dark.png
Binary files differ
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 679e0fb..1010a97 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -281,14 +281,14 @@
</string-array>
<string name="pref_data_preload_summary" msgid="3809168910751382727">"Laat blaaier toe om waarskynlike soekresultate in die agtergrond vooraf laai"</string>
<string name="pref_data_preload_dialogtitle" msgid="8421297746110796536">"Soekresultaat word voorafgelaai"</string>
- <string name="pref_link_prefetch_title" msgid="4123685219009241072">"Vooraf laai webbladsy"</string>
+ <string name="pref_link_prefetch_title" msgid="4123685219009241072">"Vooraflaai webbladsy"</string>
<string-array name="pref_link_prefetch_choices">
<item msgid="4889781230398008031">"Nooit"</item>
<item msgid="1908465963242077428">"Net op Wi-Fi"</item>
<item msgid="7647277566998527142">"Altyd"</item>
</string-array>
<string name="pref_link_prefetch_summary" msgid="6558181497993206817">"Laat blaaier toe om gekoppelde webblaaie vooraf te laai in die agtergrond"</string>
- <string name="pref_link_prefetch_dialogtitle" msgid="3804646141622839765">"Vooraf laai webbladsy"</string>
+ <string name="pref_link_prefetch_dialogtitle" msgid="3804646141622839765">"Vooraflaai webbladsy"</string>
<string name="browserFrameNetworkErrorLabel" msgid="8102515020625680714">"Verbindingsprobleem"</string>
<string name="browserFrameFileErrorLabel" msgid="4703792279852977350">"Lêerprobleem"</string>
<string name="browserFrameFormResubmitLabel" msgid="2385512101948178841"></string>
@@ -349,6 +349,8 @@
<string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Stel tans muurpapier in..."</string>
<string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Boekmerke"</string>
<string name="empty_bookmarks_folder" msgid="6239830231917618556">"Geen boekmerke nie."</string>
+ <!-- no translation found for other_bookmarks (8021889794475657319) -->
+ <skip />
<string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
<string name="account_chooser_dialog_title" msgid="3314204833188808194">"Kies rekening"</string>
<string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sinkroniseer met Google-rekening"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index e6682dc..8365474 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -349,6 +349,8 @@
<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="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-ar/strings.xml b/res/values-ar/strings.xml
index 0543207..8f31ceb 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -349,6 +349,8 @@
<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="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 fd09a25..5b7f932 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -349,6 +349,8 @@
<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="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 ed08812..9c9dceb 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -349,6 +349,8 @@
<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="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-ca/strings.xml b/res/values-ca/strings.xml
index 9245b16..3fbaaf9 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -349,6 +349,8 @@
<string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"S\'està establint el fons de pantalla..."</string>
<string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Marcadors"</string>
<string name="empty_bookmarks_folder" msgid="6239830231917618556">"No hi ha cap marcador."</string>
+ <!-- no translation found for other_bookmarks (8021889794475657319) -->
+ <skip />
<string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
<string name="account_chooser_dialog_title" msgid="3314204833188808194">"Tria d\'un compte"</string>
<string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sincronitza amb el Compte de Google"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 0d9c656..d62824f 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -349,6 +349,8 @@
<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="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 f042171..ee00b4b 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -349,6 +349,8 @@
<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="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 9eb5392..a13b045 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -349,6 +349,8 @@
<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="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 9aa7fe8..71bb8c0 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -349,6 +349,8 @@
<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="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-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 9e6195d..0cdf775 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -349,6 +349,8 @@
<string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Setting wallpaper..."</string>
<string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Bookmarks"</string>
<string name="empty_bookmarks_folder" msgid="6239830231917618556">"No bookmarks"</string>
+ <!-- no translation found for other_bookmarks (8021889794475657319) -->
+ <skip />
<string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
<string name="account_chooser_dialog_title" msgid="3314204833188808194">"Choose account"</string>
<string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sync with Google account"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index fa528d0..2d34446 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -349,6 +349,8 @@
<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="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 b726244..fe6983f 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -349,6 +349,8 @@
<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="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 e59796c..4b23a9b 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -349,6 +349,8 @@
<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="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 c087c78..612f3a3 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -349,6 +349,8 @@
<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="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 b89b77d..a5a6426 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -349,6 +349,8 @@
<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="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 1b93bcf..3d87590 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -349,6 +349,8 @@
<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="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 d1376b3..47749a3 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -349,6 +349,8 @@
<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="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 4cf6f1c..3a3b609 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -349,6 +349,8 @@
<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="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 678de27..9059529 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -349,6 +349,8 @@
<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="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 7b36790..5beaec8 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -33,7 +33,7 @@
<string name="action" msgid="183105774472071343">"Masuk"</string>
<string name="bookmarks_search" msgid="5229596268214362873">"Browser"</string>
<string name="cancel" msgid="3017274947407233702">"Batal"</string>
- <string name="ok" msgid="1509280796718850364">"OK"</string>
+ <string name="ok" msgid="1509280796718850364">"Oke"</string>
<string name="title_bar_loading" msgid="7438217780834640678">"Memuat…"</string>
<string name="page_info" msgid="4048529256302257195">"Info laman"</string>
<string name="page_info_view" msgid="5303490449842635158">"Lihat info laman"</string>
@@ -55,7 +55,7 @@
<string name="reload" msgid="8585220783228408062">"Segarkan"</string>
<string name="back" msgid="8414603107175713668">"Kembali"</string>
<string name="forward" msgid="4288210890526641577">"Teruskan"</string>
- <string name="save" msgid="5922311934992468496">"OK"</string>
+ <string name="save" msgid="5922311934992468496">"Oke"</string>
<string name="do_not_save" msgid="6777633870113477714">"Batal"</string>
<string name="location" msgid="3411848697912600125">"Alamat"</string>
<string name="account" msgid="5179824606448077042">"Akun"</string>
@@ -130,7 +130,7 @@
<string name="pref_content_block_popups" msgid="4158524847764470895">"Cekal jendela munculan"</string>
<string name="pref_content_javascript" msgid="4570972030299516843">"Aktifkan JavaScript"</string>
<string name="pref_content_open_in_background" msgid="824123779725118663">"Buka di latar belakang"</string>
- <string name="pref_content_plugins" msgid="7231944644794301582">"Aktifkan pengaya"</string>
+ <string name="pref_content_plugins" msgid="7231944644794301582">"Aktifkan plugin"</string>
<string-array name="pref_content_plugins_choices">
<item msgid="6745108155096660725">"Selalu hidup"</item>
<item msgid="2484126708670016519">"Sesuai permintaan"</item>
@@ -326,7 +326,7 @@
<string name="webstorage_outofspace_notification_text" msgid="47273584426988640">"Sentuh untuk mengosongkan ruang."</string>
<string name="webstorage_clear_data_title" msgid="689484577124333977">"Hapus data tersimpan"</string>
<string name="webstorage_clear_data_dialog_message" msgid="6200681632891775881">"Hapus semua data yang disimpan situs web ini?"</string>
- <string name="webstorage_clear_data_dialog_ok_button" msgid="6682570951259237542">"OK"</string>
+ <string name="webstorage_clear_data_dialog_ok_button" msgid="6682570951259237542">"Oke"</string>
<string name="webstorage_clear_data_dialog_cancel_button" msgid="2028867751958942762">"Batal"</string>
<string name="webstorage_origin_summary_mb_stored" msgid="1985885826292236210">"MB yang disimpan pada ponsel Anda"</string>
<string name="loading_video" msgid="7886324933131962321">"Memuat video..."</string>
@@ -340,15 +340,17 @@
<string name="geolocation_settings_page_summary_allowed" msgid="9180251524290811398">"Saat ini situs ini dapat mengakses lokasi Anda"</string>
<string name="geolocation_settings_page_summary_not_allowed" msgid="7941769772784366199">"Saat ini situs ini tidak dapat mengakses lokasi Anda"</string>
<string name="geolocation_settings_page_dialog_message" msgid="8772923416296868537">"Hapus akses lokasi untuk situs web ini?"</string>
- <string name="geolocation_settings_page_dialog_ok_button" msgid="2113465477131017852">"OK"</string>
+ <string name="geolocation_settings_page_dialog_ok_button" msgid="2113465477131017852">"Oke"</string>
<string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"Batal"</string>
<string name="website_settings_clear_all" msgid="8739804325997655980">"Hapus semua"</string>
<string name="website_settings_clear_all_dialog_message" msgid="1551164275687475061">"Hapus semua data situs web dan izin lokasi?"</string>
- <string name="website_settings_clear_all_dialog_ok_button" msgid="7858504776529106243">"OK"</string>
+ <string name="website_settings_clear_all_dialog_ok_button" msgid="7858504776529106243">"Oke"</string>
<string name="website_settings_clear_all_dialog_cancel_button" msgid="1896757051856611674">"Batal"</string>
<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="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 3e2a6ac..e3b380a 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -349,6 +349,8 @@
<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="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 3013486..dfe5630 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -349,6 +349,8 @@
<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="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 e420fec..871e8fb 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -349,6 +349,8 @@
<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="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 a3021a7..84fc468 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -349,6 +349,8 @@
<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="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 bb689e3..e6b0f0c 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -349,6 +349,8 @@
<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="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 47cd718..4726d0d 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -349,6 +349,8 @@
<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="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 a7ad2bc..53a51a9 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -349,6 +349,8 @@
<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="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 7bcf5c0..8eeae8e 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -349,6 +349,8 @@
<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="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 fe0ad5f..47c6656 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -349,6 +349,8 @@
<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="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 dbc249b..f62a50b 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -349,6 +349,8 @@
<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="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 242bb0a..1862289 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -349,6 +349,8 @@
<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="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 97d8189..cf87fb8 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -349,6 +349,8 @@
<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="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-rm/strings.xml b/res/values-rm/strings.xml
index 689a2ef..7d52a3c 100644
--- a/res/values-rm/strings.xml
+++ b/res/values-rm/strings.xml
@@ -502,6 +502,8 @@
<string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Segnapaginas"</string>
<!-- no translation found for empty_bookmarks_folder (6239830231917618556) -->
<skip />
+ <!-- no translation found for other_bookmarks (8021889794475657319) -->
+ <skip />
<string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
<!-- no translation found for account_chooser_dialog_title (3314204833188808194) -->
<!-- no translation found for account_chooser_dialog_title (4833571985009544332) -->
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 76ca052..9b46400 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -349,6 +349,8 @@
<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="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 c913b5d..96bb6b3 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -349,6 +349,8 @@
<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="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 ccc1f58..0e71cd6 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -349,6 +349,8 @@
<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="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 1e59555..718d3f9 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -349,6 +349,8 @@
<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="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 9071e2a..a920c55 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -349,6 +349,8 @@
<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="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 7e85531..9025f9c 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -349,6 +349,8 @@
<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="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 561cef7..28b3645 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -349,6 +349,8 @@
<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="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-sw600dp/dimensions.xml b/res/values-sw600dp/dimensions.xml
index ed75f60..a6797f0 100644
--- a/res/values-sw600dp/dimensions.xml
+++ b/res/values-sw600dp/dimensions.xml
@@ -25,8 +25,8 @@
<!-- For the combined Bookmarks History view -->
<dimen name="combo_paddingTop">50dip</dimen>
<dimen name="combo_horizontalSpacing">8dip</dimen>
- <dimen name="qc_radius_start">50dip</dimen>
- <dimen name="qc_radius_increment">70dip</dimen>
+ <dimen name="qc_radius_start">75dip</dimen>
+ <dimen name="qc_radius_increment">90dip</dimen>
<dimen name="qc_slop">15dip</dimen>
<dimen name="qc_touch_offset">15dip</dimen>
<dimen name="qc_tab_title_height">30dip</dimen>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 8516c9e..2a90c12 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -349,6 +349,8 @@
<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="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 d2d7ac3..89b5ae7 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -349,6 +349,8 @@
<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="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 294ec3e..1483c98 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -349,6 +349,8 @@
<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="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 ba45121..a46b299 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -349,6 +349,8 @@
<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="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 a423774..c9666bc 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -349,6 +349,8 @@
<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="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 a024860..d4da826 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -349,6 +349,8 @@
<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="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 53826b2..15fd98f 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -349,6 +349,8 @@
<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="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-zu/strings.xml b/res/values-zu/strings.xml
index 59e528c..d25ae67 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -349,6 +349,8 @@
<string name="progress_dialog_setting_wallpaper" msgid="2031391201442335889">"Isetha iphephadonga..."</string>
<string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Amabhukimakhi"</string>
<string name="empty_bookmarks_folder" msgid="6239830231917618556">"Awekho amabhukimakhi"</string>
+ <!-- no translation found for other_bookmarks (8021889794475657319) -->
+ <skip />
<string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
<string name="account_chooser_dialog_title" msgid="3314204833188808194">"Khetha i-akhawunti"</string>
<string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Vumelanisa nge-akhawunti ye-Google"</string>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 78f4883..ffee48b 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -33,7 +33,8 @@
<color name="tabFocusHighlight">#FF99CC00</color>
<color name="qcMenuBackground">#C0000000</color>
<color name="qc_normal">#E02A96BC</color>
- <color name="qc_selected">#F01A5B73</color>
+ <color name="qc_selected">#E0FF8800</color>
+ <color name="qc_sub">#F01A5B73</color>
<color name="qc_tab_nr">#F033B5E5</color>
<color name="tabViewTitleBackground">#D0000000</color>
<color name="navtab_bg">#80606060</color>
diff --git a/res/values/dimensions.xml b/res/values/dimensions.xml
index d6ae6ba..5e3ec8b 100644
--- a/res/values/dimensions.xml
+++ b/res/values/dimensions.xml
@@ -27,8 +27,8 @@
<dimen name="widgetItemMinHeight">48dip</dimen>
<dimen name="favicon_size">16dip</dimen>
<dimen name="favicon_padded_size">20dip</dimen>
- <dimen name="qc_radius_start">60dip</dimen>
- <dimen name="qc_radius_increment">70dip</dimen>
+ <dimen name="qc_radius_start">65dip</dimen>
+ <dimen name="qc_radius_increment">80dip</dimen>
<dimen name="qc_slop">10dip</dimen>
<dimen name="qc_touch_offset">15dip</dimen>
<dimen name="qc_tab_title_height">24dip</dimen>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 2a7fa96..95d383c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -883,6 +883,9 @@
This is centered in the middle of the screen [CHAR LIMIT=NONE] -->
<string name="empty_bookmarks_folder">No bookmarks.</string>
+ <!-- The folder name for the special "Other Bookmarks" folder created by Chrome [CHAR LIMIT=24] -->
+ <string name="other_bookmarks">Other Bookmarks</string>
+
<!-- Access point for RLZ tracking. -->
<string name="rlz_access_point">Y1</string>
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index 9aaceeb..652f9d7 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -312,26 +312,16 @@
ViewGroup parent = (ViewGroup) mainView.getParent();
if (parent != wrapper) {
if (parent != null) {
- Log.w(LOGTAG, "mMainView already has a parent in"
- + " attachTabToContentView!");
parent.removeView(mainView);
}
wrapper.addView(mainView);
- } else {
- Log.w(LOGTAG, "mMainView is already attached to wrapper in"
- + " attachTabToContentView!");
}
parent = (ViewGroup) container.getParent();
if (parent != mContentView) {
if (parent != null) {
- Log.w(LOGTAG, "mContainer already has a parent in"
- + " attachTabToContentView!");
parent.removeView(container);
}
mContentView.addView(container, COVER_SCREEN_PARAMS);
- } else {
- Log.w(LOGTAG, "mContainer is already attached to content in"
- + " attachTabToContentView!");
}
mUiController.attachSubWindow(tab);
}
@@ -472,6 +462,10 @@
return mTitleBar.isEditingUrl();
}
+ public void stopEditingUrl() {
+ mTitleBar.getNavigationBar().stopEditingUrl();
+ }
+
public TitleBar getTitleBar() {
return mTitleBar;
}
diff --git a/src/com/android/browser/BookmarksLoader.java b/src/com/android/browser/BookmarksLoader.java
index bc06497..80d4255 100644
--- a/src/com/android/browser/BookmarksLoader.java
+++ b/src/com/android/browser/BookmarksLoader.java
@@ -34,7 +34,7 @@
public static final int COLUMN_INDEX_TOUCH_ICON = 5;
public static final int COLUMN_INDEX_IS_FOLDER = 6;
public static final int COLUMN_INDEX_PARENT = 8;
- public static final int COLUMN_INDEX_SERVER_UNIQUE = 9;
+ public static final int COLUMN_INDEX_TYPE = 9;
public static final String[] PROJECTION = new String[] {
Bookmarks._ID, // 0
@@ -46,7 +46,7 @@
Bookmarks.IS_FOLDER, // 6
Bookmarks.POSITION, // 7
Bookmarks.PARENT, // 8
- ChromeSyncColumns.SERVER_UNIQUE, // 9
+ Bookmarks.TYPE, // 9
};
String mAccountType;
diff --git a/src/com/android/browser/BrowserBookmarksAdapter.java b/src/com/android/browser/BrowserBookmarksAdapter.java
index 2fd880c..fcc3f27 100644
--- a/src/com/android/browser/BrowserBookmarksAdapter.java
+++ b/src/com/android/browser/BrowserBookmarksAdapter.java
@@ -20,6 +20,7 @@
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
+import android.provider.BrowserContract.Bookmarks;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -52,6 +53,15 @@
}
}
+ CharSequence getTitle(Cursor cursor, Context context) {
+ int type = cursor.getInt(BookmarksLoader.COLUMN_INDEX_TYPE);
+ switch (type) {
+ case Bookmarks.BOOKMARK_TYPE_OTHER_FOLDER:
+ return context.getText(R.string.other_bookmarks);
+ }
+ return cursor.getString(BookmarksLoader.COLUMN_INDEX_TITLE);
+ }
+
void bindGridView(View view, Context context, Cursor cursor) {
// We need to set this to handle rotation and other configuration change
// events. If the padding didn't change, this is a no op.
@@ -62,7 +72,7 @@
ImageView thumb = (ImageView) view.findViewById(R.id.thumb);
TextView tv = (TextView) view.findViewById(R.id.label);
- tv.setText(cursor.getString(BookmarksLoader.COLUMN_INDEX_TITLE));
+ tv.setText(getTitle(cursor, context));
if (cursor.getInt(BookmarksLoader.COLUMN_INDEX_IS_FOLDER) != 0) {
// folder
thumb.setImageResource(R.drawable.thumb_bookmark_widget_folder_holo);
@@ -89,7 +99,7 @@
ImageView favicon = (ImageView) view.findViewById(R.id.favicon);
TextView tv = (TextView) view.findViewById(R.id.label);
- tv.setText(cursor.getString(BookmarksLoader.COLUMN_INDEX_TITLE));
+ tv.setText(getTitle(cursor, context));
if (cursor.getInt(BookmarksLoader.COLUMN_INDEX_IS_FOLDER) != 0) {
// folder
favicon.setImageResource(R.drawable.ic_folder_holo_dark);
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index da60fda..2c8a27a 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -37,7 +37,6 @@
import android.os.Bundle;
import android.provider.BrowserContract;
import android.provider.BrowserContract.Accounts;
-import android.provider.BrowserContract.ChromeSyncColumns;
import android.view.ActionMode;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
@@ -285,8 +284,9 @@
}
boolean canEdit(Cursor c) {
- String unique = c.getString(BookmarksLoader.COLUMN_INDEX_SERVER_UNIQUE);
- return !ChromeSyncColumns.FOLDER_NAME_OTHER_BOOKMARKS.equals(unique);
+ int type = c.getInt(BookmarksLoader.COLUMN_INDEX_TYPE);
+ return type == BrowserContract.Bookmarks.BOOKMARK_TYPE_BOOKMARK
+ || type == BrowserContract.Bookmarks.BOOKMARK_TYPE_FOLDER;
}
private void populateBookmarkItem(Cursor cursor, BookmarkItem item, boolean isFolder) {
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 9861184..fcbe387 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -788,8 +788,10 @@
mLoadStopped = true;
Tab tab = mTabControl.getCurrentTab();
WebView w = getCurrentTopWebView();
- w.stopLoading();
- mUi.onPageStopped(tab);
+ if (w != null) {
+ w.stopLoading();
+ mUi.onPageStopped(tab);
+ }
}
boolean didUserStopLoading() {
@@ -1587,10 +1589,7 @@
break;
case R.id.add_bookmark_menu_id:
- Intent bookmarkIntent = createBookmarkCurrentPageIntent(false);
- if (bookmarkIntent != null) {
- mActivity.startActivity(bookmarkIntent);
- }
+ bookmarkCurrentPage();
break;
case R.id.stop_reload_menu_id:
@@ -1624,14 +1623,11 @@
break;
case R.id.preferences_menu_id:
- Intent intent = new Intent(mActivity, BrowserPreferencesPage.class);
- intent.putExtra(BrowserPreferencesPage.CURRENT_PAGE,
- getCurrentTopWebView().getUrl());
- mActivity.startActivityForResult(intent, PREFERENCES_PAGE);
+ openPreferences();
break;
case R.id.find_menu_id:
- getCurrentTopWebView().showFindDialog(null, true);
+ findOnPage();
break;
case R.id.save_snapshot_menu_id:
@@ -1703,9 +1699,7 @@
break;
case R.id.ua_desktop_menu_id:
- WebView web = getCurrentWebView();
- mSettings.toggleDesktopUseragent(web);
- web.loadUrl(web.getOriginalUrl());
+ toggleUserAgent();
break;
case R.id.window_one_menu_id:
@@ -1737,6 +1731,34 @@
return true;
}
+ @Override
+ public void toggleUserAgent() {
+ WebView web = getCurrentWebView();
+ mSettings.toggleDesktopUseragent(web);
+ web.loadUrl(web.getOriginalUrl());
+ }
+
+ @Override
+ public void findOnPage() {
+ getCurrentTopWebView().showFindDialog(null, true);
+ }
+
+ @Override
+ public void openPreferences() {
+ Intent intent = new Intent(mActivity, BrowserPreferencesPage.class);
+ intent.putExtra(BrowserPreferencesPage.CURRENT_PAGE,
+ getCurrentTopWebView().getUrl());
+ mActivity.startActivityForResult(intent, PREFERENCES_PAGE);
+ }
+
+ @Override
+ public void bookmarkCurrentPage() {
+ Intent bookmarkIntent = createBookmarkCurrentPageIntent(false);
+ if (bookmarkIntent != null) {
+ mActivity.startActivity(bookmarkIntent);
+ }
+ }
+
private void goLive() {
Tab t = getCurrentTab();
t.loadUrl(t.getUrl(), null);
@@ -1943,9 +1965,9 @@
}
// file chooser
- public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) {
+ public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {
mUploadHandler = new UploadHandler(this);
- mUploadHandler.openFileChooser(uploadMsg, acceptType);
+ mUploadHandler.openFileChooser(uploadMsg, acceptType, capture);
}
// thumbnails
diff --git a/src/com/android/browser/NavigationBarBase.java b/src/com/android/browser/NavigationBarBase.java
index 128304c..ed96257 100644
--- a/src/com/android/browser/NavigationBarBase.java
+++ b/src/com/android/browser/NavigationBarBase.java
@@ -108,7 +108,6 @@
}
if (hasFocus) {
mBaseUi.showTitleBar();
- mUrlInput.forceIme();
if (mInVoiceMode) {
mUrlInput.forceFilter();
}
diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java
index a1f70da..153533b 100644
--- a/src/com/android/browser/PhoneUi.java
+++ b/src/com/android/browser/PhoneUi.java
@@ -52,7 +52,7 @@
private static final String LOGTAG = "PhoneUi";
private static final int MSG_INIT_NAVSCREEN = 100;
- private PieControlPhone mPieControl;
+ private PieControl mPieControl;
private NavScreen mNavScreen;
private AnimScreen mAnimScreen;
private NavigationBarPhone mNavigationBar;
@@ -268,7 +268,7 @@
mUseQuickControls = useQuickControls;
mTitleBar.setUseQuickControls(mUseQuickControls);
if (useQuickControls) {
- mPieControl = new PieControlPhone(mActivity, mUiController, this);
+ mPieControl = new PieControl(mActivity, mUiController, this);
mPieControl.attachToContainer(mContentView);
} else {
if (mPieControl != null) {
diff --git a/src/com/android/browser/PieControl.java b/src/com/android/browser/PieControl.java
new file mode 100644
index 0000000..68b0c7b
--- /dev/null
+++ b/src/com/android/browser/PieControl.java
@@ -0,0 +1,329 @@
+/*
+ * 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.Context;
+import android.graphics.Bitmap;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.ViewGroup;
+import android.view.ViewGroup.LayoutParams;
+import android.webkit.WebView;
+import android.widget.BaseAdapter;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.ImageView.ScaleType;
+import android.widget.TextView;
+
+import com.android.browser.UI.ComboViews;
+import com.android.browser.view.PieItem;
+import com.android.browser.view.PieMenu;
+import com.android.browser.view.PieMenu.PieView.OnLayoutListener;
+import com.android.browser.view.PieStackView;
+import com.android.browser.view.PieStackView.OnCurrentListener;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Controller for Quick Controls pie menu
+ */
+public class PieControl implements PieMenu.PieController, OnClickListener {
+
+ protected Activity mActivity;
+ protected UiController mUiController;
+ protected PieMenu mPie;
+ protected int mItemSize;
+ protected TextView mTabsCount;
+ private BaseUi mUi;
+ private PieItem mBack;
+ private PieItem mForward;
+ private PieItem mRefresh;
+ private PieItem mUrl;
+ private PieItem mOptions;
+ private PieItem mBookmarks;
+ private PieItem mHistory;
+ private PieItem mAddBookmark;
+ private PieItem mNewTab;
+ private PieItem mIncognito;
+ private PieItem mClose;
+ private PieItem mShowTabs;
+ private PieItem mInfo;
+ private PieItem mFind;
+ private PieItem mShare;
+ private PieItem mRDS;
+ private TabAdapter mTabAdapter;
+
+ public PieControl(Activity activity, UiController controller, BaseUi ui) {
+ mActivity = activity;
+ mUiController = controller;
+ mItemSize = (int) activity.getResources().getDimension(R.dimen.qc_item_size);
+ mUi = ui;
+ }
+
+ public void stopEditingUrl() {
+ mUi.stopEditingUrl();
+ }
+
+ protected void attachToContainer(FrameLayout container) {
+ if (mPie == null) {
+ mPie = new PieMenu(mActivity);
+ LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT,
+ LayoutParams.MATCH_PARENT);
+ mPie.setLayoutParams(lp);
+ populateMenu();
+ mPie.setController(this);
+ }
+ container.addView(mPie);
+ }
+
+ protected void removeFromContainer(FrameLayout container) {
+ container.removeView(mPie);
+ }
+
+ protected void forceToTop(FrameLayout container) {
+ if (mPie.getParent() != null) {
+ container.removeView(mPie);
+ container.addView(mPie);
+ }
+ }
+
+ protected void setClickListener(OnClickListener listener, PieItem... items) {
+ for (PieItem item : items) {
+ item.getView().setOnClickListener(listener);
+ }
+ }
+
+ @Override
+ public boolean onOpen() {
+ int n = mUiController.getTabControl().getTabCount();
+ mTabsCount.setText(Integer.toString(n));
+ Tab tab = mUiController.getCurrentTab();
+ mForward.setEnabled(tab.canGoForward());
+ return true;
+ }
+
+ protected void populateMenu() {
+ mBack = makeItem(R.drawable.ic_back_holo_dark, 1);
+ mUrl = makeItem(R.drawable.ic_web_holo_dark, 1);
+ mBookmarks = makeItem(R.drawable.ic_bookmarks_holo_dark, 1);
+ mHistory = makeItem(R.drawable.ic_history_holo_dark, 1);
+ mAddBookmark = makeItem(R.drawable.ic_bookmark_on_holo_dark, 1);
+ mRefresh = makeItem(R.drawable.ic_refresh_holo_dark, 1);
+ mForward = makeItem(R.drawable.ic_forward_holo_dark, 1);
+ mNewTab = makeItem(R.drawable.ic_new_window_holo_dark, 1);
+ mIncognito = makeItem(R.drawable.ic_new_incognito_holo_dark, 1);
+ mClose = makeItem(R.drawable.ic_close_window_holo_dark, 1);
+ mInfo = makeItem(android.R.drawable.ic_menu_info_details, 1);
+ mFind = makeItem(R.drawable.ic_search_holo_dark, 1);
+ mShare = makeItem(R.drawable.ic_share_holo_dark, 1);
+ View tabs = makeTabsView();
+ mShowTabs = new PieItem(tabs, 1);
+ mOptions = makeItem(R.drawable.ic_settings_holo_dark, 1);
+ mRDS = makeItem(R.drawable.ic_desktop_holo_dark, 1);
+ mTabAdapter = new TabAdapter(mActivity, mUiController);
+ PieStackView stack = new PieStackView(mActivity);
+ stack.setLayoutListener(new OnLayoutListener() {
+ @Override
+ public void onLayout(int ax, int ay, boolean left) {
+ buildTabs();
+ }
+ });
+ stack.setOnCurrentListener(mTabAdapter);
+ stack.setAdapter(mTabAdapter);
+ mShowTabs.setPieView(stack);
+ setClickListener(this, mBack, mRefresh, mForward, mUrl, mFind, mInfo,
+ mShare, mBookmarks, mNewTab, mIncognito, mClose, mHistory,
+ mAddBookmark, mOptions, mRDS);
+ // level 1
+ mPie.addItem(mOptions);
+ mOptions.addItem(mRDS);
+ mOptions.addItem(makeFiller());
+ mOptions.addItem(makeFiller());
+ mOptions.addItem(makeFiller());
+ mPie.addItem(mBack);
+ mBack.addItem(mRefresh);
+ mBack.addItem(mForward);
+ mBack.addItem(makeFiller());
+ mBack.addItem(makeFiller());
+ mPie.addItem(mUrl);
+ mUrl.addItem(mFind);
+ mUrl.addItem(mShare);
+ mUrl.addItem(makeFiller());
+ mUrl.addItem(makeFiller());
+ mPie.addItem(mShowTabs);
+ mShowTabs.addItem(mClose);
+ mShowTabs.addItem(mIncognito);
+ mShowTabs.addItem(mNewTab);
+ mShowTabs.addItem(makeFiller());
+ mPie.addItem(mBookmarks);
+ mBookmarks.addItem(makeFiller());
+ mBookmarks.addItem(makeFiller());
+ mBookmarks.addItem(mAddBookmark);
+ mBookmarks.addItem(mHistory);
+ }
+
+ @Override
+ public void onClick(View v) {
+ Tab tab = mUiController.getTabControl().getCurrentTab();
+ WebView web = tab.getWebView();
+ if (mBack.getView() == v) {
+ tab.goBack();
+ } else if (mForward.getView() == v) {
+ tab.goForward();
+ } else if (mRefresh.getView() == v) {
+ if (tab.inPageLoad()) {
+ web.stopLoading();
+ } else {
+ web.reload();
+ }
+ } else if (mUrl.getView() == v) {
+ mUi.editUrl(false);
+ } else if (mBookmarks.getView() == v) {
+ mUiController.bookmarksOrHistoryPicker(ComboViews.Bookmarks);
+ } else if (mHistory.getView() == v) {
+ mUiController.bookmarksOrHistoryPicker(ComboViews.History);
+ } else if (mAddBookmark.getView() == v) {
+ mUiController.bookmarkCurrentPage();
+ } else if (mNewTab.getView() == v) {
+ mUiController.openTabToHomePage();
+ mUi.editUrl(false);
+ } else if (mIncognito.getView() == v) {
+ mUiController.openIncognitoTab();
+ mUi.editUrl(false);
+ } else if (mClose.getView() == v) {
+ mUiController.closeCurrentTab();
+ } else if (mOptions.getView() == v) {
+ mUiController.openPreferences();
+ } else if (mShare.getView() == v) {
+ mUiController.shareCurrentPage();
+ } else if (mInfo.getView() == v) {
+ mUiController.showPageInfo();
+ } else if (mFind.getView() == v) {
+ mUiController.findOnPage();
+ } else if (mRDS.getView() == v) {
+ mUiController.toggleUserAgent();
+ }
+ }
+
+ private void buildTabs() {
+ final List<Tab> tabs = mUiController.getTabs();
+ mUi.getActiveTab().capture();
+ mTabAdapter.setTabs(tabs);
+ PieStackView sym = (PieStackView) mShowTabs.getPieView();
+ sym.setCurrent(mUiController.getTabControl().getCurrentPosition());
+ }
+
+ protected PieItem makeItem(int image, int l) {
+ ImageView view = new ImageView(mActivity);
+ view.setImageResource(image);
+ view.setMinimumWidth(mItemSize);
+ view.setMinimumHeight(mItemSize);
+ view.setScaleType(ScaleType.CENTER);
+ LayoutParams lp = new LayoutParams(mItemSize, mItemSize);
+ view.setLayoutParams(lp);
+ return new PieItem(view, l);
+ }
+
+ protected PieItem makeFiller() {
+ return new PieItem(null, 1);
+ }
+
+ protected View makeTabsView() {
+ View v = mActivity.getLayoutInflater().inflate(R.layout.qc_tabs_view, null);
+ mTabsCount = (TextView) v.findViewById(R.id.label);
+ mTabsCount.setText("1");
+ ImageView image = (ImageView) v.findViewById(R.id.icon);
+ image.setImageResource(R.drawable.ic_windows_holo_dark);
+ image.setScaleType(ScaleType.CENTER);
+ LayoutParams lp = new LayoutParams(mItemSize, mItemSize);
+ v.setLayoutParams(lp);
+ return v;
+ }
+
+ static class TabAdapter extends BaseAdapter implements OnCurrentListener {
+
+ LayoutInflater mInflater;
+ UiController mUiController;
+ private List<Tab> mTabs;
+ private int mCurrent;
+
+ public TabAdapter(Context ctx, UiController ctl) {
+ mInflater = LayoutInflater.from(ctx);
+ mUiController = ctl;
+ mTabs = new ArrayList<Tab>();
+ mCurrent = -1;
+ }
+
+ public void setTabs(List<Tab> tabs) {
+ mTabs = tabs;
+ notifyDataSetChanged();
+ }
+
+ @Override
+ public int getCount() {
+ return mTabs.size();
+ }
+
+ @Override
+ public Tab getItem(int position) {
+ return mTabs.get(position);
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ final Tab tab = mTabs.get(position);
+ View view = mInflater.inflate(R.layout.qc_tab,
+ null);
+ ImageView thumb = (ImageView) view.findViewById(R.id.thumb);
+ TextView title1 = (TextView) view.findViewById(R.id.title1);
+ TextView title2 = (TextView) view.findViewById(R.id.title2);
+ Bitmap b = tab.getScreenshot();
+ if (b != null) {
+ thumb.setImageBitmap(b);
+ }
+ if (position > mCurrent) {
+ title1.setVisibility(View.GONE);
+ title2.setText(tab.getTitle());
+ } else {
+ title2.setVisibility(View.GONE);
+ title1.setText(tab.getTitle());
+ }
+ view.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ mUiController.switchToTab(tab);
+ }
+ });
+ return view;
+ }
+
+ @Override
+ public void onSetCurrent(int index) {
+ mCurrent = index;
+ }
+
+ }
+
+}
diff --git a/src/com/android/browser/PieControlBase.java b/src/com/android/browser/PieControlBase.java
deleted file mode 100644
index 830afea..0000000
--- a/src/com/android/browser/PieControlBase.java
+++ /dev/null
@@ -1,187 +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.Context;
-import android.graphics.Bitmap;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.view.ViewGroup.LayoutParams;
-import android.widget.BaseAdapter;
-import android.widget.FrameLayout;
-import android.widget.ImageView;
-import android.widget.ImageView.ScaleType;
-import android.widget.TextView;
-
-import com.android.browser.view.PieItem;
-import com.android.browser.view.PieMenu;
-import com.android.browser.view.PieStackView.OnCurrentListener;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * base controller for Quick Controls pie menu
- */
-public abstract class PieControlBase implements PieMenu.PieController {
-
- protected Activity mActivity;
- protected UiController mUiController;
- protected PieMenu mPie;
- protected int mItemSize;
- protected TextView mTabsCount;
-
- public PieControlBase(Activity activity, UiController controller) {
- mActivity = activity;
- mUiController = controller;
- mItemSize = (int) activity.getResources().getDimension(R.dimen.qc_item_size);
- }
-
- protected void attachToContainer(FrameLayout container) {
- if (mPie == null) {
- mPie = new PieMenu(mActivity);
- LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT,
- LayoutParams.MATCH_PARENT);
- mPie.setLayoutParams(lp);
- populateMenu();
- mPie.setController(this);
- }
- container.addView(mPie);
- }
-
- protected void removeFromContainer(FrameLayout container) {
- container.removeView(mPie);
- }
-
- protected void forceToTop(FrameLayout container) {
- if (mPie.getParent() != null) {
- container.removeView(mPie);
- container.addView(mPie);
- }
- }
-
- protected abstract void populateMenu();
-
- protected void setClickListener(OnClickListener listener, PieItem... items) {
- for (PieItem item : items) {
- item.getView().setOnClickListener(listener);
- }
- }
-
- @Override
- public boolean onOpen() {
- int n = mUiController.getTabControl().getTabCount();
- mTabsCount.setText(Integer.toString(n));
- return true;
- }
-
- protected PieItem makeItem(int image, int l) {
- ImageView view = new ImageView(mActivity);
- view.setImageResource(image);
- view.setMinimumWidth(mItemSize);
- view.setMinimumHeight(mItemSize);
- view.setScaleType(ScaleType.CENTER);
- LayoutParams lp = new LayoutParams(mItemSize, mItemSize);
- view.setLayoutParams(lp);
- return new PieItem(view, l);
- }
-
- protected View makeTabsView() {
- View v = mActivity.getLayoutInflater().inflate(R.layout.qc_tabs_view, null);
- mTabsCount = (TextView) v.findViewById(R.id.label);
- mTabsCount.setText("1");
- ImageView image = (ImageView) v.findViewById(R.id.icon);
- image.setImageResource(R.drawable.ic_windows_holo_dark);
- image.setScaleType(ScaleType.CENTER);
- LayoutParams lp = new LayoutParams(mItemSize, mItemSize);
- v.setLayoutParams(lp);
- return v;
- }
-
- static class TabAdapter extends BaseAdapter implements OnCurrentListener {
-
- LayoutInflater mInflater;
- UiController mUiController;
- private List<Tab> mTabs;
- private int mCurrent;
-
- public TabAdapter(Context ctx, UiController ctl) {
- mInflater = LayoutInflater.from(ctx);
- mUiController = ctl;
- mTabs = new ArrayList<Tab>();
- mCurrent = -1;
- }
-
- public void setTabs(List<Tab> tabs) {
- mTabs = tabs;
- notifyDataSetChanged();
- }
-
- @Override
- public int getCount() {
- return mTabs.size();
- }
-
- @Override
- public Tab getItem(int position) {
- return mTabs.get(position);
- }
-
- @Override
- public long getItemId(int position) {
- return position;
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- final Tab tab = mTabs.get(position);
- View view = mInflater.inflate(R.layout.qc_tab,
- null);
- ImageView thumb = (ImageView) view.findViewById(R.id.thumb);
- TextView title1 = (TextView) view.findViewById(R.id.title1);
- TextView title2 = (TextView) view.findViewById(R.id.title2);
- Bitmap b = tab.getScreenshot();
- if (b != null) {
- thumb.setImageBitmap(b);
- }
- if (position > mCurrent) {
- title1.setVisibility(View.GONE);
- title2.setText(tab.getTitle());
- } else {
- title2.setVisibility(View.GONE);
- title1.setText(tab.getTitle());
- }
- view.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- mUiController.switchToTab(tab);
- }
- });
- return view;
- }
-
- @Override
- public void onSetCurrent(int index) {
- mCurrent = index;
- }
-
- }
-
-}
diff --git a/src/com/android/browser/PieControlPhone.java b/src/com/android/browser/PieControlPhone.java
deleted file mode 100644
index 2b6a3c5..0000000
--- a/src/com/android/browser/PieControlPhone.java
+++ /dev/null
@@ -1,123 +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.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.PopupMenu;
-import android.widget.PopupMenu.OnMenuItemClickListener;
-
-import com.android.browser.UI.ComboViews;
-import com.android.browser.view.PieItem;
-import com.android.browser.view.PieMenu.PieView.OnLayoutListener;
-import com.android.browser.view.PieStackView;
-
-import java.util.List;
-
-/**
- * controller for Quick Controls pie menu
- */
-public class PieControlPhone extends PieControlBase implements OnClickListener,
- OnMenuItemClickListener {
-
- private PhoneUi mUi;
- private PieItem mUrl;
- private PieItem mShowTabs;
- private PieItem mOptions;
- private PieItem mNewTab;
- private PieItem mBookmarks;
- private TabAdapter mTabAdapter;
- private PopupMenu mPopup;
-
- public PieControlPhone(Activity activity, UiController controller, PhoneUi ui) {
- super(activity, controller);
- mUi = ui;
- }
-
- protected void populateMenu() {
- mUrl = makeItem(R.drawable.ic_web_holo_dark, 1);
- View tabs = makeTabsView();
- mShowTabs = new PieItem(tabs, 1);
- mTabAdapter = new TabAdapter(mActivity, mUiController);
- PieStackView stack = new PieStackView(mActivity);
- stack.setLayoutListener(new OnLayoutListener() {
- @Override
- public void onLayout(int ax, int ay, boolean left) {
- buildTabs();
- }
- });
- stack.setOnCurrentListener(mTabAdapter);
- stack.setAdapter(mTabAdapter);
- mShowTabs.setPieView(stack);
- mOptions = makeItem(com.android.internal.R.drawable.ic_menu_moreoverflow_normal_holo_dark,
- 1);
-
- // level 1
- mNewTab = makeItem(R.drawable.ic_new_window_holo_dark, 1);
- mBookmarks = makeItem(R.drawable.ic_bookmarks_holo_dark, 1);
- mPie.addItem(mNewTab);
- mPie.addItem(mShowTabs);
- mPie.addItem(mUrl);
- mPie.addItem(mBookmarks);
- mPie.addItem(mOptions);
- setClickListener(this, mUrl, mShowTabs, mOptions, mNewTab, mBookmarks);
- mPopup = new PopupMenu(mActivity, mUi.getTitleBar());
- Menu menu = mPopup.getMenu();
- mPopup.getMenuInflater().inflate(R.menu.browser, menu);
- mPopup.setOnMenuItemClickListener(this);
- }
-
- protected void showMenu() {
- mUiController.updateMenuState(mUiController.getCurrentTab(), mPopup.getMenu());
- mPopup.show();
- }
-
- @Override
- public boolean onMenuItemClick(MenuItem item) {
- return mUiController.onOptionsItemSelected(item);
- }
-
-
- private void buildTabs() {
- final List<Tab> tabs = mUiController.getTabs();
- mUi.getActiveTab().capture();
- mTabAdapter.setTabs(tabs);
- PieStackView sym = (PieStackView) mShowTabs.getPieView();
- sym.setCurrent(mUiController.getTabControl().getCurrentPosition());
-
- }
-
- @Override
- public void onClick(View v) {
- if (mUrl.getView() == v) {
- mUi.editUrl(false);
- } else if (mShowTabs.getView() == v) {
- mUi.showNavScreen();
- } else if (mOptions.getView() == v) {
- showMenu();
- } else if (mNewTab.getView() == v) {
- mUiController.openTabToHomePage();
- mUi.editUrl(false);
- } else if (mBookmarks.getView() == v) {
- mUiController.bookmarksOrHistoryPicker(ComboViews.Bookmarks);
- }
- }
-
-}
diff --git a/src/com/android/browser/PieControlXLarge.java b/src/com/android/browser/PieControlXLarge.java
deleted file mode 100644
index fcc8840..0000000
--- a/src/com/android/browser/PieControlXLarge.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * Copyright (C) 2010 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.Context;
-import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.view.ViewGroup.LayoutParams;
-import android.webkit.WebView;
-import android.widget.BaseAdapter;
-import android.widget.FrameLayout;
-import android.widget.TextView;
-
-import com.android.browser.UI.ComboViews;
-import com.android.browser.view.PieItem;
-import com.android.browser.view.PieListView;
-import com.android.browser.view.PieMenu.PieView.OnLayoutListener;
-import com.android.browser.view.PieStackView;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * controller for Quick Controls pie menu
- */
-public class PieControlXLarge extends PieControlBase implements OnClickListener {
-
- private BaseUi mUi;
- private PieItem mBack;
- private PieItem mForward;
- private PieItem mRefresh;
- private PieItem mUrl;
- private PieItem mOptions;
- private PieItem mBookmarks;
- private PieItem mNewTab;
- private PieItem mClose;
- private MenuAdapter mMenuAdapter;
- private PieItem mShowTabs;
- private TabAdapter mTabAdapter;
-
- public PieControlXLarge(Activity activity, UiController controller, BaseUi ui) {
- super(activity, controller);
- mUiController = controller;
- mUi = ui;
- }
-
- @Override
- protected void attachToContainer(FrameLayout container) {
- super.attachToContainer(container);
- mPie.setUseBackground(true);
- }
-
- protected void populateMenu() {
- mBack = makeItem(R.drawable.ic_back_holo_dark, 1);
- mUrl = makeItem(R.drawable.ic_web_holo_dark, 1);
- mBookmarks = makeItem(R.drawable.ic_bookmarks_holo_dark, 1);
- mRefresh = makeItem(R.drawable.ic_refresh_holo_dark, 2);
- mForward = makeItem(R.drawable.ic_forward_holo_dark, 2);
- mNewTab = makeItem(R.drawable.ic_new_window_holo_dark, 2);
- mClose = makeItem(R.drawable.ic_close_window_holo_dark, 2);
- View tabs = makeTabsView();
- mShowTabs = new PieItem(tabs, 2);
- mOptions = makeItem(com.android.internal.R.drawable.ic_menu_moreoverflow_normal_holo_dark,
- 2);
- mMenuAdapter = new MenuAdapter(mActivity, mUiController);
- mTabAdapter = new TabAdapter(mActivity, mUiController);
- PieStackView stack = new PieStackView(mActivity);
- stack.setLayoutListener(new OnLayoutListener() {
- @Override
- public void onLayout(int ax, int ay, boolean left) {
- buildTabs();
- }
- });
- stack.setOnCurrentListener(mTabAdapter);
- stack.setAdapter(mTabAdapter);
- mShowTabs.setPieView(stack);
- PieListView menuview = new PieListView(mActivity);
- menuview.setLayoutListener(new OnLayoutListener() {
- @Override
- public void onLayout(int ax, int ay, boolean left) {
- buildMenu();
- }
- });
-
- mOptions.setPieView(menuview);
- menuview.setAdapter(mMenuAdapter);
- setClickListener(this, mBack, mRefresh, mForward, mUrl, mBookmarks, mNewTab,
- mClose);
- // level 1
- mPie.addItem(mBack);
- mPie.addItem(mUrl);
- mPie.addItem(mBookmarks);
- // level 2
- mPie.addItem(mForward);
- mPie.addItem(mRefresh);
- mPie.addItem(mOptions);
- mPie.addItem(mShowTabs);
- mPie.addItem(mNewTab);
- mPie.addItem(mClose);
- }
-
- private void buildTabs() {
- final List<Tab> tabs = mUiController.getTabs();
- mUi.getActiveTab().capture();
- mTabAdapter.setTabs(tabs);
- PieStackView sym = (PieStackView) mShowTabs.getPieView();
- sym.setCurrent(mUiController.getTabControl().getCurrentPosition());
- }
-
- private void buildMenu() {
- Menu menu = mUi.getMenu();
- menu.setGroupVisible(R.id.NAV_MENU, false);
- mMenuAdapter.setMenu(menu);
- }
-
- @Override
- public void onClick(View v) {
- Tab tab = mUiController.getTabControl().getCurrentTab();
- WebView web = tab.getWebView();
- if (mBack.getView() == v) {
- tab.goBack();
- } else if (mForward.getView() == v) {
- tab.goForward();
- } else if (mRefresh.getView() == v) {
- if (tab.inPageLoad()) {
- web.stopLoading();
- } else {
- web.reload();
- }
- } else if (mUrl.getView() == v) {
- mUi.editUrl(false);
- } else if (mBookmarks.getView() == v) {
- mUiController.bookmarksOrHistoryPicker(ComboViews.Bookmarks);
- } else if (mNewTab.getView() == v) {
- mUiController.openTabToHomePage();
- mUi.editUrl(false);
- } else if (mClose.getView() == v) {
- mUiController.closeCurrentTab();
- }
- }
-
- private static class MenuAdapter extends BaseAdapter
- implements OnClickListener {
-
- List<MenuItem> mItems;
- UiController mUiController;
- LayoutInflater mInflater;
-
- public MenuAdapter(Context ctx, UiController ctl) {
- mUiController = ctl;
- mInflater = LayoutInflater.from(ctx);
- mItems = new ArrayList<MenuItem>();
- }
-
- public void setMenu(Menu menu) {
- mItems.clear();
- for (int i = 0; i < menu.size(); i++) {
- MenuItem item = menu.getItem(i);
- if (item.isEnabled() && item.isVisible()) {
- mItems.add(item);
- }
- }
- notifyDataSetChanged();
- }
-
- @Override
- public int getCount() {
- return mItems.size();
- }
-
- @Override
- public MenuItem getItem(int position) {
- return mItems.get(position);
- }
-
- @Override
- public long getItemId(int position) {
- return position;
- }
-
- @Override
- public void onClick(View v) {
- if (v.getTag() != null) {
- mUiController.onOptionsItemSelected((MenuItem) v.getTag());
- }
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- final MenuItem item = mItems.get(position);
- View view = mInflater.inflate(
- R.layout.qc_menu_item, null);
- TextView label =
- (TextView) view.findViewById(R.id.title);
- label.setText(item.getTitle());
- label.setTag(item);
- label.setOnClickListener(this);
- label.setLayoutParams(new LayoutParams(240, 32));
- return label;
- }
-
- }
-
-}
diff --git a/src/com/android/browser/PreloadController.java b/src/com/android/browser/PreloadController.java
index 5de5be0..0efe119 100644
--- a/src/com/android/browser/PreloadController.java
+++ b/src/com/android/browser/PreloadController.java
@@ -214,7 +214,7 @@
}
@Override
- public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) {
+ public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {
if (LOGD_ENABLED) Log.d(LOGTAG, "openFileChooser()");
}
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index cfbd88a..9b5a675 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -1234,9 +1234,9 @@
}
@Override
- public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) {
+ public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {
if (mInForeground) {
- mWebViewController.openFileChooser(uploadMsg, acceptType);
+ mWebViewController.openFileChooser(uploadMsg, acceptType, capture);
} else {
uploadMsg.onReceiveValue(null);
}
diff --git a/src/com/android/browser/UiController.java b/src/com/android/browser/UiController.java
index e7a8953..46c0432 100644
--- a/src/com/android/browser/UiController.java
+++ b/src/com/android/browser/UiController.java
@@ -65,6 +65,8 @@
void bookmarksOrHistoryPicker(ComboViews startView);
+ void bookmarkCurrentPage();
+
void startVoiceSearch();
boolean supportsVoiceSearch();
@@ -103,4 +105,10 @@
void showPageInfo();
+ void openPreferences();
+
+ void findOnPage();
+
+ void toggleUserAgent();
+
}
diff --git a/src/com/android/browser/UploadHandler.java b/src/com/android/browser/UploadHandler.java
index 5947e4a..a9560bb 100644
--- a/src/com/android/browser/UploadHandler.java
+++ b/src/com/android/browser/UploadHandler.java
@@ -90,7 +90,7 @@
mCaughtActivityNotFoundException = false;
}
- void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) {
+ void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {
final String imageMimeType = "image/*";
final String videoMimeType = "video/*";
@@ -102,8 +102,8 @@
final String mediaSourceValueMicrophone = "microphone";
// According to the spec, media source can be 'filesystem' or 'camera' or 'camcorder'
- // or 'microphone'.
- String mediaSource = "";
+ // or 'microphone' and the default value should be 'filesystem'.
+ String mediaSource = mediaSourceValueFileSystem;
if (mUploadMessage != null) {
// Already a file picker operation in progress.
@@ -116,12 +116,22 @@
String params[] = acceptType.split(";");
String mimeType = params[0];
- for (String p : params) {
- String[] keyValue = p.split("=");
- if (keyValue.length == 2) {
- // Process key=value parameters.
- if (mediaSourceKey.equals(keyValue[0])) {
- mediaSource = keyValue[1];
+ if (capture.length() > 0) {
+ mediaSource = capture;
+ }
+
+ if (capture.equals(mediaSourceValueFileSystem)) {
+ // To maintain backwards compatibility with the previous implementation
+ // of the media capture API, if the value of the 'capture' attribute is
+ // "filesystem", we should examine the accept-type for a MIME type that
+ // may specify a different capture value.
+ for (String p : params) {
+ String[] keyValue = p.split("=");
+ if (keyValue.length == 2) {
+ // Process key=value parameters.
+ if (mediaSourceKey.equals(keyValue[0])) {
+ mediaSource = keyValue[1];
+ }
}
}
}
@@ -135,14 +145,10 @@
// camera directly.
startActivity(createCameraIntent());
return;
- } else if (mediaSource.equals(mediaSourceValueFileSystem)) {
- // Specified 'image/*' and requested the filesystem, so go ahead and launch an
- // OPENABLE intent.
- startActivity(createOpenableIntent(imageMimeType));
- return;
} else {
- // Specified just 'image/*', so launch an intent for both the Camera and image/*
- // OPENABLE.
+ // Specified just 'image/*', capture=filesystem, or an invalid capture parameter.
+ // In all these cases we show a traditional picker filetered on accept type
+ // so launch an intent for both the Camera and image/* OPENABLE.
Intent chooser = createChooserIntent(createCameraIntent());
chooser.putExtra(Intent.EXTRA_INTENT, createOpenableIntent(imageMimeType));
startActivity(chooser);
@@ -154,14 +160,10 @@
// camcorder directly.
startActivity(createCamcorderIntent());
return;
- } else if (mediaSource.equals(mediaSourceValueFileSystem)) {
- // Specified 'video/*' and requested the filesystem, so go ahead and launch an
- // an OPENABLE intent.
- startActivity(createOpenableIntent(videoMimeType));
- return;
- } else {
- // Specified just 'video/*', so go ahead and launch an intent for both camcorder and
- // video/* OPENABLE.
+ } else {
+ // Specified just 'video/*', capture=filesystem or an invalid capture parameter.
+ // In all these cases we show an intent for the traditional file picker, filtered
+ // on accept type so launch an intent for both camcorder and video/* OPENABLE.
Intent chooser = createChooserIntent(createCamcorderIntent());
chooser.putExtra(Intent.EXTRA_INTENT, createOpenableIntent(videoMimeType));
startActivity(chooser);
@@ -173,13 +175,9 @@
// recorder.
startActivity(createSoundRecorderIntent());
return;
- } else if (mediaSource.equals(mediaSourceValueFileSystem)) {
- // Specified 'audio/*' and requested filesystem, so go ahead and launch an
- // OPENABLE intent.
- startActivity(createOpenableIntent(audioMimeType));
- return;
} else {
- // Specified just 'audio/*', so go ahead and launch an intent for both the sound
+ // Specified just 'audio/*', capture=filesystem of an invalid capture parameter.
+ // In all these cases so go ahead and launch an intent for both the sound
// recorder and audio/* OPENABLE.
Intent chooser = createChooserIntent(createSoundRecorderIntent());
chooser.putExtra(Intent.EXTRA_INTENT, createOpenableIntent(audioMimeType));
diff --git a/src/com/android/browser/UrlInputView.java b/src/com/android/browser/UrlInputView.java
index 3c0de30..2f0c6a8 100644
--- a/src/com/android/browser/UrlInputView.java
+++ b/src/com/android/browser/UrlInputView.java
@@ -246,11 +246,6 @@
showDropDown();
}
- void forceIme() {
- mInputManager.focusIn(this);
- mInputManager.showSoftInput(this, 0);
- }
-
void hideIME() {
mInputManager.hideSoftInputFromWindow(getWindowToken(), 0);
}
diff --git a/src/com/android/browser/WebViewController.java b/src/com/android/browser/WebViewController.java
index 20027e0..30eec4f 100644
--- a/src/com/android/browser/WebViewController.java
+++ b/src/com/android/browser/WebViewController.java
@@ -97,7 +97,7 @@
void onUpdatedSecurityState(Tab tab);
- void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType);
+ void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture);
void endActionMode();
diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java
index b372fab..391b83e 100644
--- a/src/com/android/browser/XLargeUi.java
+++ b/src/com/android/browser/XLargeUi.java
@@ -50,7 +50,7 @@
private NavigationBarTablet mNavBar;
- private PieControlXLarge mPieControl;
+ private PieControl mPieControl;
private Handler mHandler;
/**
@@ -86,7 +86,7 @@
mTitleBar.setUseQuickControls(mUseQuickControls);
if (useQuickControls) {
checkTabCount();
- mPieControl = new PieControlXLarge(mActivity, mUiController, this);
+ mPieControl = new PieControl(mActivity, mUiController, this);
mPieControl.attachToContainer(mContentView);
} else {
mActivity.getActionBar().show();
@@ -230,10 +230,6 @@
super.editUrl(clearInput);
}
- void stopEditingUrl() {
- mTitleBar.getNavigationBar().stopEditingUrl();
- }
-
@Override
protected void showTitleBar() {
if (canShowTitleBar()) {
diff --git a/src/com/android/browser/homepages/RequestHandler.java b/src/com/android/browser/homepages/RequestHandler.java
index b3a03b9..13b52e3 100644
--- a/src/com/android/browser/homepages/RequestHandler.java
+++ b/src/com/android/browser/homepages/RequestHandler.java
@@ -37,6 +37,8 @@
import java.io.OutputStream;
import java.text.DateFormat;
import java.text.DecimalFormat;
+import java.util.Arrays;
+import java.util.Comparator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -140,9 +142,20 @@
t.write(mOutput);
}
+ private static final Comparator<File> sFileComparator = new Comparator<File>() {
+ @Override
+ public int compare(File lhs, File rhs) {
+ if (lhs.isDirectory() != rhs.isDirectory()) {
+ return lhs.isDirectory() ? -1 : 1;
+ }
+ return lhs.getName().compareTo(rhs.getName());
+ }
+ };
+
void writeFolderIndex() throws IOException {
File f = new File(mUri.getPath());
final File[] files = f.listFiles();
+ Arrays.sort(files, sFileComparator);
Template t = Template.getCachedTemplate(mContext, R.raw.folder_view);
t.assign("path", mUri.getPath());
t.assign("parent_url", f.getParent() != null ? f.getParent() : f.getPath());
diff --git a/src/com/android/browser/provider/BrowserProvider2.java b/src/com/android/browser/provider/BrowserProvider2.java
index 6121abc..a66c333 100644
--- a/src/com/android/browser/provider/BrowserProvider2.java
+++ b/src/com/android/browser/provider/BrowserProvider2.java
@@ -284,6 +284,17 @@
" FROM " + TABLE_BOOKMARKS + " A WHERE " +
"A." + Bookmarks._ID + "=" + TABLE_BOOKMARKS + "." + Bookmarks.INSERT_AFTER +
") AS " + Bookmarks.INSERT_AFTER_SOURCE_ID);
+ map.put(Bookmarks.TYPE, "CASE "
+ + " WHEN " + Bookmarks.IS_FOLDER + "=0 THEN "
+ + Bookmarks.BOOKMARK_TYPE_BOOKMARK
+ + " WHEN " + ChromeSyncColumns.SERVER_UNIQUE + "='"
+ + ChromeSyncColumns.FOLDER_NAME_BOOKMARKS_BAR + "' THEN "
+ + Bookmarks.BOOKMARK_TYPE_BOOKMARK_BAR_FOLDER
+ + " WHEN " + ChromeSyncColumns.SERVER_UNIQUE + "='"
+ + ChromeSyncColumns.FOLDER_NAME_OTHER_BOOKMARKS + "' THEN "
+ + Bookmarks.BOOKMARK_TYPE_OTHER_FOLDER
+ + " ELSE " + Bookmarks.BOOKMARK_TYPE_FOLDER
+ + " END AS " + Bookmarks.TYPE);
// Other bookmarks
OTHER_BOOKMARKS_PROJECTION_MAP.putAll(BOOKMARKS_PROJECTION_MAP);
diff --git a/src/com/android/browser/view/PieItem.java b/src/com/android/browser/view/PieItem.java
index 3674447..9e04ecb 100644
--- a/src/com/android/browser/view/PieItem.java
+++ b/src/com/android/browser/view/PieItem.java
@@ -16,10 +16,12 @@
package com.android.browser.view;
+import android.view.View;
+
import com.android.browser.view.PieMenu.PieView;
-import android.graphics.Path;
-import android.view.View;
+import java.util.ArrayList;
+import java.util.List;
/**
* Pie menu item
@@ -31,20 +33,66 @@
private int level;
private float start;
private float sweep;
+ private float animate;
private int inner;
private int outer;
private boolean mSelected;
- private Path mPath;
+ private boolean mEnabled;
+ private List<PieItem> mItems;
public PieItem(View view, int level) {
mView = view;
this.level = level;
+ mEnabled = true;
+ setAnimationAngle(getAnimationAngle());
+ setAlpha(getAlpha());
}
public PieItem(View view, int level, PieView sym) {
mView = view;
this.level = level;
mPieView = sym;
+ mEnabled = false;
+ }
+
+ public boolean hasItems() {
+ return mItems != null;
+ }
+
+ public List<PieItem> getItems() {
+ return mItems;
+ }
+
+ public void addItem(PieItem item) {
+ if (mItems == null) {
+ mItems = new ArrayList<PieItem>();
+ }
+ mItems.add(item);
+ }
+
+ public void setAlpha(float alpha) {
+ if (mView != null) {
+ mView.setAlpha(alpha);
+ }
+ }
+
+ public float getAlpha() {
+ if (mView != null) {
+ return mView.getAlpha();
+ }
+ return 1;
+ }
+
+ public void setAnimationAngle(float a) {
+ animate = a;
+ }
+
+ public float getAnimationAngle() {
+ return animate;
+ }
+
+ public void setEnabled(boolean enabled) {
+ mEnabled = enabled;
}
public void setSelected(boolean s) {
@@ -62,16 +110,19 @@
return level;
}
- public void setGeometry(float st, float sw, int inside, int outside, Path p) {
+ public void setGeometry(float st, float sw, int inside, int outside) {
start = st;
sweep = sw;
inner = inside;
outer = outside;
- mPath = p;
+ }
+
+ public float getStart() {
+ return start;
}
public float getStartAngle() {
- return start;
+ return start + animate;
}
public float getSweep() {
@@ -99,11 +150,10 @@
}
public PieView getPieView() {
- return mPieView;
- }
-
- public Path getPath() {
- return mPath;
+ if (mEnabled) {
+ return mPieView;
+ }
+ return null;
}
}
diff --git a/src/com/android/browser/view/PieMenu.java b/src/com/android/browser/view/PieMenu.java
index 7f8dd6b..1fd0e99 100644
--- a/src/com/android/browser/view/PieMenu.java
+++ b/src/com/android/browser/view/PieMenu.java
@@ -16,8 +16,11 @@
package com.android.browser.view;
-import com.android.browser.R;
-
+import android.animation.Animator;
+import android.animation.Animator.AnimatorListener;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.ValueAnimator;
+import android.animation.ValueAnimator.AnimatorUpdateListener;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Canvas;
@@ -34,12 +37,15 @@
import android.view.ViewGroup;
import android.widget.FrameLayout;
+import com.android.browser.R;
+
import java.util.ArrayList;
import java.util.List;
public class PieMenu extends FrameLayout {
private static final int MAX_LEVELS = 5;
+ private static final long ANIMATION = 80;
public interface PieController {
/**
@@ -47,6 +53,8 @@
* returns if pie state has been changed
*/
public boolean onOpen();
+ public void stopEditingUrl();
+
}
/**
@@ -74,6 +82,7 @@
private int mRadiusInc;
private int mSlop;
private int mTouchOffset;
+ private Path mPath;
private boolean mOpen;
private PieController mController;
@@ -83,14 +92,20 @@
private int[] mCounts;
private PieView mPieView = null;
+ // sub menus
+ private List<PieItem> mCurrentItems;
+ private PieItem mOpenItem;
+
private Drawable mBackground;
private Paint mNormalPaint;
private Paint mSelectedPaint;
+ private Paint mSubPaint;
// touch handling
- PieItem mCurrentItem;
+ private PieItem mCurrentItem;
private boolean mUseBackground;
+ private boolean mAnimating;
/**
* @param context
@@ -139,6 +154,9 @@
mSelectedPaint = new Paint();
mSelectedPaint.setColor(res.getColor(R.color.qc_selected));
mSelectedPaint.setAntiAlias(true);
+ mSubPaint = new Paint();
+ mSubPaint.setAntiAlias(true);
+ mSubPaint.setColor(res.getColor(R.color.qc_sub));
}
public void setController(PieController ctl) {
@@ -176,18 +194,39 @@
private void show(boolean show) {
mOpen = show;
if (mOpen) {
+ mController.stopEditingUrl();
+ mCurrentItems = mItems;
if (mController != null) {
boolean changed = mController.onOpen();
}
layoutPie();
+ animateOpen();
}
if (!show) {
+ mAnimating = false;
mCurrentItem = null;
+ mOpenItem = null;
mPieView = null;
}
invalidate();
}
+ private void animateOpen() {
+ ValueAnimator anim = ValueAnimator.ofFloat(0, 1);
+ anim.addUpdateListener(new AnimatorUpdateListener() {
+ @Override
+ public void onAnimationUpdate(ValueAnimator animation) {
+ for (PieItem item : mCurrentItems) {
+ item.setAnimationAngle((1 - animation.getAnimatedFraction()) * (- item.getStart()));
+ }
+ invalidate();
+ }
+
+ });
+ anim.setDuration(2*ANIMATION);
+ anim.start();
+ }
+
private void setCenter(int x, int y) {
if (x < mSlop) {
mCenter.x = 0;
@@ -202,33 +241,32 @@
int rgap = 2;
int inner = mRadius + rgap;
int outer = mRadius + mRadiusInc - rgap;
- int radius = mRadius;
int gap = 1;
for (int i = 0; i < mLevels; i++) {
int level = i + 1;
float sweep = (float) (Math.PI - 2 * emptyangle) / mCounts[level];
float angle = emptyangle + sweep / 2;
- for (PieItem item : mItems) {
+ mPath = makeSlice(getDegrees(0) - gap, getDegrees(sweep) + gap, outer, inner, mCenter);
+ for (PieItem item : mCurrentItems) {
if (item.getLevel() == level) {
View view = item.getView();
- view.measure(view.getLayoutParams().width,
- view.getLayoutParams().height);
- int w = view.getMeasuredWidth();
- int h = view.getMeasuredHeight();
- int r = inner + (outer - inner) * 2 / 3;
- int x = (int) (r * Math.sin(angle));
- int y = mCenter.y - (int) (r * Math.cos(angle)) - h / 2;
- if (onTheLeft()) {
- x = mCenter.x + x - w / 2;
- } else {
- x = mCenter.x - x - w / 2;
+ if (view != null) {
+ view.measure(view.getLayoutParams().width,
+ view.getLayoutParams().height);
+ int w = view.getMeasuredWidth();
+ int h = view.getMeasuredHeight();
+ int r = inner + (outer - inner) * 2 / 3;
+ int x = (int) (r * Math.sin(angle));
+ int y = mCenter.y - (int) (r * Math.cos(angle)) - h / 2;
+ if (onTheLeft()) {
+ x = mCenter.x + x - w / 2;
+ } else {
+ x = mCenter.x - x - w / 2;
+ }
+ view.layout(x, y, x + w, y + h);
}
- view.layout(x, y, x + w, y + h);
float itemstart = angle - sweep / 2;
- Path slice = makeSlice(getDegrees(itemstart) - gap,
- getDegrees(itemstart + sweep) + gap,
- outer, inner, mCenter);
- item.setGeometry(itemstart, sweep, inner, outer, slice);
+ item.setGeometry(itemstart, sweep, inner, outer);
angle += sweep;
}
}
@@ -266,15 +304,18 @@
mBackground.draw(canvas);
canvas.restoreToCount(state);
}
- for (PieItem item : mItems) {
- Paint p = item.isSelected() ? mSelectedPaint : mNormalPaint;
- state = canvas.save();
- if (onTheLeft()) {
- canvas.scale(-1, 1);
+ // draw base menu
+ PieItem last = mCurrentItem;
+ if (mOpenItem != null) {
+ last = mOpenItem;
+ }
+ for (PieItem item : mCurrentItems) {
+ if (item != last) {
+ drawItem(canvas, item);
}
- drawPath(canvas, item.getPath(), p);
- canvas.restoreToCount(state);
- drawItem(canvas, item);
+ }
+ if (last != null) {
+ drawItem(canvas, last);
}
if (mPieView != null) {
mPieView.draw(canvas);
@@ -283,19 +324,26 @@
}
private void drawItem(Canvas canvas, PieItem item) {
- int outer = item.getOuterRadius();
- int left = mCenter.x - outer;
- int top = mCenter.y - outer;
- // draw the item view
- View view = item.getView();
- int state = canvas.save();
- canvas.translate(view.getX(), view.getY());
- view.draw(canvas);
- canvas.restoreToCount(state);
- }
-
- private void drawPath(Canvas canvas, Path path, Paint paint) {
- canvas.drawPath(path, paint);
+ if (item.getView() != null) {
+ Paint p = item.isSelected() ? mSelectedPaint : mNormalPaint;
+ if (!mItems.contains(item)) {
+ p = item.isSelected() ? mSelectedPaint : mSubPaint;
+ }
+ int state = canvas.save();
+ if (onTheLeft()) {
+ canvas.scale(-1, 1);
+ }
+ float r = getDegrees(item.getStartAngle()) - 270; // degrees(0)
+ canvas.rotate(r, mCenter.x, mCenter.y);
+ canvas.drawPath(mPath, p);
+ canvas.restoreToCount(state);
+ // draw the item view
+ View view = item.getView();
+ state = canvas.save();
+ canvas.translate(view.getX(), view.getY());
+ view.draw(canvas);
+ canvas.restoreToCount(state);
+ }
}
private Path makeSlice(float start, float end, int outer, int inner, Point center) {
@@ -332,9 +380,11 @@
handled = mPieView.onTouchEvent(evt);
}
PieItem item = mCurrentItem;
- deselect();
+ if (!mAnimating) {
+ deselect();
+ }
show(false);
- if (!handled && (item != null)) {
+ if (!mAnimating && !handled && (item != null) && (item.getView() != null)) {
item.getView().performClick();
}
return true;
@@ -343,9 +393,13 @@
if (mOpen) {
show(false);
}
- deselect();
+ if (!mAnimating) {
+ deselect();
+ invalidate();
+ }
return false;
} else if (MotionEvent.ACTION_MOVE == action) {
+ if (mAnimating) return false;
boolean handled = false;
PointF polar = getPolar(x, y);
int maxr = mRadius + mLevels * mRadiusInc + 50;
@@ -356,6 +410,15 @@
invalidate();
return false;
}
+ if (polar.y < mRadius) {
+ if (mOpenItem != null) {
+ closeSub();
+ } else if (!mAnimating) {
+ deselect();
+ invalidate();
+ }
+ return false;
+ }
if (polar.y > maxr) {
deselect();
show(false);
@@ -366,9 +429,10 @@
return false;
}
PieItem item = findItem(polar);
- if (mCurrentItem != item) {
+ if (item == null) {
+ } else if (mCurrentItem != item) {
onEnter(item);
- if ((item != null) && item.isPieView()) {
+ if ((item != null) && item.isPieView() && (item.getView() != null)) {
int cx = item.getView().getLeft() + (onTheLeft()
? item.getView().getWidth() : 0);
int cy = item.getView().getTop();
@@ -402,14 +466,125 @@
playSoundEffect(SoundEffectConstants.CLICK);
item.setSelected(true);
mPieView = null;
+ mCurrentItem = item;
+ if ((mCurrentItem != mOpenItem) && mCurrentItem.hasItems()) {
+ openSub(mCurrentItem);
+ mOpenItem = item;
+ }
+ } else {
+ mCurrentItem = null;
}
- mCurrentItem = item;
+
+ }
+
+ private void animateOut(final PieItem fixed, AnimatorListener listener) {
+ if ((mCurrentItems == null) || (fixed == null)) return;
+ final float target = fixed.getStartAngle();
+ ValueAnimator anim = ValueAnimator.ofFloat(0, 1);
+ anim.addUpdateListener(new AnimatorUpdateListener() {
+ @Override
+ public void onAnimationUpdate(ValueAnimator animation) {
+ for (PieItem item : mCurrentItems) {
+ if (item != fixed) {
+ item.setAnimationAngle(animation.getAnimatedFraction()
+ * (target - item.getStart()));
+ }
+ }
+ invalidate();
+ }
+ });
+ anim.setDuration(ANIMATION);
+ anim.addListener(listener);
+ anim.start();
+ }
+
+ private void animateIn(final PieItem fixed, AnimatorListener listener) {
+ if ((mCurrentItems == null) || (fixed == null)) return;
+ final float target = fixed.getStartAngle();
+ ValueAnimator anim = ValueAnimator.ofFloat(0, 1);
+ anim.addUpdateListener(new AnimatorUpdateListener() {
+ @Override
+ public void onAnimationUpdate(ValueAnimator animation) {
+ for (PieItem item : mCurrentItems) {
+ if (item != fixed) {
+ item.setAnimationAngle((1 - animation.getAnimatedFraction())
+ * (target - item.getStart()));
+ }
+ }
+ invalidate();
+
+ }
+
+ });
+ anim.setDuration(ANIMATION);
+ anim.addListener(listener);
+ anim.start();
+ }
+
+ private void openSub(final PieItem item) {
+ mAnimating = true;
+ animateOut(item, new AnimatorListenerAdapter() {
+ public void onAnimationEnd(Animator a) {
+ for (PieItem item : mCurrentItems) {
+ item.setAnimationAngle(0);
+ }
+ mCurrentItems = new ArrayList<PieItem>(mItems.size());
+ int i = 0, j = 0;
+ while (i < mItems.size()) {
+ if (mItems.get(i) == item) {
+ mCurrentItems.add(item);
+ } else {
+ mCurrentItems.add(item.getItems().get(j++));
+ }
+ i++;
+ }
+ layoutPie();
+ animateIn(item, new AnimatorListenerAdapter() {
+ public void onAnimationEnd(Animator a) {
+ for (PieItem item : mCurrentItems) {
+ item.setAnimationAngle(0);
+ }
+ mAnimating = false;
+ }
+ });
+ }
+ });
+ }
+
+ private void closeSub() {
+ mAnimating = true;
+ if (mCurrentItem != null) {
+ mCurrentItem.setSelected(false);
+ }
+ animateOut(mOpenItem, new AnimatorListenerAdapter() {
+ public void onAnimationEnd(Animator a) {
+ for (PieItem item : mCurrentItems) {
+ item.setAnimationAngle(0);
+ }
+ mCurrentItems = mItems;
+ mPieView = null;
+ animateIn(mOpenItem, new AnimatorListenerAdapter() {
+ public void onAnimationEnd(Animator a) {
+ for (PieItem item : mCurrentItems) {
+ item.setAnimationAngle(0);
+ }
+ mAnimating = false;
+ mOpenItem = null;
+ mCurrentItem = null;
+ }
+ });
+ }
+ });
}
private void deselect() {
if (mCurrentItem != null) {
mCurrentItem.setSelected(false);
}
+ if (mOpenItem != null) {
+ mOpenItem = null;
+ mCurrentItems = mItems;
+ }
mCurrentItem = null;
mPieView = null;
}
@@ -439,15 +614,19 @@
*/
private PieItem findItem(PointF polar) {
// find the matching item:
- for (PieItem item : mItems) {
- if ((item.getInnerRadius() - mTouchOffset < polar.y)
- && (item.getOuterRadius() - mTouchOffset > polar.y)
- && (item.getStartAngle() < polar.x)
- && (item.getStartAngle() + item.getSweep() > polar.x)) {
+ for (PieItem item : mCurrentItems) {
+ if (inside(polar, mTouchOffset, item)) {
return item;
}
}
return null;
}
+ private boolean inside(PointF polar, float offset, PieItem item) {
+ return (item.getInnerRadius() - offset < polar.y)
+ && (item.getOuterRadius() - offset > polar.y)
+ && (item.getStartAngle() < polar.x)
+ && (item.getStartAngle() + item.getSweep() > polar.x);
+ }
+
}
diff --git a/src/com/android/browser/view/PieStackView.java b/src/com/android/browser/view/PieStackView.java
index 16d42cb..e1f41bd 100644
--- a/src/com/android/browser/view/PieStackView.java
+++ b/src/com/android/browser/view/PieStackView.java
@@ -50,8 +50,6 @@
super.setCurrent(ix);
if (mCurrentListener != null) {
mCurrentListener.onSetCurrent(ix);
- buildViews();
- layoutChildrenLinear();
}
}
diff --git a/tests/src/com/android/browser/TestWebChromeClient.java b/tests/src/com/android/browser/TestWebChromeClient.java
index dd84b3a..e876902 100644
--- a/tests/src/com/android/browser/TestWebChromeClient.java
+++ b/tests/src/com/android/browser/TestWebChromeClient.java
@@ -197,7 +197,7 @@
/** {@inheritDoc} */
@Override
- public void openFileChooser(ValueCallback<Uri> uploadFile, String acceptType) {
- mWrappedClient.openFileChooser(uploadFile, acceptType);
+ public void openFileChooser(ValueCallback<Uri> uploadFile, String acceptType, String capture) {
+ mWrappedClient.openFileChooser(uploadFile, acceptType, capture);
}
}