am b3968bbc: Disable thumbnail view mode for most visited page.

Merge commit 'b3968bbcc96450d45bae2a667cf5ff884070fb10' into eclair-mr2

* commit 'b3968bbcc96450d45bae2a667cf5ff884070fb10':
  Disable thumbnail view mode for most visited page.
diff --git a/res/layout/title_bar.xml b/res/layout/title_bar.xml
index 1ea33fc..780c00a 100644
--- a/res/layout/title_bar.xml
+++ b/res/layout/title_bar.xml
@@ -29,6 +29,7 @@
         style="?android:attr/progressBarStyleHorizontal"
         android:layout_width="fill_parent"
         android:layout_height="5dip"
+        android:layout_marginLeft="1dip"
         android:max="100"
         />
 
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 758c3d8..851d196 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -16,8 +16,11 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Prohlížeč"</string>
-    <string name="new_tab" msgid="7971857320679510529">"Nová karta"</string>
-    <!-- no translation found for active_tabs (8423342514993323050) -->
+    <!-- no translation found for choose_upload (3649366287575002063) -->
+    <skip />
+    <!-- no translation found for new_tab (4505722538297295141) -->
+    <skip />
+    <!-- no translation found for active_tabs (3050623868203544623) -->
     <skip />
     <string name="tab_bookmarks" msgid="2305793036003473653">"Záložky"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Často navštěvované"</string>
@@ -79,7 +82,10 @@
     <string name="remove_history_item" msgid="5021424935726728618">"Odstranit z historie"</string>
     <string name="set_as_homepage" msgid="4752937379414905560">"Nastavit jako domovskou stránku"</string>
     <string name="bookmark_saved" msgid="2766434679871317557">"Uloženo do záložek."</string>
-    <string name="homepage_set" msgid="9127149128262321090">"Domovská stránka byla nastavena"</string>
+    <!-- no translation found for bookmark_not_saved (700600955089376724) -->
+    <skip />
+    <!-- no translation found for homepage_set (8768087280310966395) -->
+    <skip />
     <string name="bookmark_needs_title" msgid="6245900436119218187">"Záložka musí mít název."</string>
     <string name="bookmark_needs_url" msgid="7809876865972755158">"Záložka musí mít umístění."</string>
     <string name="empty_bookmark" msgid="7008697085928540511">"Nelze vytvořit prázdnou záložku."</string>
@@ -107,6 +113,8 @@
     <string name="shortcut_bookmark" msgid="3974876480401135895">"Přidat do záložek"</string>
     <string name="history" msgid="2451240511251410032">"Historie"</string>
     <string name="menu_view_download" msgid="2124570321712995120">"Stahování"</string>
+    <!-- no translation found for copy_page_url (7635062169011319208) -->
+    <skip />
     <string name="share_page" msgid="593756995297268343">"Sdílet stránku"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Otevřít"</string>
     <string name="contextmenu_openlink_newwindow" msgid="992765050093960353">"Otevřít v novém okně"</string>
@@ -121,38 +129,54 @@
     <string name="contextmenu_add_contact" msgid="3183511922223645716">"Přidat kontakt"</string>
     <string name="contextmenu_send_mail" msgid="1014513374828775660">"Odeslat e-mail"</string>
     <string name="contextmenu_map" msgid="7471390435434034912">"Mapa"</string>
+    <!-- no translation found for choosertitle_sharevia (4600490613341909086) -->
+    <skip />
     <string name="clear" msgid="7070043081700011461">"Vymazat"</string>
     <string name="replace" msgid="4843033491070384047">"Nahradit"</string>
     <string name="browser_bookmarks_page_bookmarks_text" msgid="6787605028726162673">"Záložky"</string>
     <string name="menu_preferences" msgid="6709237687234102240">"Nastavení"</string>
     <string name="pref_content_title" msgid="722227111894838633">"Nastavení obsahu stránky"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Načítat obrázky"</string>
-    <string name="pref_content_load_images_summary" msgid="5149716777459747214">"Zobrazovat na webových stránkách obrázky"</string>
+    <!-- no translation found for pref_content_load_images_summary (5055874125248398584) -->
+    <skip />
     <string name="pref_content_block_popups" msgid="7808433807197256726">"Blokovat vyskakovací okna"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Povolit JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Otevřít na pozadí"</string>
-    <string name="pref_content_open_in_background_summary" msgid="1543556325431215041">"Nová okna budou otevřena za aktuálním oknem"</string>
+    <!-- no translation found for pref_content_plugins (7231944644794301582) -->
+    <skip />
+    <!-- no translation found for pref_content_open_in_background_summary (1737664075721181678) -->
+    <skip />
     <string name="pref_content_homepage" msgid="6082437160778559806">"Nastavit domovskou stránku"</string>
     <string name="pref_content_autofit" msgid="8260474534053660809">"Automaticky přizpůsobit stránky"</string>
-    <string name="pref_content_autofit_summary" msgid="2358178043889761026">"Přizpůsobit velikost webových stránek obrazovce"</string>
-    <string name="pref_content_landscape_only" msgid="5863539054484585534">"Zobrazit pouze na šířku"</string>
-    <string name="pref_content_landscape_only_summary" msgid="1128170515157691793">"Stránky vždy prohlížet v zobrazení na šířku"</string>
+    <!-- no translation found for pref_content_autofit_summary (4587831659894879986) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only (2022546812766219672) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only_summary (1008238895535428855) -->
+    <skip />
     <string name="pref_privacy_title" msgid="1052470980370846151">"Nastavení ochrany osobních údajů"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Vymazat mezipaměť"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Vymazat všechen obsah a databáze uložené do místní mezipaměti"</string>
-    <string name="pref_privacy_clear_cache_dlg" msgid="1027868030632828913">"Obsah a databáze uložené do místní mezipaměti budou vymazány."</string>
+    <!-- no translation found for pref_privacy_clear_cache_dlg (5541011591300753881) -->
+    <skip />
     <string name="pref_privacy_clear_cookies" msgid="3095583579133780331">"Vymazat všechny soubory cookie"</string>
-    <string name="pref_privacy_clear_cookies_summary" msgid="8602064521480657942">"Vymazat všechny cookies"</string>
-    <string name="pref_privacy_clear_cookies_dlg" msgid="5399971428430900904">"Všechny soubory cookie budou smazány."</string>
+    <!-- no translation found for pref_privacy_clear_cookies_summary (6962742063990677520) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_cookies_dlg (552855688091432682) -->
+    <skip />
     <string name="pref_privacy_clear_history" msgid="8723795508825198477">"Vymazat historii"</string>
     <string name="pref_privacy_clear_history_summary" msgid="6868501330708940734">"Vymazat historii stránek prohlížeče"</string>
-    <string name="pref_privacy_clear_history_dlg" msgid="1433519059550861064">"Historie stránek prohlížeče bude vymazána."</string>
+    <!-- no translation found for pref_privacy_clear_history_dlg (544903007914753853) -->
+    <skip />
     <string name="pref_privacy_clear_form_data" msgid="4232668196344383987">"Vymazat data formulářů"</string>
     <string name="pref_privacy_clear_form_data_summary" msgid="1790390894719517167">"Vymazat všechna uložená data formulářů"</string>
-    <string name="pref_privacy_clear_form_data_dlg" msgid="567352105409238549">"Všechna uložená data formulářů budou vymazána."</string>
+    <!-- no translation found for pref_privacy_clear_form_data_dlg (4443621086781197928) -->
+    <skip />
     <string name="pref_privacy_clear_passwords" msgid="4750234112289277480">"Vymazat hesla"</string>
-    <string name="pref_privacy_clear_passwords_summary" msgid="1267552159370789981">"Vymazat všechna uložená hesla"</string>
-    <string name="pref_privacy_clear_passwords_dlg" msgid="8425666119003961466">"Všechna uložená hesla budou vymazána."</string>
+    <!-- no translation found for pref_privacy_clear_passwords_summary (8856782718942903335) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_passwords_dlg (2083869328824248255) -->
+    <skip />
     <string name="pref_privacy_enable_geolocation" msgid="1395040170290765686">"Povolit polohu"</string>
     <string name="pref_privacy_enable_geolocation_summary" msgid="8437020934664306205">"Povolit webovým stránkám požádat o přístup k informacím o vaší poloze"</string>
     <string name="pref_privacy_clear_geolocation_access" msgid="6649680770030042980">"Zrušit přístup k informacím o poloze"</string>
@@ -160,7 +184,8 @@
     <string name="pref_privacy_clear_geolocation_access_dlg" msgid="7327063124488827244">"Zrušit přístup k informacím o poloze pro všechny webové stránky"</string>
     <string name="pref_security_title" msgid="5763978646932160021">"Nastavení zabezpečení"</string>
     <string name="pref_security_remember_passwords" msgid="6492957683454529549">"Zapamatovat hesla"</string>
-    <string name="pref_security_remember_passwords_summary" msgid="6789880514358003065">"Ukládat uživatelská jména a hesla na webových stránkách"</string>
+    <!-- no translation found for pref_security_remember_passwords_summary (256388703356349137) -->
+    <skip />
     <string name="pref_security_save_form_data" msgid="1213669802810198893">"Zapamatovat data formuláře"</string>
     <string name="pref_security_save_form_data_summary" msgid="4994074685153708026">"Zapamatovat si data zadaná do formulářů pro další použití"</string>
     <string name="pref_security_show_security_warning" msgid="8901135676266754559">"Zobrazit upozornění zabezpečení"</string>
@@ -183,14 +208,17 @@
     <item msgid="3840999588443167001">"Blízko"</item>
   </string-array>
     <string name="pref_default_zoom_dialogtitle" msgid="6095974367125109021">"Výchozí přiblížení"</string>
-    <string name="pref_content_load_page" msgid="8834308472508060268">"Když se stránka načte:"</string>
-    <string name="pref_content_load_page_summary" msgid="3161792969308430976">"Zobrazit přehled stránky"</string>
+    <!-- no translation found for pref_content_load_page (2219810141690955452) -->
+    <skip />
+    <!-- no translation found for pref_content_load_page_summary (8792093504054149369) -->
+    <skip />
     <string name="pref_extras_title" msgid="3091250467679722382">"Upřesnit nastavení"</string>
     <string name="pref_extras_website_settings" msgid="67866640052455549">"Nastavení webových stránek"</string>
     <string name="pref_extras_website_settings_summary" msgid="3917568895776162240">"Zobrazit pokročilá nastavení pro jednotlivé webové stránky"</string>
     <string name="pref_extras_reset_default" msgid="8904000515846202110">"Obnovit výchozí"</string>
     <string name="pref_extras_reset_default_summary" msgid="7984680562706914966">"Vymazat všechna data prohlížeče a obnovit všechna nastavení na výchozí hodnoty"</string>
-    <string name="pref_extras_reset_default_dlg" msgid="5332227004054477008">"Všechna data prohlížeče budou vymazána a bude použito výchozí nastavení."</string>
+    <!-- no translation found for pref_extras_reset_default_dlg (6894807766578874830) -->
+    <skip />
     <string name="pref_extras_reset_default_dlg_title" msgid="2250334970728938936">"Obnovit výchozí"</string>
     <string name="pref_development_title" msgid="3263854204533056480">"Ladit"</string>
     <string name="pref_default_text_encoding" msgid="5742965543955558478">"Kódování textu"</string>
@@ -204,20 +232,21 @@
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Kódování textu"</string>
     <string name="pref_default_text_encoding_default" msgid="5272126711231936722">"Latin-1"</string>
     <string name="browserFrameRedirect" msgid="7049675479777828343">"Přesměrování"</string>
-    <string name="browserFrame307Post" msgid="739650008647852203">"Probíhá přesměrování webové stránky. Chcete data zadaná do formuláře znovu odeslat do nového umístění?"</string>
+    <!-- no translation found for browserFrame307Post (1429094844669510768) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problémy s datovým připojením"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problém se souborem"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Potvrdit"</string>
     <string name="browserFrameFormResubmitMessage" msgid="2752182215695632138">"Stránka, kterou se pokoušíte zobrazit, obsahuje data, která již byla odeslána (POSTDATA). Pokud data odešlete znovu, jakákoli akce vykonaná pomocí formuláře na stránce bude provedena znovu (např. hledání či nákup online)."</string>
     <string name="loadSuspendedTitle" msgid="675991625288706944">"Žádné připojení k síti"</string>
-    <!-- no translation found for loadSuspended (724674402736067146) -->
+    <!-- no translation found for loadSuspended (3133656588880851273) -->
     <skip />
     <string name="clear_history" msgid="5998307092715979619">"Vymazat historii"</string>
-    <string name="browser_history" msgid="2979476257919939232">"Nedávno navštívené stránky"</string>
+    <!-- no translation found for browser_history (1038987118290272525) -->
+    <skip />
     <string name="empty_history" msgid="8738772352308207274">"Historie prohlížeče je prázdná."</string>
     <string name="add_new_bookmark" msgid="8086367791400349049">"Přidat záložku..."</string>
     <string name="add_bookmark_short" msgid="3783984330998103735">"Přidat"</string>
-    <string name="no_database" msgid="2256698896757181084">"Databáze neexistuje."</string>
     <string name="search_hint" msgid="4647356319916631820">"Vyhledejte nebo zadejte adresu URL"</string>
     <string name="search_button_text" msgid="5235226933877634410">"Přejít"</string>
     <string name="search_settings_description" msgid="1422401062529014107">"Záložky a webová historie"</string>
@@ -257,7 +286,8 @@
     <string name="download_pending_network" msgid="6548714525679461053">"Čekání na datové připojení..."</string>
     <string name="download_running_paused" msgid="6418029352085656495">"Čekání na datové připojení..."</string>
     <string name="download_canceled" msgid="6057083743144492515">"Stahování bylo zrušeno."</string>
-    <string name="download_not_acceptable" msgid="282108828207321357">"Nelze stáhnout. Tento obsah není telefonem podporován."</string>
+    <!-- no translation found for download_not_acceptable (313769696131563652) -->
+    <skip />
     <string name="download_file_error" msgid="1206648050615176113">"Stahování nelze dokončit. Není dostatek místa."</string>
     <string name="download_length_required" msgid="9038605488460437406">"Nelze stáhnout. Velikost položky nelze určit."</string>
     <string name="download_precondition_failed" msgid="8327584102874295580">"Stahování bylo přerušeno a nelze v něm pokračovat."</string>
@@ -269,13 +299,20 @@
     <string name="webstorage_clear_data_summary" msgid="3523128713743907805">"Odebrat všechny databáze přidružené k těmto webovým stránkám"</string>
     <string name="webstorage_clear_data_dialog_title" msgid="345457466368974706">"Vymazat uložená data"</string>
     <string name="webstorage_clear_data_dialog_message" msgid="6678281256970470125">"Všechna data uložená těmito webovými stránkami budou smazána"</string>
-    <string name="webstorage_clear_data_dialog_ok_button" msgid="5074037549893407416">"Vymazat vše"</string>
+    <!-- no translation found for webstorage_clear_data_dialog_ok_button (2516563534211898636) -->
+    <skip />
     <string name="webstorage_clear_data_dialog_cancel_button" msgid="2028867751958942762">"Zrušit"</string>
     <string name="webstorage_origin_summary_mb_stored" msgid="1985885826292236210">"MB uloženo ve vašem telefonu"</string>
-    <string name="geolocation_permissions_prompt_message" msgid="2412844044592274106">"Stránky <xliff:g id="WEBPAGE">%s</xliff:g> požadují informace o vaší poloze"</string>
-    <string name="geolocation_permissions_prompt_share" msgid="6908104491085328731">"Sdílet"</string>
-    <string name="geolocation_permissions_prompt_dont_share" msgid="5962677371200773835">"Nesdílet"</string>
-    <string name="geolocation_permissions_prompt_remember" msgid="5798300962802553043">"Zapamatovat"</string>
+    <!-- no translation found for loading_video (4887871585216091096) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_message (356796102004052471) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_share (9084486342048347976) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_dont_share (6303025160237860300) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_remember (3118526300707348308) -->
+    <skip />
     <string name="geolocation_settings_page_title" msgid="1745477985097536528">"Zrušit přístup k informacím o poloze"</string>
     <string name="geolocation_settings_page_summary_allowed" msgid="9180251524290811398">"Tyto stránky mohou aktuálně získat přístup k informacím o vaší poloze"</string>
     <string name="geolocation_settings_page_summary_not_allowed" msgid="4589649082203102544">"Tyto stránky nemohou aktuálně získat přístup k informacím o vaší poloze"</string>
@@ -283,13 +320,13 @@
     <string name="geolocation_settings_page_dialog_message" msgid="7586671987576403993">"Přístup těchto webových stránek k informacím o poloze bude zrušen"</string>
     <string name="geolocation_settings_page_dialog_ok_button" msgid="4789434178048077287">"Zrušit přístup"</string>
     <string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"Zrušit"</string>
-    <!-- no translation found for website_settings_clear_all (2073906304824388952) -->
+    <!-- no translation found for website_settings_clear_all (8739804325997655980) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_title (1975103796504323734) -->
+    <!-- no translation found for website_settings_clear_all_dialog_title (7791826325122461718) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_message (6545526672017530811) -->
+    <!-- no translation found for website_settings_clear_all_dialog_message (6150502090601476333) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_ok_button (3677457125416372255) -->
+    <!-- no translation found for website_settings_clear_all_dialog_ok_button (6401582240627669431) -->
     <skip />
     <!-- no translation found for website_settings_clear_all_dialog_cancel_button (1896757051856611674) -->
     <skip />
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index e5c4ede..1d1f5e4 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -16,8 +16,11 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Browser"</string>
-    <string name="new_tab" msgid="7971857320679510529">"Ny fane"</string>
-    <!-- no translation found for active_tabs (8423342514993323050) -->
+    <!-- no translation found for choose_upload (3649366287575002063) -->
+    <skip />
+    <!-- no translation found for new_tab (4505722538297295141) -->
+    <skip />
+    <!-- no translation found for active_tabs (3050623868203544623) -->
     <skip />
     <string name="tab_bookmarks" msgid="2305793036003473653">"Bogmærker"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Mest besøgte"</string>
@@ -79,7 +82,10 @@
     <string name="remove_history_item" msgid="5021424935726728618">"Fjern fra oversigt"</string>
     <string name="set_as_homepage" msgid="4752937379414905560">"Indstil som startside"</string>
     <string name="bookmark_saved" msgid="2766434679871317557">"Gemt i bogmærker."</string>
-    <string name="homepage_set" msgid="9127149128262321090">"Startsiden er indstillet"</string>
+    <!-- no translation found for bookmark_not_saved (700600955089376724) -->
+    <skip />
+    <!-- no translation found for homepage_set (8768087280310966395) -->
+    <skip />
     <string name="bookmark_needs_title" msgid="6245900436119218187">"Bogmærke skal have et navn."</string>
     <string name="bookmark_needs_url" msgid="7809876865972755158">"Bogmærke skal have en placering."</string>
     <string name="empty_bookmark" msgid="7008697085928540511">"Der kan ikke oprettes et tomt bogmærke."</string>
@@ -107,6 +113,8 @@
     <string name="shortcut_bookmark" msgid="3974876480401135895">"Bogmærke"</string>
     <string name="history" msgid="2451240511251410032">"Oversigt"</string>
     <string name="menu_view_download" msgid="2124570321712995120">"Downloads"</string>
+    <!-- no translation found for copy_page_url (7635062169011319208) -->
+    <skip />
     <string name="share_page" msgid="593756995297268343">"Del side"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Åbn"</string>
     <string name="contextmenu_openlink_newwindow" msgid="992765050093960353">"Åbn i et nyt vindue"</string>
@@ -121,38 +129,54 @@
     <string name="contextmenu_add_contact" msgid="3183511922223645716">"Tilføj kontakt"</string>
     <string name="contextmenu_send_mail" msgid="1014513374828775660">"Send e-mail"</string>
     <string name="contextmenu_map" msgid="7471390435434034912">"Kort"</string>
+    <!-- no translation found for choosertitle_sharevia (4600490613341909086) -->
+    <skip />
     <string name="clear" msgid="7070043081700011461">"Ryd"</string>
     <string name="replace" msgid="4843033491070384047">"Erstat"</string>
     <string name="browser_bookmarks_page_bookmarks_text" msgid="6787605028726162673">"Bogmærker"</string>
     <string name="menu_preferences" msgid="6709237687234102240">"Indstillinger"</string>
     <string name="pref_content_title" msgid="722227111894838633">"Indstillinger for sideindhold"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Indlæs billeder"</string>
-    <string name="pref_content_load_images_summary" msgid="5149716777459747214">"Vis billeder på websider"</string>
+    <!-- no translation found for pref_content_load_images_summary (5055874125248398584) -->
+    <skip />
     <string name="pref_content_block_popups" msgid="7808433807197256726">"Bloker pop op-vinduer"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Aktiver Javascript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Åbn i baggrunden"</string>
-    <string name="pref_content_open_in_background_summary" msgid="1543556325431215041">"Nye vinduer åbnes bag det nuværende"</string>
+    <!-- no translation found for pref_content_plugins (7231944644794301582) -->
+    <skip />
+    <!-- no translation found for pref_content_open_in_background_summary (1737664075721181678) -->
+    <skip />
     <string name="pref_content_homepage" msgid="6082437160778559806">"Indstil startside"</string>
     <string name="pref_content_autofit" msgid="8260474534053660809">"Aut. tilpassede sider"</string>
-    <string name="pref_content_autofit_summary" msgid="2358178043889761026">"Formater websider til at passe til skærmen"</string>
-    <string name="pref_content_landscape_only" msgid="5863539054484585534">"Kun landskabsvisning"</string>
-    <string name="pref_content_landscape_only_summary" msgid="1128170515157691793">"Læs altid sider i den bredere landskabsretning på skærmen"</string>
+    <!-- no translation found for pref_content_autofit_summary (4587831659894879986) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only (2022546812766219672) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only_summary (1008238895535428855) -->
+    <skip />
     <string name="pref_privacy_title" msgid="1052470980370846151">"Fortrolighedsindstillinger"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Ryd cache"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Ryd lokalt cachelagret indhold og databaser"</string>
-    <string name="pref_privacy_clear_cache_dlg" msgid="1027868030632828913">"Lokalt cachelagret indhold og databaser ryddes."</string>
+    <!-- no translation found for pref_privacy_clear_cache_dlg (5541011591300753881) -->
+    <skip />
     <string name="pref_privacy_clear_cookies" msgid="3095583579133780331">"Ryd alle cookiedata"</string>
-    <string name="pref_privacy_clear_cookies_summary" msgid="8602064521480657942">"Ryd alle browsercookierne"</string>
-    <string name="pref_privacy_clear_cookies_dlg" msgid="5399971428430900904">"Alle cookies ryddes."</string>
+    <!-- no translation found for pref_privacy_clear_cookies_summary (6962742063990677520) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_cookies_dlg (552855688091432682) -->
+    <skip />
     <string name="pref_privacy_clear_history" msgid="8723795508825198477">"Ryd oversigt"</string>
     <string name="pref_privacy_clear_history_summary" msgid="6868501330708940734">"Ryd browserens navigationsoversigt"</string>
-    <string name="pref_privacy_clear_history_dlg" msgid="1433519059550861064">"Browserens navigationsoversigt ryddes."</string>
+    <!-- no translation found for pref_privacy_clear_history_dlg (544903007914753853) -->
+    <skip />
     <string name="pref_privacy_clear_form_data" msgid="4232668196344383987">"Ryd formulardata"</string>
     <string name="pref_privacy_clear_form_data_summary" msgid="1790390894719517167">"Ryd alle gemte formulardata"</string>
-    <string name="pref_privacy_clear_form_data_dlg" msgid="567352105409238549">"Alle gemte formulardata ryddes."</string>
+    <!-- no translation found for pref_privacy_clear_form_data_dlg (4443621086781197928) -->
+    <skip />
     <string name="pref_privacy_clear_passwords" msgid="4750234112289277480">"Ryd adgangskoder"</string>
-    <string name="pref_privacy_clear_passwords_summary" msgid="1267552159370789981">"Ryd alle gemte adgangskoder"</string>
-    <string name="pref_privacy_clear_passwords_dlg" msgid="8425666119003961466">"Alle gemte adgangskoder ryddes."</string>
+    <!-- no translation found for pref_privacy_clear_passwords_summary (8856782718942903335) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_passwords_dlg (2083869328824248255) -->
+    <skip />
     <string name="pref_privacy_enable_geolocation" msgid="1395040170290765686">"Aktiver placering"</string>
     <string name="pref_privacy_enable_geolocation_summary" msgid="8437020934664306205">"Tillad websteder at anmode om adgang til din placering"</string>
     <string name="pref_privacy_clear_geolocation_access" msgid="6649680770030042980">"Ryd placeringsadgang"</string>
@@ -160,7 +184,8 @@
     <string name="pref_privacy_clear_geolocation_access_dlg" msgid="7327063124488827244">"Ryd placeringsadgang for alle websteder"</string>
     <string name="pref_security_title" msgid="5763978646932160021">"Sikkerhedsindstillinger"</string>
     <string name="pref_security_remember_passwords" msgid="6492957683454529549">"Husk adgangskoder"</string>
-    <string name="pref_security_remember_passwords_summary" msgid="6789880514358003065">"Gem brugernavne og adgangskoder til websteder"</string>
+    <!-- no translation found for pref_security_remember_passwords_summary (256388703356349137) -->
+    <skip />
     <string name="pref_security_save_form_data" msgid="1213669802810198893">"Husk formulardata"</string>
     <string name="pref_security_save_form_data_summary" msgid="4994074685153708026">"Husk data, jeg indtaster i formularer, til senere brug"</string>
     <string name="pref_security_show_security_warning" msgid="8901135676266754559">"Vis sikkerhedsadvarsler"</string>
@@ -183,14 +208,17 @@
     <item msgid="3840999588443167001">"Luk"</item>
   </string-array>
     <string name="pref_default_zoom_dialogtitle" msgid="6095974367125109021">"Standardzoom"</string>
-    <string name="pref_content_load_page" msgid="8834308472508060268">"Når en side indlæses:"</string>
-    <string name="pref_content_load_page_summary" msgid="3161792969308430976">"Vis oversigt over siden"</string>
+    <!-- no translation found for pref_content_load_page (2219810141690955452) -->
+    <skip />
+    <!-- no translation found for pref_content_load_page_summary (8792093504054149369) -->
+    <skip />
     <string name="pref_extras_title" msgid="3091250467679722382">"Avancerede indstillinger"</string>
     <string name="pref_extras_website_settings" msgid="67866640052455549">"Webstedsindstillinger"</string>
     <string name="pref_extras_website_settings_summary" msgid="3917568895776162240">"Vis avancerede indstillinger for individuelle websteder"</string>
     <string name="pref_extras_reset_default" msgid="8904000515846202110">"Nulstil til standard"</string>
     <string name="pref_extras_reset_default_summary" msgid="7984680562706914966">"Ryd alle browserdata, og nulstil alle indstillinger til standard"</string>
-    <string name="pref_extras_reset_default_dlg" msgid="5332227004054477008">"Alle browserdata slettes, og indstillingerne vender tilbage til standardværdier."</string>
+    <!-- no translation found for pref_extras_reset_default_dlg (6894807766578874830) -->
+    <skip />
     <string name="pref_extras_reset_default_dlg_title" msgid="2250334970728938936">"Nulstil til standard"</string>
     <string name="pref_development_title" msgid="3263854204533056480">"Fejlretning"</string>
     <string name="pref_default_text_encoding" msgid="5742965543955558478">"Tekstkodning"</string>
@@ -204,20 +232,21 @@
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Tekstkodning"</string>
     <string name="pref_default_text_encoding_default" msgid="5272126711231936722">"Latin-1"</string>
     <string name="browserFrameRedirect" msgid="7049675479777828343">"Omdiriger"</string>
-    <string name="browserFrame307Post" msgid="739650008647852203">"Dette websted omdirigeres. Send dine indtastede formulardata til den nye placering?"</string>
+    <!-- no translation found for browserFrame307Post (1429094844669510768) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Dataforbindelsesproblem"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Der er et problem med filen"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Bekræft"</string>
     <string name="browserFrameFormResubmitMessage" msgid="2752182215695632138">"Den side, du prøver at få vist, indeholder data, der allerede er indsendt (\"POSTDATA\"). Hvis du sender dataene igen, gentages alle handlinger, som formularen på siden udførte (som f.eks. en søgning eller et online køb)."</string>
     <string name="loadSuspendedTitle" msgid="675991625288706944">"Der er ingen netværksforbindelse"</string>
-    <!-- no translation found for loadSuspended (724674402736067146) -->
+    <!-- no translation found for loadSuspended (3133656588880851273) -->
     <skip />
     <string name="clear_history" msgid="5998307092715979619">"Ryd oversigt"</string>
-    <string name="browser_history" msgid="2979476257919939232">"Nyligt besøgte sider"</string>
+    <!-- no translation found for browser_history (1038987118290272525) -->
+    <skip />
     <string name="empty_history" msgid="8738772352308207274">"Browseroversigt er tom."</string>
     <string name="add_new_bookmark" msgid="8086367791400349049">"Tilføj bogmærke ..."</string>
     <string name="add_bookmark_short" msgid="3783984330998103735">"Tilføj"</string>
-    <string name="no_database" msgid="2256698896757181084">"Der er ingen database!"</string>
     <string name="search_hint" msgid="4647356319916631820">"Søg efter eller indtast en webadresse"</string>
     <string name="search_button_text" msgid="5235226933877634410">"Gå"</string>
     <string name="search_settings_description" msgid="1422401062529014107">"Bogmærker og weboversigt"</string>
@@ -257,7 +286,8 @@
     <string name="download_pending_network" msgid="6548714525679461053">"Venter på dataforbindelse ..."</string>
     <string name="download_running_paused" msgid="6418029352085656495">"Venter på dataforbindelse ..."</string>
     <string name="download_canceled" msgid="6057083743144492515">"Download annulleret."</string>
-    <string name="download_not_acceptable" msgid="282108828207321357">"Der kan ikke downloades. Indholdet er ikke understøttet på telefonen."</string>
+    <!-- no translation found for download_not_acceptable (313769696131563652) -->
+    <skip />
     <string name="download_file_error" msgid="1206648050615176113">"Download kan ikke afsluttes. Der er ikke nok plads."</string>
     <string name="download_length_required" msgid="9038605488460437406">"Der kan ikke downloades. Størrelsen på elementet kan ikke afgøres."</string>
     <string name="download_precondition_failed" msgid="8327584102874295580">"Download blev afbrudt. Den kan ikke genoptages."</string>
@@ -269,13 +299,20 @@
     <string name="webstorage_clear_data_summary" msgid="3523128713743907805">"Fjern alle databaser, der er tilknyttet dette websted"</string>
     <string name="webstorage_clear_data_dialog_title" msgid="345457466368974706">"Ryd lagrede data"</string>
     <string name="webstorage_clear_data_dialog_message" msgid="6678281256970470125">"Alle data, der er lagret af dette websted, slettes"</string>
-    <string name="webstorage_clear_data_dialog_ok_button" msgid="5074037549893407416">"Ryd alle"</string>
+    <!-- no translation found for webstorage_clear_data_dialog_ok_button (2516563534211898636) -->
+    <skip />
     <string name="webstorage_clear_data_dialog_cancel_button" msgid="2028867751958942762">"Annuller"</string>
     <string name="webstorage_origin_summary_mb_stored" msgid="1985885826292236210">"Mb lagret på din telefon"</string>
-    <string name="geolocation_permissions_prompt_message" msgid="2412844044592274106">"<xliff:g id="WEBPAGE">%s</xliff:g> ønsker at kende din placering"</string>
-    <string name="geolocation_permissions_prompt_share" msgid="6908104491085328731">"Del"</string>
-    <string name="geolocation_permissions_prompt_dont_share" msgid="5962677371200773835">"Del ikke"</string>
-    <string name="geolocation_permissions_prompt_remember" msgid="5798300962802553043">"Husk"</string>
+    <!-- no translation found for loading_video (4887871585216091096) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_message (356796102004052471) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_share (9084486342048347976) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_dont_share (6303025160237860300) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_remember (3118526300707348308) -->
+    <skip />
     <string name="geolocation_settings_page_title" msgid="1745477985097536528">"Ryd placeringsadgang"</string>
     <string name="geolocation_settings_page_summary_allowed" msgid="9180251524290811398">"Dette websted kan i øjeblikket få adgang til din placering"</string>
     <string name="geolocation_settings_page_summary_not_allowed" msgid="4589649082203102544">"Dette websted har i øjeblikket adgang til din placering"</string>
@@ -283,13 +320,13 @@
     <string name="geolocation_settings_page_dialog_message" msgid="7586671987576403993">"Placeringsadgang ryddes for dette websted"</string>
     <string name="geolocation_settings_page_dialog_ok_button" msgid="4789434178048077287">"Ryd adgang"</string>
     <string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"Annuller"</string>
-    <!-- no translation found for website_settings_clear_all (2073906304824388952) -->
+    <!-- no translation found for website_settings_clear_all (8739804325997655980) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_title (1975103796504323734) -->
+    <!-- no translation found for website_settings_clear_all_dialog_title (7791826325122461718) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_message (6545526672017530811) -->
+    <!-- no translation found for website_settings_clear_all_dialog_message (6150502090601476333) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_ok_button (3677457125416372255) -->
+    <!-- no translation found for website_settings_clear_all_dialog_ok_button (6401582240627669431) -->
     <skip />
     <!-- no translation found for website_settings_clear_all_dialog_cancel_button (1896757051856611674) -->
     <skip />
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 071592a..3027798 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -16,8 +16,11 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Browser"</string>
-    <string name="new_tab" msgid="7971857320679510529">"Neue Registerkarte"</string>
-    <!-- no translation found for active_tabs (8423342514993323050) -->
+    <!-- no translation found for choose_upload (3649366287575002063) -->
+    <skip />
+    <!-- no translation found for new_tab (4505722538297295141) -->
+    <skip />
+    <!-- no translation found for active_tabs (3050623868203544623) -->
     <skip />
     <string name="tab_bookmarks" msgid="2305793036003473653">"Lesezeichen"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Meistbesucht"</string>
@@ -79,7 +82,10 @@
     <string name="remove_history_item" msgid="5021424935726728618">"Aus Verlauf entfernen"</string>
     <string name="set_as_homepage" msgid="4752937379414905560">"Als Startseite festlegen"</string>
     <string name="bookmark_saved" msgid="2766434679871317557">"Gespeichert in Lesezeichen."</string>
-    <string name="homepage_set" msgid="9127149128262321090">"Startseite festgelegt"</string>
+    <!-- no translation found for bookmark_not_saved (700600955089376724) -->
+    <skip />
+    <!-- no translation found for homepage_set (8768087280310966395) -->
+    <skip />
     <string name="bookmark_needs_title" msgid="6245900436119218187">"Das Lesezeichen muss über einen Namen verfügen."</string>
     <string name="bookmark_needs_url" msgid="7809876865972755158">"Das Lesezeichen muss über einen Speicherort verfügen."</string>
     <string name="empty_bookmark" msgid="7008697085928540511">"Sie können kein leeres Lesezeichen erstellen."</string>
@@ -107,6 +113,8 @@
     <string name="shortcut_bookmark" msgid="3974876480401135895">"Lesezeichen"</string>
     <string name="history" msgid="2451240511251410032">"Verlauf"</string>
     <string name="menu_view_download" msgid="2124570321712995120">"Downloads"</string>
+    <!-- no translation found for copy_page_url (7635062169011319208) -->
+    <skip />
     <string name="share_page" msgid="593756995297268343">"Seitenlink weiterleiten"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Öffnen"</string>
     <string name="contextmenu_openlink_newwindow" msgid="992765050093960353">"In neuem Fenster öffnen"</string>
@@ -121,38 +129,54 @@
     <string name="contextmenu_add_contact" msgid="3183511922223645716">"Kontakt hinzufügen"</string>
     <string name="contextmenu_send_mail" msgid="1014513374828775660">"E-Mail senden"</string>
     <string name="contextmenu_map" msgid="7471390435434034912">"Karte"</string>
+    <!-- no translation found for choosertitle_sharevia (4600490613341909086) -->
+    <skip />
     <string name="clear" msgid="7070043081700011461">"Löschen"</string>
     <string name="replace" msgid="4843033491070384047">"Ersetzen"</string>
     <string name="browser_bookmarks_page_bookmarks_text" msgid="6787605028726162673">"Lesezeichen"</string>
     <string name="menu_preferences" msgid="6709237687234102240">"Einstellungen"</string>
     <string name="pref_content_title" msgid="722227111894838633">"Einstellungen für Seiteninhalt"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Bilder laden"</string>
-    <string name="pref_content_load_images_summary" msgid="5149716777459747214">"Bilder auf Webseiten anzeigen"</string>
+    <!-- no translation found for pref_content_load_images_summary (5055874125248398584) -->
+    <skip />
     <string name="pref_content_block_popups" msgid="7808433807197256726">"Popupfenster blockieren"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"JavaScript aktivieren"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Im Hintergrund öffnen"</string>
-    <string name="pref_content_open_in_background_summary" msgid="1543556325431215041">"Neue Fenster hinter dem aktuellen Fenster öffnen"</string>
+    <!-- no translation found for pref_content_plugins (7231944644794301582) -->
+    <skip />
+    <!-- no translation found for pref_content_open_in_background_summary (1737664075721181678) -->
+    <skip />
     <string name="pref_content_homepage" msgid="6082437160778559806">"Startseite festlegen"</string>
     <string name="pref_content_autofit" msgid="8260474534053660809">"Seiten autom. anpassen"</string>
-    <string name="pref_content_autofit_summary" msgid="2358178043889761026">"Webseiten an den Bildschirm anpassen"</string>
-    <string name="pref_content_landscape_only" msgid="5863539054484585534">"Nur Anzeige im Querformat"</string>
-    <string name="pref_content_landscape_only_summary" msgid="1128170515157691793">"Seiten immer im breiteren Querformat auf dem Bildschirm lesen"</string>
+    <!-- no translation found for pref_content_autofit_summary (4587831659894879986) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only (2022546812766219672) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only_summary (1008238895535428855) -->
+    <skip />
     <string name="pref_privacy_title" msgid="1052470980370846151">"Datenschutzeinstellungen"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Cache löschen"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Content und Datenbanken aus dem lokalen Cache löschen"</string>
-    <string name="pref_privacy_clear_cache_dlg" msgid="1027868030632828913">"Content und Datenbanken werden aus dem lokalen Cache gelöscht."</string>
+    <!-- no translation found for pref_privacy_clear_cache_dlg (5541011591300753881) -->
+    <skip />
     <string name="pref_privacy_clear_cookies" msgid="3095583579133780331">"Alle Cookiedaten löschen"</string>
-    <string name="pref_privacy_clear_cookies_summary" msgid="8602064521480657942">"Alle Browser-Cookies löschen"</string>
-    <string name="pref_privacy_clear_cookies_dlg" msgid="5399971428430900904">"Alle Cookies werden gelöscht."</string>
+    <!-- no translation found for pref_privacy_clear_cookies_summary (6962742063990677520) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_cookies_dlg (552855688091432682) -->
+    <skip />
     <string name="pref_privacy_clear_history" msgid="8723795508825198477">"Verlauf löschen"</string>
     <string name="pref_privacy_clear_history_summary" msgid="6868501330708940734">"Navigationsverlauf des Browsers löschen"</string>
-    <string name="pref_privacy_clear_history_dlg" msgid="1433519059550861064">"Der Navigationsverlauf des Browsers wird gelöscht."</string>
+    <!-- no translation found for pref_privacy_clear_history_dlg (544903007914753853) -->
+    <skip />
     <string name="pref_privacy_clear_form_data" msgid="4232668196344383987">"Formulardaten löschen"</string>
     <string name="pref_privacy_clear_form_data_summary" msgid="1790390894719517167">"Alle gespeicherten Formulardaten löschen"</string>
-    <string name="pref_privacy_clear_form_data_dlg" msgid="567352105409238549">"Alle gespeicherten Formulardaten werden gelöscht."</string>
+    <!-- no translation found for pref_privacy_clear_form_data_dlg (4443621086781197928) -->
+    <skip />
     <string name="pref_privacy_clear_passwords" msgid="4750234112289277480">"Passwörter löschen"</string>
-    <string name="pref_privacy_clear_passwords_summary" msgid="1267552159370789981">"Alle gespeicherten Passwörter löschen"</string>
-    <string name="pref_privacy_clear_passwords_dlg" msgid="8425666119003961466">"Alle gespeicherten Passwörter werden gelöscht."</string>
+    <!-- no translation found for pref_privacy_clear_passwords_summary (8856782718942903335) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_passwords_dlg (2083869328824248255) -->
+    <skip />
     <string name="pref_privacy_enable_geolocation" msgid="1395040170290765686">"Standort aktivieren"</string>
     <string name="pref_privacy_enable_geolocation_summary" msgid="8437020934664306205">"Zugriff auf Ihren Standort für Websites ermöglichen"</string>
     <string name="pref_privacy_clear_geolocation_access" msgid="6649680770030042980">"Standortzugriff löschen"</string>
@@ -160,7 +184,8 @@
     <string name="pref_privacy_clear_geolocation_access_dlg" msgid="7327063124488827244">"Standortzugriff für alle Websites löschen"</string>
     <string name="pref_security_title" msgid="5763978646932160021">"Sicherheitseinstellungen"</string>
     <string name="pref_security_remember_passwords" msgid="6492957683454529549">"Passwörter merken"</string>
-    <string name="pref_security_remember_passwords_summary" msgid="6789880514358003065">"Nutzernamen und Passwörter für Websites speichern"</string>
+    <!-- no translation found for pref_security_remember_passwords_summary (256388703356349137) -->
+    <skip />
     <string name="pref_security_save_form_data" msgid="1213669802810198893">"Formulardaten merken"</string>
     <string name="pref_security_save_form_data_summary" msgid="4994074685153708026">"Daten in Formularen zur späteren Verwendung merken"</string>
     <string name="pref_security_show_security_warning" msgid="8901135676266754559">"Sicherheitswarnungen"</string>
@@ -183,14 +208,17 @@
     <item msgid="3840999588443167001">"Schließen"</item>
   </string-array>
     <string name="pref_default_zoom_dialogtitle" msgid="6095974367125109021">"Standard-Zoom"</string>
-    <string name="pref_content_load_page" msgid="8834308472508060268">"Beim Laden einer Seite:"</string>
-    <string name="pref_content_load_page_summary" msgid="3161792969308430976">"Überblick über diese Seite anzeigen"</string>
+    <!-- no translation found for pref_content_load_page (2219810141690955452) -->
+    <skip />
+    <!-- no translation found for pref_content_load_page_summary (8792093504054149369) -->
+    <skip />
     <string name="pref_extras_title" msgid="3091250467679722382">"Erweiterte Einstellungen"</string>
     <string name="pref_extras_website_settings" msgid="67866640052455549">"Websiteeinstellungen"</string>
     <string name="pref_extras_website_settings_summary" msgid="3917568895776162240">"Erweiterte Einstellungen für einzelne Websites anzeigen"</string>
     <string name="pref_extras_reset_default" msgid="8904000515846202110">"Auf Standard zurücksetzen"</string>
     <string name="pref_extras_reset_default_summary" msgid="7984680562706914966">"Alle Browserdaten löschen und Einstellungen auf Standard zurücksetzen"</string>
-    <string name="pref_extras_reset_default_dlg" msgid="5332227004054477008">"Alle Browserdaten werden gelöscht. Alle Einstellungen werden auf die Standardeinstellung zurückgesetzt."</string>
+    <!-- no translation found for pref_extras_reset_default_dlg (6894807766578874830) -->
+    <skip />
     <string name="pref_extras_reset_default_dlg_title" msgid="2250334970728938936">"Auf Standardeinstellung zurücksetzen"</string>
     <string name="pref_development_title" msgid="3263854204533056480">"Debuggen"</string>
     <string name="pref_default_text_encoding" msgid="5742965543955558478">"Textcodierung"</string>
@@ -204,20 +232,21 @@
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Textcodierung"</string>
     <string name="pref_default_text_encoding_default" msgid="5272126711231936722">"Latin-1"</string>
     <string name="browserFrameRedirect" msgid="7049675479777828343">"Redirect"</string>
-    <string name="browserFrame307Post" msgid="739650008647852203">"Diese Webseite wird umgeleitet. Sollen Ihre eingegebenen Formulardaten an den neuen Ort gesendet werden?"</string>
+    <!-- no translation found for browserFrame307Post (1429094844669510768) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Datenverbindungsproblem"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problem mit Datei"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Bestätigen"</string>
     <string name="browserFrameFormResubmitMessage" msgid="2752182215695632138">"Die Seite, die Sie anzuzeigen versuchen, enthält Daten, die bereits gesendet wurde (\"POST-DATEN\"). Wenn Sie die Daten erneut senden, wird jede Aktion, die das Formular auf der Seite ausgeführt hat, wiederholt (wie beispielsweise eine Suche oder ein Online-Kauf)."</string>
     <string name="loadSuspendedTitle" msgid="675991625288706944">"Keine Netzwerkverbindung"</string>
-    <!-- no translation found for loadSuspended (724674402736067146) -->
+    <!-- no translation found for loadSuspended (3133656588880851273) -->
     <skip />
     <string name="clear_history" msgid="5998307092715979619">"Verlauf löschen"</string>
-    <string name="browser_history" msgid="2979476257919939232">"Zuletzt besuchte Seiten"</string>
+    <!-- no translation found for browser_history (1038987118290272525) -->
+    <skip />
     <string name="empty_history" msgid="8738772352308207274">"Browserverlauf ist leer."</string>
     <string name="add_new_bookmark" msgid="8086367791400349049">"Lesezeichen hinzufügen..."</string>
     <string name="add_bookmark_short" msgid="3783984330998103735">"Hinzufügen"</string>
-    <string name="no_database" msgid="2256698896757181084">"Keine Datenbank!"</string>
     <string name="search_hint" msgid="4647356319916631820">"URL suchen oder eingeben"</string>
     <string name="search_button_text" msgid="5235226933877634410">"Los"</string>
     <string name="search_settings_description" msgid="1422401062529014107">"Lesezeichen und Webprotokoll"</string>
@@ -257,7 +286,8 @@
     <string name="download_pending_network" msgid="6548714525679461053">"Warten auf Datenverbindung..."</string>
     <string name="download_running_paused" msgid="6418029352085656495">"Warten auf Datenverbindung..."</string>
     <string name="download_canceled" msgid="6057083743144492515">"Download abgebrochen."</string>
-    <string name="download_not_acceptable" msgid="282108828207321357">"Download kann nicht durchgeführt werden, da der Inhalt nicht auf dem Telefon unterstützt wird."</string>
+    <!-- no translation found for download_not_acceptable (313769696131563652) -->
+    <skip />
     <string name="download_file_error" msgid="1206648050615176113">"Download kann nicht beendet werden, da nicht genügend Speicherplatz vorhanden ist."</string>
     <string name="download_length_required" msgid="9038605488460437406">"Download kann nicht gestartet werden, da die Größe des Elements nicht bestimmt werden kann."</string>
     <string name="download_precondition_failed" msgid="8327584102874295580">"Download wurde unterbrochen und kann nicht fortgesetzt werden."</string>
@@ -269,13 +299,20 @@
     <string name="webstorage_clear_data_summary" msgid="3523128713743907805">"Alle mit dieser Website verknüpften Datenbanken entfernen"</string>
     <string name="webstorage_clear_data_dialog_title" msgid="345457466368974706">"Gespeicherte Daten löschen"</string>
     <string name="webstorage_clear_data_dialog_message" msgid="6678281256970470125">"Alle von dieser Website gespeicherten Daten werden gelöscht."</string>
-    <string name="webstorage_clear_data_dialog_ok_button" msgid="5074037549893407416">"Alles löschen"</string>
+    <!-- no translation found for webstorage_clear_data_dialog_ok_button (2516563534211898636) -->
+    <skip />
     <string name="webstorage_clear_data_dialog_cancel_button" msgid="2028867751958942762">"Abbrechen"</string>
     <string name="webstorage_origin_summary_mb_stored" msgid="1985885826292236210">"Auf Ihrem Telefon gespeicherte MB"</string>
-    <string name="geolocation_permissions_prompt_message" msgid="2412844044592274106">"<xliff:g id="WEBPAGE">%s</xliff:g> möchte Ihren Standort in Erfahrung bringen."</string>
-    <string name="geolocation_permissions_prompt_share" msgid="6908104491085328731">"Freigeben"</string>
-    <string name="geolocation_permissions_prompt_dont_share" msgid="5962677371200773835">"Nicht freigeben"</string>
-    <string name="geolocation_permissions_prompt_remember" msgid="5798300962802553043">"Speichern"</string>
+    <!-- no translation found for loading_video (4887871585216091096) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_message (356796102004052471) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_share (9084486342048347976) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_dont_share (6303025160237860300) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_remember (3118526300707348308) -->
+    <skip />
     <string name="geolocation_settings_page_title" msgid="1745477985097536528">"Standortzugriff löschen"</string>
     <string name="geolocation_settings_page_summary_allowed" msgid="9180251524290811398">"Diese Website hat derzeit Zugriff auf Ihren Standort."</string>
     <string name="geolocation_settings_page_summary_not_allowed" msgid="4589649082203102544">"Diese Website hat derzeit keinen Zugriff auf Ihren Standort."</string>
@@ -283,13 +320,13 @@
     <string name="geolocation_settings_page_dialog_message" msgid="7586671987576403993">"Der Standortzugriff für diese Website wird gelöscht."</string>
     <string name="geolocation_settings_page_dialog_ok_button" msgid="4789434178048077287">"Zugriff löschen"</string>
     <string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"Abbrechen"</string>
-    <!-- no translation found for website_settings_clear_all (2073906304824388952) -->
+    <!-- no translation found for website_settings_clear_all (8739804325997655980) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_title (1975103796504323734) -->
+    <!-- no translation found for website_settings_clear_all_dialog_title (7791826325122461718) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_message (6545526672017530811) -->
+    <!-- no translation found for website_settings_clear_all_dialog_message (6150502090601476333) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_ok_button (3677457125416372255) -->
+    <!-- no translation found for website_settings_clear_all_dialog_ok_button (6401582240627669431) -->
     <skip />
     <!-- no translation found for website_settings_clear_all_dialog_cancel_button (1896757051856611674) -->
     <skip />
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 5b1c029..caf60c9 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -15,9 +15,12 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="application_name" msgid="1935869255545976415">"Πρόγραμμα περιήγησης"</string>
-    <string name="new_tab" msgid="7971857320679510529">"Νέα καρτέλα"</string>
-    <!-- no translation found for active_tabs (8423342514993323050) -->
+    <string name="application_name" msgid="1935869255545976415">"Internet"</string>
+    <!-- no translation found for choose_upload (3649366287575002063) -->
+    <skip />
+    <!-- no translation found for new_tab (4505722538297295141) -->
+    <skip />
+    <!-- no translation found for active_tabs (3050623868203544623) -->
     <skip />
     <string name="tab_bookmarks" msgid="2305793036003473653">"Σελιδοδείκτες"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Οι πιο δημοφιλείς"</string>
@@ -28,7 +31,7 @@
     <string name="username" msgid="5057566336518215922">"Όνομα"</string>
     <string name="password" msgid="1177138552305184404">"Κωδικός πρόσβασης"</string>
     <string name="action" msgid="183105774472071343">"Σύνδεση"</string>
-    <string name="bookmarks_search" msgid="5229596268214362873">"Πρόγραμμα περιήγησης"</string>
+    <string name="bookmarks_search" msgid="5229596268214362873">"Internet"</string>
     <string name="cancel" msgid="3017274947407233702">"Ακύρωση"</string>
     <string name="ok" msgid="1509280796718850364">"OK"</string>
   <plurals name="matches_found">
@@ -79,7 +82,10 @@
     <string name="remove_history_item" msgid="5021424935726728618">"Κατάργηση από το ιστορικό"</string>
     <string name="set_as_homepage" msgid="4752937379414905560">"Ορισμός ως αρχική σελίδα"</string>
     <string name="bookmark_saved" msgid="2766434679871317557">"Αποθηκεύτηκε στους σελιδοδείκτες."</string>
-    <string name="homepage_set" msgid="9127149128262321090">"Ορισμός αρχικής σελίδας"</string>
+    <!-- no translation found for bookmark_not_saved (700600955089376724) -->
+    <skip />
+    <!-- no translation found for homepage_set (8768087280310966395) -->
+    <skip />
     <string name="bookmark_needs_title" msgid="6245900436119218187">"Ο σελιδοδείκτης πρέπει να έχει ένα όνομα."</string>
     <string name="bookmark_needs_url" msgid="7809876865972755158">"Ο σελιδοδείκτης πρέπει να έχει μια τοποθεσία."</string>
     <string name="empty_bookmark" msgid="7008697085928540511">"Δεν είναι δυνατή η δημιουργία κενού σελιδοδείκτη."</string>
@@ -107,6 +113,8 @@
     <string name="shortcut_bookmark" msgid="3974876480401135895">"Σελιδοδείκτης"</string>
     <string name="history" msgid="2451240511251410032">"Ιστορικό"</string>
     <string name="menu_view_download" msgid="2124570321712995120">"Λήψεις"</string>
+    <!-- no translation found for copy_page_url (7635062169011319208) -->
+    <skip />
     <string name="share_page" msgid="593756995297268343">"Κοινή χρήση σελίδας"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Άνοιγμα"</string>
     <string name="contextmenu_openlink_newwindow" msgid="992765050093960353">"Άνοιγμα σε νέο παράθυρο"</string>
@@ -121,38 +129,54 @@
     <string name="contextmenu_add_contact" msgid="3183511922223645716">"Προσθήκη επαφής"</string>
     <string name="contextmenu_send_mail" msgid="1014513374828775660">"Αποστολή μηνύματος ηλεκτρονικού ταχυδρομείου"</string>
     <string name="contextmenu_map" msgid="7471390435434034912">"Χάρτης"</string>
+    <!-- no translation found for choosertitle_sharevia (4600490613341909086) -->
+    <skip />
     <string name="clear" msgid="7070043081700011461">"Εκκαθάριση"</string>
     <string name="replace" msgid="4843033491070384047">"Αντικατάσταση"</string>
     <string name="browser_bookmarks_page_bookmarks_text" msgid="6787605028726162673">"Σελιδοδείκτες"</string>
     <string name="menu_preferences" msgid="6709237687234102240">"Ρυθμίσεις"</string>
     <string name="pref_content_title" msgid="722227111894838633">"Ρυθμίσεις περιεχομένου σελίδας"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Φόρτωση εικόνων"</string>
-    <string name="pref_content_load_images_summary" msgid="5149716777459747214">"Προβολή εικόνων στις ιστοσελίδες"</string>
+    <!-- no translation found for pref_content_load_images_summary (5055874125248398584) -->
+    <skip />
     <string name="pref_content_block_popups" msgid="7808433807197256726">"Αποκλεισμός αναδυόμενων παραθύρων"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Ενεργοποίηση JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Άνοιγμα στο παρασκήνιο"</string>
-    <string name="pref_content_open_in_background_summary" msgid="1543556325431215041">"Τα νέα παράθυρα ανοίγουν πίσω από το τρέχον"</string>
+    <!-- no translation found for pref_content_plugins (7231944644794301582) -->
+    <skip />
+    <!-- no translation found for pref_content_open_in_background_summary (1737664075721181678) -->
+    <skip />
     <string name="pref_content_homepage" msgid="6082437160778559806">"Ορισμός ως αρχική σελίδα"</string>
     <string name="pref_content_autofit" msgid="8260474534053660809">"Αυτόματη προσαρμογή σελίδων"</string>
-    <string name="pref_content_autofit_summary" msgid="2358178043889761026">"Μορφ/ση ιστοσ.για προσαρμ.τους στο μέγ.οθόν."</string>
-    <string name="pref_content_landscape_only" msgid="5863539054484585534">"Μόνο οριζόντια προβολή"</string>
-    <string name="pref_content_landscape_only_summary" msgid="1128170515157691793">"Ανάγνωση σελίδων πάντα σε ευρύ, οριζόντιο προσανατολισμό οθόνης"</string>
+    <!-- no translation found for pref_content_autofit_summary (4587831659894879986) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only (2022546812766219672) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only_summary (1008238895535428855) -->
+    <skip />
     <string name="pref_privacy_title" msgid="1052470980370846151">"Ρυθμίσεις απορρήτου"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Εκκαθάριση προσωρινής μνήμης"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Εκκαθάριση τοπικά αποθηκευμένου στη μνήμη cache περιεχομένου και βάσεων δεδομένων"</string>
-    <string name="pref_privacy_clear_cache_dlg" msgid="1027868030632828913">"Τοπικά αποθηκευμένο στη μνήμη cache περιεχόμενο και βάσεις δεδομένων θα απαλειφθούν."</string>
+    <!-- no translation found for pref_privacy_clear_cache_dlg (5541011591300753881) -->
+    <skip />
     <string name="pref_privacy_clear_cookies" msgid="3095583579133780331">"Εκκαθάριση όλων των δεδομένων cookie"</string>
-    <string name="pref_privacy_clear_cookies_summary" msgid="8602064521480657942">"Εκκαθάριση όλων των cookie του προγράμματος περιήγησης"</string>
-    <string name="pref_privacy_clear_cookies_dlg" msgid="5399971428430900904">"Θα γίνει εκκαθάριση όλων των cookie."</string>
+    <!-- no translation found for pref_privacy_clear_cookies_summary (6962742063990677520) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_cookies_dlg (552855688091432682) -->
+    <skip />
     <string name="pref_privacy_clear_history" msgid="8723795508825198477">"Εκκαθάριση ιστορικού"</string>
-    <string name="pref_privacy_clear_history_summary" msgid="6868501330708940734">"Εκκαθάριση ιστορικού πλοήγησης προγράμματος περιήγησης"</string>
-    <string name="pref_privacy_clear_history_dlg" msgid="1433519059550861064">"Θα γίνει εκκαθάριση του ιστορικού πλοήγησης του προγράμματος περιήγησης."</string>
+    <string name="pref_privacy_clear_history_summary" msgid="6868501330708940734">"Εκκαθάριση του ιστορικού πλοήγησης του προγράμματος περιήγησης"</string>
+    <!-- no translation found for pref_privacy_clear_history_dlg (544903007914753853) -->
+    <skip />
     <string name="pref_privacy_clear_form_data" msgid="4232668196344383987">"Εκκαθάριση δεδομένων φόρμας"</string>
     <string name="pref_privacy_clear_form_data_summary" msgid="1790390894719517167">"Εκκαθάριση όλων των αποθηκευμένων δεδομένων φόρμας"</string>
-    <string name="pref_privacy_clear_form_data_dlg" msgid="567352105409238549">"Θα γίνει εκκαθάριση όλων των αποθηκευμένων δεδομένων φόρμας."</string>
+    <!-- no translation found for pref_privacy_clear_form_data_dlg (4443621086781197928) -->
+    <skip />
     <string name="pref_privacy_clear_passwords" msgid="4750234112289277480">"Εκκαθάριση κωδικών πρόσβασης"</string>
-    <string name="pref_privacy_clear_passwords_summary" msgid="1267552159370789981">"Εκκαθάριση όλων των αποθηκευμένων κωδικών πρόσβασης"</string>
-    <string name="pref_privacy_clear_passwords_dlg" msgid="8425666119003961466">"Θα γίνει εκκαθάριση όλων των αποθηκευμένων κωδικών πρόσβασης."</string>
+    <!-- no translation found for pref_privacy_clear_passwords_summary (8856782718942903335) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_passwords_dlg (2083869328824248255) -->
+    <skip />
     <string name="pref_privacy_enable_geolocation" msgid="1395040170290765686">"Ενεργοποίηση τοποθεσίας"</string>
     <string name="pref_privacy_enable_geolocation_summary" msgid="8437020934664306205">"Να επιτρέπεται σε ιστότοπους το αίτημα πρόσβασης στην τοποθεσία σας"</string>
     <string name="pref_privacy_clear_geolocation_access" msgid="6649680770030042980">"Εκκαθάριση πρόσβασης τοποθεσίας"</string>
@@ -160,7 +184,8 @@
     <string name="pref_privacy_clear_geolocation_access_dlg" msgid="7327063124488827244">"Εκκαθάριση πρόσβασης τοποθεσίας για όλους τους ιστότοπους"</string>
     <string name="pref_security_title" msgid="5763978646932160021">"Ρυθμίσεις ασφαλείας"</string>
     <string name="pref_security_remember_passwords" msgid="6492957683454529549">"Απομνημόνευση κωδικών πρόσβασης"</string>
-    <string name="pref_security_remember_passwords_summary" msgid="6789880514358003065">"Αποθ.ονομάτων χρήστη και κωδ.πρόσβ.για τους ιστότ."</string>
+    <!-- no translation found for pref_security_remember_passwords_summary (256388703356349137) -->
+    <skip />
     <string name="pref_security_save_form_data" msgid="1213669802810198893">"Απομνημόνευση δεδομένων φόρμας"</string>
     <string name="pref_security_save_form_data_summary" msgid="4994074685153708026">"Απομνημόν.των δεδομ.που εισάγ.σε φόρμ.για μελλοντ.χρήση"</string>
     <string name="pref_security_show_security_warning" msgid="8901135676266754559">"Εμφάνιση προειδοποιήσεων ασφαλείας"</string>
@@ -183,14 +208,17 @@
     <item msgid="3840999588443167001">"Κλείσιμο"</item>
   </string-array>
     <string name="pref_default_zoom_dialogtitle" msgid="6095974367125109021">"Προεπιλεγμένο ζουμ"</string>
-    <string name="pref_content_load_page" msgid="8834308472508060268">"Κατά τη φόρτωση μιας σελίδας:"</string>
-    <string name="pref_content_load_page_summary" msgid="3161792969308430976">"Προβολή επισκόπησης της σελίδας"</string>
+    <!-- no translation found for pref_content_load_page (2219810141690955452) -->
+    <skip />
+    <!-- no translation found for pref_content_load_page_summary (8792093504054149369) -->
+    <skip />
     <string name="pref_extras_title" msgid="3091250467679722382">"Σύνθετες ρυθμίσεις"</string>
     <string name="pref_extras_website_settings" msgid="67866640052455549">"Ρυθμίσεις ιστότοπου"</string>
     <string name="pref_extras_website_settings_summary" msgid="3917568895776162240">"Προβολή σύνθετων ρυθμίσεων για μεμονωμένους ιστότοπους"</string>
     <string name="pref_extras_reset_default" msgid="8904000515846202110">"Επαναφορά προεπιλογών"</string>
     <string name="pref_extras_reset_default_summary" msgid="7984680562706914966">"Εκκαθ.όλων των δεδ.του προγρ.περιήγ.και επαναφ.όλων των ρυθμ.στις προεπ.ρυθμ."</string>
-    <string name="pref_extras_reset_default_dlg" msgid="5332227004054477008">"Θα γίνει εκκαθάριση όλων των δεδομένων του προγράμματος περιήγησης και επαναφορά των ρυθμίσεων στις προεπιλεγμένες τιμές."</string>
+    <!-- no translation found for pref_extras_reset_default_dlg (6894807766578874830) -->
+    <skip />
     <string name="pref_extras_reset_default_dlg_title" msgid="2250334970728938936">"Επαναφορά προεπιλογών"</string>
     <string name="pref_development_title" msgid="3263854204533056480">"Εντοπισμός σφαλμάτων"</string>
     <string name="pref_default_text_encoding" msgid="5742965543955558478">"Κωδικοποίηση κειμένου"</string>
@@ -204,20 +232,21 @@
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Κωδικοποίηση κειμένου"</string>
     <string name="pref_default_text_encoding_default" msgid="5272126711231936722">"Latin-1"</string>
     <string name="browserFrameRedirect" msgid="7049675479777828343">"Ανακατεύθυνση"</string>
-    <string name="browserFrame307Post" msgid="739650008647852203">"Γίνεται ανακατεύθυνση αυτής της ιστοσελίδας. Να αποσταλούν ξανά τα δεδομένα φόρμας που έχετε εισάγει, στην νέα τοποθεσία;"</string>
+    <!-- no translation found for browserFrame307Post (1429094844669510768) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Πρόβλημα σύνδεσης δεδομένων"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Υπάρχει πρόβλημα με το αρχείο"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Επιβεβαίωση"</string>
     <string name="browserFrameFormResubmitMessage" msgid="2752182215695632138">"Η σελίδα που προσπαθείτε να προβάλλετε, περιέχει δεδομένα που έχουν ήδη υποβληθεί (\"POSTDATA\"). Εάν αποστείλετε ξανά τα δεδομένα, όλες οι ενέργειες που εκτελέστηκαν από τη φόρμα στη σελίδα (όπως μια αναζήτηση ή μια αγορά στο διαδίκτυο) θα επαναληφθούν."</string>
     <string name="loadSuspendedTitle" msgid="675991625288706944">"Δεν υπάρχει σύνδεση δικτύου"</string>
-    <!-- no translation found for loadSuspended (724674402736067146) -->
+    <!-- no translation found for loadSuspended (3133656588880851273) -->
     <skip />
     <string name="clear_history" msgid="5998307092715979619">"Εκκαθάριση ιστορικού"</string>
-    <string name="browser_history" msgid="2979476257919939232">"Σελίδες που έχετε επισκεφθεί πρόσφατα"</string>
+    <!-- no translation found for browser_history (1038987118290272525) -->
+    <skip />
     <string name="empty_history" msgid="8738772352308207274">"Το ιστορικό του προγράμματος περιήγησης είναι κενό."</string>
     <string name="add_new_bookmark" msgid="8086367791400349049">"Προσθήκη σελιδοδείκτη..."</string>
     <string name="add_bookmark_short" msgid="3783984330998103735">"Προσθήκη"</string>
-    <string name="no_database" msgid="2256698896757181084">"Δεν υπάρχει βάση δεδομένων!"</string>
     <string name="search_hint" msgid="4647356319916631820">"Αναζήτηση ή πληκτρολόγηση διεύθυνσης URL"</string>
     <string name="search_button_text" msgid="5235226933877634410">"Μετάβαση"</string>
     <string name="search_settings_description" msgid="1422401062529014107">"Σελιδοδείκτες και ιστορικό ιστού"</string>
@@ -257,7 +286,8 @@
     <string name="download_pending_network" msgid="6548714525679461053">"Αναμονή για σύνδεση δεδομένων…"</string>
     <string name="download_running_paused" msgid="6418029352085656495">"Αναμονή για σύνδεση δεδομένων…"</string>
     <string name="download_canceled" msgid="6057083743144492515">"Η λήψη ακυρώθηκε."</string>
-    <string name="download_not_acceptable" msgid="282108828207321357">"Δεν είναι δυνατή η λήψη. Το περιεχόμενο δεν υποστηρίζεται από το τηλέφωνο."</string>
+    <!-- no translation found for download_not_acceptable (313769696131563652) -->
+    <skip />
     <string name="download_file_error" msgid="1206648050615176113">"Δεν είναι δυνατή η ολοκλήρωση της λήψης. Δεν υπάρχει αρκετός διαθέσιμος χώρος."</string>
     <string name="download_length_required" msgid="9038605488460437406">"Δεν είναι δυνατή η λήψη. Δεν είναι δυνατός ο προσδιορισμός του μεγέθους του στοιχείου."</string>
     <string name="download_precondition_failed" msgid="8327584102874295580">"Η λήψη διακόπηκε. Δεν είναι δυνατή η συνέχισή της."</string>
@@ -269,13 +299,20 @@
     <string name="webstorage_clear_data_summary" msgid="3523128713743907805">"Κατάργηση όλων των βάσεων δεδομένων που σχετίζονται με αυτόν τον ιστότοπο"</string>
     <string name="webstorage_clear_data_dialog_title" msgid="345457466368974706">"Εκκαθάριση αποθηκευμένων δεδομένων"</string>
     <string name="webstorage_clear_data_dialog_message" msgid="6678281256970470125">"Όλα τα δεδομένα που αποθηκεύτηκαν από αυτόν τον ιστότοπο θα διαγραφούν"</string>
-    <string name="webstorage_clear_data_dialog_ok_button" msgid="5074037549893407416">"Εκκαθάριση όλων"</string>
+    <!-- no translation found for webstorage_clear_data_dialog_ok_button (2516563534211898636) -->
+    <skip />
     <string name="webstorage_clear_data_dialog_cancel_button" msgid="2028867751958942762">"Άκυρο"</string>
     <string name="webstorage_origin_summary_mb_stored" msgid="1985885826292236210">"MB αποθηκευμένα στο τηλέφωνό σας"</string>
-    <string name="geolocation_permissions_prompt_message" msgid="2412844044592274106">"Η τοποθεσία <xliff:g id="WEBPAGE">%s</xliff:g> θέλει να μάθει την τοποθεσία σας"</string>
-    <string name="geolocation_permissions_prompt_share" msgid="6908104491085328731">"Κοινή χρήση"</string>
-    <string name="geolocation_permissions_prompt_dont_share" msgid="5962677371200773835">"Χωρίς κοινή χρήση"</string>
-    <string name="geolocation_permissions_prompt_remember" msgid="5798300962802553043">"Διατήρηση"</string>
+    <!-- no translation found for loading_video (4887871585216091096) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_message (356796102004052471) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_share (9084486342048347976) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_dont_share (6303025160237860300) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_remember (3118526300707348308) -->
+    <skip />
     <string name="geolocation_settings_page_title" msgid="1745477985097536528">"Εκκαθάριση πρόσβασης τοποθεσίας"</string>
     <string name="geolocation_settings_page_summary_allowed" msgid="9180251524290811398">"Αυτήν τη στιγμή, αυτός ο ιστότοπος έχει πρόσβαση στην τοποθεσία σας"</string>
     <string name="geolocation_settings_page_summary_not_allowed" msgid="4589649082203102544">"Δεν είναι δυνατή η πρόσβαση στην τοποθεσία σας από αυτόν τον ιστότοπο"</string>
@@ -283,13 +320,13 @@
     <string name="geolocation_settings_page_dialog_message" msgid="7586671987576403993">"Η πρόσβαση στην τοποθεσία για αυτόν τον ιστότοπο θα απαλειφθεί"</string>
     <string name="geolocation_settings_page_dialog_ok_button" msgid="4789434178048077287">"Εκκαθάριση πρόσβασης"</string>
     <string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"Άκυρο"</string>
-    <!-- no translation found for website_settings_clear_all (2073906304824388952) -->
+    <!-- no translation found for website_settings_clear_all (8739804325997655980) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_title (1975103796504323734) -->
+    <!-- no translation found for website_settings_clear_all_dialog_title (7791826325122461718) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_message (6545526672017530811) -->
+    <!-- no translation found for website_settings_clear_all_dialog_message (6150502090601476333) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_ok_button (3677457125416372255) -->
+    <!-- no translation found for website_settings_clear_all_dialog_ok_button (6401582240627669431) -->
     <skip />
     <!-- no translation found for website_settings_clear_all_dialog_cancel_button (1896757051856611674) -->
     <skip />
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 1b1f6e2..bac94e5 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -16,6 +16,8 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Navegador"</string>
+    <!-- no translation found for choose_upload (3649366287575002063) -->
+    <skip />
     <string name="new_tab" msgid="4505722538297295141">"Ventana nueva"</string>
     <string name="active_tabs" msgid="3050623868203544623">"Windows"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Marcadores"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 2a94bfd..0dd77f8 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -16,8 +16,11 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Navegador"</string>
-    <string name="new_tab" msgid="7971857320679510529">"Nueva ficha"</string>
-    <!-- no translation found for active_tabs (8423342514993323050) -->
+    <!-- no translation found for choose_upload (3649366287575002063) -->
+    <skip />
+    <!-- no translation found for new_tab (4505722538297295141) -->
+    <skip />
+    <!-- no translation found for active_tabs (3050623868203544623) -->
     <skip />
     <string name="tab_bookmarks" msgid="2305793036003473653">"Marcadores"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Más visitados"</string>
@@ -79,7 +82,10 @@
     <string name="remove_history_item" msgid="5021424935726728618">"Elliminar del historial"</string>
     <string name="set_as_homepage" msgid="4752937379414905560">"Establecer como página principal"</string>
     <string name="bookmark_saved" msgid="2766434679871317557">"Guardar en marcadores"</string>
-    <string name="homepage_set" msgid="9127149128262321090">"Página principal establecida"</string>
+    <!-- no translation found for bookmark_not_saved (700600955089376724) -->
+    <skip />
+    <!-- no translation found for homepage_set (8768087280310966395) -->
+    <skip />
     <string name="bookmark_needs_title" msgid="6245900436119218187">"El marcador debe tener un nombre."</string>
     <string name="bookmark_needs_url" msgid="7809876865972755158">"El marcador debe tener una ubicación."</string>
     <string name="empty_bookmark" msgid="7008697085928540511">"No se puede crear un marcador vacío."</string>
@@ -107,6 +113,8 @@
     <string name="shortcut_bookmark" msgid="3974876480401135895">"Marcar"</string>
     <string name="history" msgid="2451240511251410032">"Historial"</string>
     <string name="menu_view_download" msgid="2124570321712995120">"Descargas"</string>
+    <!-- no translation found for copy_page_url (7635062169011319208) -->
+    <skip />
     <string name="share_page" msgid="593756995297268343">"Compartir página"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Abrir"</string>
     <string name="contextmenu_openlink_newwindow" msgid="992765050093960353">"Abrir en ventana nueva"</string>
@@ -121,38 +129,54 @@
     <string name="contextmenu_add_contact" msgid="3183511922223645716">"Añadir contacto"</string>
     <string name="contextmenu_send_mail" msgid="1014513374828775660">"Enviar mensaje de correo electrónico"</string>
     <string name="contextmenu_map" msgid="7471390435434034912">"Mapa"</string>
+    <!-- no translation found for choosertitle_sharevia (4600490613341909086) -->
+    <skip />
     <string name="clear" msgid="7070043081700011461">"Borrar"</string>
     <string name="replace" msgid="4843033491070384047">"Sustituir"</string>
     <string name="browser_bookmarks_page_bookmarks_text" msgid="6787605028726162673">"Marcadores"</string>
     <string name="menu_preferences" msgid="6709237687234102240">"Ajustes"</string>
     <string name="pref_content_title" msgid="722227111894838633">"Configuración de contenido de la página"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Cargar imágenes"</string>
-    <string name="pref_content_load_images_summary" msgid="5149716777459747214">"Mostrar imágenes en páginas web"</string>
+    <!-- no translation found for pref_content_load_images_summary (5055874125248398584) -->
+    <skip />
     <string name="pref_content_block_popups" msgid="7808433807197256726">"Bloquear ventanas emer."</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Habilitar JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Abrir en segundo plano"</string>
-    <string name="pref_content_open_in_background_summary" msgid="1543556325431215041">"Nuevas ventanas abiertas detrás de la actual"</string>
+    <!-- no translation found for pref_content_plugins (7231944644794301582) -->
+    <skip />
+    <!-- no translation found for pref_content_open_in_background_summary (1737664075721181678) -->
+    <skip />
     <string name="pref_content_homepage" msgid="6082437160778559806">"Establecer página principal"</string>
     <string name="pref_content_autofit" msgid="8260474534053660809">"Ajustar páginas automát."</string>
-    <string name="pref_content_autofit_summary" msgid="2358178043889761026">"Configurar las páginas web para ajustarlas a la pantalla"</string>
-    <string name="pref_content_landscape_only" msgid="5863539054484585534">"Vista solo horizontal"</string>
-    <string name="pref_content_landscape_only_summary" msgid="1128170515157691793">"Leer siempre las páginas con la orientación de pantalla horizontal"</string>
+    <!-- no translation found for pref_content_autofit_summary (4587831659894879986) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only (2022546812766219672) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only_summary (1008238895535428855) -->
+    <skip />
     <string name="pref_privacy_title" msgid="1052470980370846151">"Configuración de privacidad"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Borrar caché"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Borrar bases de datos y contenido de la memoria caché local"</string>
-    <string name="pref_privacy_clear_cache_dlg" msgid="1027868030632828913">"Las bases de datos y el contenido se borrarán de la memoria caché local."</string>
+    <!-- no translation found for pref_privacy_clear_cache_dlg (5541011591300753881) -->
+    <skip />
     <string name="pref_privacy_clear_cookies" msgid="3095583579133780331">"Borrar los datos de cookies"</string>
-    <string name="pref_privacy_clear_cookies_summary" msgid="8602064521480657942">"Borrar todas las cookies del navegador"</string>
-    <string name="pref_privacy_clear_cookies_dlg" msgid="5399971428430900904">"Se borrarán todas las cookies."</string>
+    <!-- no translation found for pref_privacy_clear_cookies_summary (6962742063990677520) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_cookies_dlg (552855688091432682) -->
+    <skip />
     <string name="pref_privacy_clear_history" msgid="8723795508825198477">"Borrar historial"</string>
     <string name="pref_privacy_clear_history_summary" msgid="6868501330708940734">"Borrar el historial de exploración del navegador"</string>
-    <string name="pref_privacy_clear_history_dlg" msgid="1433519059550861064">"Se borrará el historial de exploración del navegador."</string>
+    <!-- no translation found for pref_privacy_clear_history_dlg (544903007914753853) -->
+    <skip />
     <string name="pref_privacy_clear_form_data" msgid="4232668196344383987">"Borrar datos de formulario"</string>
     <string name="pref_privacy_clear_form_data_summary" msgid="1790390894719517167">"Borrar todos los datos guardados del formulario"</string>
-    <string name="pref_privacy_clear_form_data_dlg" msgid="567352105409238549">"Se borrarán todos los datos guardados del formulario."</string>
+    <!-- no translation found for pref_privacy_clear_form_data_dlg (4443621086781197928) -->
+    <skip />
     <string name="pref_privacy_clear_passwords" msgid="4750234112289277480">"Borrar contraseñas"</string>
-    <string name="pref_privacy_clear_passwords_summary" msgid="1267552159370789981">"Borrar todas las contraseñas guardadas"</string>
-    <string name="pref_privacy_clear_passwords_dlg" msgid="8425666119003961466">"Se borrarán todas las contraseñas guardadas."</string>
+    <!-- no translation found for pref_privacy_clear_passwords_summary (8856782718942903335) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_passwords_dlg (2083869328824248255) -->
+    <skip />
     <string name="pref_privacy_enable_geolocation" msgid="1395040170290765686">"Habilitar ubicación"</string>
     <string name="pref_privacy_enable_geolocation_summary" msgid="8437020934664306205">"Permitir que los sitios soliciten acceso a tu ubicación"</string>
     <string name="pref_privacy_clear_geolocation_access" msgid="6649680770030042980">"Permitir acceso a la ubicación"</string>
@@ -160,7 +184,8 @@
     <string name="pref_privacy_clear_geolocation_access_dlg" msgid="7327063124488827244">"Permitir que todos los sitios web accedan a la ubicación"</string>
     <string name="pref_security_title" msgid="5763978646932160021">"Configuración de seguridad"</string>
     <string name="pref_security_remember_passwords" msgid="6492957683454529549">"Recordar contraseñas"</string>
-    <string name="pref_security_remember_passwords_summary" msgid="6789880514358003065">"Guardar nombres de usuario y contraseñas de sitios web"</string>
+    <!-- no translation found for pref_security_remember_passwords_summary (256388703356349137) -->
+    <skip />
     <string name="pref_security_save_form_data" msgid="1213669802810198893">"Recordar formularios"</string>
     <string name="pref_security_save_form_data_summary" msgid="4994074685153708026">"Recordar datos introducidos en formularios"</string>
     <string name="pref_security_show_security_warning" msgid="8901135676266754559">"Mostrar advertencias"</string>
@@ -183,14 +208,17 @@
     <item msgid="3840999588443167001">"Cerca"</item>
   </string-array>
     <string name="pref_default_zoom_dialogtitle" msgid="6095974367125109021">"Zoom predeterminado"</string>
-    <string name="pref_content_load_page" msgid="8834308472508060268">"Cuando la página se cargue:"</string>
-    <string name="pref_content_load_page_summary" msgid="3161792969308430976">"Mostrar información general sobre la página"</string>
+    <!-- no translation found for pref_content_load_page (2219810141690955452) -->
+    <skip />
+    <!-- no translation found for pref_content_load_page_summary (8792093504054149369) -->
+    <skip />
     <string name="pref_extras_title" msgid="3091250467679722382">"Configuración avanzada"</string>
     <string name="pref_extras_website_settings" msgid="67866640052455549">"Configuración del sitio web"</string>
     <string name="pref_extras_website_settings_summary" msgid="3917568895776162240">"Ver configuración avanzada de sitios web individuales"</string>
     <string name="pref_extras_reset_default" msgid="8904000515846202110">"Restablecer valores pred."</string>
     <string name="pref_extras_reset_default_summary" msgid="7984680562706914966">"Borrar todos los datos del navegador y restablecer la configuración predeterminada"</string>
-    <string name="pref_extras_reset_default_dlg" msgid="5332227004054477008">"Se borrarán todos los datos del navegador y se restablecerá la configuración predeterminada."</string>
+    <!-- no translation found for pref_extras_reset_default_dlg (6894807766578874830) -->
+    <skip />
     <string name="pref_extras_reset_default_dlg_title" msgid="2250334970728938936">"Restablecer valores predeterminados"</string>
     <string name="pref_development_title" msgid="3263854204533056480">"Depurar"</string>
     <string name="pref_default_text_encoding" msgid="5742965543955558478">"Codificación de texto"</string>
@@ -204,20 +232,21 @@
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Codificación de texto"</string>
     <string name="pref_default_text_encoding_default" msgid="5272126711231936722">"Latín-1"</string>
     <string name="browserFrameRedirect" msgid="7049675479777828343">"Redireccionamiento"</string>
-    <string name="browserFrame307Post" msgid="739650008647852203">"Esta página web se ha redirigido a otra ubicación. ¿Quieres enviar los datos del formulario cumplimentado a la nueva ubicación?"</string>
+    <!-- no translation found for browserFrame307Post (1429094844669510768) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problema de conectividad de datos"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problema con archivo"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"OK"</string>
     <string name="browserFrameFormResubmitMessage" msgid="2752182215695632138">"La página que intentas ver contiene datos que ya se han enviado (\"POSTDATA\"). Si reenvías los datos, se repetirá cualquier acción realizada por el formulario de la página (como las búsquedas o las compras online)."</string>
     <string name="loadSuspendedTitle" msgid="675991625288706944">"Sin conexión de red"</string>
-    <!-- no translation found for loadSuspended (724674402736067146) -->
+    <!-- no translation found for loadSuspended (3133656588880851273) -->
     <skip />
     <string name="clear_history" msgid="5998307092715979619">"Borrar historial"</string>
-    <string name="browser_history" msgid="2979476257919939232">"Páginas visitadas recientemente"</string>
+    <!-- no translation found for browser_history (1038987118290272525) -->
+    <skip />
     <string name="empty_history" msgid="8738772352308207274">"El historial del navegador está vacío."</string>
     <string name="add_new_bookmark" msgid="8086367791400349049">"Añadir marcador…"</string>
     <string name="add_bookmark_short" msgid="3783984330998103735">"Añadir"</string>
-    <string name="no_database" msgid="2256698896757181084">"No hay ninguna base de datos."</string>
     <string name="search_hint" msgid="4647356319916631820">"Busca o escribe una URL."</string>
     <string name="search_button_text" msgid="5235226933877634410">"Ir"</string>
     <string name="search_settings_description" msgid="1422401062529014107">"Marcadores e historial web"</string>
@@ -257,7 +286,8 @@
     <string name="download_pending_network" msgid="6548714525679461053">"Esperando conexión de datos…"</string>
     <string name="download_running_paused" msgid="6418029352085656495">"Esperando conexión de datos…"</string>
     <string name="download_canceled" msgid="6057083743144492515">"Descarga cancelada"</string>
-    <string name="download_not_acceptable" msgid="282108828207321357">"No se puede realizar la descarga, porque el teléfono no admite el contenido que se quiere descargar."</string>
+    <!-- no translation found for download_not_acceptable (313769696131563652) -->
+    <skip />
     <string name="download_file_error" msgid="1206648050615176113">"No se puede completar la descarga porque no hay suficiente espacio."</string>
     <string name="download_length_required" msgid="9038605488460437406">"No se puede realizar la descarga, porque no es posible determinar el tamaño del elemento."</string>
     <string name="download_precondition_failed" msgid="8327584102874295580">"La descarga se ha interrumpido y no se puede reanudar."</string>
@@ -269,13 +299,20 @@
     <string name="webstorage_clear_data_summary" msgid="3523128713743907805">"Eliminar todas las bases de datos asociadas a este sitio web"</string>
     <string name="webstorage_clear_data_dialog_title" msgid="345457466368974706">"Borrar datos almacenados"</string>
     <string name="webstorage_clear_data_dialog_message" msgid="6678281256970470125">"Todos los datos almacenados por este sitio web se eliminarán."</string>
-    <string name="webstorage_clear_data_dialog_ok_button" msgid="5074037549893407416">"Borrar todo"</string>
+    <!-- no translation found for webstorage_clear_data_dialog_ok_button (2516563534211898636) -->
+    <skip />
     <string name="webstorage_clear_data_dialog_cancel_button" msgid="2028867751958942762">"Cancelar"</string>
     <string name="webstorage_origin_summary_mb_stored" msgid="1985885826292236210">"MB almacenados en tu teléfono"</string>
-    <string name="geolocation_permissions_prompt_message" msgid="2412844044592274106">"<xliff:g id="WEBPAGE">%s</xliff:g> quiere conocer tu ubicación."</string>
-    <string name="geolocation_permissions_prompt_share" msgid="6908104491085328731">"Compartir"</string>
-    <string name="geolocation_permissions_prompt_dont_share" msgid="5962677371200773835">"No compartir"</string>
-    <string name="geolocation_permissions_prompt_remember" msgid="5798300962802553043">"Recordar"</string>
+    <!-- no translation found for loading_video (4887871585216091096) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_message (356796102004052471) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_share (9084486342048347976) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_dont_share (6303025160237860300) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_remember (3118526300707348308) -->
+    <skip />
     <string name="geolocation_settings_page_title" msgid="1745477985097536528">"Permitir acceso a la ubicación"</string>
     <string name="geolocation_settings_page_summary_allowed" msgid="9180251524290811398">"Este sitio puede acceder actualmente a tu ubicación."</string>
     <string name="geolocation_settings_page_summary_not_allowed" msgid="4589649082203102544">"Este sitio no puede acceder actualmente a tu ubicación."</string>
@@ -283,13 +320,13 @@
     <string name="geolocation_settings_page_dialog_message" msgid="7586671987576403993">"Se permitirá que este sitio web acceda a tu ubicación."</string>
     <string name="geolocation_settings_page_dialog_ok_button" msgid="4789434178048077287">"Permitir acceso"</string>
     <string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"Cancelar"</string>
-    <!-- no translation found for website_settings_clear_all (2073906304824388952) -->
+    <!-- no translation found for website_settings_clear_all (8739804325997655980) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_title (1975103796504323734) -->
+    <!-- no translation found for website_settings_clear_all_dialog_title (7791826325122461718) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_message (6545526672017530811) -->
+    <!-- no translation found for website_settings_clear_all_dialog_message (6150502090601476333) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_ok_button (3677457125416372255) -->
+    <!-- no translation found for website_settings_clear_all_dialog_ok_button (6401582240627669431) -->
     <skip />
     <!-- no translation found for website_settings_clear_all_dialog_cancel_button (1896757051856611674) -->
     <skip />
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 2b5f196..33eaba4 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -16,8 +16,11 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Navigateur"</string>
-    <string name="new_tab" msgid="7971857320679510529">"Nouvel onglet"</string>
-    <!-- no translation found for active_tabs (8423342514993323050) -->
+    <!-- no translation found for choose_upload (3649366287575002063) -->
+    <skip />
+    <!-- no translation found for new_tab (4505722538297295141) -->
+    <skip />
+    <!-- no translation found for active_tabs (3050623868203544623) -->
     <skip />
     <string name="tab_bookmarks" msgid="2305793036003473653">"Favoris"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Les + visités"</string>
@@ -79,7 +82,10 @@
     <string name="remove_history_item" msgid="5021424935726728618">"Supprimer de l\'historique"</string>
     <string name="set_as_homepage" msgid="4752937379414905560">"Définir comme page d\'accueil"</string>
     <string name="bookmark_saved" msgid="2766434679871317557">"Enregistré dans les favoris"</string>
-    <string name="homepage_set" msgid="9127149128262321090">"Page d\'accueil définie"</string>
+    <!-- no translation found for bookmark_not_saved (700600955089376724) -->
+    <skip />
+    <!-- no translation found for homepage_set (8768087280310966395) -->
+    <skip />
     <string name="bookmark_needs_title" msgid="6245900436119218187">"Vous devez attribuer un nom à votre favori."</string>
     <string name="bookmark_needs_url" msgid="7809876865972755158">"Le favori doit disposer d\'un emplacement."</string>
     <string name="empty_bookmark" msgid="7008697085928540511">"Impossible de créer un favori vide."</string>
@@ -107,6 +113,8 @@
     <string name="shortcut_bookmark" msgid="3974876480401135895">"Favori"</string>
     <string name="history" msgid="2451240511251410032">"Historique"</string>
     <string name="menu_view_download" msgid="2124570321712995120">"Téléchargements"</string>
+    <!-- no translation found for copy_page_url (7635062169011319208) -->
+    <skip />
     <string name="share_page" msgid="593756995297268343">"Partager la page"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Ouvrir"</string>
     <string name="contextmenu_openlink_newwindow" msgid="992765050093960353">"Ouvrir une nouvelle fenêtre"</string>
@@ -121,38 +129,54 @@
     <string name="contextmenu_add_contact" msgid="3183511922223645716">"Ajouter un contact"</string>
     <string name="contextmenu_send_mail" msgid="1014513374828775660">"Envoyer un e-mail"</string>
     <string name="contextmenu_map" msgid="7471390435434034912">"Plan"</string>
+    <!-- no translation found for choosertitle_sharevia (4600490613341909086) -->
+    <skip />
     <string name="clear" msgid="7070043081700011461">"Effacer"</string>
     <string name="replace" msgid="4843033491070384047">"Remplacer"</string>
     <string name="browser_bookmarks_page_bookmarks_text" msgid="6787605028726162673">"Favoris"</string>
     <string name="menu_preferences" msgid="6709237687234102240">"Paramètres"</string>
     <string name="pref_content_title" msgid="722227111894838633">"Paramètres du contenu de la page"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Charger les images"</string>
-    <string name="pref_content_load_images_summary" msgid="5149716777459747214">"Afficher les images des pages Web"</string>
+    <!-- no translation found for pref_content_load_images_summary (5055874125248398584) -->
+    <skip />
     <string name="pref_content_block_popups" msgid="7808433807197256726">"Bloquer les pop-up"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Activer JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Ouvrir en arrière-plan"</string>
-    <string name="pref_content_open_in_background_summary" msgid="1543556325431215041">"Les nouvelles fenêtres s\'ouvrent derrière la fenêtre actuelle"</string>
+    <!-- no translation found for pref_content_plugins (7231944644794301582) -->
+    <skip />
+    <!-- no translation found for pref_content_open_in_background_summary (1737664075721181678) -->
+    <skip />
     <string name="pref_content_homepage" msgid="6082437160778559806">"Configurer la page d\'accueil"</string>
     <string name="pref_content_autofit" msgid="8260474534053660809">"Redimensionner"</string>
-    <string name="pref_content_autofit_summary" msgid="2358178043889761026">"Configurer les pages Web pour qu\'elles s\'ajustent à l\'écran"</string>
-    <string name="pref_content_landscape_only" msgid="5863539054484585534">"Affichage en mode paysage uniquement"</string>
-    <string name="pref_content_landscape_only_summary" msgid="1128170515157691793">"Toujours lire les pages en orientation paysage"</string>
+    <!-- no translation found for pref_content_autofit_summary (4587831659894879986) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only (2022546812766219672) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only_summary (1008238895535428855) -->
+    <skip />
     <string name="pref_privacy_title" msgid="1052470980370846151">"Paramètres de confidentialité"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Effacer le cache"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Supprimer les bases de données et le contenu mis localement en cache"</string>
-    <string name="pref_privacy_clear_cache_dlg" msgid="1027868030632828913">"Les bases de données et le contenu mis localement en cache vont être effacés."</string>
+    <!-- no translation found for pref_privacy_clear_cache_dlg (5541011591300753881) -->
+    <skip />
     <string name="pref_privacy_clear_cookies" msgid="3095583579133780331">"Effacer tous les cookies"</string>
-    <string name="pref_privacy_clear_cookies_summary" msgid="8602064521480657942">"Effacer tous les cookies du navigateur"</string>
-    <string name="pref_privacy_clear_cookies_dlg" msgid="5399971428430900904">"Tous les cookies seront effacés."</string>
+    <!-- no translation found for pref_privacy_clear_cookies_summary (6962742063990677520) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_cookies_dlg (552855688091432682) -->
+    <skip />
     <string name="pref_privacy_clear_history" msgid="8723795508825198477">"Effacer l\'historique"</string>
     <string name="pref_privacy_clear_history_summary" msgid="6868501330708940734">"Effacer l\'historique du navigateur"</string>
-    <string name="pref_privacy_clear_history_dlg" msgid="1433519059550861064">"L\'historique du navigateur sera effacé."</string>
+    <!-- no translation found for pref_privacy_clear_history_dlg (544903007914753853) -->
+    <skip />
     <string name="pref_privacy_clear_form_data" msgid="4232668196344383987">"Eff. données formulaires"</string>
     <string name="pref_privacy_clear_form_data_summary" msgid="1790390894719517167">"Effacer toutes les données de formulaire enregistrées"</string>
-    <string name="pref_privacy_clear_form_data_dlg" msgid="567352105409238549">"Toutes les données de formulaire enregistrées seront effacées."</string>
+    <!-- no translation found for pref_privacy_clear_form_data_dlg (4443621086781197928) -->
+    <skip />
     <string name="pref_privacy_clear_passwords" msgid="4750234112289277480">"Effacer les mots de passe"</string>
-    <string name="pref_privacy_clear_passwords_summary" msgid="1267552159370789981">"Effacer tous les mots de passe enregistrés"</string>
-    <string name="pref_privacy_clear_passwords_dlg" msgid="8425666119003961466">"Tous les mots de passe enregistrés seront effacés."</string>
+    <!-- no translation found for pref_privacy_clear_passwords_summary (8856782718942903335) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_passwords_dlg (2083869328824248255) -->
+    <skip />
     <string name="pref_privacy_enable_geolocation" msgid="1395040170290765686">"Activer la localisation"</string>
     <string name="pref_privacy_enable_geolocation_summary" msgid="8437020934664306205">"Autoriser les sites à demander l\'accès à vos données de localisation"</string>
     <string name="pref_privacy_clear_geolocation_access" msgid="6649680770030042980">"Supprimer l\'accès aux données de localisation"</string>
@@ -160,7 +184,8 @@
     <string name="pref_privacy_clear_geolocation_access_dlg" msgid="7327063124488827244">"Supprimer l\'accès aux données de localisation pour tous les sites Web"</string>
     <string name="pref_security_title" msgid="5763978646932160021">"Paramètres de sécurité"</string>
     <string name="pref_security_remember_passwords" msgid="6492957683454529549">"Mém. mots de passe"</string>
-    <string name="pref_security_remember_passwords_summary" msgid="6789880514358003065">"Enregistrer les noms d\'utilisateur et les mots de passe pour les sites Web"</string>
+    <!-- no translation found for pref_security_remember_passwords_summary (256388703356349137) -->
+    <skip />
     <string name="pref_security_save_form_data" msgid="1213669802810198893">"Mém. données formulaire"</string>
     <string name="pref_security_save_form_data_summary" msgid="4994074685153708026">"Mémoriser les données saisies dans les formulaires pour les réutiliser"</string>
     <string name="pref_security_show_security_warning" msgid="8901135676266754559">"Avertiss. de sécurité"</string>
@@ -183,14 +208,17 @@
     <item msgid="3840999588443167001">"Proche"</item>
   </string-array>
     <string name="pref_default_zoom_dialogtitle" msgid="6095974367125109021">"Zoom par défaut"</string>
-    <string name="pref_content_load_page" msgid="8834308472508060268">"Lors du chargement d\'une page :"</string>
-    <string name="pref_content_load_page_summary" msgid="3161792969308430976">"Afficher une vue d\'ensemble de la page"</string>
+    <!-- no translation found for pref_content_load_page (2219810141690955452) -->
+    <skip />
+    <!-- no translation found for pref_content_load_page_summary (8792093504054149369) -->
+    <skip />
     <string name="pref_extras_title" msgid="3091250467679722382">"Paramètres avancés"</string>
     <string name="pref_extras_website_settings" msgid="67866640052455549">"Paramètres du site Web"</string>
     <string name="pref_extras_website_settings_summary" msgid="3917568895776162240">"Afficher les paramètres avancés de sites Web individuels"</string>
     <string name="pref_extras_reset_default" msgid="8904000515846202110">"Rétablir valeurs par défaut"</string>
     <string name="pref_extras_reset_default_summary" msgid="7984680562706914966">"Effacer toutes les données du navigateur et rétablir les paramètres par défaut"</string>
-    <string name="pref_extras_reset_default_dlg" msgid="5332227004054477008">"Toutes les données du navigateur seront effacées et les paramètres par défaut rétablis."</string>
+    <!-- no translation found for pref_extras_reset_default_dlg (6894807766578874830) -->
+    <skip />
     <string name="pref_extras_reset_default_dlg_title" msgid="2250334970728938936">"Rétablir les valeurs par défaut"</string>
     <string name="pref_development_title" msgid="3263854204533056480">"Débogage"</string>
     <string name="pref_default_text_encoding" msgid="5742965543955558478">"Codage du texte"</string>
@@ -204,20 +232,21 @@
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Codage du texte"</string>
     <string name="pref_default_text_encoding_default" msgid="5272126711231936722">"Latin-1"</string>
     <string name="browserFrameRedirect" msgid="7049675479777828343">"Rediriger"</string>
-    <string name="browserFrame307Post" msgid="739650008647852203">"Cette page Web est en cours de redirection. Voulez-vous renvoyer les données de formulaire saisies vers le nouvel emplacement ?"</string>
+    <!-- no translation found for browserFrame307Post (1429094844669510768) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problème de connectivité des données"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problème de fichier"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Confirmer"</string>
     <string name="browserFrameFormResubmitMessage" msgid="2752182215695632138">"La page que vous tentez d\'afficher contient des données qui ont déjà été envoyées (\"POSTDATA\"). Si vous renvoyez les données, toute action effectuée par le formulaire sur la page exécutée (notamment les lancements de recherche ou les achats en ligne) sera répétée."</string>
     <string name="loadSuspendedTitle" msgid="675991625288706944">"Aucune connexion réseau"</string>
-    <!-- no translation found for loadSuspended (724674402736067146) -->
+    <!-- no translation found for loadSuspended (3133656588880851273) -->
     <skip />
     <string name="clear_history" msgid="5998307092715979619">"Effacer l\'historique"</string>
-    <string name="browser_history" msgid="2979476257919939232">"Dernières pages consultées"</string>
+    <!-- no translation found for browser_history (1038987118290272525) -->
+    <skip />
     <string name="empty_history" msgid="8738772352308207274">"L\'historique du navigateur est vide."</string>
     <string name="add_new_bookmark" msgid="8086367791400349049">"Ajouter aux favoris..."</string>
     <string name="add_bookmark_short" msgid="3783984330998103735">"Ajouter"</string>
-    <string name="no_database" msgid="2256698896757181084">"Aucune base de données !"</string>
     <string name="search_hint" msgid="4647356319916631820">"Rechercher ou entrer l\'URL"</string>
     <string name="search_button_text" msgid="5235226933877634410">"Aller"</string>
     <string name="search_settings_description" msgid="1422401062529014107">"Favoris et historique Web"</string>
@@ -257,7 +286,8 @@
     <string name="download_pending_network" msgid="6548714525679461053">"En attente d\'une connexion de données..."</string>
     <string name="download_running_paused" msgid="6418029352085656495">"En attente d\'une connexion de données..."</string>
     <string name="download_canceled" msgid="6057083743144492515">"Téléchargement annulé"</string>
-    <string name="download_not_acceptable" msgid="282108828207321357">"Impossible d\'effectuer le téléchargement. Le contenu n\'est pas pris en charge sur ce téléphone."</string>
+    <!-- no translation found for download_not_acceptable (313769696131563652) -->
+    <skip />
     <string name="download_file_error" msgid="1206648050615176113">"Téléchargement interrompu. Espace insuffisant."</string>
     <string name="download_length_required" msgid="9038605488460437406">"Téléchargement impossible. La taille de l\'élément n\'a pas pu être déterminée."</string>
     <string name="download_precondition_failed" msgid="8327584102874295580">"Téléchargement interrompu. Impossible de reprendre le téléchargement."</string>
@@ -269,13 +299,20 @@
     <string name="webstorage_clear_data_summary" msgid="3523128713743907805">"Supprimer toutes les bases de données associées à ce site Web"</string>
     <string name="webstorage_clear_data_dialog_title" msgid="345457466368974706">"Effacer les données stockées"</string>
     <string name="webstorage_clear_data_dialog_message" msgid="6678281256970470125">"Toutes les données stockées par le site Web vont être supprimées."</string>
-    <string name="webstorage_clear_data_dialog_ok_button" msgid="5074037549893407416">"Tout effacer"</string>
+    <!-- no translation found for webstorage_clear_data_dialog_ok_button (2516563534211898636) -->
+    <skip />
     <string name="webstorage_clear_data_dialog_cancel_button" msgid="2028867751958942762">"Annuler"</string>
     <string name="webstorage_origin_summary_mb_stored" msgid="1985885826292236210">"Mo stockés sur votre téléphone"</string>
-    <string name="geolocation_permissions_prompt_message" msgid="2412844044592274106">"<xliff:g id="WEBPAGE">%s</xliff:g> souhaite connaître votre position géographique."</string>
-    <string name="geolocation_permissions_prompt_share" msgid="6908104491085328731">"Partager"</string>
-    <string name="geolocation_permissions_prompt_dont_share" msgid="5962677371200773835">"Ne pas partager"</string>
-    <string name="geolocation_permissions_prompt_remember" msgid="5798300962802553043">"Mémoriser"</string>
+    <!-- no translation found for loading_video (4887871585216091096) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_message (356796102004052471) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_share (9084486342048347976) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_dont_share (6303025160237860300) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_remember (3118526300707348308) -->
+    <skip />
     <string name="geolocation_settings_page_title" msgid="1745477985097536528">"Supprimer l\'accès aux données de localisation"</string>
     <string name="geolocation_settings_page_summary_allowed" msgid="9180251524290811398">"Ce site a actuellement accès à vos données de localisation."</string>
     <string name="geolocation_settings_page_summary_not_allowed" msgid="4589649082203102544">"Ce site n\'a actuellement pas accès à vos données de localisation."</string>
@@ -283,13 +320,13 @@
     <string name="geolocation_settings_page_dialog_message" msgid="7586671987576403993">"L\'accès de ce site Web aux données de localisation va être supprimé."</string>
     <string name="geolocation_settings_page_dialog_ok_button" msgid="4789434178048077287">"Supprimer l\'accès"</string>
     <string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"Annuler"</string>
-    <!-- no translation found for website_settings_clear_all (2073906304824388952) -->
+    <!-- no translation found for website_settings_clear_all (8739804325997655980) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_title (1975103796504323734) -->
+    <!-- no translation found for website_settings_clear_all_dialog_title (7791826325122461718) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_message (6545526672017530811) -->
+    <!-- no translation found for website_settings_clear_all_dialog_message (6150502090601476333) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_ok_button (3677457125416372255) -->
+    <!-- no translation found for website_settings_clear_all_dialog_ok_button (6401582240627669431) -->
     <skip />
     <!-- no translation found for website_settings_clear_all_dialog_cancel_button (1896757051856611674) -->
     <skip />
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index ad87b7d..c664be3 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -16,8 +16,11 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Browser"</string>
-    <string name="new_tab" msgid="7971857320679510529">"Nuova scheda"</string>
-    <!-- no translation found for active_tabs (8423342514993323050) -->
+    <!-- no translation found for choose_upload (3649366287575002063) -->
+    <skip />
+    <!-- no translation found for new_tab (4505722538297295141) -->
+    <skip />
+    <!-- no translation found for active_tabs (3050623868203544623) -->
     <skip />
     <string name="tab_bookmarks" msgid="2305793036003473653">"Segnalibri"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"I più visitati"</string>
@@ -79,7 +82,10 @@
     <string name="remove_history_item" msgid="5021424935726728618">"Rimuovi da cronologia"</string>
     <string name="set_as_homepage" msgid="4752937379414905560">"Imposta come home page"</string>
     <string name="bookmark_saved" msgid="2766434679871317557">"Salvato nei segnalibri."</string>
-    <string name="homepage_set" msgid="9127149128262321090">"Home page impostata"</string>
+    <!-- no translation found for bookmark_not_saved (700600955089376724) -->
+    <skip />
+    <!-- no translation found for homepage_set (8768087280310966395) -->
+    <skip />
     <string name="bookmark_needs_title" msgid="6245900436119218187">"Inserisci un nome per il segnalibro."</string>
     <string name="bookmark_needs_url" msgid="7809876865972755158">"Inserisci un URL per il segnalibro."</string>
     <string name="empty_bookmark" msgid="7008697085928540511">"Impossibile creare un segnalibro vuoto."</string>
@@ -107,6 +113,8 @@
     <string name="shortcut_bookmark" msgid="3974876480401135895">"Segnalibro"</string>
     <string name="history" msgid="2451240511251410032">"Cronologia"</string>
     <string name="menu_view_download" msgid="2124570321712995120">"Download"</string>
+    <!-- no translation found for copy_page_url (7635062169011319208) -->
+    <skip />
     <string name="share_page" msgid="593756995297268343">"Condividi pagina"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Apri"</string>
     <string name="contextmenu_openlink_newwindow" msgid="992765050093960353">"Apri in nuova finestra"</string>
@@ -121,38 +129,54 @@
     <string name="contextmenu_add_contact" msgid="3183511922223645716">"Aggiungi contatto"</string>
     <string name="contextmenu_send_mail" msgid="1014513374828775660">"Invia email"</string>
     <string name="contextmenu_map" msgid="7471390435434034912">"Mappa"</string>
+    <!-- no translation found for choosertitle_sharevia (4600490613341909086) -->
+    <skip />
     <string name="clear" msgid="7070043081700011461">"Cancella"</string>
     <string name="replace" msgid="4843033491070384047">"Sostituisci"</string>
     <string name="browser_bookmarks_page_bookmarks_text" msgid="6787605028726162673">"Segnalibri"</string>
     <string name="menu_preferences" msgid="6709237687234102240">"Impostazioni"</string>
     <string name="pref_content_title" msgid="722227111894838633">"Impostazioni contenuti pagina"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Carica immagini"</string>
-    <string name="pref_content_load_images_summary" msgid="5149716777459747214">"Visualizza immagini in pagine web"</string>
+    <!-- no translation found for pref_content_load_images_summary (5055874125248398584) -->
+    <skip />
     <string name="pref_content_block_popups" msgid="7808433807197256726">"Blocca finestre pop-up"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Attiva JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Apri in secondo piano"</string>
-    <string name="pref_content_open_in_background_summary" msgid="1543556325431215041">"Le nuove finestre vengono aperte dietro la finestra corrente"</string>
+    <!-- no translation found for pref_content_plugins (7231944644794301582) -->
+    <skip />
+    <!-- no translation found for pref_content_open_in_background_summary (1737664075721181678) -->
+    <skip />
     <string name="pref_content_homepage" msgid="6082437160778559806">"Imposta home page"</string>
     <string name="pref_content_autofit" msgid="8260474534053660809">"Adatta autom. pagine"</string>
-    <string name="pref_content_autofit_summary" msgid="2358178043889761026">"Adatta le pagine web allo schermo"</string>
-    <string name="pref_content_landscape_only" msgid="5863539054484585534">"Visualizzazione solo orizzontale"</string>
-    <string name="pref_content_landscape_only_summary" msgid="1128170515157691793">"Leggi sempre le pagine con l\'orientamento dello schermo orizzontale più largo"</string>
+    <!-- no translation found for pref_content_autofit_summary (4587831659894879986) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only (2022546812766219672) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only_summary (1008238895535428855) -->
+    <skip />
     <string name="pref_privacy_title" msgid="1052470980370846151">"Impostazioni privacy"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Cancella cache"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Cancella i contenuti e i database memorizzati localmente nella cache"</string>
-    <string name="pref_privacy_clear_cache_dlg" msgid="1027868030632828913">"I contenuti e i database memorizzati localmente nella cache verranno cancellati."</string>
+    <!-- no translation found for pref_privacy_clear_cache_dlg (5541011591300753881) -->
+    <skip />
     <string name="pref_privacy_clear_cookies" msgid="3095583579133780331">"Cancella tutti i dati dei cookie"</string>
-    <string name="pref_privacy_clear_cookies_summary" msgid="8602064521480657942">"Cancella tutti i cookie del browser"</string>
-    <string name="pref_privacy_clear_cookies_dlg" msgid="5399971428430900904">"Verranno cancellati tutti i cookie."</string>
+    <!-- no translation found for pref_privacy_clear_cookies_summary (6962742063990677520) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_cookies_dlg (552855688091432682) -->
+    <skip />
     <string name="pref_privacy_clear_history" msgid="8723795508825198477">"Cancella cronologia"</string>
     <string name="pref_privacy_clear_history_summary" msgid="6868501330708940734">"Cancella la cronologia di esplorazione del browser"</string>
-    <string name="pref_privacy_clear_history_dlg" msgid="1433519059550861064">"La cronologia di esplorazione del browser verrà cancellata."</string>
+    <!-- no translation found for pref_privacy_clear_history_dlg (544903007914753853) -->
+    <skip />
     <string name="pref_privacy_clear_form_data" msgid="4232668196344383987">"Cancella dati moduli"</string>
     <string name="pref_privacy_clear_form_data_summary" msgid="1790390894719517167">"Cancella tutti i dati dei moduli salvati"</string>
-    <string name="pref_privacy_clear_form_data_dlg" msgid="567352105409238549">"Tutti i dati dei moduli salvati saranno cancellati."</string>
+    <!-- no translation found for pref_privacy_clear_form_data_dlg (4443621086781197928) -->
+    <skip />
     <string name="pref_privacy_clear_passwords" msgid="4750234112289277480">"Cancella password"</string>
-    <string name="pref_privacy_clear_passwords_summary" msgid="1267552159370789981">"Cancella tutte le password salvate"</string>
-    <string name="pref_privacy_clear_passwords_dlg" msgid="8425666119003961466">"Tutte le password salvate saranno cancellate."</string>
+    <!-- no translation found for pref_privacy_clear_passwords_summary (8856782718942903335) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_passwords_dlg (2083869328824248255) -->
+    <skip />
     <string name="pref_privacy_enable_geolocation" msgid="1395040170290765686">"Attiva localizzazione"</string>
     <string name="pref_privacy_enable_geolocation_summary" msgid="8437020934664306205">"Consenti ai siti di richiedere l\'accesso alla tua posizione"</string>
     <string name="pref_privacy_clear_geolocation_access" msgid="6649680770030042980">"Cancella accesso a posizione"</string>
@@ -160,7 +184,8 @@
     <string name="pref_privacy_clear_geolocation_access_dlg" msgid="7327063124488827244">"Cancella l\'accesso alla posizione per tutti i siti web"</string>
     <string name="pref_security_title" msgid="5763978646932160021">"Impostazioni di protezione"</string>
     <string name="pref_security_remember_passwords" msgid="6492957683454529549">"Memorizza le password"</string>
-    <string name="pref_security_remember_passwords_summary" msgid="6789880514358003065">"Salva nomi utente e password per i siti web"</string>
+    <!-- no translation found for pref_security_remember_passwords_summary (256388703356349137) -->
+    <skip />
     <string name="pref_security_save_form_data" msgid="1213669802810198893">"Memorizza dati moduli"</string>
     <string name="pref_security_save_form_data_summary" msgid="4994074685153708026">"Memorizza i dati che digito nei moduli per usi futuri"</string>
     <string name="pref_security_show_security_warning" msgid="8901135676266754559">"Mostra avvisi protezione"</string>
@@ -183,14 +208,17 @@
     <item msgid="3840999588443167001">"Chiudi"</item>
   </string-array>
     <string name="pref_default_zoom_dialogtitle" msgid="6095974367125109021">"Zoom predefinito"</string>
-    <string name="pref_content_load_page" msgid="8834308472508060268">"Al caricamento della pagina:"</string>
-    <string name="pref_content_load_page_summary" msgid="3161792969308430976">"Visualizza la panoramica della pagina"</string>
+    <!-- no translation found for pref_content_load_page (2219810141690955452) -->
+    <skip />
+    <!-- no translation found for pref_content_load_page_summary (8792093504054149369) -->
+    <skip />
     <string name="pref_extras_title" msgid="3091250467679722382">"Impostazioni avanzate"</string>
     <string name="pref_extras_website_settings" msgid="67866640052455549">"Impostazioni siti web"</string>
     <string name="pref_extras_website_settings_summary" msgid="3917568895776162240">"Visualizza le impostazioni avanzate dei singoli siti web"</string>
     <string name="pref_extras_reset_default" msgid="8904000515846202110">"Ripristina valori predefiniti"</string>
     <string name="pref_extras_reset_default_summary" msgid="7984680562706914966">"Cancella tutti i dati del browser e ripristina tutte le impostazioni predefinite"</string>
-    <string name="pref_extras_reset_default_dlg" msgid="5332227004054477008">"Verranno cancellati tutti i dati del browser e ripristinate le impostazioni predefinite."</string>
+    <!-- no translation found for pref_extras_reset_default_dlg (6894807766578874830) -->
+    <skip />
     <string name="pref_extras_reset_default_dlg_title" msgid="2250334970728938936">"Ripristina valori predefiniti"</string>
     <string name="pref_development_title" msgid="3263854204533056480">"Debug"</string>
     <string name="pref_default_text_encoding" msgid="5742965543955558478">"Codifica testo"</string>
@@ -204,20 +232,21 @@
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Codifica testo"</string>
     <string name="pref_default_text_encoding_default" msgid="5272126711231936722">"Latin-1"</string>
     <string name="browserFrameRedirect" msgid="7049675479777828343">"Reindirizza"</string>
-    <string name="browserFrame307Post" msgid="739650008647852203">"La pagina web è in fase di reindizzamento. Inviare di nuovo i dati del modulo alla nuova posizione?"</string>
+    <!-- no translation found for browserFrame307Post (1429094844669510768) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problema di connettività dati"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problemi con il file"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Conferma"</string>
     <string name="browserFrameFormResubmitMessage" msgid="2752182215695632138">"La pagina che stai tentando di visualizzare contiene dati già inviati (\"POSTDATA\"). Se invii di nuovo i dati, ogni azione effettuata dal modulo nella pagina (come una ricerca o un acquisto online) verrà ripetuta."</string>
     <string name="loadSuspendedTitle" msgid="675991625288706944">"Nessuna connessione di rete"</string>
-    <!-- no translation found for loadSuspended (724674402736067146) -->
+    <!-- no translation found for loadSuspended (3133656588880851273) -->
     <skip />
     <string name="clear_history" msgid="5998307092715979619">"Cancella cronologia"</string>
-    <string name="browser_history" msgid="2979476257919939232">"Pagine visitate di recente"</string>
+    <!-- no translation found for browser_history (1038987118290272525) -->
+    <skip />
     <string name="empty_history" msgid="8738772352308207274">"La cronologia del browser è vuota."</string>
     <string name="add_new_bookmark" msgid="8086367791400349049">"Aggiungi segnalibro…"</string>
     <string name="add_bookmark_short" msgid="3783984330998103735">"Aggiungi"</string>
-    <string name="no_database" msgid="2256698896757181084">"Nessun database"</string>
     <string name="search_hint" msgid="4647356319916631820">"Cerca o digita un URL"</string>
     <string name="search_button_text" msgid="5235226933877634410">"Vai"</string>
     <string name="search_settings_description" msgid="1422401062529014107">"Segnalibri e cronologia web"</string>
@@ -257,7 +286,8 @@
     <string name="download_pending_network" msgid="6548714525679461053">"In attesa di connessione dati..."</string>
     <string name="download_running_paused" msgid="6418029352085656495">"In attesa di connessione dati..."</string>
     <string name="download_canceled" msgid="6057083743144492515">"Download annullato."</string>
-    <string name="download_not_acceptable" msgid="282108828207321357">"Impossibile effettuare il download. I contenuti non sono supportati dal telefono."</string>
+    <!-- no translation found for download_not_acceptable (313769696131563652) -->
+    <skip />
     <string name="download_file_error" msgid="1206648050615176113">"Impossibile terminare il download. Spazio insufficiente."</string>
     <string name="download_length_required" msgid="9038605488460437406">"Impossibile effettuare il download. Impossibile determinare le dimensioni dell\'elemento."</string>
     <string name="download_precondition_failed" msgid="8327584102874295580">"Download interrotto. Impossibile ripristinarlo."</string>
@@ -269,13 +299,20 @@
     <string name="webstorage_clear_data_summary" msgid="3523128713743907805">"Rimuovi tutti i database associati al sito web"</string>
     <string name="webstorage_clear_data_dialog_title" msgid="345457466368974706">"Cancella dati archiviati"</string>
     <string name="webstorage_clear_data_dialog_message" msgid="6678281256970470125">"Tutti i dati archiviati da questo sito web verranno eliminati"</string>
-    <string name="webstorage_clear_data_dialog_ok_button" msgid="5074037549893407416">"Cancella tutto"</string>
+    <!-- no translation found for webstorage_clear_data_dialog_ok_button (2516563534211898636) -->
+    <skip />
     <string name="webstorage_clear_data_dialog_cancel_button" msgid="2028867751958942762">"Annulla"</string>
     <string name="webstorage_origin_summary_mb_stored" msgid="1985885826292236210">"MB memorizzati sul telefono"</string>
-    <string name="geolocation_permissions_prompt_message" msgid="2412844044592274106">"<xliff:g id="WEBPAGE">%s</xliff:g> vuole conoscere la tua posizione"</string>
-    <string name="geolocation_permissions_prompt_share" msgid="6908104491085328731">"Condividi"</string>
-    <string name="geolocation_permissions_prompt_dont_share" msgid="5962677371200773835">"Non condividere"</string>
-    <string name="geolocation_permissions_prompt_remember" msgid="5798300962802553043">"Memorizza"</string>
+    <!-- no translation found for loading_video (4887871585216091096) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_message (356796102004052471) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_share (9084486342048347976) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_dont_share (6303025160237860300) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_remember (3118526300707348308) -->
+    <skip />
     <string name="geolocation_settings_page_title" msgid="1745477985097536528">"Cancella accesso a posizione"</string>
     <string name="geolocation_settings_page_summary_allowed" msgid="9180251524290811398">"Al momento questo sito può accedere alla tua posizione"</string>
     <string name="geolocation_settings_page_summary_not_allowed" msgid="4589649082203102544">"Al momento questo sito non può accedere alla tua posizione"</string>
@@ -283,13 +320,13 @@
     <string name="geolocation_settings_page_dialog_message" msgid="7586671987576403993">"L\'accesso alla posizione per questo sito web verrà cancellato"</string>
     <string name="geolocation_settings_page_dialog_ok_button" msgid="4789434178048077287">"Cancella accesso"</string>
     <string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"Annulla"</string>
-    <!-- no translation found for website_settings_clear_all (2073906304824388952) -->
+    <!-- no translation found for website_settings_clear_all (8739804325997655980) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_title (1975103796504323734) -->
+    <!-- no translation found for website_settings_clear_all_dialog_title (7791826325122461718) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_message (6545526672017530811) -->
+    <!-- no translation found for website_settings_clear_all_dialog_message (6150502090601476333) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_ok_button (3677457125416372255) -->
+    <!-- no translation found for website_settings_clear_all_dialog_ok_button (6401582240627669431) -->
     <skip />
     <!-- no translation found for website_settings_clear_all_dialog_cancel_button (1896757051856611674) -->
     <skip />
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index e519232..a5678e1 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -16,8 +16,11 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"ブラウザ"</string>
-    <string name="new_tab" msgid="7971857320679510529">"新しいタブ"</string>
-    <!-- no translation found for active_tabs (8423342514993323050) -->
+    <!-- no translation found for choose_upload (3649366287575002063) -->
+    <skip />
+    <!-- no translation found for new_tab (4505722538297295141) -->
+    <skip />
+    <!-- no translation found for active_tabs (3050623868203544623) -->
     <skip />
     <string name="tab_bookmarks" msgid="2305793036003473653">"ブックマーク"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"よく使用"</string>
@@ -79,7 +82,10 @@
     <string name="remove_history_item" msgid="5021424935726728618">"履歴から消去"</string>
     <string name="set_as_homepage" msgid="4752937379414905560">"ホームページとして設定"</string>
     <string name="bookmark_saved" msgid="2766434679871317557">"ブックマークを保存しました。"</string>
-    <string name="homepage_set" msgid="9127149128262321090">"ホームページを設定しました"</string>
+    <!-- no translation found for bookmark_not_saved (700600955089376724) -->
+    <skip />
+    <!-- no translation found for homepage_set (8768087280310966395) -->
+    <skip />
     <string name="bookmark_needs_title" msgid="6245900436119218187">"名前を指定してください。"</string>
     <string name="bookmark_needs_url" msgid="7809876865972755158">"場所を指定してください。"</string>
     <string name="empty_bookmark" msgid="7008697085928540511">"空のブックマークは作成できません。"</string>
@@ -107,6 +113,8 @@
     <string name="shortcut_bookmark" msgid="3974876480401135895">"ブックマーク"</string>
     <string name="history" msgid="2451240511251410032">"履歴"</string>
     <string name="menu_view_download" msgid="2124570321712995120">"ダウンロード履歴"</string>
+    <!-- no translation found for copy_page_url (7635062169011319208) -->
+    <skip />
     <string name="share_page" msgid="593756995297268343">"ページを共有"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"開く"</string>
     <string name="contextmenu_openlink_newwindow" msgid="992765050093960353">"新しいウィンドウで開く"</string>
@@ -121,38 +129,54 @@
     <string name="contextmenu_add_contact" msgid="3183511922223645716">"連絡先を追加"</string>
     <string name="contextmenu_send_mail" msgid="1014513374828775660">"メールを送信"</string>
     <string name="contextmenu_map" msgid="7471390435434034912">"地図"</string>
+    <!-- no translation found for choosertitle_sharevia (4600490613341909086) -->
+    <skip />
     <string name="clear" msgid="7070043081700011461">"消去"</string>
     <string name="replace" msgid="4843033491070384047">"入れ替え"</string>
     <string name="browser_bookmarks_page_bookmarks_text" msgid="6787605028726162673">"ブックマーク"</string>
     <string name="menu_preferences" msgid="6709237687234102240">"設定"</string>
     <string name="pref_content_title" msgid="722227111894838633">"ページコンテンツ設定"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"画像の読み込み"</string>
-    <string name="pref_content_load_images_summary" msgid="5149716777459747214">"ウェブページに画像を表示する"</string>
+    <!-- no translation found for pref_content_load_images_summary (5055874125248398584) -->
+    <skip />
     <string name="pref_content_block_popups" msgid="7808433807197256726">"ポップアップウィンドウをブロック"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"JavaScriptを有効にする"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"バックグラウンドで開く"</string>
-    <string name="pref_content_open_in_background_summary" msgid="1543556325431215041">"新しいウィンドウを現在のウィンドウの後ろに開きます"</string>
+    <!-- no translation found for pref_content_plugins (7231944644794301582) -->
+    <skip />
+    <!-- no translation found for pref_content_open_in_background_summary (1737664075721181678) -->
+    <skip />
     <string name="pref_content_homepage" msgid="6082437160778559806">"ホームページ設定"</string>
     <string name="pref_content_autofit" msgid="8260474534053660809">"ページの自動調整"</string>
-    <string name="pref_content_autofit_summary" msgid="2358178043889761026">"画面に合わせてウェブページの表示やサイズを自動調整する"</string>
-    <string name="pref_content_landscape_only" msgid="5863539054484585534">"横向き表示のみ"</string>
-    <string name="pref_content_landscape_only_summary" msgid="1128170515157691793">"ページを常に横向きに表示する"</string>
+    <!-- no translation found for pref_content_autofit_summary (4587831659894879986) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only (2022546812766219672) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only_summary (1008238895535428855) -->
+    <skip />
     <string name="pref_privacy_title" msgid="1052470980370846151">"プライバシー設定"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"キャッシュを消去"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"ローカルにキャッシュしたコンテンツとデータベースを消去"</string>
-    <string name="pref_privacy_clear_cache_dlg" msgid="1027868030632828913">"ローカルにキャッシュしたコンテンツとデータベースを消去します。"</string>
+    <!-- no translation found for pref_privacy_clear_cache_dlg (5541011591300753881) -->
+    <skip />
     <string name="pref_privacy_clear_cookies" msgid="3095583579133780331">"Cookieをすべて消去"</string>
-    <string name="pref_privacy_clear_cookies_summary" msgid="8602064521480657942">"保存されているCookieをすべて消去する"</string>
-    <string name="pref_privacy_clear_cookies_dlg" msgid="5399971428430900904">"Cookieをすべて消去します。"</string>
+    <!-- no translation found for pref_privacy_clear_cookies_summary (6962742063990677520) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_cookies_dlg (552855688091432682) -->
+    <skip />
     <string name="pref_privacy_clear_history" msgid="8723795508825198477">"履歴消去"</string>
     <string name="pref_privacy_clear_history_summary" msgid="6868501330708940734">"ブラウザの閲覧履歴を消去します"</string>
-    <string name="pref_privacy_clear_history_dlg" msgid="1433519059550861064">"ブラウザの閲覧履歴を消去します。"</string>
+    <!-- no translation found for pref_privacy_clear_history_dlg (544903007914753853) -->
+    <skip />
     <string name="pref_privacy_clear_form_data" msgid="4232668196344383987">"フォームデータを消去"</string>
     <string name="pref_privacy_clear_form_data_summary" msgid="1790390894719517167">"保存されているフォームデータをすべて消去します"</string>
-    <string name="pref_privacy_clear_form_data_dlg" msgid="567352105409238549">"保存されているフォームデータをすべて消去します。"</string>
+    <!-- no translation found for pref_privacy_clear_form_data_dlg (4443621086781197928) -->
+    <skip />
     <string name="pref_privacy_clear_passwords" msgid="4750234112289277480">"パスワードを消去"</string>
-    <string name="pref_privacy_clear_passwords_summary" msgid="1267552159370789981">"保存されているパスワードをすべて消去する"</string>
-    <string name="pref_privacy_clear_passwords_dlg" msgid="8425666119003961466">"保存されているパスワードをすべて消去します。"</string>
+    <!-- no translation found for pref_privacy_clear_passwords_summary (8856782718942903335) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_passwords_dlg (2083869328824248255) -->
+    <skip />
     <string name="pref_privacy_enable_geolocation" msgid="1395040170290765686">"位置情報を有効にする"</string>
     <string name="pref_privacy_enable_geolocation_summary" msgid="8437020934664306205">"サイトに現在地情報へのアクセスを許可する"</string>
     <string name="pref_privacy_clear_geolocation_access" msgid="6649680770030042980">"位置情報アクセスをクリア"</string>
@@ -160,7 +184,8 @@
     <string name="pref_privacy_clear_geolocation_access_dlg" msgid="7327063124488827244">"すべてのウェブサイトの位置情報アクセスをクリア"</string>
     <string name="pref_security_title" msgid="5763978646932160021">"セキュリティ設定"</string>
     <string name="pref_security_remember_passwords" msgid="6492957683454529549">"パスワードを保存"</string>
-    <string name="pref_security_remember_passwords_summary" msgid="6789880514358003065">"サイトのユーザー名とパスワードを保存する"</string>
+    <!-- no translation found for pref_security_remember_passwords_summary (256388703356349137) -->
+    <skip />
     <string name="pref_security_save_form_data" msgid="1213669802810198893">"フォームデータを保存"</string>
     <string name="pref_security_save_form_data_summary" msgid="4994074685153708026">"フォームに入力したデータを保存して後で呼び出せるようにする"</string>
     <string name="pref_security_show_security_warning" msgid="8901135676266754559">"セキュリティ警告"</string>
@@ -183,14 +208,17 @@
     <item msgid="3840999588443167001">"高い"</item>
   </string-array>
     <string name="pref_default_zoom_dialogtitle" msgid="6095974367125109021">"デフォルトの倍率"</string>
-    <string name="pref_content_load_page" msgid="8834308472508060268">"ページの読み込み時:"</string>
-    <string name="pref_content_load_page_summary" msgid="3161792969308430976">"ページの概要を表示"</string>
+    <!-- no translation found for pref_content_load_page (2219810141690955452) -->
+    <skip />
+    <!-- no translation found for pref_content_load_page_summary (8792093504054149369) -->
+    <skip />
     <string name="pref_extras_title" msgid="3091250467679722382">"詳細設定"</string>
     <string name="pref_extras_website_settings" msgid="67866640052455549">"ウェブサイト設定"</string>
     <string name="pref_extras_website_settings_summary" msgid="3917568895776162240">"個々のウェブサイトの詳細設定を表示"</string>
     <string name="pref_extras_reset_default" msgid="8904000515846202110">"初期設定にリセット"</string>
     <string name="pref_extras_reset_default_summary" msgid="7984680562706914966">"ブラウザデータをすべて消去して出荷時の初期設定に戻す"</string>
-    <string name="pref_extras_reset_default_dlg" msgid="5332227004054477008">"ブラウザデータをすべて消去して初期設定に戻します。"</string>
+    <!-- no translation found for pref_extras_reset_default_dlg (6894807766578874830) -->
+    <skip />
     <string name="pref_extras_reset_default_dlg_title" msgid="2250334970728938936">"初期設定にリセット"</string>
     <string name="pref_development_title" msgid="3263854204533056480">"デバッグ"</string>
     <string name="pref_default_text_encoding" msgid="5742965543955558478">"テキストエンコード"</string>
@@ -204,20 +232,21 @@
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"テキストエンコード"</string>
     <string name="pref_default_text_encoding_default" msgid="5272126711231936722">"SHIFT_JIS"</string>
     <string name="browserFrameRedirect" msgid="7049675479777828343">"リダイレクト"</string>
-    <string name="browserFrame307Post" msgid="739650008647852203">"このウェブページはリダイレクトされます。入力したフォームデータをリダイレクト先に送信しますか?"</string>
+    <!-- no translation found for browserFrame307Post (1429094844669510768) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"データアクセスエラー"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"ファイルに問題があります"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"確認"</string>
     <string name="browserFrameFormResubmitMessage" msgid="2752182215695632138">"表示しようとしているページには、送信済みのデータ (「POSTDATA」) があります。データを再送すると、以前このページのフォームで実行した操作 (検索やオンライン購入など) が繰り返されます。"</string>
     <string name="loadSuspendedTitle" msgid="675991625288706944">"ネットワークに接続していません"</string>
-    <!-- no translation found for loadSuspended (724674402736067146) -->
+    <!-- no translation found for loadSuspended (3133656588880851273) -->
     <skip />
     <string name="clear_history" msgid="5998307092715979619">"履歴消去"</string>
-    <string name="browser_history" msgid="2979476257919939232">"最近閲覧したページ"</string>
+    <!-- no translation found for browser_history (1038987118290272525) -->
+    <skip />
     <string name="empty_history" msgid="8738772352308207274">"ブラウザ履歴はありません。"</string>
     <string name="add_new_bookmark" msgid="8086367791400349049">"現在のページをブックマーク"</string>
     <string name="add_bookmark_short" msgid="3783984330998103735">"追加"</string>
-    <string name="no_database" msgid="2256698896757181084">"データベースがありません。"</string>
     <string name="search_hint" msgid="4647356319916631820">"URLを検索または入力"</string>
     <string name="search_button_text" msgid="5235226933877634410">"移動"</string>
     <string name="search_settings_description" msgid="1422401062529014107">"ブックマークとウェブ履歴"</string>
@@ -257,7 +286,8 @@
     <string name="download_pending_network" msgid="6548714525679461053">"ネットワークに接続しています..."</string>
     <string name="download_running_paused" msgid="6418029352085656495">"ネットワークに接続しています..."</string>
     <string name="download_canceled" msgid="6057083743144492515">"ダウンロードをキャンセルしました。"</string>
-    <string name="download_not_acceptable" msgid="282108828207321357">"ダウンロードできません。この携帯電話ではサポートされていないコンテンツです。"</string>
+    <!-- no translation found for download_not_acceptable (313769696131563652) -->
+    <skip />
     <string name="download_file_error" msgid="1206648050615176113">"空き容量が不足しているため、ダウンロードを完了できません。"</string>
     <string name="download_length_required" msgid="9038605488460437406">"項目のサイズを特定できないため、ダウンロードできません。"</string>
     <string name="download_precondition_failed" msgid="8327584102874295580">"ダウンロードが中断されました。再開できません。"</string>
@@ -269,13 +299,20 @@
     <string name="webstorage_clear_data_summary" msgid="3523128713743907805">"このウェブサイトに関連付けたデータベースをすべて削除"</string>
     <string name="webstorage_clear_data_dialog_title" msgid="345457466368974706">"保存したデータを消去"</string>
     <string name="webstorage_clear_data_dialog_message" msgid="6678281256970470125">"このウェブサイトに保存されたデータをすべて削除します"</string>
-    <string name="webstorage_clear_data_dialog_ok_button" msgid="5074037549893407416">"すべて消去"</string>
+    <!-- no translation found for webstorage_clear_data_dialog_ok_button (2516563534211898636) -->
+    <skip />
     <string name="webstorage_clear_data_dialog_cancel_button" msgid="2028867751958942762">"キャンセル"</string>
     <string name="webstorage_origin_summary_mb_stored" msgid="1985885826292236210">"携帯電話に保存している容量(MB)"</string>
-    <string name="geolocation_permissions_prompt_message" msgid="2412844044592274106">"<xliff:g id="WEBPAGE">%s</xliff:g>が現在地情報をリクエストしています"</string>
-    <string name="geolocation_permissions_prompt_share" msgid="6908104491085328731">"共有"</string>
-    <string name="geolocation_permissions_prompt_dont_share" msgid="5962677371200773835">"共有しない"</string>
-    <string name="geolocation_permissions_prompt_remember" msgid="5798300962802553043">"保存"</string>
+    <!-- no translation found for loading_video (4887871585216091096) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_message (356796102004052471) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_share (9084486342048347976) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_dont_share (6303025160237860300) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_remember (3118526300707348308) -->
+    <skip />
     <string name="geolocation_settings_page_title" msgid="1745477985097536528">"位置情報アクセスをクリア"</string>
     <string name="geolocation_settings_page_summary_allowed" msgid="9180251524290811398">"このサイトは現在地情報にアクセスできます"</string>
     <string name="geolocation_settings_page_summary_not_allowed" msgid="4589649082203102544">"このサイトは現在地情報にアクセスできません"</string>
@@ -283,13 +320,13 @@
     <string name="geolocation_settings_page_dialog_message" msgid="7586671987576403993">"このウェブサイトの位置情報アクセスをクリアします"</string>
     <string name="geolocation_settings_page_dialog_ok_button" msgid="4789434178048077287">"アクセスをクリア"</string>
     <string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"キャンセル"</string>
-    <!-- no translation found for website_settings_clear_all (2073906304824388952) -->
+    <!-- no translation found for website_settings_clear_all (8739804325997655980) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_title (1975103796504323734) -->
+    <!-- no translation found for website_settings_clear_all_dialog_title (7791826325122461718) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_message (6545526672017530811) -->
+    <!-- no translation found for website_settings_clear_all_dialog_message (6150502090601476333) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_ok_button (3677457125416372255) -->
+    <!-- no translation found for website_settings_clear_all_dialog_ok_button (6401582240627669431) -->
     <skip />
     <!-- no translation found for website_settings_clear_all_dialog_cancel_button (1896757051856611674) -->
     <skip />
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 3c07d01..64d8f1a 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -16,8 +16,11 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"브라우저"</string>
-    <string name="new_tab" msgid="7971857320679510529">"새 탭"</string>
-    <!-- no translation found for active_tabs (8423342514993323050) -->
+    <!-- no translation found for choose_upload (3649366287575002063) -->
+    <skip />
+    <!-- no translation found for new_tab (4505722538297295141) -->
+    <skip />
+    <!-- no translation found for active_tabs (3050623868203544623) -->
     <skip />
     <string name="tab_bookmarks" msgid="2305793036003473653">"북마크"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"최다 방문 웹사이트"</string>
@@ -79,7 +82,10 @@
     <string name="remove_history_item" msgid="5021424935726728618">"기록에서 삭제"</string>
     <string name="set_as_homepage" msgid="4752937379414905560">"홈페이지로 설정"</string>
     <string name="bookmark_saved" msgid="2766434679871317557">"북마크에 저장되었습니다."</string>
-    <string name="homepage_set" msgid="9127149128262321090">"홈페이지가 설정되었습니다."</string>
+    <!-- no translation found for bookmark_not_saved (700600955089376724) -->
+    <skip />
+    <!-- no translation found for homepage_set (8768087280310966395) -->
+    <skip />
     <string name="bookmark_needs_title" msgid="6245900436119218187">"북마크의 이름을 입력해야 합니다."</string>
     <string name="bookmark_needs_url" msgid="7809876865972755158">"북마크의 위치를 입력해야 합니다."</string>
     <string name="empty_bookmark" msgid="7008697085928540511">"빈 북마크를 만들 수 없습니다."</string>
@@ -107,6 +113,8 @@
     <string name="shortcut_bookmark" msgid="3974876480401135895">"북마크"</string>
     <string name="history" msgid="2451240511251410032">"기록"</string>
     <string name="menu_view_download" msgid="2124570321712995120">"다운로드"</string>
+    <!-- no translation found for copy_page_url (7635062169011319208) -->
+    <skip />
     <string name="share_page" msgid="593756995297268343">"페이지 공유"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"열기"</string>
     <string name="contextmenu_openlink_newwindow" msgid="992765050093960353">"새 창에서 열기"</string>
@@ -121,38 +129,54 @@
     <string name="contextmenu_add_contact" msgid="3183511922223645716">"연락처 추가"</string>
     <string name="contextmenu_send_mail" msgid="1014513374828775660">"이메일 보내기"</string>
     <string name="contextmenu_map" msgid="7471390435434034912">"지도"</string>
+    <!-- no translation found for choosertitle_sharevia (4600490613341909086) -->
+    <skip />
     <string name="clear" msgid="7070043081700011461">"지우기"</string>
     <string name="replace" msgid="4843033491070384047">"교체"</string>
     <string name="browser_bookmarks_page_bookmarks_text" msgid="6787605028726162673">"북마크"</string>
     <string name="menu_preferences" msgid="6709237687234102240">"설정"</string>
     <string name="pref_content_title" msgid="722227111894838633">"페이지 콘텐츠 설정"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"이미지 로드"</string>
-    <string name="pref_content_load_images_summary" msgid="5149716777459747214">"웹페이지에 이미지 표시"</string>
+    <!-- no translation found for pref_content_load_images_summary (5055874125248398584) -->
+    <skip />
     <string name="pref_content_block_popups" msgid="7808433807197256726">"팝업 창 차단"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"자바스크립트 사용"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"백그라운드에서 열기"</string>
-    <string name="pref_content_open_in_background_summary" msgid="1543556325431215041">"현재 창 뒤에 새 창이 열림"</string>
+    <!-- no translation found for pref_content_plugins (7231944644794301582) -->
+    <skip />
+    <!-- no translation found for pref_content_open_in_background_summary (1737664075721181678) -->
+    <skip />
     <string name="pref_content_homepage" msgid="6082437160778559806">"홈페이지 설정"</string>
     <string name="pref_content_autofit" msgid="8260474534053660809">"페이지 자동 맞춤"</string>
-    <string name="pref_content_autofit_summary" msgid="2358178043889761026">"화면에 맞게 웹페이지 형식 지정"</string>
-    <string name="pref_content_landscape_only" msgid="5863539054484585534">"가로 화면으로만 표시"</string>
-    <string name="pref_content_landscape_only_summary" msgid="1128170515157691793">"항상 가로 화면으로 페이지 보기"</string>
+    <!-- no translation found for pref_content_autofit_summary (4587831659894879986) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only (2022546812766219672) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only_summary (1008238895535428855) -->
+    <skip />
     <string name="pref_privacy_title" msgid="1052470980370846151">"개인정보 설정"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"캐시 지우기"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"로컬로 캐시된 콘텐츠 및 데이터베이스 삭제"</string>
-    <string name="pref_privacy_clear_cache_dlg" msgid="1027868030632828913">"로컬로 캐시된 콘텐츠 및 데이터베이스가 삭제됩니다."</string>
+    <!-- no translation found for pref_privacy_clear_cache_dlg (5541011591300753881) -->
+    <skip />
     <string name="pref_privacy_clear_cookies" msgid="3095583579133780331">"모든 쿠키 데이터 지우기"</string>
-    <string name="pref_privacy_clear_cookies_summary" msgid="8602064521480657942">"모든 브라우저 쿠키 지우기"</string>
-    <string name="pref_privacy_clear_cookies_dlg" msgid="5399971428430900904">"모든 쿠키가 지워집니다."</string>
+    <!-- no translation found for pref_privacy_clear_cookies_summary (6962742063990677520) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_cookies_dlg (552855688091432682) -->
+    <skip />
     <string name="pref_privacy_clear_history" msgid="8723795508825198477">"기록 지우기"</string>
     <string name="pref_privacy_clear_history_summary" msgid="6868501330708940734">"브라우저 탐색 기록 지우기"</string>
-    <string name="pref_privacy_clear_history_dlg" msgid="1433519059550861064">"브라우저 탐색 기록이 지워집니다."</string>
+    <!-- no translation found for pref_privacy_clear_history_dlg (544903007914753853) -->
+    <skip />
     <string name="pref_privacy_clear_form_data" msgid="4232668196344383987">"양식 데이터 지우기"</string>
     <string name="pref_privacy_clear_form_data_summary" msgid="1790390894719517167">"저장된 양식 데이터 모두 지우기"</string>
-    <string name="pref_privacy_clear_form_data_dlg" msgid="567352105409238549">"저장된 양식 데이터가 모두 지워집니다."</string>
+    <!-- no translation found for pref_privacy_clear_form_data_dlg (4443621086781197928) -->
+    <skip />
     <string name="pref_privacy_clear_passwords" msgid="4750234112289277480">"비밀번호 지우기"</string>
-    <string name="pref_privacy_clear_passwords_summary" msgid="1267552159370789981">"저장된 모든 비밀번호 지우기"</string>
-    <string name="pref_privacy_clear_passwords_dlg" msgid="8425666119003961466">"저장된 비밀번호가 모두 지워집니다."</string>
+    <!-- no translation found for pref_privacy_clear_passwords_summary (8856782718942903335) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_passwords_dlg (2083869328824248255) -->
+    <skip />
     <string name="pref_privacy_enable_geolocation" msgid="1395040170290765686">"위치 정보 사용"</string>
     <string name="pref_privacy_enable_geolocation_summary" msgid="8437020934664306205">"사이트의 위치 정보 액세스 요청 허용"</string>
     <string name="pref_privacy_clear_geolocation_access" msgid="6649680770030042980">"위치 정보 액세스 삭제"</string>
@@ -160,7 +184,8 @@
     <string name="pref_privacy_clear_geolocation_access_dlg" msgid="7327063124488827244">"모든 웹사이트의 위치 정보 액세스 삭제"</string>
     <string name="pref_security_title" msgid="5763978646932160021">"보안 설정"</string>
     <string name="pref_security_remember_passwords" msgid="6492957683454529549">"비밀번호 기억"</string>
-    <string name="pref_security_remember_passwords_summary" msgid="6789880514358003065">"웹사이트의 사용자 이름 및 비밀번호 저장"</string>
+    <!-- no translation found for pref_security_remember_passwords_summary (256388703356349137) -->
+    <skip />
     <string name="pref_security_save_form_data" msgid="1213669802810198893">"양식 데이터 기억"</string>
     <string name="pref_security_save_form_data_summary" msgid="4994074685153708026">"나중에 사용할 수 있도록 양식에 입력한 데이터 기억"</string>
     <string name="pref_security_show_security_warning" msgid="8901135676266754559">"보안 경고 표시"</string>
@@ -183,14 +208,17 @@
     <item msgid="3840999588443167001">"닫기"</item>
   </string-array>
     <string name="pref_default_zoom_dialogtitle" msgid="6095974367125109021">"기본 확대/축소"</string>
-    <string name="pref_content_load_page" msgid="8834308472508060268">"페이지 로드 시:"</string>
-    <string name="pref_content_load_page_summary" msgid="3161792969308430976">"페이지 개요 표시"</string>
+    <!-- no translation found for pref_content_load_page (2219810141690955452) -->
+    <skip />
+    <!-- no translation found for pref_content_load_page_summary (8792093504054149369) -->
+    <skip />
     <string name="pref_extras_title" msgid="3091250467679722382">"고급 설정"</string>
     <string name="pref_extras_website_settings" msgid="67866640052455549">"웹사이트 설정"</string>
     <string name="pref_extras_website_settings_summary" msgid="3917568895776162240">"개별 웹사이트의 고급 설정 보기"</string>
     <string name="pref_extras_reset_default" msgid="8904000515846202110">"기본값으로 재설정"</string>
     <string name="pref_extras_reset_default_summary" msgid="7984680562706914966">"모든 브라우저 데이터를 지우고 모든 설정을 기본값으로 재설정"</string>
-    <string name="pref_extras_reset_default_dlg" msgid="5332227004054477008">"모든 브라우저 데이터가 지워지고 설정이 기본값으로 돌아갑니다."</string>
+    <!-- no translation found for pref_extras_reset_default_dlg (6894807766578874830) -->
+    <skip />
     <string name="pref_extras_reset_default_dlg_title" msgid="2250334970728938936">"기본값으로 재설정"</string>
     <string name="pref_development_title" msgid="3263854204533056480">"디버그"</string>
     <string name="pref_default_text_encoding" msgid="5742965543955558478">"텍스트 인코딩"</string>
@@ -204,20 +232,21 @@
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"텍스트 인코딩"</string>
     <string name="pref_default_text_encoding_default" msgid="5272126711231936722">"라틴어-1"</string>
     <string name="browserFrameRedirect" msgid="7049675479777828343">"리디렉션"</string>
-    <string name="browserFrame307Post" msgid="739650008647852203">"웹페이지가 리디렉션됩니다. 입력한 양식 데이터를 새 위치로 다시 보내시겠습니까?"</string>
+    <!-- no translation found for browserFrame307Post (1429094844669510768) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"데이터 연결에 문제 발생"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"파일 문제 발생"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"확인"</string>
     <string name="browserFrameFormResubmitMessage" msgid="2752182215695632138">"보려는 페이지에 이미 제출된 데이터(\'POSTDATA\')가 있습니다. 해당 데이터를 다시 보내면 페이지의 양식에서 수행한 작업(예: 검색 또는 온라인 구매)이 반복됩니다."</string>
     <string name="loadSuspendedTitle" msgid="675991625288706944">"네트워크 연결 없음"</string>
-    <!-- no translation found for loadSuspended (724674402736067146) -->
+    <!-- no translation found for loadSuspended (3133656588880851273) -->
     <skip />
     <string name="clear_history" msgid="5998307092715979619">"기록 지우기"</string>
-    <string name="browser_history" msgid="2979476257919939232">"최근에 방문한 페이지"</string>
+    <!-- no translation found for browser_history (1038987118290272525) -->
+    <skip />
     <string name="empty_history" msgid="8738772352308207274">"브라우저 기록이 비어 있습니다."</string>
     <string name="add_new_bookmark" msgid="8086367791400349049">"북마크에 추가..."</string>
     <string name="add_bookmark_short" msgid="3783984330998103735">"추가"</string>
-    <string name="no_database" msgid="2256698896757181084">"데이터베이스가 없습니다."</string>
     <string name="search_hint" msgid="4647356319916631820">"URL을 검색하거나 입력"</string>
     <string name="search_button_text" msgid="5235226933877634410">"이동"</string>
     <string name="search_settings_description" msgid="1422401062529014107">"북마크 및 웹 기록"</string>
@@ -257,7 +286,8 @@
     <string name="download_pending_network" msgid="6548714525679461053">"데이터 연결 대기 중..."</string>
     <string name="download_running_paused" msgid="6418029352085656495">"데이터 연결을 기다리는 중..."</string>
     <string name="download_canceled" msgid="6057083743144492515">"다운로드가 취소되었습니다."</string>
-    <string name="download_not_acceptable" msgid="282108828207321357">"휴대전화에서 지원하지 않는 콘텐츠이므로 다운로드할 수 없습니다."</string>
+    <!-- no translation found for download_not_acceptable (313769696131563652) -->
+    <skip />
     <string name="download_file_error" msgid="1206648050615176113">"저장 용량이 부족하여 다운로드를 완료할 수 없습니다."</string>
     <string name="download_length_required" msgid="9038605488460437406">"항목의 크기를 확인할 수 없으므로 다운로드할 수 없습니다."</string>
     <string name="download_precondition_failed" msgid="8327584102874295580">"다운로드가 중단되었으며 다시 시작할 수 없습니다."</string>
@@ -269,13 +299,20 @@
     <string name="webstorage_clear_data_summary" msgid="3523128713743907805">"웹사이트에 연결된 모든 데이터베이스 삭제"</string>
     <string name="webstorage_clear_data_dialog_title" msgid="345457466368974706">"저장된 데이터 삭제"</string>
     <string name="webstorage_clear_data_dialog_message" msgid="6678281256970470125">"웹사이트에서 저장한 모든 데이터가 삭제됩니다."</string>
-    <string name="webstorage_clear_data_dialog_ok_button" msgid="5074037549893407416">"모두 지우기"</string>
+    <!-- no translation found for webstorage_clear_data_dialog_ok_button (2516563534211898636) -->
+    <skip />
     <string name="webstorage_clear_data_dialog_cancel_button" msgid="2028867751958942762">"취소"</string>
     <string name="webstorage_origin_summary_mb_stored" msgid="1985885826292236210">"휴대전화에 저장된 용량(MB)"</string>
-    <string name="geolocation_permissions_prompt_message" msgid="2412844044592274106">"<xliff:g id="WEBPAGE">%s</xliff:g>에서 사용자의 위치를 확인하려고 합니다."</string>
-    <string name="geolocation_permissions_prompt_share" msgid="6908104491085328731">"공유"</string>
-    <string name="geolocation_permissions_prompt_dont_share" msgid="5962677371200773835">"공유 안함"</string>
-    <string name="geolocation_permissions_prompt_remember" msgid="5798300962802553043">"저장"</string>
+    <!-- no translation found for loading_video (4887871585216091096) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_message (356796102004052471) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_share (9084486342048347976) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_dont_share (6303025160237860300) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_remember (3118526300707348308) -->
+    <skip />
     <string name="geolocation_settings_page_title" msgid="1745477985097536528">"위치 정보 액세스 삭제"</string>
     <string name="geolocation_settings_page_summary_allowed" msgid="9180251524290811398">"사이트에서 사용자의 위치에 현재 액세스할 수 있음"</string>
     <string name="geolocation_settings_page_summary_not_allowed" msgid="4589649082203102544">"사이트에서 사용자의 위치에 현재 액세스할 수 없음"</string>
@@ -283,13 +320,13 @@
     <string name="geolocation_settings_page_dialog_message" msgid="7586671987576403993">"웹사이트의 위치 정보 액세스가 삭제됩니다."</string>
     <string name="geolocation_settings_page_dialog_ok_button" msgid="4789434178048077287">"액세스 삭제"</string>
     <string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"취소"</string>
-    <!-- no translation found for website_settings_clear_all (2073906304824388952) -->
+    <!-- no translation found for website_settings_clear_all (8739804325997655980) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_title (1975103796504323734) -->
+    <!-- no translation found for website_settings_clear_all_dialog_title (7791826325122461718) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_message (6545526672017530811) -->
+    <!-- no translation found for website_settings_clear_all_dialog_message (6150502090601476333) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_ok_button (3677457125416372255) -->
+    <!-- no translation found for website_settings_clear_all_dialog_ok_button (6401582240627669431) -->
     <skip />
     <!-- no translation found for website_settings_clear_all_dialog_cancel_button (1896757051856611674) -->
     <skip />
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 3407c24..d18bb7d 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -16,8 +16,11 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Nettleser"</string>
-    <string name="new_tab" msgid="7971857320679510529">"Ny fane"</string>
-    <!-- no translation found for active_tabs (8423342514993323050) -->
+    <!-- no translation found for choose_upload (3649366287575002063) -->
+    <skip />
+    <!-- no translation found for new_tab (4505722538297295141) -->
+    <skip />
+    <!-- no translation found for active_tabs (3050623868203544623) -->
     <skip />
     <string name="tab_bookmarks" msgid="2305793036003473653">"Bokmerker"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Mest besøkt"</string>
@@ -79,7 +82,10 @@
     <string name="remove_history_item" msgid="5021424935726728618">"Fjern fra loggen"</string>
     <string name="set_as_homepage" msgid="4752937379414905560">"Bruk som startside"</string>
     <string name="bookmark_saved" msgid="2766434679871317557">"Bokmerke lagret."</string>
-    <string name="homepage_set" msgid="9127149128262321090">"Startside angitt"</string>
+    <!-- no translation found for bookmark_not_saved (700600955089376724) -->
+    <skip />
+    <!-- no translation found for homepage_set (8768087280310966395) -->
+    <skip />
     <string name="bookmark_needs_title" msgid="6245900436119218187">"Bokmerket må ha et navn."</string>
     <string name="bookmark_needs_url" msgid="7809876865972755158">"Bokmerket må ha en adresse."</string>
     <string name="empty_bookmark" msgid="7008697085928540511">"Kan ikke opprette tomt bokmerke."</string>
@@ -107,6 +113,8 @@
     <string name="shortcut_bookmark" msgid="3974876480401135895">"Bokmerk"</string>
     <string name="history" msgid="2451240511251410032">"Logg"</string>
     <string name="menu_view_download" msgid="2124570321712995120">"Nedlastinger"</string>
+    <!-- no translation found for copy_page_url (7635062169011319208) -->
+    <skip />
     <string name="share_page" msgid="593756995297268343">"Del side"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Åpne"</string>
     <string name="contextmenu_openlink_newwindow" msgid="992765050093960353">"Åpne i nytt vindu"</string>
@@ -121,38 +129,54 @@
     <string name="contextmenu_add_contact" msgid="3183511922223645716">"Legg til kontakt"</string>
     <string name="contextmenu_send_mail" msgid="1014513374828775660">"Send e-post"</string>
     <string name="contextmenu_map" msgid="7471390435434034912">"Kart"</string>
+    <!-- no translation found for choosertitle_sharevia (4600490613341909086) -->
+    <skip />
     <string name="clear" msgid="7070043081700011461">"Tøm"</string>
     <string name="replace" msgid="4843033491070384047">"Erstatt"</string>
     <string name="browser_bookmarks_page_bookmarks_text" msgid="6787605028726162673">"Bokmerker"</string>
     <string name="menu_preferences" msgid="6709237687234102240">"Innstillinger"</string>
     <string name="pref_content_title" msgid="722227111894838633">"Sideinnhold"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Last bilder"</string>
-    <string name="pref_content_load_images_summary" msgid="5149716777459747214">"Vis bilder på nettsteder"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Blokker popup-vinduer"</string>
+    <!-- no translation found for pref_content_load_images_summary (5055874125248398584) -->
+    <skip />
+    <string name="pref_content_block_popups" msgid="7808433807197256726">"Blokker forgrunnsvinduer"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Aktiver JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Åpne i bakgrunnen"</string>
-    <string name="pref_content_open_in_background_summary" msgid="1543556325431215041">"Nye vinduer åpnes bak det gjeldende"</string>
+    <!-- no translation found for pref_content_plugins (7231944644794301582) -->
+    <skip />
+    <!-- no translation found for pref_content_open_in_background_summary (1737664075721181678) -->
+    <skip />
     <string name="pref_content_homepage" msgid="6082437160778559806">"Angi startside"</string>
     <string name="pref_content_autofit" msgid="8260474534053660809">"Tilpass sider automatisk"</string>
-    <string name="pref_content_autofit_summary" msgid="2358178043889761026">"Tilpass nettsteder til skjermen"</string>
-    <string name="pref_content_landscape_only" msgid="5863539054484585534">"Bare liggende visning"</string>
-    <string name="pref_content_landscape_only_summary" msgid="1128170515157691793">"Les alltid sider i bred, liggende skjermretning"</string>
-    <string name="pref_privacy_title" msgid="1052470980370846151">"Personvernsinnstillinger"</string>
-    <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Fjern hurtiglager"</string>
+    <!-- no translation found for pref_content_autofit_summary (4587831659894879986) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only (2022546812766219672) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only_summary (1008238895535428855) -->
+    <skip />
+    <string name="pref_privacy_title" msgid="1052470980370846151">"Personvern"</string>
+    <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Fjern buffer"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Fjern lokalt bufret innhold og databaser"</string>
-    <string name="pref_privacy_clear_cache_dlg" msgid="1027868030632828913">"Lokalt bufret innhold og databaser vil bli fjernet."</string>
-    <string name="pref_privacy_clear_cookies" msgid="3095583579133780331">"Fjern alle infokapsler"</string>
-    <string name="pref_privacy_clear_cookies_summary" msgid="8602064521480657942">"Fjern alle informasjonskapsler"</string>
-    <string name="pref_privacy_clear_cookies_dlg" msgid="5399971428430900904">"Alle informasjonskapsler vil bli slettet."</string>
+    <!-- no translation found for pref_privacy_clear_cache_dlg (5541011591300753881) -->
+    <skip />
+    <string name="pref_privacy_clear_cookies" msgid="3095583579133780331">"Fjern alle info.kapsler"</string>
+    <!-- no translation found for pref_privacy_clear_cookies_summary (6962742063990677520) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_cookies_dlg (552855688091432682) -->
+    <skip />
     <string name="pref_privacy_clear_history" msgid="8723795508825198477">"Slett loggen"</string>
     <string name="pref_privacy_clear_history_summary" msgid="6868501330708940734">"Slett navigeringsloggen"</string>
-    <string name="pref_privacy_clear_history_dlg" msgid="1433519059550861064">"Nettleserens navigeringslogg vil bli slettet."</string>
+    <!-- no translation found for pref_privacy_clear_history_dlg (544903007914753853) -->
+    <skip />
     <string name="pref_privacy_clear_form_data" msgid="4232668196344383987">"Fjern skjemadata"</string>
     <string name="pref_privacy_clear_form_data_summary" msgid="1790390894719517167">"Slett alle lagrede skjemadata"</string>
-    <string name="pref_privacy_clear_form_data_dlg" msgid="567352105409238549">"Alle lagrede skjemadata vil bli slettet."</string>
+    <!-- no translation found for pref_privacy_clear_form_data_dlg (4443621086781197928) -->
+    <skip />
     <string name="pref_privacy_clear_passwords" msgid="4750234112289277480">"Fjern passord"</string>
-    <string name="pref_privacy_clear_passwords_summary" msgid="1267552159370789981">"Fjern alle lagrede passord"</string>
-    <string name="pref_privacy_clear_passwords_dlg" msgid="8425666119003961466">"Alle lagrede passord vil bli slettet."</string>
+    <!-- no translation found for pref_privacy_clear_passwords_summary (8856782718942903335) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_passwords_dlg (2083869328824248255) -->
+    <skip />
     <string name="pref_privacy_enable_geolocation" msgid="1395040170290765686">"Aktiver posisjon"</string>
     <string name="pref_privacy_enable_geolocation_summary" msgid="8437020934664306205">"La nettsteder be om tilgang til posisjonen din"</string>
     <string name="pref_privacy_clear_geolocation_access" msgid="6649680770030042980">"Deaktiver posisjonstilgang"</string>
@@ -160,14 +184,15 @@
     <string name="pref_privacy_clear_geolocation_access_dlg" msgid="7327063124488827244">"Deaktiver posisjonstilgang for alle nettsteder"</string>
     <string name="pref_security_title" msgid="5763978646932160021">"Sikkerhetsinnstillinger"</string>
     <string name="pref_security_remember_passwords" msgid="6492957683454529549">"Husk passord"</string>
-    <string name="pref_security_remember_passwords_summary" msgid="6789880514358003065">"Lagre brukernavn og passord for nettsteder"</string>
+    <!-- no translation found for pref_security_remember_passwords_summary (256388703356349137) -->
+    <skip />
     <string name="pref_security_save_form_data" msgid="1213669802810198893">"Husk skjemadata"</string>
     <string name="pref_security_save_form_data_summary" msgid="4994074685153708026">"Husk data skrevet inn i skjemaer til senere"</string>
     <string name="pref_security_show_security_warning" msgid="8901135676266754559">"Vis sikkerhetsadvarsler"</string>
     <string name="pref_security_show_security_warning_summary" msgid="8968906112720511704">"Vis advarsel hvis det er et problem med sikkerheten på et nettsted"</string>
-    <string name="pref_security_accept_cookies" msgid="3201367661925047989">"Godta informasjonskapsler"</string>
+    <string name="pref_security_accept_cookies" msgid="3201367661925047989">"Godta info.kapsler"</string>
     <string name="pref_security_accept_cookies_summary" msgid="1465118934875026920">"Tillat nettsteder å lagre og lese informasjonskapsler"</string>
-    <string name="pref_text_size" msgid="3827031324346612208">"Skriftstørrelse"</string>
+    <string name="pref_text_size" msgid="3827031324346612208">"Tekststørrelse"</string>
   <string-array name="pref_text_size_choices">
     <item msgid="4952686548944739548">"Bitteliten"</item>
     <item msgid="1950030433642671460">"Liten"</item>
@@ -178,19 +203,22 @@
     <string name="pref_text_size_dialogtitle" msgid="3625388833512647865">"Tekststørrelse"</string>
     <string name="pref_default_zoom" msgid="8076142259097187395">"Standardzoom"</string>
   <string-array name="pref_default_zoom_choices">
-    <item msgid="549583171195154919">"Langt unna"</item>
+    <item msgid="549583171195154919">"Avstand"</item>
     <item msgid="5619034257768161024">"Normal"</item>
-    <item msgid="3840999588443167001">"Nærme"</item>
+    <item msgid="3840999588443167001">"Nær"</item>
   </string-array>
     <string name="pref_default_zoom_dialogtitle" msgid="6095974367125109021">"Standardzoom"</string>
-    <string name="pref_content_load_page" msgid="8834308472508060268">"Når en side lastes inn:"</string>
-    <string name="pref_content_load_page_summary" msgid="3161792969308430976">"Vis oversikt over siden"</string>
+    <!-- no translation found for pref_content_load_page (2219810141690955452) -->
+    <skip />
+    <!-- no translation found for pref_content_load_page_summary (8792093504054149369) -->
+    <skip />
     <string name="pref_extras_title" msgid="3091250467679722382">"Avanserte innstillinger"</string>
     <string name="pref_extras_website_settings" msgid="67866640052455549">"Nettstedsinnstillinger"</string>
     <string name="pref_extras_website_settings_summary" msgid="3917568895776162240">"Vis avanserte innstillinger for individuelle nettsteder"</string>
     <string name="pref_extras_reset_default" msgid="8904000515846202110">"Tilbakestill til standard"</string>
     <string name="pref_extras_reset_default_summary" msgid="7984680562706914966">"Fjern alle data fra nettleseren og tilbakestill alle innstillinger til standard"</string>
-    <string name="pref_extras_reset_default_dlg" msgid="5332227004054477008">"Alle data vil bli fjernet og innstillinger vil bli tilbakestilt til standardverdier."</string>
+    <!-- no translation found for pref_extras_reset_default_dlg (6894807766578874830) -->
+    <skip />
     <string name="pref_extras_reset_default_dlg_title" msgid="2250334970728938936">"Tilbakestill til standard"</string>
     <string name="pref_development_title" msgid="3263854204533056480">"Avlusing"</string>
     <string name="pref_default_text_encoding" msgid="5742965543955558478">"Tekstkoding"</string>
@@ -204,20 +232,21 @@
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Tekstkoding"</string>
     <string name="pref_default_text_encoding_default" msgid="5272126711231936722">"Latin-1"</string>
     <string name="browserFrameRedirect" msgid="7049675479777828343">"Videresending"</string>
-    <string name="browserFrame307Post" msgid="739650008647852203">"Dette nettstedet blir viderekoblet. Send skjemadataene på nytt til det nye nettstedet?"</string>
+    <!-- no translation found for browserFrame307Post (1429094844669510768) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Datatilkoblingsproblem"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problem med fil"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Bekreft"</string>
     <string name="browserFrameFormResubmitMessage" msgid="2752182215695632138">"Siden du prøver å se inneholder data som allerede er blitt sendt inn (\"POSTDATA\"). Hvis du sender dataene på nytt, kan handlingene som skjemaet på siden utførte bli gjentatt."</string>
     <string name="loadSuspendedTitle" msgid="675991625288706944">"Ingen nettverkstilkobling"</string>
-    <!-- no translation found for loadSuspended (724674402736067146) -->
+    <!-- no translation found for loadSuspended (3133656588880851273) -->
     <skip />
     <string name="clear_history" msgid="5998307092715979619">"Tøm logg"</string>
-    <string name="browser_history" msgid="2979476257919939232">"Nylig besøkte sider"</string>
+    <!-- no translation found for browser_history (1038987118290272525) -->
+    <skip />
     <string name="empty_history" msgid="8738772352308207274">"Nettleserloggen er tom."</string>
     <string name="add_new_bookmark" msgid="8086367791400349049">"Legg til bokmerke"</string>
     <string name="add_bookmark_short" msgid="3783984330998103735">"Legg til"</string>
-    <string name="no_database" msgid="2256698896757181084">"Ingen database!"</string>
     <string name="search_hint" msgid="4647356319916631820">"Søk etter eller skriv inn URL"</string>
     <string name="search_button_text" msgid="5235226933877634410">"Gå"</string>
     <string name="search_settings_description" msgid="1422401062529014107">"Bokmerker og historikk"</string>
@@ -257,7 +286,8 @@
     <string name="download_pending_network" msgid="6548714525679461053">"Venter på datatilkobling…"</string>
     <string name="download_running_paused" msgid="6418029352085656495">"Venter på datatilkobling…"</string>
     <string name="download_canceled" msgid="6057083743144492515">"Nedlasting avbrutt."</string>
-    <string name="download_not_acceptable" msgid="282108828207321357">"Kan ikke laste ned. Innholdet er ikke støttet av telefonen."</string>
+    <!-- no translation found for download_not_acceptable (313769696131563652) -->
+    <skip />
     <string name="download_file_error" msgid="1206648050615176113">"Kan ikke fullføre nedlastingen. Det er ikke nok plass."</string>
     <string name="download_length_required" msgid="9038605488460437406">"Kan ikke laste ned. Kan ikke fastsette størrelsen på filen."</string>
     <string name="download_precondition_failed" msgid="8327584102874295580">"Nedlasting avbrutt. Den kan ikke gjenopptas."</string>
@@ -269,13 +299,20 @@
     <string name="webstorage_clear_data_summary" msgid="3523128713743907805">"Fjern alle databaser tilknyttet dette nettstedet"</string>
     <string name="webstorage_clear_data_dialog_title" msgid="345457466368974706">"Fjern lagrede data"</string>
     <string name="webstorage_clear_data_dialog_message" msgid="6678281256970470125">"Alle data som er lagret av dette nettstedet, vil bli slettet"</string>
-    <string name="webstorage_clear_data_dialog_ok_button" msgid="5074037549893407416">"Fjern alle"</string>
+    <!-- no translation found for webstorage_clear_data_dialog_ok_button (2516563534211898636) -->
+    <skip />
     <string name="webstorage_clear_data_dialog_cancel_button" msgid="2028867751958942762">"Avbryt"</string>
     <string name="webstorage_origin_summary_mb_stored" msgid="1985885826292236210">"MB lagret på telefonen"</string>
-    <string name="geolocation_permissions_prompt_message" msgid="2412844044592274106">"<xliff:g id="WEBPAGE">%s</xliff:g> vil vite posisjonen din"</string>
-    <string name="geolocation_permissions_prompt_share" msgid="6908104491085328731">"Del"</string>
-    <string name="geolocation_permissions_prompt_dont_share" msgid="5962677371200773835">"Ikke del"</string>
-    <string name="geolocation_permissions_prompt_remember" msgid="5798300962802553043">"Husk"</string>
+    <!-- no translation found for loading_video (4887871585216091096) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_message (356796102004052471) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_share (9084486342048347976) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_dont_share (6303025160237860300) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_remember (3118526300707348308) -->
+    <skip />
     <string name="geolocation_settings_page_title" msgid="1745477985097536528">"Deaktiver posisjonstilgang"</string>
     <string name="geolocation_settings_page_summary_allowed" msgid="9180251524290811398">"Dette nettstedet har for tiden tilgang til posisjonen din"</string>
     <string name="geolocation_settings_page_summary_not_allowed" msgid="4589649082203102544">"Dette nettstedet har for tiden ikke tilgang til posisjonen din"</string>
@@ -283,13 +320,13 @@
     <string name="geolocation_settings_page_dialog_message" msgid="7586671987576403993">"Posisjonstilgang for dette nettstedet vil bli deaktivert"</string>
     <string name="geolocation_settings_page_dialog_ok_button" msgid="4789434178048077287">"Deaktiver tilgang"</string>
     <string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"Avbryt"</string>
-    <!-- no translation found for website_settings_clear_all (2073906304824388952) -->
+    <!-- no translation found for website_settings_clear_all (8739804325997655980) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_title (1975103796504323734) -->
+    <!-- no translation found for website_settings_clear_all_dialog_title (7791826325122461718) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_message (6545526672017530811) -->
+    <!-- no translation found for website_settings_clear_all_dialog_message (6150502090601476333) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_ok_button (3677457125416372255) -->
+    <!-- no translation found for website_settings_clear_all_dialog_ok_button (6401582240627669431) -->
     <skip />
     <!-- no translation found for website_settings_clear_all_dialog_cancel_button (1896757051856611674) -->
     <skip />
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index f258634..719d6dc 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -16,8 +16,11 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Browser"</string>
-    <string name="new_tab" msgid="7971857320679510529">"Nieuw tabblad"</string>
-    <!-- no translation found for active_tabs (8423342514993323050) -->
+    <!-- no translation found for choose_upload (3649366287575002063) -->
+    <skip />
+    <!-- no translation found for new_tab (4505722538297295141) -->
+    <skip />
+    <!-- no translation found for active_tabs (3050623868203544623) -->
     <skip />
     <string name="tab_bookmarks" msgid="2305793036003473653">"Bladwijzers"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Meest bezocht"</string>
@@ -79,7 +82,10 @@
     <string name="remove_history_item" msgid="5021424935726728618">"Uit geschiedenis verwijderen"</string>
     <string name="set_as_homepage" msgid="4752937379414905560">"Instellen als startpagina"</string>
     <string name="bookmark_saved" msgid="2766434679871317557">"Opgeslagen in bladwijzers."</string>
-    <string name="homepage_set" msgid="9127149128262321090">"De startpagina is ingesteld"</string>
+    <!-- no translation found for bookmark_not_saved (700600955089376724) -->
+    <skip />
+    <!-- no translation found for homepage_set (8768087280310966395) -->
+    <skip />
     <string name="bookmark_needs_title" msgid="6245900436119218187">"Bladwijzer moet een naam hebben."</string>
     <string name="bookmark_needs_url" msgid="7809876865972755158">"Bladwijzers moeten een locatie hebben."</string>
     <string name="empty_bookmark" msgid="7008697085928540511">"Kan geen lege bladwijzer maken."</string>
@@ -107,6 +113,8 @@
     <string name="shortcut_bookmark" msgid="3974876480401135895">"Bladwijzer"</string>
     <string name="history" msgid="2451240511251410032">"Geschiedenis"</string>
     <string name="menu_view_download" msgid="2124570321712995120">"Downloads"</string>
+    <!-- no translation found for copy_page_url (7635062169011319208) -->
+    <skip />
     <string name="share_page" msgid="593756995297268343">"Pagina delen"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Openen"</string>
     <string name="contextmenu_openlink_newwindow" msgid="992765050093960353">"Openen in een nieuw venster"</string>
@@ -121,38 +129,54 @@
     <string name="contextmenu_add_contact" msgid="3183511922223645716">"Contact toevoegen"</string>
     <string name="contextmenu_send_mail" msgid="1014513374828775660">"E-mail verzenden"</string>
     <string name="contextmenu_map" msgid="7471390435434034912">"Kaart"</string>
+    <!-- no translation found for choosertitle_sharevia (4600490613341909086) -->
+    <skip />
     <string name="clear" msgid="7070043081700011461">"Wissen"</string>
     <string name="replace" msgid="4843033491070384047">"Vervangen"</string>
     <string name="browser_bookmarks_page_bookmarks_text" msgid="6787605028726162673">"Bladwijzers"</string>
     <string name="menu_preferences" msgid="6709237687234102240">"Instellingen"</string>
     <string name="pref_content_title" msgid="722227111894838633">"Instellingen voor pagina-inhoud"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Afbeeldingen laden"</string>
-    <string name="pref_content_load_images_summary" msgid="5149716777459747214">"Afbeeldingen op webpagina\'s weergeven"</string>
+    <!-- no translation found for pref_content_load_images_summary (5055874125248398584) -->
+    <skip />
     <string name="pref_content_block_popups" msgid="7808433807197256726">"Pop-upvensters blokkeren"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"JavaScript inschakelen"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Openen op de achtergrond"</string>
-    <string name="pref_content_open_in_background_summary" msgid="1543556325431215041">"Nieuwe vensters worden achter het huidige venster weergegeven"</string>
+    <!-- no translation found for pref_content_plugins (7231944644794301582) -->
+    <skip />
+    <!-- no translation found for pref_content_open_in_background_summary (1737664075721181678) -->
+    <skip />
     <string name="pref_content_homepage" msgid="6082437160778559806">"Startpagina instellen"</string>
     <string name="pref_content_autofit" msgid="8260474534053660809">"Pagina\'s automatisch laten passen"</string>
-    <string name="pref_content_autofit_summary" msgid="2358178043889761026">"Webpagina\'s zo indelen dat deze op het scherm passen"</string>
-    <string name="pref_content_landscape_only" msgid="5863539054484585534">"Alleen in liggende stand"</string>
-    <string name="pref_content_landscape_only_summary" msgid="1128170515157691793">"Pagina\'s altijd lezen in de brede, liggende schermstand"</string>
+    <!-- no translation found for pref_content_autofit_summary (4587831659894879986) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only (2022546812766219672) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only_summary (1008238895535428855) -->
+    <skip />
     <string name="pref_privacy_title" msgid="1052470980370846151">"Privacyinstellingen"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Cache wissen"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Lokaal opgeslagen inhoud en databases wissen"</string>
-    <string name="pref_privacy_clear_cache_dlg" msgid="1027868030632828913">"Lokaal opgeslagen inhoud en databases worden gewist."</string>
+    <!-- no translation found for pref_privacy_clear_cache_dlg (5541011591300753881) -->
+    <skip />
     <string name="pref_privacy_clear_cookies" msgid="3095583579133780331">"Alle cookiegegevens wissen"</string>
-    <string name="pref_privacy_clear_cookies_summary" msgid="8602064521480657942">"Alle browsercookies wissen"</string>
-    <string name="pref_privacy_clear_cookies_dlg" msgid="5399971428430900904">"Alle cookies worden gewist."</string>
+    <!-- no translation found for pref_privacy_clear_cookies_summary (6962742063990677520) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_cookies_dlg (552855688091432682) -->
+    <skip />
     <string name="pref_privacy_clear_history" msgid="8723795508825198477">"Geschiedenis wissen"</string>
     <string name="pref_privacy_clear_history_summary" msgid="6868501330708940734">"Navigatiegeschiedenis van de browser wissen"</string>
-    <string name="pref_privacy_clear_history_dlg" msgid="1433519059550861064">"De navigatiegeschiedenis van de browser wordt gewist."</string>
+    <!-- no translation found for pref_privacy_clear_history_dlg (544903007914753853) -->
+    <skip />
     <string name="pref_privacy_clear_form_data" msgid="4232668196344383987">"Formuliergegevens wissen"</string>
     <string name="pref_privacy_clear_form_data_summary" msgid="1790390894719517167">"Alle opgeslagen formuliergegevens wissen"</string>
-    <string name="pref_privacy_clear_form_data_dlg" msgid="567352105409238549">"Alle opgeslagen formuliergegevens worden gewist."</string>
+    <!-- no translation found for pref_privacy_clear_form_data_dlg (4443621086781197928) -->
+    <skip />
     <string name="pref_privacy_clear_passwords" msgid="4750234112289277480">"Wachtwoorden wissen"</string>
-    <string name="pref_privacy_clear_passwords_summary" msgid="1267552159370789981">"Alle opgeslagen wachtwoorden wissen"</string>
-    <string name="pref_privacy_clear_passwords_dlg" msgid="8425666119003961466">"Alle opgeslagen wachtwoorden worden gewist."</string>
+    <!-- no translation found for pref_privacy_clear_passwords_summary (8856782718942903335) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_passwords_dlg (2083869328824248255) -->
+    <skip />
     <string name="pref_privacy_enable_geolocation" msgid="1395040170290765686">"Locatie inschakelen"</string>
     <string name="pref_privacy_enable_geolocation_summary" msgid="8437020934664306205">"Sites toestaan om toegang te vragen tot uw locatie"</string>
     <string name="pref_privacy_clear_geolocation_access" msgid="6649680770030042980">"Locatietoegang ongedaan maken"</string>
@@ -160,7 +184,8 @@
     <string name="pref_privacy_clear_geolocation_access_dlg" msgid="7327063124488827244">"Locatietoegang voor alle websites ongedaan maken"</string>
     <string name="pref_security_title" msgid="5763978646932160021">"Beveiligingsinstellingen"</string>
     <string name="pref_security_remember_passwords" msgid="6492957683454529549">"Wachtwoorden onthouden"</string>
-    <string name="pref_security_remember_passwords_summary" msgid="6789880514358003065">"Gebruikersnamen en wachtwoorden voor websites opslaan"</string>
+    <!-- no translation found for pref_security_remember_passwords_summary (256388703356349137) -->
+    <skip />
     <string name="pref_security_save_form_data" msgid="1213669802810198893">"Gegevens op formulier onthouden"</string>
     <string name="pref_security_save_form_data_summary" msgid="4994074685153708026">"Gegevens die ik typ in formulieren, onthouden voor later gebruik"</string>
     <string name="pref_security_show_security_warning" msgid="8901135676266754559">"Beveiligingswaarschuwingen weergeven"</string>
@@ -183,14 +208,17 @@
     <item msgid="3840999588443167001">"Dichtbij"</item>
   </string-array>
     <string name="pref_default_zoom_dialogtitle" msgid="6095974367125109021">"Standaardzoom"</string>
-    <string name="pref_content_load_page" msgid="8834308472508060268">"Wanneer een pagina wordt geladen:"</string>
-    <string name="pref_content_load_page_summary" msgid="3161792969308430976">"Overzicht van de pagina weergeven"</string>
+    <!-- no translation found for pref_content_load_page (2219810141690955452) -->
+    <skip />
+    <!-- no translation found for pref_content_load_page_summary (8792093504054149369) -->
+    <skip />
     <string name="pref_extras_title" msgid="3091250467679722382">"Geavanceerde instellingen"</string>
     <string name="pref_extras_website_settings" msgid="67866640052455549">"Website-instellingen"</string>
     <string name="pref_extras_website_settings_summary" msgid="3917568895776162240">"Geavanceerde instellingen weergeven voor afzonderlijke websites"</string>
     <string name="pref_extras_reset_default" msgid="8904000515846202110">"Standaardinstellingen herstellen"</string>
     <string name="pref_extras_reset_default_summary" msgid="7984680562706914966">"Alle browsergegevens wissen en alle standaardinstellingen herstellen"</string>
-    <string name="pref_extras_reset_default_dlg" msgid="5332227004054477008">"Alle browsergegevens worden gewist en de standaardinstellingen worden hersteld."</string>
+    <!-- no translation found for pref_extras_reset_default_dlg (6894807766578874830) -->
+    <skip />
     <string name="pref_extras_reset_default_dlg_title" msgid="2250334970728938936">"Standaardinstellingen herstellen"</string>
     <string name="pref_development_title" msgid="3263854204533056480">"Foutopsporing"</string>
     <string name="pref_default_text_encoding" msgid="5742965543955558478">"Tekstcodering"</string>
@@ -204,20 +232,21 @@
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Tekstcodering"</string>
     <string name="pref_default_text_encoding_default" msgid="5272126711231936722">"Latijns-1"</string>
     <string name="browserFrameRedirect" msgid="7049675479777828343">"Omleiden"</string>
-    <string name="browserFrame307Post" msgid="739650008647852203">"Deze webpagina wordt omgeleid. Wilt u uw ingevulde formuliergegevens doorsturen naar de nieuwe locatie?"</string>
+    <!-- no translation found for browserFrame307Post (1429094844669510768) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Probleem met gegevensverbinding"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Probleem met bestand"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Bevestigen"</string>
     <string name="browserFrameFormResubmitMessage" msgid="2752182215695632138">"De pagina die u probeert te openen, bevat gegevens die al verzonden zijn (\'POSTDATA\'). Als u de gegevens opnieuw verzendt, wordt elke actie herhaald die het formulier op de pagina heeft uitgevoerd (zoals een zoekopdracht of online aanschaf)."</string>
     <string name="loadSuspendedTitle" msgid="675991625288706944">"Geen netwerkverbinding"</string>
-    <!-- no translation found for loadSuspended (724674402736067146) -->
+    <!-- no translation found for loadSuspended (3133656588880851273) -->
     <skip />
     <string name="clear_history" msgid="5998307092715979619">"Geschiedenis wissen"</string>
-    <string name="browser_history" msgid="2979476257919939232">"Onlangs bezochte pagina\'s"</string>
+    <!-- no translation found for browser_history (1038987118290272525) -->
+    <skip />
     <string name="empty_history" msgid="8738772352308207274">"Browsergeschiedenis is leeg."</string>
     <string name="add_new_bookmark" msgid="8086367791400349049">"Bladwijzer toevoegen…"</string>
     <string name="add_bookmark_short" msgid="3783984330998103735">"Toevoegen"</string>
-    <string name="no_database" msgid="2256698896757181084">"Geen database."</string>
     <string name="search_hint" msgid="4647356319916631820">"Zoek of typ de URL"</string>
     <string name="search_button_text" msgid="5235226933877634410">"Ga"</string>
     <string name="search_settings_description" msgid="1422401062529014107">"Bladwijzers en webgeschiedenis"</string>
@@ -257,7 +286,8 @@
     <string name="download_pending_network" msgid="6548714525679461053">"Wachten op gegevensverbinding..."</string>
     <string name="download_running_paused" msgid="6418029352085656495">"Wachten op dataverbinding"</string>
     <string name="download_canceled" msgid="6057083743144492515">"Download is geannuleerd."</string>
-    <string name="download_not_acceptable" msgid="282108828207321357">"Kan niet downloaden. De inhoud wordt niet ondersteund door de telefoon."</string>
+    <!-- no translation found for download_not_acceptable (313769696131563652) -->
+    <skip />
     <string name="download_file_error" msgid="1206648050615176113">"Kan download niet voltooien. Er is niet genoeg ruimte."</string>
     <string name="download_length_required" msgid="9038605488460437406">"Kan niet downloaden. De grootte van het item kan niet worden vastgesteld."</string>
     <string name="download_precondition_failed" msgid="8327584102874295580">"Download is onderbroken. Deze kan niet worden voortgezet."</string>
@@ -269,13 +299,20 @@
     <string name="webstorage_clear_data_summary" msgid="3523128713743907805">"Alle databases verwijderen die aan deze website zijn gekoppeld"</string>
     <string name="webstorage_clear_data_dialog_title" msgid="345457466368974706">"Opgeslagen gegevens wissen"</string>
     <string name="webstorage_clear_data_dialog_message" msgid="6678281256970470125">"Alle gegevens die door deze website worden opgeslagen, worden verwijderd"</string>
-    <string name="webstorage_clear_data_dialog_ok_button" msgid="5074037549893407416">"Alles wissen"</string>
+    <!-- no translation found for webstorage_clear_data_dialog_ok_button (2516563534211898636) -->
+    <skip />
     <string name="webstorage_clear_data_dialog_cancel_button" msgid="2028867751958942762">"Annuleren"</string>
     <string name="webstorage_origin_summary_mb_stored" msgid="1985885826292236210">"MB opgeslagen op uw telefoon"</string>
-    <string name="geolocation_permissions_prompt_message" msgid="2412844044592274106">"<xliff:g id="WEBPAGE">%s</xliff:g> wil weten wat uw locatie is"</string>
-    <string name="geolocation_permissions_prompt_share" msgid="6908104491085328731">"Delen"</string>
-    <string name="geolocation_permissions_prompt_dont_share" msgid="5962677371200773835">"Niet delen"</string>
-    <string name="geolocation_permissions_prompt_remember" msgid="5798300962802553043">"Onthouden"</string>
+    <!-- no translation found for loading_video (4887871585216091096) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_message (356796102004052471) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_share (9084486342048347976) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_dont_share (6303025160237860300) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_remember (3118526300707348308) -->
+    <skip />
     <string name="geolocation_settings_page_title" msgid="1745477985097536528">"Locatietoegang ongedaan maken"</string>
     <string name="geolocation_settings_page_summary_allowed" msgid="9180251524290811398">"Deze site heeft momenteel toegang tot uw locatie"</string>
     <string name="geolocation_settings_page_summary_not_allowed" msgid="4589649082203102544">"Deze site heeft momenteel geen toegang tot uw locatie"</string>
@@ -283,13 +320,13 @@
     <string name="geolocation_settings_page_dialog_message" msgid="7586671987576403993">"De locatietoegang voor deze website wordt ongedaan gemaakt"</string>
     <string name="geolocation_settings_page_dialog_ok_button" msgid="4789434178048077287">"Toegang ongedaan maken"</string>
     <string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"Annuleren"</string>
-    <!-- no translation found for website_settings_clear_all (2073906304824388952) -->
+    <!-- no translation found for website_settings_clear_all (8739804325997655980) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_title (1975103796504323734) -->
+    <!-- no translation found for website_settings_clear_all_dialog_title (7791826325122461718) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_message (6545526672017530811) -->
+    <!-- no translation found for website_settings_clear_all_dialog_message (6150502090601476333) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_ok_button (3677457125416372255) -->
+    <!-- no translation found for website_settings_clear_all_dialog_ok_button (6401582240627669431) -->
     <skip />
     <!-- no translation found for website_settings_clear_all_dialog_cancel_button (1896757051856611674) -->
     <skip />
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index f628078..4f051a9 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -16,8 +16,11 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Internet"</string>
-    <string name="new_tab" msgid="7971857320679510529">"Nowa karta"</string>
-    <!-- no translation found for active_tabs (8423342514993323050) -->
+    <!-- no translation found for choose_upload (3649366287575002063) -->
+    <skip />
+    <!-- no translation found for new_tab (4505722538297295141) -->
+    <skip />
+    <!-- no translation found for active_tabs (3050623868203544623) -->
     <skip />
     <string name="tab_bookmarks" msgid="2305793036003473653">"Zakładki"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Popularne"</string>
@@ -79,7 +82,10 @@
     <string name="remove_history_item" msgid="5021424935726728618">"Usuń z historii"</string>
     <string name="set_as_homepage" msgid="4752937379414905560">"Ustaw jako stronę główną"</string>
     <string name="bookmark_saved" msgid="2766434679871317557">"Zapisano na liście zakładek."</string>
-    <string name="homepage_set" msgid="9127149128262321090">"Strona główna została ustawiona"</string>
+    <!-- no translation found for bookmark_not_saved (700600955089376724) -->
+    <skip />
+    <!-- no translation found for homepage_set (8768087280310966395) -->
+    <skip />
     <string name="bookmark_needs_title" msgid="6245900436119218187">"Zakładka musi mieć nazwę."</string>
     <string name="bookmark_needs_url" msgid="7809876865972755158">"Zakładka musi zawierać adres."</string>
     <string name="empty_bookmark" msgid="7008697085928540511">"Nie można utworzyć pustej zakładki."</string>
@@ -107,6 +113,8 @@
     <string name="shortcut_bookmark" msgid="3974876480401135895">"Utwórz zakładkę"</string>
     <string name="history" msgid="2451240511251410032">"Historia"</string>
     <string name="menu_view_download" msgid="2124570321712995120">"Pobrane pliki"</string>
+    <!-- no translation found for copy_page_url (7635062169011319208) -->
+    <skip />
     <string name="share_page" msgid="593756995297268343">"Udostępnij stronę"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Otwórz"</string>
     <string name="contextmenu_openlink_newwindow" msgid="992765050093960353">"Otwórz w nowym oknie"</string>
@@ -121,38 +129,54 @@
     <string name="contextmenu_add_contact" msgid="3183511922223645716">"Dodaj kontakt"</string>
     <string name="contextmenu_send_mail" msgid="1014513374828775660">"Wyślij e-mail"</string>
     <string name="contextmenu_map" msgid="7471390435434034912">"Mapa"</string>
+    <!-- no translation found for choosertitle_sharevia (4600490613341909086) -->
+    <skip />
     <string name="clear" msgid="7070043081700011461">"Wyczyść"</string>
     <string name="replace" msgid="4843033491070384047">"Zastąp adres"</string>
     <string name="browser_bookmarks_page_bookmarks_text" msgid="6787605028726162673">"Zakładki"</string>
     <string name="menu_preferences" msgid="6709237687234102240">"Ustawienia"</string>
     <string name="pref_content_title" msgid="722227111894838633">"Ustawienia zawartości stron"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Wczytuj obrazy"</string>
-    <string name="pref_content_load_images_summary" msgid="5149716777459747214">"Wyświetlaj obrazy na stronach WWW"</string>
+    <!-- no translation found for pref_content_load_images_summary (5055874125248398584) -->
+    <skip />
     <string name="pref_content_block_popups" msgid="7808433807197256726">"Blokuj wyskakujące okna"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Włącz skrypty JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Otwórz w tle"</string>
-    <string name="pref_content_open_in_background_summary" msgid="1543556325431215041">"Nowe okna są otwierane w tle"</string>
+    <!-- no translation found for pref_content_plugins (7231944644794301582) -->
+    <skip />
+    <!-- no translation found for pref_content_open_in_background_summary (1737664075721181678) -->
+    <skip />
     <string name="pref_content_homepage" msgid="6082437160778559806">"Ustaw stronę główną"</string>
     <string name="pref_content_autofit" msgid="8260474534053660809">"Autodopasowanie stron"</string>
-    <string name="pref_content_autofit_summary" msgid="2358178043889761026">"Formatuj strony WWW, aby mieściły się na ekranie"</string>
-    <string name="pref_content_landscape_only" msgid="5863539054484585534">"Tylko widok poziomy"</string>
-    <string name="pref_content_landscape_only_summary" msgid="1128170515157691793">"Zawsze czytaj strony w szerszej, poziomej orientacji ekranu"</string>
+    <!-- no translation found for pref_content_autofit_summary (4587831659894879986) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only (2022546812766219672) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only_summary (1008238895535428855) -->
+    <skip />
     <string name="pref_privacy_title" msgid="1052470980370846151">"Ustawienia prywatności"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Wyczyść pamięć podręczną"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Wyczyść zawartość lokalnej pamięci podręcznej i baz danych"</string>
-    <string name="pref_privacy_clear_cache_dlg" msgid="1027868030632828913">"Zawartość lokalnej pamięci podręcznej i baz danych zostanie wyczyszczona."</string>
+    <!-- no translation found for pref_privacy_clear_cache_dlg (5541011591300753881) -->
+    <skip />
     <string name="pref_privacy_clear_cookies" msgid="3095583579133780331">"Wyczyść wszystkie pliki cookie"</string>
-    <string name="pref_privacy_clear_cookies_summary" msgid="8602064521480657942">"Wyczyść pliki cookie przeglądarki"</string>
-    <string name="pref_privacy_clear_cookies_dlg" msgid="5399971428430900904">"Wszystkie pliki cookie zostaną usunięte."</string>
+    <!-- no translation found for pref_privacy_clear_cookies_summary (6962742063990677520) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_cookies_dlg (552855688091432682) -->
+    <skip />
     <string name="pref_privacy_clear_history" msgid="8723795508825198477">"Wyczyść historię"</string>
     <string name="pref_privacy_clear_history_summary" msgid="6868501330708940734">"Wyczyść historię przeglądania"</string>
-    <string name="pref_privacy_clear_history_dlg" msgid="1433519059550861064">"Historia przeglądania zostanie wyczyszczona."</string>
+    <!-- no translation found for pref_privacy_clear_history_dlg (544903007914753853) -->
+    <skip />
     <string name="pref_privacy_clear_form_data" msgid="4232668196344383987">"Wyczyść dane formularzy"</string>
     <string name="pref_privacy_clear_form_data_summary" msgid="1790390894719517167">"Usuń wszystkie zapisane dane formularzy"</string>
-    <string name="pref_privacy_clear_form_data_dlg" msgid="567352105409238549">"Wszystkie zapamiętane dane formularzy zostaną wyczyszczone."</string>
+    <!-- no translation found for pref_privacy_clear_form_data_dlg (4443621086781197928) -->
+    <skip />
     <string name="pref_privacy_clear_passwords" msgid="4750234112289277480">"Wyczyść hasła"</string>
-    <string name="pref_privacy_clear_passwords_summary" msgid="1267552159370789981">"Wyczyść wszystkie zapamiętane hasła"</string>
-    <string name="pref_privacy_clear_passwords_dlg" msgid="8425666119003961466">"Wszystkie zapamiętane hasła zostaną wyczyszczone."</string>
+    <!-- no translation found for pref_privacy_clear_passwords_summary (8856782718942903335) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_passwords_dlg (2083869328824248255) -->
+    <skip />
     <string name="pref_privacy_enable_geolocation" msgid="1395040170290765686">"Włącz obsługę lokalizacji"</string>
     <string name="pref_privacy_enable_geolocation_summary" msgid="8437020934664306205">"Zezwalaj witrynom na żądanie dostępu do informacji o lokalizacji"</string>
     <string name="pref_privacy_clear_geolocation_access" msgid="6649680770030042980">"Udziel dostępu do informacji o lokalizacji"</string>
@@ -160,7 +184,8 @@
     <string name="pref_privacy_clear_geolocation_access_dlg" msgid="7327063124488827244">"Usuń dostęp wszystkich witryn do informacji o lokalizacji"</string>
     <string name="pref_security_title" msgid="5763978646932160021">"Ustawienia zabezpieczeń"</string>
     <string name="pref_security_remember_passwords" msgid="6492957683454529549">"Pamiętaj hasła"</string>
-    <string name="pref_security_remember_passwords_summary" msgid="6789880514358003065">"Zapamiętuj nazwy użytkownika i hasła do stron WWW"</string>
+    <!-- no translation found for pref_security_remember_passwords_summary (256388703356349137) -->
+    <skip />
     <string name="pref_security_save_form_data" msgid="1213669802810198893">"Pamiętaj wpisane dane"</string>
     <string name="pref_security_save_form_data_summary" msgid="4994074685153708026">"Zapamiętuj do późniejszego użycia dane, które wpisuję w formularzach"</string>
     <string name="pref_security_show_security_warning" msgid="8901135676266754559">"Wyświetlaj ostrzeżenia"</string>
@@ -183,14 +208,17 @@
     <item msgid="3840999588443167001">"Duże"</item>
   </string-array>
     <string name="pref_default_zoom_dialogtitle" msgid="6095974367125109021">"Powiększenie domyślne"</string>
-    <string name="pref_content_load_page" msgid="8834308472508060268">"Po wczytaniu strony:"</string>
-    <string name="pref_content_load_page_summary" msgid="3161792969308430976">"Pokaż przegląd strony"</string>
+    <!-- no translation found for pref_content_load_page (2219810141690955452) -->
+    <skip />
+    <!-- no translation found for pref_content_load_page_summary (8792093504054149369) -->
+    <skip />
     <string name="pref_extras_title" msgid="3091250467679722382">"Ustawienia zaawansowane"</string>
     <string name="pref_extras_website_settings" msgid="67866640052455549">"Ustawienia witryny"</string>
     <string name="pref_extras_website_settings_summary" msgid="3917568895776162240">"Wyświetl ustawienia zaawansowane dla poszczególnych witryn"</string>
     <string name="pref_extras_reset_default" msgid="8904000515846202110">"Przywróć wartości domyślne"</string>
     <string name="pref_extras_reset_default_summary" msgid="7984680562706914966">"Wyczyść wszystkie dane przeglądarki i przywróć wszystkie ustawienia domyślne"</string>
-    <string name="pref_extras_reset_default_dlg" msgid="5332227004054477008">"Wszystkie dane przeglądarki zostaną wyczyszczone, a ustawienia powrócą do wartości domyślnych."</string>
+    <!-- no translation found for pref_extras_reset_default_dlg (6894807766578874830) -->
+    <skip />
     <string name="pref_extras_reset_default_dlg_title" msgid="2250334970728938936">"Przywróć wartości domyślne"</string>
     <string name="pref_development_title" msgid="3263854204533056480">"Debugowanie"</string>
     <string name="pref_default_text_encoding" msgid="5742965543955558478">"Kodowanie tekstu"</string>
@@ -204,20 +232,21 @@
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Kodowanie tekstu"</string>
     <string name="pref_default_text_encoding_default" msgid="5272126711231936722">"Latin-1"</string>
     <string name="browserFrameRedirect" msgid="7049675479777828343">"Przekieruj"</string>
-    <string name="browserFrame307Post" msgid="739650008647852203">"Ta strona WWW jest przekierowywana. Czy wysłać wpisane dane formularza do nowej lokalizacji?"</string>
+    <!-- no translation found for browserFrame307Post (1429094844669510768) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problem z łącznością danych"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problem z plikiem"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Potwierdzenie"</string>
     <string name="browserFrameFormResubmitMessage" msgid="2752182215695632138">"Strona, którą próbujesz wyświetlić, zawiera dane, które już przesłano („POSTDATA”). Jeśli wyślesz te dane ponownie, wszelkie operacje wykonane przez formularz na tej stronie (np. wyszukiwanie lub zakup online) zostaną powtórzone."</string>
     <string name="loadSuspendedTitle" msgid="675991625288706944">"Brak połączenia z siecią"</string>
-    <!-- no translation found for loadSuspended (724674402736067146) -->
+    <!-- no translation found for loadSuspended (3133656588880851273) -->
     <skip />
     <string name="clear_history" msgid="5998307092715979619">"Wyczyść historię"</string>
-    <string name="browser_history" msgid="2979476257919939232">"Ostatnio odwiedzane strony"</string>
+    <!-- no translation found for browser_history (1038987118290272525) -->
+    <skip />
     <string name="empty_history" msgid="8738772352308207274">"Historia przeglądarki jest pusta."</string>
     <string name="add_new_bookmark" msgid="8086367791400349049">"Dodaj do zakładek..."</string>
     <string name="add_bookmark_short" msgid="3783984330998103735">"Dodaj"</string>
-    <string name="no_database" msgid="2256698896757181084">"Brak bazy danych!"</string>
     <string name="search_hint" msgid="4647356319916631820">"Wyszukaj lub wpisz adres URL"</string>
     <string name="search_button_text" msgid="5235226933877634410">"Otwórz"</string>
     <string name="search_settings_description" msgid="1422401062529014107">"Zakładki i historia przeglądanych zasobów sieciowych"</string>
@@ -257,7 +286,8 @@
     <string name="download_pending_network" msgid="6548714525679461053">"Oczekiwanie na połączenie danych…"</string>
     <string name="download_running_paused" msgid="6418029352085656495">"Oczekiwanie na połączenie danych..."</string>
     <string name="download_canceled" msgid="6057083743144492515">"Pobieranie anulowane."</string>
-    <string name="download_not_acceptable" msgid="282108828207321357">"Pobranie niemożliwe. Ta zawartość nie jest obsługiwana przez ten telefon."</string>
+    <!-- no translation found for download_not_acceptable (313769696131563652) -->
+    <skip />
     <string name="download_file_error" msgid="1206648050615176113">"Nie można ukończyć pobierania. Za mało miejsca."</string>
     <string name="download_length_required" msgid="9038605488460437406">"Pobieranie niemożliwe. Nie można ustalić rozmiaru elementu."</string>
     <string name="download_precondition_failed" msgid="8327584102874295580">"Pobieranie zostało przerwane. Nie można go wznowić."</string>
@@ -269,13 +299,20 @@
     <string name="webstorage_clear_data_summary" msgid="3523128713743907805">"Usuń wszystkie bazy danych powiązane z tą witryną"</string>
     <string name="webstorage_clear_data_dialog_title" msgid="345457466368974706">"Wyczyść zapisane dane"</string>
     <string name="webstorage_clear_data_dialog_message" msgid="6678281256970470125">"Wszystkie dane zapisane przez tę witrynę zostaną usunięte"</string>
-    <string name="webstorage_clear_data_dialog_ok_button" msgid="5074037549893407416">"Wyczyść wszystko"</string>
+    <!-- no translation found for webstorage_clear_data_dialog_ok_button (2516563534211898636) -->
+    <skip />
     <string name="webstorage_clear_data_dialog_cancel_button" msgid="2028867751958942762">"Anuluj"</string>
     <string name="webstorage_origin_summary_mb_stored" msgid="1985885826292236210">"Liczba MB danych zapisanych w telefonie"</string>
-    <string name="geolocation_permissions_prompt_message" msgid="2412844044592274106">"Witryna <xliff:g id="WEBPAGE">%s</xliff:g> chce uzyskać informacje o Twojej lokalizacji"</string>
-    <string name="geolocation_permissions_prompt_share" msgid="6908104491085328731">"Udostępnij"</string>
-    <string name="geolocation_permissions_prompt_dont_share" msgid="5962677371200773835">"Nie udostępniaj"</string>
-    <string name="geolocation_permissions_prompt_remember" msgid="5798300962802553043">"Zapamiętaj"</string>
+    <!-- no translation found for loading_video (4887871585216091096) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_message (356796102004052471) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_share (9084486342048347976) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_dont_share (6303025160237860300) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_remember (3118526300707348308) -->
+    <skip />
     <string name="geolocation_settings_page_title" msgid="1745477985097536528">"Udziel dostępu do informacji o lokalizacji"</string>
     <string name="geolocation_settings_page_summary_allowed" msgid="9180251524290811398">"Ta witryna ma obecnie dostęp do informacji o Twojej lokalizacji"</string>
     <string name="geolocation_settings_page_summary_not_allowed" msgid="4589649082203102544">"Ta witryna nie ma obecnie dostępu do informacji o Twojej lokalizacji"</string>
@@ -283,13 +320,13 @@
     <string name="geolocation_settings_page_dialog_message" msgid="7586671987576403993">"Dostęp tej witryny do informacji o lokalizacji zostanie usunięty"</string>
     <string name="geolocation_settings_page_dialog_ok_button" msgid="4789434178048077287">"Usuń dostęp"</string>
     <string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"Anuluj"</string>
-    <!-- no translation found for website_settings_clear_all (2073906304824388952) -->
+    <!-- no translation found for website_settings_clear_all (8739804325997655980) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_title (1975103796504323734) -->
+    <!-- no translation found for website_settings_clear_all_dialog_title (7791826325122461718) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_message (6545526672017530811) -->
+    <!-- no translation found for website_settings_clear_all_dialog_message (6150502090601476333) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_ok_button (3677457125416372255) -->
+    <!-- no translation found for website_settings_clear_all_dialog_ok_button (6401582240627669431) -->
     <skip />
     <!-- no translation found for website_settings_clear_all_dialog_cancel_button (1896757051856611674) -->
     <skip />
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 30bee32..a5c48fd 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -16,8 +16,11 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Browser"</string>
-    <string name="new_tab" msgid="7971857320679510529">"Novo separador"</string>
-    <!-- no translation found for active_tabs (8423342514993323050) -->
+    <!-- no translation found for choose_upload (3649366287575002063) -->
+    <skip />
+    <!-- no translation found for new_tab (4505722538297295141) -->
+    <skip />
+    <!-- no translation found for active_tabs (3050623868203544623) -->
     <skip />
     <string name="tab_bookmarks" msgid="2305793036003473653">"Marcadores"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Os mais visitados"</string>
@@ -79,7 +82,10 @@
     <string name="remove_history_item" msgid="5021424935726728618">"Remover do histórico"</string>
     <string name="set_as_homepage" msgid="4752937379414905560">"Definir como página inicial"</string>
     <string name="bookmark_saved" msgid="2766434679871317557">"Guardado nos marcadores"</string>
-    <string name="homepage_set" msgid="9127149128262321090">"Página inicial definida"</string>
+    <!-- no translation found for bookmark_not_saved (700600955089376724) -->
+    <skip />
+    <!-- no translation found for homepage_set (8768087280310966395) -->
+    <skip />
     <string name="bookmark_needs_title" msgid="6245900436119218187">"Os marcadores têm de ter um nome."</string>
     <string name="bookmark_needs_url" msgid="7809876865972755158">"O marcador tem de ter uma localização."</string>
     <string name="empty_bookmark" msgid="7008697085928540511">"Não é possível criar um marcador vazio."</string>
@@ -107,6 +113,8 @@
     <string name="shortcut_bookmark" msgid="3974876480401135895">"Marcador"</string>
     <string name="history" msgid="2451240511251410032">"Histórico"</string>
     <string name="menu_view_download" msgid="2124570321712995120">"Transferências"</string>
+    <!-- no translation found for copy_page_url (7635062169011319208) -->
+    <skip />
     <string name="share_page" msgid="593756995297268343">"Partilhar página"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Abrir"</string>
     <string name="contextmenu_openlink_newwindow" msgid="992765050093960353">"Abrir numa janela nova"</string>
@@ -121,38 +129,54 @@
     <string name="contextmenu_add_contact" msgid="3183511922223645716">"Adicionar contacto"</string>
     <string name="contextmenu_send_mail" msgid="1014513374828775660">"Enviar e-mail"</string>
     <string name="contextmenu_map" msgid="7471390435434034912">"Mapa"</string>
+    <!-- no translation found for choosertitle_sharevia (4600490613341909086) -->
+    <skip />
     <string name="clear" msgid="7070043081700011461">"Limpar"</string>
     <string name="replace" msgid="4843033491070384047">"Substituir"</string>
     <string name="browser_bookmarks_page_bookmarks_text" msgid="6787605028726162673">"Marcadores"</string>
     <string name="menu_preferences" msgid="6709237687234102240">"Definições"</string>
     <string name="pref_content_title" msgid="722227111894838633">"Definições de conteúdo da página"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Carregar imagens"</string>
-    <string name="pref_content_load_images_summary" msgid="5149716777459747214">"Apresentar imagens em páginas Web"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Bloquear janelas de pop-up"</string>
+    <!-- no translation found for pref_content_load_images_summary (5055874125248398584) -->
+    <skip />
+    <string name="pref_content_block_popups" msgid="7808433807197256726">"Bloquear janelas pop-up"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Activar JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Abrir em segundo plano"</string>
-    <string name="pref_content_open_in_background_summary" msgid="1543556325431215041">"As novas janelas serão abertas atrás da janela actual"</string>
+    <!-- no translation found for pref_content_plugins (7231944644794301582) -->
+    <skip />
+    <!-- no translation found for pref_content_open_in_background_summary (1737664075721181678) -->
+    <skip />
     <string name="pref_content_homepage" msgid="6082437160778559806">"Definir página inicial"</string>
-    <string name="pref_content_autofit" msgid="8260474534053660809">"Ajustar páginas automaticamente"</string>
-    <string name="pref_content_autofit_summary" msgid="2358178043889761026">"Formatar páginas Web para se ajustarem ao ecrã"</string>
-    <string name="pref_content_landscape_only" msgid="5863539054484585534">"Apresentação apenas na horizontal"</string>
-    <string name="pref_content_landscape_only_summary" msgid="1128170515157691793">"Ler sempre as páginas na orientação horizontal do ecrã (mais larga)"</string>
+    <string name="pref_content_autofit" msgid="8260474534053660809">"Ajuste auto de páginas"</string>
+    <!-- no translation found for pref_content_autofit_summary (4587831659894879986) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only (2022546812766219672) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only_summary (1008238895535428855) -->
+    <skip />
     <string name="pref_privacy_title" msgid="1052470980370846151">"Definições de privacidade"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Limpar cache"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Limpar bases de dados e conteúdos colocados em cache localmente"</string>
-    <string name="pref_privacy_clear_cache_dlg" msgid="1027868030632828913">"As bases de dados e os conteúdos colocados em cache localmente serão limpos."</string>
-    <string name="pref_privacy_clear_cookies" msgid="3095583579133780331">"Limpar todos os dados de cookies"</string>
-    <string name="pref_privacy_clear_cookies_summary" msgid="8602064521480657942">"Limpar todos os cookies do browser"</string>
-    <string name="pref_privacy_clear_cookies_dlg" msgid="5399971428430900904">"Todos os cookies serão limpos."</string>
+    <!-- no translation found for pref_privacy_clear_cache_dlg (5541011591300753881) -->
+    <skip />
+    <string name="pref_privacy_clear_cookies" msgid="3095583579133780331">"Limpar os dados de cookies"</string>
+    <!-- no translation found for pref_privacy_clear_cookies_summary (6962742063990677520) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_cookies_dlg (552855688091432682) -->
+    <skip />
     <string name="pref_privacy_clear_history" msgid="8723795508825198477">"Limpar histórico"</string>
     <string name="pref_privacy_clear_history_summary" msgid="6868501330708940734">"Limpar o histórico de navegação do browser"</string>
-    <string name="pref_privacy_clear_history_dlg" msgid="1433519059550861064">"O histórico de navegação do browser será limpo."</string>
+    <!-- no translation found for pref_privacy_clear_history_dlg (544903007914753853) -->
+    <skip />
     <string name="pref_privacy_clear_form_data" msgid="4232668196344383987">"Limpar dados de formulário"</string>
     <string name="pref_privacy_clear_form_data_summary" msgid="1790390894719517167">"Limpar todos os dados de formulário guardados"</string>
-    <string name="pref_privacy_clear_form_data_dlg" msgid="567352105409238549">"Todos os dados de formulário guardados serão limpos."</string>
+    <!-- no translation found for pref_privacy_clear_form_data_dlg (4443621086781197928) -->
+    <skip />
     <string name="pref_privacy_clear_passwords" msgid="4750234112289277480">"Limpar palavras-passe"</string>
-    <string name="pref_privacy_clear_passwords_summary" msgid="1267552159370789981">"Limpar todas as palavras-passe guardadas"</string>
-    <string name="pref_privacy_clear_passwords_dlg" msgid="8425666119003961466">"Todas as palavras-passe guardadas serão limpas."</string>
+    <!-- no translation found for pref_privacy_clear_passwords_summary (8856782718942903335) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_passwords_dlg (2083869328824248255) -->
+    <skip />
     <string name="pref_privacy_enable_geolocation" msgid="1395040170290765686">"Activar localização"</string>
     <string name="pref_privacy_enable_geolocation_summary" msgid="8437020934664306205">"Permitir que os sites solicitem acesso à sua localização"</string>
     <string name="pref_privacy_clear_geolocation_access" msgid="6649680770030042980">"Limpar acesso à localização"</string>
@@ -160,10 +184,11 @@
     <string name="pref_privacy_clear_geolocation_access_dlg" msgid="7327063124488827244">"Limpar o acesso à localização para todos os Web sites"</string>
     <string name="pref_security_title" msgid="5763978646932160021">"Definições de segurança"</string>
     <string name="pref_security_remember_passwords" msgid="6492957683454529549">"Lembrar palavras-passe"</string>
-    <string name="pref_security_remember_passwords_summary" msgid="6789880514358003065">"Guardar nomes de utilizador e palavras-passe de Web sites"</string>
-    <string name="pref_security_save_form_data" msgid="1213669802810198893">"Lembrar dados de formulário"</string>
+    <!-- no translation found for pref_security_remember_passwords_summary (256388703356349137) -->
+    <skip />
+    <string name="pref_security_save_form_data" msgid="1213669802810198893">"Lembrar dados formulário"</string>
     <string name="pref_security_save_form_data_summary" msgid="4994074685153708026">"Lembrar dados introduzidos em formulários para utilização posterior"</string>
-    <string name="pref_security_show_security_warning" msgid="8901135676266754559">"Mostrar avisos de segurança"</string>
+    <string name="pref_security_show_security_warning" msgid="8901135676266754559">"Mostrar avisos segurança"</string>
     <string name="pref_security_show_security_warning_summary" msgid="8968906112720511704">"Mostrar aviso se ocorrer um problema com a segurança de um site"</string>
     <string name="pref_security_accept_cookies" msgid="3201367661925047989">"Aceitar cookies"</string>
     <string name="pref_security_accept_cookies_summary" msgid="1465118934875026920">"Permitir que os sites guardem e leiam dados de \"cookies\""</string>
@@ -183,14 +208,17 @@
     <item msgid="3840999588443167001">"Fechar"</item>
   </string-array>
     <string name="pref_default_zoom_dialogtitle" msgid="6095974367125109021">"Zoom predefinido"</string>
-    <string name="pref_content_load_page" msgid="8834308472508060268">"Quando uma página é carregada:"</string>
-    <string name="pref_content_load_page_summary" msgid="3161792969308430976">"Mostrar descrição da página"</string>
+    <!-- no translation found for pref_content_load_page (2219810141690955452) -->
+    <skip />
+    <!-- no translation found for pref_content_load_page_summary (8792093504054149369) -->
+    <skip />
     <string name="pref_extras_title" msgid="3091250467679722382">"Definições avançadas"</string>
     <string name="pref_extras_website_settings" msgid="67866640052455549">"Definições de Web site"</string>
     <string name="pref_extras_website_settings_summary" msgid="3917568895776162240">"Ver definições avançadas para Web sites individuais"</string>
     <string name="pref_extras_reset_default" msgid="8904000515846202110">"Repor as predefinições"</string>
     <string name="pref_extras_reset_default_summary" msgid="7984680562706914966">"Limpar todos os dados do browser e repor todas as predefinições"</string>
-    <string name="pref_extras_reset_default_dlg" msgid="5332227004054477008">"Todos os dados do browser serão limpos e as definições serão repostas para os valores predefinidos."</string>
+    <!-- no translation found for pref_extras_reset_default_dlg (6894807766578874830) -->
+    <skip />
     <string name="pref_extras_reset_default_dlg_title" msgid="2250334970728938936">"Repor as predefinições"</string>
     <string name="pref_development_title" msgid="3263854204533056480">"Depuração"</string>
     <string name="pref_default_text_encoding" msgid="5742965543955558478">"Codificação do texto"</string>
@@ -204,20 +232,21 @@
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Codificação do texto"</string>
     <string name="pref_default_text_encoding_default" msgid="5272126711231936722">"Latim-1"</string>
     <string name="browserFrameRedirect" msgid="7049675479777828343">"Redireccionar"</string>
-    <string name="browserFrame307Post" msgid="739650008647852203">"Esta página Web está a ser redireccionada. Pretende reenviar os dados de formulário introduzidos para a nova localização?"</string>
+    <!-- no translation found for browserFrame307Post (1429094844669510768) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problema de conectividade de dados"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problemas com o ficheiro"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Confirmar"</string>
     <string name="browserFrameFormResubmitMessage" msgid="2752182215695632138">"A página que está a tentar visualizar contém dados enviados anteriormente (\"REGISTDADOS\"). Se reenviar os dados, qualquer acção já tomada pelo formulário da página (como uma pesquisa ou compra on-line) será repetida."</string>
     <string name="loadSuspendedTitle" msgid="675991625288706944">"Sem ligação de rede"</string>
-    <!-- no translation found for loadSuspended (724674402736067146) -->
+    <!-- no translation found for loadSuspended (3133656588880851273) -->
     <skip />
     <string name="clear_history" msgid="5998307092715979619">"Limpar histórico"</string>
-    <string name="browser_history" msgid="2979476257919939232">"Páginas visitadas recentemente"</string>
+    <!-- no translation found for browser_history (1038987118290272525) -->
+    <skip />
     <string name="empty_history" msgid="8738772352308207274">"O histórico do browser está vazio."</string>
     <string name="add_new_bookmark" msgid="8086367791400349049">"Adicionar marcador..."</string>
     <string name="add_bookmark_short" msgid="3783984330998103735">"Adicionar"</string>
-    <string name="no_database" msgid="2256698896757181084">"Não existe base de dados!"</string>
     <string name="search_hint" msgid="4647356319916631820">"Pesquisar ou escrever URL"</string>
     <string name="search_button_text" msgid="5235226933877634410">"Ir"</string>
     <string name="search_settings_description" msgid="1422401062529014107">"Marcadores e histórico da Web"</string>
@@ -257,7 +286,8 @@
     <string name="download_pending_network" msgid="6548714525679461053">"A aguardar ligação de dados…"</string>
     <string name="download_running_paused" msgid="6418029352085656495">"A aguardar ligação de dados…"</string>
     <string name="download_canceled" msgid="6057083743144492515">"Transferência cancelada."</string>
-    <string name="download_not_acceptable" msgid="282108828207321357">"Não é possível transferir. Este conteúdo não é suportado pelo telefone."</string>
+    <!-- no translation found for download_not_acceptable (313769696131563652) -->
+    <skip />
     <string name="download_file_error" msgid="1206648050615176113">"Não é possível concluir a transferência. Não existe espaço suficiente."</string>
     <string name="download_length_required" msgid="9038605488460437406">"Não é possível transferir porque o tamanho do item é indeterminado."</string>
     <string name="download_precondition_failed" msgid="8327584102874295580">"A transferência foi interrompida e não pode ser retomada."</string>
@@ -269,13 +299,20 @@
     <string name="webstorage_clear_data_summary" msgid="3523128713743907805">"Remover todas as bases de dados associadas a este Web site"</string>
     <string name="webstorage_clear_data_dialog_title" msgid="345457466368974706">"Limpar dados armazenados"</string>
     <string name="webstorage_clear_data_dialog_message" msgid="6678281256970470125">"Todos os dados armazenados por este Web site serão limpos"</string>
-    <string name="webstorage_clear_data_dialog_ok_button" msgid="5074037549893407416">"Limpar tudo"</string>
+    <!-- no translation found for webstorage_clear_data_dialog_ok_button (2516563534211898636) -->
+    <skip />
     <string name="webstorage_clear_data_dialog_cancel_button" msgid="2028867751958942762">"Cancelar"</string>
     <string name="webstorage_origin_summary_mb_stored" msgid="1985885826292236210">"MB armazenados no telefone"</string>
-    <string name="geolocation_permissions_prompt_message" msgid="2412844044592274106">"<xliff:g id="WEBPAGE">%s</xliff:g> pretende conhecer a sua localização"</string>
-    <string name="geolocation_permissions_prompt_share" msgid="6908104491085328731">"Partilhar"</string>
-    <string name="geolocation_permissions_prompt_dont_share" msgid="5962677371200773835">"Não partilhar"</string>
-    <string name="geolocation_permissions_prompt_remember" msgid="5798300962802553043">"Lembrar"</string>
+    <!-- no translation found for loading_video (4887871585216091096) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_message (356796102004052471) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_share (9084486342048347976) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_dont_share (6303025160237860300) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_remember (3118526300707348308) -->
+    <skip />
     <string name="geolocation_settings_page_title" msgid="1745477985097536528">"Limpar acesso à localização"</string>
     <string name="geolocation_settings_page_summary_allowed" msgid="9180251524290811398">"Actualmente este site pode aceder à sua localização"</string>
     <string name="geolocation_settings_page_summary_not_allowed" msgid="4589649082203102544">"Actualmente este site não pode aceder à sua localização"</string>
@@ -283,13 +320,13 @@
     <string name="geolocation_settings_page_dialog_message" msgid="7586671987576403993">"O acesso à localização para este Web site será limpo"</string>
     <string name="geolocation_settings_page_dialog_ok_button" msgid="4789434178048077287">"Limpar acesso"</string>
     <string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"Cancelar"</string>
-    <!-- no translation found for website_settings_clear_all (2073906304824388952) -->
+    <!-- no translation found for website_settings_clear_all (8739804325997655980) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_title (1975103796504323734) -->
+    <!-- no translation found for website_settings_clear_all_dialog_title (7791826325122461718) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_message (6545526672017530811) -->
+    <!-- no translation found for website_settings_clear_all_dialog_message (6150502090601476333) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_ok_button (3677457125416372255) -->
+    <!-- no translation found for website_settings_clear_all_dialog_ok_button (6401582240627669431) -->
     <skip />
     <!-- no translation found for website_settings_clear_all_dialog_cancel_button (1896757051856611674) -->
     <skip />
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index a3e1acd..f0b457c 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -16,8 +16,11 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Navegador"</string>
-    <string name="new_tab" msgid="7971857320679510529">"Nova guia"</string>
-    <!-- no translation found for active_tabs (8423342514993323050) -->
+    <!-- no translation found for choose_upload (3649366287575002063) -->
+    <skip />
+    <!-- no translation found for new_tab (4505722538297295141) -->
+    <skip />
+    <!-- no translation found for active_tabs (3050623868203544623) -->
     <skip />
     <string name="tab_bookmarks" msgid="2305793036003473653">"Favoritos"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Mais visitados"</string>
@@ -79,7 +82,10 @@
     <string name="remove_history_item" msgid="5021424935726728618">"Remover do histórico"</string>
     <string name="set_as_homepage" msgid="4752937379414905560">"Definir como página inicial"</string>
     <string name="bookmark_saved" msgid="2766434679871317557">"Salvo nos favoritos."</string>
-    <string name="homepage_set" msgid="9127149128262321090">"Página inicial definida"</string>
+    <!-- no translation found for bookmark_not_saved (700600955089376724) -->
+    <skip />
+    <!-- no translation found for homepage_set (8768087280310966395) -->
+    <skip />
     <string name="bookmark_needs_title" msgid="6245900436119218187">"O favorito precisa ter um nome."</string>
     <string name="bookmark_needs_url" msgid="7809876865972755158">"O favorito precisa ter um local."</string>
     <string name="empty_bookmark" msgid="7008697085928540511">"Não é possível criar um favorito vazio."</string>
@@ -107,6 +113,8 @@
     <string name="shortcut_bookmark" msgid="3974876480401135895">"Favorito"</string>
     <string name="history" msgid="2451240511251410032">"Histórico"</string>
     <string name="menu_view_download" msgid="2124570321712995120">"Downloads"</string>
+    <!-- no translation found for copy_page_url (7635062169011319208) -->
+    <skip />
     <string name="share_page" msgid="593756995297268343">"Compartilhar página"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Abrir"</string>
     <string name="contextmenu_openlink_newwindow" msgid="992765050093960353">"Abrir em uma nova janela"</string>
@@ -121,38 +129,54 @@
     <string name="contextmenu_add_contact" msgid="3183511922223645716">"Adicionar contato"</string>
     <string name="contextmenu_send_mail" msgid="1014513374828775660">"Enviar e-mail"</string>
     <string name="contextmenu_map" msgid="7471390435434034912">"Mapa"</string>
+    <!-- no translation found for choosertitle_sharevia (4600490613341909086) -->
+    <skip />
     <string name="clear" msgid="7070043081700011461">"Limpar"</string>
     <string name="replace" msgid="4843033491070384047">"Substituir"</string>
     <string name="browser_bookmarks_page_bookmarks_text" msgid="6787605028726162673">"Favoritos"</string>
     <string name="menu_preferences" msgid="6709237687234102240">"Configurações"</string>
     <string name="pref_content_title" msgid="722227111894838633">"Configurações do conteúdo da página"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Carregar imagens"</string>
-    <string name="pref_content_load_images_summary" msgid="5149716777459747214">"Exibir imagens nas páginas da web"</string>
+    <!-- no translation found for pref_content_load_images_summary (5055874125248398584) -->
+    <skip />
     <string name="pref_content_block_popups" msgid="7808433807197256726">"Bloquear janelas pop-up"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Ativar JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Abrir em segundo plano"</string>
-    <string name="pref_content_open_in_background_summary" msgid="1543556325431215041">"As novas janelas abrem atrás da janela atual."</string>
+    <!-- no translation found for pref_content_plugins (7231944644794301582) -->
+    <skip />
+    <!-- no translation found for pref_content_open_in_background_summary (1737664075721181678) -->
+    <skip />
     <string name="pref_content_homepage" msgid="6082437160778559806">"Definir a página inicial"</string>
-    <string name="pref_content_autofit" msgid="8260474534053660809">"Ajustar páginas automaticamente"</string>
-    <string name="pref_content_autofit_summary" msgid="2358178043889761026">"Formatar páginas da web para se ajustarem à tela"</string>
-    <string name="pref_content_landscape_only" msgid="5863539054484585534">"Somente exibição no modo paisagem"</string>
-    <string name="pref_content_landscape_only_summary" msgid="1128170515157691793">"Sempre ler as páginas na orientação mais larga, com a tela no modo paisagem"</string>
+    <string name="pref_content_autofit" msgid="8260474534053660809">"Ajustar automaticamente"</string>
+    <!-- no translation found for pref_content_autofit_summary (4587831659894879986) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only (2022546812766219672) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only_summary (1008238895535428855) -->
+    <skip />
     <string name="pref_privacy_title" msgid="1052470980370846151">"Configurações de privacidade"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Limpar cache"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Limpar conteúdo e bancos de dados armazenados localmente em cache"</string>
-    <string name="pref_privacy_clear_cache_dlg" msgid="1027868030632828913">"O conteúdo e os bancos de dados armazenados localmente em cache serão limpos."</string>
-    <string name="pref_privacy_clear_cookies" msgid="3095583579133780331">"Limpar todos os dados de cookie"</string>
-    <string name="pref_privacy_clear_cookies_summary" msgid="8602064521480657942">"Limpar todos os cookies do navegador"</string>
-    <string name="pref_privacy_clear_cookies_dlg" msgid="5399971428430900904">"Todos os cookies serão limpos."</string>
+    <!-- no translation found for pref_privacy_clear_cache_dlg (5541011591300753881) -->
+    <skip />
+    <string name="pref_privacy_clear_cookies" msgid="3095583579133780331">"Limpar dados de cookie"</string>
+    <!-- no translation found for pref_privacy_clear_cookies_summary (6962742063990677520) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_cookies_dlg (552855688091432682) -->
+    <skip />
     <string name="pref_privacy_clear_history" msgid="8723795508825198477">"Limpar histórico"</string>
     <string name="pref_privacy_clear_history_summary" msgid="6868501330708940734">"Limpar o histórico de navegação do navegador"</string>
-    <string name="pref_privacy_clear_history_dlg" msgid="1433519059550861064">"O histórico de navegação do navegador será limpo."</string>
-    <string name="pref_privacy_clear_form_data" msgid="4232668196344383987">"Limpar dados do formulário"</string>
+    <!-- no translation found for pref_privacy_clear_history_dlg (544903007914753853) -->
+    <skip />
+    <string name="pref_privacy_clear_form_data" msgid="4232668196344383987">"Limpar dados formulário"</string>
     <string name="pref_privacy_clear_form_data_summary" msgid="1790390894719517167">"Limpar todos os dados de formulário salvos"</string>
-    <string name="pref_privacy_clear_form_data_dlg" msgid="567352105409238549">"Todos os dados de formulário salvos serão limpos."</string>
+    <!-- no translation found for pref_privacy_clear_form_data_dlg (4443621086781197928) -->
+    <skip />
     <string name="pref_privacy_clear_passwords" msgid="4750234112289277480">"Limpar senhas"</string>
-    <string name="pref_privacy_clear_passwords_summary" msgid="1267552159370789981">"Limpar todas as senhas salvas"</string>
-    <string name="pref_privacy_clear_passwords_dlg" msgid="8425666119003961466">"Todas as senhas salvas serão excluídas."</string>
+    <!-- no translation found for pref_privacy_clear_passwords_summary (8856782718942903335) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_passwords_dlg (2083869328824248255) -->
+    <skip />
     <string name="pref_privacy_enable_geolocation" msgid="1395040170290765686">"Ativar localização"</string>
     <string name="pref_privacy_enable_geolocation_summary" msgid="8437020934664306205">"Permitir que os sites solicitem acesso à sua localização"</string>
     <string name="pref_privacy_clear_geolocation_access" msgid="6649680770030042980">"Limpar acesso à localização"</string>
@@ -160,10 +184,11 @@
     <string name="pref_privacy_clear_geolocation_access_dlg" msgid="7327063124488827244">"Limpar acesso à localização para todos os sites"</string>
     <string name="pref_security_title" msgid="5763978646932160021">"Configurações de segurança"</string>
     <string name="pref_security_remember_passwords" msgid="6492957683454529549">"Lembrar senhas"</string>
-    <string name="pref_security_remember_passwords_summary" msgid="6789880514358003065">"Salvar nomes de usuário e senhas de sites"</string>
-    <string name="pref_security_save_form_data" msgid="1213669802810198893">"Lembrar dados do formulário"</string>
+    <!-- no translation found for pref_security_remember_passwords_summary (256388703356349137) -->
+    <skip />
+    <string name="pref_security_save_form_data" msgid="1213669802810198893">"Lembrar dados formulário"</string>
     <string name="pref_security_save_form_data_summary" msgid="4994074685153708026">"Lembrar os dados que digitei nos formulários para uso posterior."</string>
-    <string name="pref_security_show_security_warning" msgid="8901135676266754559">"Mostrar avisos de segurança"</string>
+    <string name="pref_security_show_security_warning" msgid="8901135676266754559">"Avisos de segurança"</string>
     <string name="pref_security_show_security_warning_summary" msgid="8968906112720511704">"Mostrar aviso se houver um problema com a segurança de um site."</string>
     <string name="pref_security_accept_cookies" msgid="3201367661925047989">"Aceitar cookies"</string>
     <string name="pref_security_accept_cookies_summary" msgid="1465118934875026920">"Permitir que os sites salvem e leiam dados de \"cookie\""</string>
@@ -183,14 +208,17 @@
     <item msgid="3840999588443167001">"Perto"</item>
   </string-array>
     <string name="pref_default_zoom_dialogtitle" msgid="6095974367125109021">"Zoom padrão"</string>
-    <string name="pref_content_load_page" msgid="8834308472508060268">"Quando uma página é carregada:"</string>
-    <string name="pref_content_load_page_summary" msgid="3161792969308430976">"Mostrar visão geral da página"</string>
+    <!-- no translation found for pref_content_load_page (2219810141690955452) -->
+    <skip />
+    <!-- no translation found for pref_content_load_page_summary (8792093504054149369) -->
+    <skip />
     <string name="pref_extras_title" msgid="3091250467679722382">"Configurações avançadas"</string>
     <string name="pref_extras_website_settings" msgid="67866640052455549">"Configurações do site"</string>
     <string name="pref_extras_website_settings_summary" msgid="3917568895776162240">"Visualizar configurações avançadas para sites individuais"</string>
     <string name="pref_extras_reset_default" msgid="8904000515846202110">"Redefinir para o padrão"</string>
     <string name="pref_extras_reset_default_summary" msgid="7984680562706914966">"Limpar dados do navegador e redefinir as configurações para o padrão"</string>
-    <string name="pref_extras_reset_default_dlg" msgid="5332227004054477008">"Todos os dados do navegador serão limpos e as configurações voltarão para os valores padrão."</string>
+    <!-- no translation found for pref_extras_reset_default_dlg (6894807766578874830) -->
+    <skip />
     <string name="pref_extras_reset_default_dlg_title" msgid="2250334970728938936">"Redefinir para o padrão"</string>
     <string name="pref_development_title" msgid="3263854204533056480">"Depurar"</string>
     <string name="pref_default_text_encoding" msgid="5742965543955558478">"Codificação de texto"</string>
@@ -204,20 +232,21 @@
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Codificação de texto"</string>
     <string name="pref_default_text_encoding_default" msgid="5272126711231936722">"Latin-1"</string>
     <string name="browserFrameRedirect" msgid="7049675479777828343">"Redirecionar"</string>
-    <string name="browserFrame307Post" msgid="739650008647852203">"Esta página da web está sendo redirecionada. Reenviar os seus dados de formulário digitados para o novo local?"</string>
+    <!-- no translation found for browserFrame307Post (1429094844669510768) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problema de conectividade de dados"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problema com o arquivo"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Confirmar"</string>
     <string name="browserFrameFormResubmitMessage" msgid="2752182215695632138">"A página que você está tentando visualizar contém dados já enviados (\"POSTDATA\"). Se você reenviar os dados, qualquer ação executada pelo formulário na página (como uma pesquisa ou uma compra on-line) será repetida."</string>
     <string name="loadSuspendedTitle" msgid="675991625288706944">"Nenhuma conexão de rede"</string>
-    <!-- no translation found for loadSuspended (724674402736067146) -->
+    <!-- no translation found for loadSuspended (3133656588880851273) -->
     <skip />
     <string name="clear_history" msgid="5998307092715979619">"Limpar histórico"</string>
-    <string name="browser_history" msgid="2979476257919939232">"Páginas visitadas recentemente"</string>
+    <!-- no translation found for browser_history (1038987118290272525) -->
+    <skip />
     <string name="empty_history" msgid="8738772352308207274">"O histórico do navegador está vazio."</string>
     <string name="add_new_bookmark" msgid="8086367791400349049">"Adicionar favorito…"</string>
     <string name="add_bookmark_short" msgid="3783984330998103735">"Adicionar"</string>
-    <string name="no_database" msgid="2256698896757181084">"Nenhum banco de dados!"</string>
     <string name="search_hint" msgid="4647356319916631820">"Pesquisar ou digitar URL"</string>
     <string name="search_button_text" msgid="5235226933877634410">"Ir"</string>
     <string name="search_settings_description" msgid="1422401062529014107">"Favoritos e histórico da web"</string>
@@ -257,7 +286,8 @@
     <string name="download_pending_network" msgid="6548714525679461053">"Aguardando conexão dos dados…"</string>
     <string name="download_running_paused" msgid="6418029352085656495">"Aguardando conexão dos dados…"</string>
     <string name="download_canceled" msgid="6057083743144492515">"Download cancelado."</string>
-    <string name="download_not_acceptable" msgid="282108828207321357">"Não foi possível fazer o download. O conteúdo não é suportado no telefone."</string>
+    <!-- no translation found for download_not_acceptable (313769696131563652) -->
+    <skip />
     <string name="download_file_error" msgid="1206648050615176113">"Não é possível concluir o download. Não há espaço suficiente."</string>
     <string name="download_length_required" msgid="9038605488460437406">"Não é possível fazer o download. O tamanho do item não pode ser determinado."</string>
     <string name="download_precondition_failed" msgid="8327584102874295580">"Download interrompido. Não é possível retomar."</string>
@@ -269,13 +299,20 @@
     <string name="webstorage_clear_data_summary" msgid="3523128713743907805">"Remover todos os bancos de dados associados a esse site"</string>
     <string name="webstorage_clear_data_dialog_title" msgid="345457466368974706">"Limpar dados armazenados"</string>
     <string name="webstorage_clear_data_dialog_message" msgid="6678281256970470125">"Todos os dados armazenados por este site serão excluídos"</string>
-    <string name="webstorage_clear_data_dialog_ok_button" msgid="5074037549893407416">"Limpar tudo"</string>
+    <!-- no translation found for webstorage_clear_data_dialog_ok_button (2516563534211898636) -->
+    <skip />
     <string name="webstorage_clear_data_dialog_cancel_button" msgid="2028867751958942762">"Cancelar"</string>
     <string name="webstorage_origin_summary_mb_stored" msgid="1985885826292236210">"MB armazenados no seu telefone"</string>
-    <string name="geolocation_permissions_prompt_message" msgid="2412844044592274106">"<xliff:g id="WEBPAGE">%s</xliff:g> quer saber a sua localização"</string>
-    <string name="geolocation_permissions_prompt_share" msgid="6908104491085328731">"Compartilhar"</string>
-    <string name="geolocation_permissions_prompt_dont_share" msgid="5962677371200773835">"Não compartilhar"</string>
-    <string name="geolocation_permissions_prompt_remember" msgid="5798300962802553043">"Lembrar"</string>
+    <!-- no translation found for loading_video (4887871585216091096) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_message (356796102004052471) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_share (9084486342048347976) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_dont_share (6303025160237860300) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_remember (3118526300707348308) -->
+    <skip />
     <string name="geolocation_settings_page_title" msgid="1745477985097536528">"Limpar acesso à localização"</string>
     <string name="geolocation_settings_page_summary_allowed" msgid="9180251524290811398">"Este site pode acessar a sua localização no momento"</string>
     <string name="geolocation_settings_page_summary_not_allowed" msgid="4589649082203102544">"Este site não pode acessar a sua localização no momento"</string>
@@ -283,13 +320,13 @@
     <string name="geolocation_settings_page_dialog_message" msgid="7586671987576403993">"O acesso à localização será limpo para este site"</string>
     <string name="geolocation_settings_page_dialog_ok_button" msgid="4789434178048077287">"Limpar acesso"</string>
     <string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"Cancelar"</string>
-    <!-- no translation found for website_settings_clear_all (2073906304824388952) -->
+    <!-- no translation found for website_settings_clear_all (8739804325997655980) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_title (1975103796504323734) -->
+    <!-- no translation found for website_settings_clear_all_dialog_title (7791826325122461718) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_message (6545526672017530811) -->
+    <!-- no translation found for website_settings_clear_all_dialog_message (6150502090601476333) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_ok_button (3677457125416372255) -->
+    <!-- no translation found for website_settings_clear_all_dialog_ok_button (6401582240627669431) -->
     <skip />
     <!-- no translation found for website_settings_clear_all_dialog_cancel_button (1896757051856611674) -->
     <skip />
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 4e8bd2e..e87f393 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -16,8 +16,11 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Браузер"</string>
-    <string name="new_tab" msgid="7971857320679510529">"Новая вкладка"</string>
-    <!-- no translation found for active_tabs (8423342514993323050) -->
+    <!-- no translation found for choose_upload (3649366287575002063) -->
+    <skip />
+    <!-- no translation found for new_tab (4505722538297295141) -->
+    <skip />
+    <!-- no translation found for active_tabs (3050623868203544623) -->
     <skip />
     <string name="tab_bookmarks" msgid="2305793036003473653">"Закладки"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Часто посещаемые"</string>
@@ -79,7 +82,10 @@
     <string name="remove_history_item" msgid="5021424935726728618">"Удалить из истории"</string>
     <string name="set_as_homepage" msgid="4752937379414905560">"Сделать главной страницей"</string>
     <string name="bookmark_saved" msgid="2766434679871317557">"Сохранено в закладках."</string>
-    <string name="homepage_set" msgid="9127149128262321090">"Главная страница установлена"</string>
+    <!-- no translation found for bookmark_not_saved (700600955089376724) -->
+    <skip />
+    <!-- no translation found for homepage_set (8768087280310966395) -->
+    <skip />
     <string name="bookmark_needs_title" msgid="6245900436119218187">"Необходимо указать имя закладки."</string>
     <string name="bookmark_needs_url" msgid="7809876865972755158">"Необходимо указать место закладки."</string>
     <string name="empty_bookmark" msgid="7008697085928540511">"Невозможно создать пустую закладку."</string>
@@ -107,6 +113,8 @@
     <string name="shortcut_bookmark" msgid="3974876480401135895">"Добавить в закладки"</string>
     <string name="history" msgid="2451240511251410032">"История"</string>
     <string name="menu_view_download" msgid="2124570321712995120">"Загрузки"</string>
+    <!-- no translation found for copy_page_url (7635062169011319208) -->
+    <skip />
     <string name="share_page" msgid="593756995297268343">"Отправить страницу"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Открыть"</string>
     <string name="contextmenu_openlink_newwindow" msgid="992765050093960353">"Открыть в новом окне"</string>
@@ -121,38 +129,54 @@
     <string name="contextmenu_add_contact" msgid="3183511922223645716">"Добавить контакт"</string>
     <string name="contextmenu_send_mail" msgid="1014513374828775660">"Отправить сообщение по электронной почте"</string>
     <string name="contextmenu_map" msgid="7471390435434034912">"Карта"</string>
+    <!-- no translation found for choosertitle_sharevia (4600490613341909086) -->
+    <skip />
     <string name="clear" msgid="7070043081700011461">"Очистить"</string>
     <string name="replace" msgid="4843033491070384047">"Заменить"</string>
     <string name="browser_bookmarks_page_bookmarks_text" msgid="6787605028726162673">"Закладки"</string>
     <string name="menu_preferences" msgid="6709237687234102240">"Настройки"</string>
     <string name="pref_content_title" msgid="722227111894838633">"Настройки содержания страницы"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Загружать картинки"</string>
-    <string name="pref_content_load_images_summary" msgid="5149716777459747214">"Показывать картинки на веб-страницах"</string>
+    <!-- no translation found for pref_content_load_images_summary (5055874125248398584) -->
+    <skip />
     <string name="pref_content_block_popups" msgid="7808433807197256726">"Блокировать всплывающие окна"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Включить JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Открывать в фоновом режиме"</string>
-    <string name="pref_content_open_in_background_summary" msgid="1543556325431215041">"Новые окна открываются позади текущего окна"</string>
+    <!-- no translation found for pref_content_plugins (7231944644794301582) -->
+    <skip />
+    <!-- no translation found for pref_content_open_in_background_summary (1737664075721181678) -->
+    <skip />
     <string name="pref_content_homepage" msgid="6082437160778559806">"Выбрать главную страницу"</string>
     <string name="pref_content_autofit" msgid="8260474534053660809">"Подгонять страницы"</string>
-    <string name="pref_content_autofit_summary" msgid="2358178043889761026">"Подгонять веб-страницы под размер экрана"</string>
-    <string name="pref_content_landscape_only" msgid="5863539054484585534">"Только альбомная ориентация"</string>
-    <string name="pref_content_landscape_only_summary" msgid="1128170515157691793">"Всегда показывать страницы в альбомной ориентации"</string>
+    <!-- no translation found for pref_content_autofit_summary (4587831659894879986) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only (2022546812766219672) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only_summary (1008238895535428855) -->
+    <skip />
     <string name="pref_privacy_title" msgid="1052470980370846151">"Настройки конфиденциальности"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Очистить кэш"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Очистить содержание и базы данных, сохраненные локально"</string>
-    <string name="pref_privacy_clear_cache_dlg" msgid="1027868030632828913">"Содержание и базы данных, сохраненные локально, будут очищены"</string>
+    <!-- no translation found for pref_privacy_clear_cache_dlg (5541011591300753881) -->
+    <skip />
     <string name="pref_privacy_clear_cookies" msgid="3095583579133780331">"Очистить все данные cookie"</string>
-    <string name="pref_privacy_clear_cookies_summary" msgid="8602064521480657942">"Удалить все cookie браузера"</string>
-    <string name="pref_privacy_clear_cookies_dlg" msgid="5399971428430900904">"Все cookie будут удалены."</string>
+    <!-- no translation found for pref_privacy_clear_cookies_summary (6962742063990677520) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_cookies_dlg (552855688091432682) -->
+    <skip />
     <string name="pref_privacy_clear_history" msgid="8723795508825198477">"Очистить историю"</string>
     <string name="pref_privacy_clear_history_summary" msgid="6868501330708940734">"Очистить историю браузера"</string>
-    <string name="pref_privacy_clear_history_dlg" msgid="1433519059550861064">"История браузера будет очищена."</string>
+    <!-- no translation found for pref_privacy_clear_history_dlg (544903007914753853) -->
+    <skip />
     <string name="pref_privacy_clear_form_data" msgid="4232668196344383987">"Очистить данные формы"</string>
     <string name="pref_privacy_clear_form_data_summary" msgid="1790390894719517167">"Очистить все данные сохраненных форм"</string>
-    <string name="pref_privacy_clear_form_data_dlg" msgid="567352105409238549">"Все данные сохраненных форм будут удалены."</string>
+    <!-- no translation found for pref_privacy_clear_form_data_dlg (4443621086781197928) -->
+    <skip />
     <string name="pref_privacy_clear_passwords" msgid="4750234112289277480">"Очистить пароли"</string>
-    <string name="pref_privacy_clear_passwords_summary" msgid="1267552159370789981">"Удалить все сохраненные пароли"</string>
-    <string name="pref_privacy_clear_passwords_dlg" msgid="8425666119003961466">"Все сохраненные пароли будут удалены."</string>
+    <!-- no translation found for pref_privacy_clear_passwords_summary (8856782718942903335) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_passwords_dlg (2083869328824248255) -->
+    <skip />
     <string name="pref_privacy_enable_geolocation" msgid="1395040170290765686">"Включить местоположение"</string>
     <string name="pref_privacy_enable_geolocation_summary" msgid="8437020934664306205">"Разрешить сайтам запрашивать данные доступа к местоположению"</string>
     <string name="pref_privacy_clear_geolocation_access" msgid="6649680770030042980">"Удалить данные доступа к местоположению"</string>
@@ -160,7 +184,8 @@
     <string name="pref_privacy_clear_geolocation_access_dlg" msgid="7327063124488827244">"Удалить данные доступа к местоположению для всех сайтов"</string>
     <string name="pref_security_title" msgid="5763978646932160021">"Настройки безопасности"</string>
     <string name="pref_security_remember_passwords" msgid="6492957683454529549">"Сохранять пароли"</string>
-    <string name="pref_security_remember_passwords_summary" msgid="6789880514358003065">"Сохранять имена пользователей и пароли для веб-сайтов"</string>
+    <!-- no translation found for pref_security_remember_passwords_summary (256388703356349137) -->
+    <skip />
     <string name="pref_security_save_form_data" msgid="1213669802810198893">"Сохранять данные форм"</string>
     <string name="pref_security_save_form_data_summary" msgid="4994074685153708026">"Запоминать введенные данные для дальнейшего использования"</string>
     <string name="pref_security_show_security_warning" msgid="8901135676266754559">"Показывать предупреждения безопасности"</string>
@@ -178,19 +203,22 @@
     <string name="pref_text_size_dialogtitle" msgid="3625388833512647865">"Размер текста"</string>
     <string name="pref_default_zoom" msgid="8076142259097187395">"Масштаб по умолчанию"</string>
   <string-array name="pref_default_zoom_choices">
-    <item msgid="549583171195154919">"Далеко"</item>
-    <item msgid="5619034257768161024">"Среднее положение"</item>
-    <item msgid="3840999588443167001">"Закрыть"</item>
+    <item msgid="549583171195154919">"Мелко"</item>
+    <item msgid="5619034257768161024">"Нормально"</item>
+    <item msgid="3840999588443167001">"Крупно"</item>
   </string-array>
     <string name="pref_default_zoom_dialogtitle" msgid="6095974367125109021">"Масштаб по умолчанию"</string>
-    <string name="pref_content_load_page" msgid="8834308472508060268">"При загрузке страницы:"</string>
-    <string name="pref_content_load_page_summary" msgid="3161792969308430976">"Показать общую информацию о странице"</string>
+    <!-- no translation found for pref_content_load_page (2219810141690955452) -->
+    <skip />
+    <!-- no translation found for pref_content_load_page_summary (8792093504054149369) -->
+    <skip />
     <string name="pref_extras_title" msgid="3091250467679722382">"Расширенные настройки"</string>
     <string name="pref_extras_website_settings" msgid="67866640052455549">"Настройки веб-сайта"</string>
     <string name="pref_extras_website_settings_summary" msgid="3917568895776162240">"Просмотреть дополнительные настройки для отдельных сайтов"</string>
     <string name="pref_extras_reset_default" msgid="8904000515846202110">"Восстановить настройки по умолчанию"</string>
     <string name="pref_extras_reset_default_summary" msgid="7984680562706914966">"Очистить все данные браузера и восстановить все настройки по умолчанию"</string>
-    <string name="pref_extras_reset_default_dlg" msgid="5332227004054477008">"Все данные браузера будут удалены, настройки по умолчанию будут восстановлены."</string>
+    <!-- no translation found for pref_extras_reset_default_dlg (6894807766578874830) -->
+    <skip />
     <string name="pref_extras_reset_default_dlg_title" msgid="2250334970728938936">"Восстановить настройки по умолчанию"</string>
     <string name="pref_development_title" msgid="3263854204533056480">"Отладка"</string>
     <string name="pref_default_text_encoding" msgid="5742965543955558478">"Кодировка текста"</string>
@@ -204,20 +232,21 @@
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Кодировка текста"</string>
     <string name="pref_default_text_encoding_default" msgid="5272126711231936722">"Latin-1"</string>
     <string name="browserFrameRedirect" msgid="7049675479777828343">"Перенаправление"</string>
-    <string name="browserFrame307Post" msgid="739650008647852203">"Вы перенаправлены с этой страницы. Отправить ваши данные формы в новое место?"</string>
+    <!-- no translation found for browserFrame307Post (1429094844669510768) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Проблема с подключением"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Проблема с файлом"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Подтверждение"</string>
-    <string name="browserFrameFormResubmitMessage" msgid="2752182215695632138">"Страница, которую вы пытаетесь просмотреть, содержит уже отправленные данные (\"POSTDATA\"). Если отправить их еще раз, произойдет повтор всех действий, которые форма выполнила на странице (например, поиск или покупка через Интернет)."</string>
+    <string name="browserFrameFormResubmitMessage" msgid="2752182215695632138">"Страница, которую вы пытаетесь просмотреть, содержит уже отправленные данные (POSTDATA). Если отправить их еще раз, произойдет повтор всех действий, которые форма выполнила на странице (например поиск или покупка через Интернет)."</string>
     <string name="loadSuspendedTitle" msgid="675991625288706944">"Сетевое подключение отсутствует"</string>
-    <!-- no translation found for loadSuspended (724674402736067146) -->
+    <!-- no translation found for loadSuspended (3133656588880851273) -->
     <skip />
     <string name="clear_history" msgid="5998307092715979619">"Очистить историю"</string>
-    <string name="browser_history" msgid="2979476257919939232">"Недавно посещенные страницы"</string>
+    <!-- no translation found for browser_history (1038987118290272525) -->
+    <skip />
     <string name="empty_history" msgid="8738772352308207274">"История браузера пуста."</string>
     <string name="add_new_bookmark" msgid="8086367791400349049">"Добавить закладку…"</string>
     <string name="add_bookmark_short" msgid="3783984330998103735">"Добавить"</string>
-    <string name="no_database" msgid="2256698896757181084">"База данных отсутствует!"</string>
     <string name="search_hint" msgid="4647356319916631820">"Введите условия поиска или URL-адрес"</string>
     <string name="search_button_text" msgid="5235226933877634410">"Поиск"</string>
     <string name="search_settings_description" msgid="1422401062529014107">"Закладки и просмотренные страницы"</string>
@@ -257,7 +286,8 @@
     <string name="download_pending_network" msgid="6548714525679461053">"Ожидание подключения для передачи данных…"</string>
     <string name="download_running_paused" msgid="6418029352085656495">"Ожидание подключения для передачи данных…"</string>
     <string name="download_canceled" msgid="6057083743144492515">"Загрузка отменена."</string>
-    <string name="download_not_acceptable" msgid="282108828207321357">"Загрузка невозможна. Содержание не поддерживается телефоном."</string>
+    <!-- no translation found for download_not_acceptable (313769696131563652) -->
+    <skip />
     <string name="download_file_error" msgid="1206648050615176113">"Невозможно завершить загрузку. Недостаточно места."</string>
     <string name="download_length_required" msgid="9038605488460437406">"Загрузка невозможна. Размер файла не определен."</string>
     <string name="download_precondition_failed" msgid="8327584102874295580">"Загрузка прервана и не может быть возобновлена."</string>
@@ -269,13 +299,20 @@
     <string name="webstorage_clear_data_summary" msgid="3523128713743907805">"Удалить все базы данных, связанные с этим сайтом"</string>
     <string name="webstorage_clear_data_dialog_title" msgid="345457466368974706">"Удалить сохраненные данные"</string>
     <string name="webstorage_clear_data_dialog_message" msgid="6678281256970470125">"Все данные, сохраненные этим веб-сайтом, будут удалены"</string>
-    <string name="webstorage_clear_data_dialog_ok_button" msgid="5074037549893407416">"Удалить все"</string>
+    <!-- no translation found for webstorage_clear_data_dialog_ok_button (2516563534211898636) -->
+    <skip />
     <string name="webstorage_clear_data_dialog_cancel_button" msgid="2028867751958942762">"Отмена"</string>
     <string name="webstorage_origin_summary_mb_stored" msgid="1985885826292236210">"Объем занятой памяти телефона (МБ)"</string>
-    <string name="geolocation_permissions_prompt_message" msgid="2412844044592274106">"<xliff:g id="WEBPAGE">%s</xliff:g> запрашивает данные о вашем местоположении"</string>
-    <string name="geolocation_permissions_prompt_share" msgid="6908104491085328731">"Отправить"</string>
-    <string name="geolocation_permissions_prompt_dont_share" msgid="5962677371200773835">"Не отправлять"</string>
-    <string name="geolocation_permissions_prompt_remember" msgid="5798300962802553043">"Запомнить"</string>
+    <!-- no translation found for loading_video (4887871585216091096) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_message (356796102004052471) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_share (9084486342048347976) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_dont_share (6303025160237860300) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_remember (3118526300707348308) -->
+    <skip />
     <string name="geolocation_settings_page_title" msgid="1745477985097536528">"Удалить данные доступа к местоположению"</string>
     <string name="geolocation_settings_page_summary_allowed" msgid="9180251524290811398">"Этот сайт сейчас имеет доступ к вашему местоположению"</string>
     <string name="geolocation_settings_page_summary_not_allowed" msgid="4589649082203102544">"Этот сайт в настоящее время не имеет доступа к вашему местоположению"</string>
@@ -283,13 +320,13 @@
     <string name="geolocation_settings_page_dialog_message" msgid="7586671987576403993">"Данные доступа к местоположению для этого сайта будут удалены"</string>
     <string name="geolocation_settings_page_dialog_ok_button" msgid="4789434178048077287">"Удалить данные о доступе"</string>
     <string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"Отмена"</string>
-    <!-- no translation found for website_settings_clear_all (2073906304824388952) -->
+    <!-- no translation found for website_settings_clear_all (8739804325997655980) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_title (1975103796504323734) -->
+    <!-- no translation found for website_settings_clear_all_dialog_title (7791826325122461718) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_message (6545526672017530811) -->
+    <!-- no translation found for website_settings_clear_all_dialog_message (6150502090601476333) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_ok_button (3677457125416372255) -->
+    <!-- no translation found for website_settings_clear_all_dialog_ok_button (6401582240627669431) -->
     <skip />
     <!-- no translation found for website_settings_clear_all_dialog_cancel_button (1896757051856611674) -->
     <skip />
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 1f1d369..3757229 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -15,9 +15,12 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="application_name" msgid="1935869255545976415">"Webbläs."</string>
-    <string name="new_tab" msgid="7971857320679510529">"Ny flik"</string>
-    <!-- no translation found for active_tabs (8423342514993323050) -->
+    <string name="application_name" msgid="1935869255545976415">"Webbläsare"</string>
+    <!-- no translation found for choose_upload (3649366287575002063) -->
+    <skip />
+    <!-- no translation found for new_tab (4505722538297295141) -->
+    <skip />
+    <!-- no translation found for active_tabs (3050623868203544623) -->
     <skip />
     <string name="tab_bookmarks" msgid="2305793036003473653">"Bokmärken"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Mest besökta"</string>
@@ -79,7 +82,10 @@
     <string name="remove_history_item" msgid="5021424935726728618">"Ta bort från historiken"</string>
     <string name="set_as_homepage" msgid="4752937379414905560">"Använd som startsida"</string>
     <string name="bookmark_saved" msgid="2766434679871317557">"Bokmärke sparat."</string>
-    <string name="homepage_set" msgid="9127149128262321090">"Startsida har angetts"</string>
+    <!-- no translation found for bookmark_not_saved (700600955089376724) -->
+    <skip />
+    <!-- no translation found for homepage_set (8768087280310966395) -->
+    <skip />
     <string name="bookmark_needs_title" msgid="6245900436119218187">"Du måste ange ett namn på bokmärket."</string>
     <string name="bookmark_needs_url" msgid="7809876865972755158">"Du måste ange en plats för bokmärket."</string>
     <string name="empty_bookmark" msgid="7008697085928540511">"Det går inte att skapa tomma bokmärken."</string>
@@ -107,6 +113,8 @@
     <string name="shortcut_bookmark" msgid="3974876480401135895">"Bokmärke"</string>
     <string name="history" msgid="2451240511251410032">"Historik"</string>
     <string name="menu_view_download" msgid="2124570321712995120">"Hämtningar"</string>
+    <!-- no translation found for copy_page_url (7635062169011319208) -->
+    <skip />
     <string name="share_page" msgid="593756995297268343">"Dela sida"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Öppna"</string>
     <string name="contextmenu_openlink_newwindow" msgid="992765050093960353">"Öppna i nytt fönster"</string>
@@ -121,38 +129,54 @@
     <string name="contextmenu_add_contact" msgid="3183511922223645716">"Lägg till kontakt"</string>
     <string name="contextmenu_send_mail" msgid="1014513374828775660">"Skicka e-post"</string>
     <string name="contextmenu_map" msgid="7471390435434034912">"Karta"</string>
+    <!-- no translation found for choosertitle_sharevia (4600490613341909086) -->
+    <skip />
     <string name="clear" msgid="7070043081700011461">"Rensa"</string>
     <string name="replace" msgid="4843033491070384047">"Ersätt"</string>
     <string name="browser_bookmarks_page_bookmarks_text" msgid="6787605028726162673">"Bokmärken"</string>
     <string name="menu_preferences" msgid="6709237687234102240">"Inställningar"</string>
     <string name="pref_content_title" msgid="722227111894838633">"Inställningar för sidinnehåll"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Överför bilder"</string>
-    <string name="pref_content_load_images_summary" msgid="5149716777459747214">"Visa bilder på webbsidor"</string>
+    <!-- no translation found for pref_content_load_images_summary (5055874125248398584) -->
+    <skip />
     <string name="pref_content_block_popups" msgid="7808433807197256726">"Blockera popup-fönster"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Aktivera JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Öppen i bakgrunden"</string>
-    <string name="pref_content_open_in_background_summary" msgid="1543556325431215041">"Ett nytt fönster öppnas bakom det aktuella"</string>
+    <!-- no translation found for pref_content_plugins (7231944644794301582) -->
+    <skip />
+    <!-- no translation found for pref_content_open_in_background_summary (1737664075721181678) -->
+    <skip />
     <string name="pref_content_homepage" msgid="6082437160778559806">"Ange startsida"</string>
     <string name="pref_content_autofit" msgid="8260474534053660809">"Autoanpassa sidor"</string>
-    <string name="pref_content_autofit_summary" msgid="2358178043889761026">"Anpassa webbsidor efter skärmen"</string>
-    <string name="pref_content_landscape_only" msgid="5863539054484585534">"Endast i liggande vy"</string>
-    <string name="pref_content_landscape_only_summary" msgid="1128170515157691793">"Läs alltid sidor i bred, liggande vy"</string>
+    <!-- no translation found for pref_content_autofit_summary (4587831659894879986) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only (2022546812766219672) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only_summary (1008238895535428855) -->
+    <skip />
     <string name="pref_privacy_title" msgid="1052470980370846151">"Sekretessinställningar"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Rensa cacheminne"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Ta bort innehåll och databaser som cachelagrats lokalt"</string>
-    <string name="pref_privacy_clear_cache_dlg" msgid="1027868030632828913">"Innehåll och databaser som cachelagrats lokalt tas bort."</string>
+    <!-- no translation found for pref_privacy_clear_cache_dlg (5541011591300753881) -->
+    <skip />
     <string name="pref_privacy_clear_cookies" msgid="3095583579133780331">"Ta bort alla cookie-data"</string>
-    <string name="pref_privacy_clear_cookies_summary" msgid="8602064521480657942">"Ta bort alla webbläsarens cookies"</string>
-    <string name="pref_privacy_clear_cookies_dlg" msgid="5399971428430900904">"Alla cookies tas bort."</string>
+    <!-- no translation found for pref_privacy_clear_cookies_summary (6962742063990677520) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_cookies_dlg (552855688091432682) -->
+    <skip />
     <string name="pref_privacy_clear_history" msgid="8723795508825198477">"Rensa historik"</string>
     <string name="pref_privacy_clear_history_summary" msgid="6868501330708940734">"Rensa webbläsarhistoriken"</string>
-    <string name="pref_privacy_clear_history_dlg" msgid="1433519059550861064">"Webbläsarhistoriken kommer att tas bort."</string>
+    <!-- no translation found for pref_privacy_clear_history_dlg (544903007914753853) -->
+    <skip />
     <string name="pref_privacy_clear_form_data" msgid="4232668196344383987">"Rensa data i formulär"</string>
     <string name="pref_privacy_clear_form_data_summary" msgid="1790390894719517167">"Rensa data från alla sparade formulär"</string>
-    <string name="pref_privacy_clear_form_data_dlg" msgid="567352105409238549">"Alla sparade formulär kommer att rensas."</string>
+    <!-- no translation found for pref_privacy_clear_form_data_dlg (4443621086781197928) -->
+    <skip />
     <string name="pref_privacy_clear_passwords" msgid="4750234112289277480">"Ta bort lösenord"</string>
-    <string name="pref_privacy_clear_passwords_summary" msgid="1267552159370789981">"Ta bort alla sparade lösenord"</string>
-    <string name="pref_privacy_clear_passwords_dlg" msgid="8425666119003961466">"Alla sparade lösenord tas bort."</string>
+    <!-- no translation found for pref_privacy_clear_passwords_summary (8856782718942903335) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_passwords_dlg (2083869328824248255) -->
+    <skip />
     <string name="pref_privacy_enable_geolocation" msgid="1395040170290765686">"Aktivera plats"</string>
     <string name="pref_privacy_enable_geolocation_summary" msgid="8437020934664306205">"Tillåt att webbplatser begär åtkomst till din plats"</string>
     <string name="pref_privacy_clear_geolocation_access" msgid="6649680770030042980">"Ta bort platsåtkomst"</string>
@@ -160,7 +184,8 @@
     <string name="pref_privacy_clear_geolocation_access_dlg" msgid="7327063124488827244">"Ta bort platsåtkomst för alla webbplatser"</string>
     <string name="pref_security_title" msgid="5763978646932160021">"Säkerhetsinställningar"</string>
     <string name="pref_security_remember_passwords" msgid="6492957683454529549">"Kom ihåg lösenord"</string>
-    <string name="pref_security_remember_passwords_summary" msgid="6789880514358003065">"Spara användarnamn och lösenord på webbplatser"</string>
+    <!-- no translation found for pref_security_remember_passwords_summary (256388703356349137) -->
+    <skip />
     <string name="pref_security_save_form_data" msgid="1213669802810198893">"Spara formulärdata"</string>
     <string name="pref_security_save_form_data_summary" msgid="4994074685153708026">"Kom ihåg data som jag anger i formulär för senare bruk"</string>
     <string name="pref_security_show_security_warning" msgid="8901135676266754559">"Visa säkerhetsvarningar"</string>
@@ -180,17 +205,20 @@
   <string-array name="pref_default_zoom_choices">
     <item msgid="549583171195154919">"Lång"</item>
     <item msgid="5619034257768161024">"Medium"</item>
-    <item msgid="3840999588443167001">"Stäng"</item>
+    <item msgid="3840999588443167001">"Nära"</item>
   </string-array>
     <string name="pref_default_zoom_dialogtitle" msgid="6095974367125109021">"Standardinställning för zoom"</string>
-    <string name="pref_content_load_page" msgid="8834308472508060268">"När en sida hämtas:"</string>
-    <string name="pref_content_load_page_summary" msgid="3161792969308430976">"Visa översikt över sidan"</string>
+    <!-- no translation found for pref_content_load_page (2219810141690955452) -->
+    <skip />
+    <!-- no translation found for pref_content_load_page_summary (8792093504054149369) -->
+    <skip />
     <string name="pref_extras_title" msgid="3091250467679722382">"Avancerade inställningar"</string>
     <string name="pref_extras_website_settings" msgid="67866640052455549">"Webbplatsinställningar"</string>
     <string name="pref_extras_website_settings_summary" msgid="3917568895776162240">"Visa avancerade inställningar för enskilda webbplatser"</string>
     <string name="pref_extras_reset_default" msgid="8904000515846202110">"Återställ standardinställn."</string>
     <string name="pref_extras_reset_default_summary" msgid="7984680562706914966">"Ta bort alla data i webbläsaren och återställ standardinställningarna"</string>
-    <string name="pref_extras_reset_default_dlg" msgid="5332227004054477008">"Alla data i webbläsaren tas bort och standardinställningarna återställs."</string>
+    <!-- no translation found for pref_extras_reset_default_dlg (6894807766578874830) -->
+    <skip />
     <string name="pref_extras_reset_default_dlg_title" msgid="2250334970728938936">"Återställ standardinställn."</string>
     <string name="pref_development_title" msgid="3263854204533056480">"Felsökning"</string>
     <string name="pref_default_text_encoding" msgid="5742965543955558478">"Textkodning"</string>
@@ -204,20 +232,21 @@
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Textkodning"</string>
     <string name="pref_default_text_encoding_default" msgid="5272126711231936722">"Latin-1"</string>
     <string name="browserFrameRedirect" msgid="7049675479777828343">"Omdirigera"</string>
-    <string name="browserFrame307Post" msgid="739650008647852203">"Den här webbsidan omdirigeras. Vill du skicka uppgifterna i formuläret till den nya platsen?"</string>
+    <!-- no translation found for browserFrame307Post (1429094844669510768) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problem med dataanslutning"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problem med filen"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Bekräfta"</string>
     <string name="browserFrameFormResubmitMessage" msgid="2752182215695632138">"Sidan du försöker öppna innehåller data som redan har skickats (POSTDATA). Om du skickar uppgifterna igen kommer alla åtgärder i formuläret på sidan (till exempel sökningar eller onlineköp) att utföras en gång till."</string>
     <string name="loadSuspendedTitle" msgid="675991625288706944">"Ingen nätverksanslutning"</string>
-    <!-- no translation found for loadSuspended (724674402736067146) -->
+    <!-- no translation found for loadSuspended (3133656588880851273) -->
     <skip />
     <string name="clear_history" msgid="5998307092715979619">"Rensa historik"</string>
-    <string name="browser_history" msgid="2979476257919939232">"Nyligen besökta sidor"</string>
+    <!-- no translation found for browser_history (1038987118290272525) -->
+    <skip />
     <string name="empty_history" msgid="8738772352308207274">"Det finns ingen webbläsarhistorik."</string>
     <string name="add_new_bookmark" msgid="8086367791400349049">"Lägg till bokmärke…"</string>
     <string name="add_bookmark_short" msgid="3783984330998103735">"Lägg till"</string>
-    <string name="no_database" msgid="2256698896757181084">"Ingen databas!"</string>
     <string name="search_hint" msgid="4647356319916631820">"Ange eller sök efter webbplats"</string>
     <string name="search_button_text" msgid="5235226933877634410">"Kör"</string>
     <string name="search_settings_description" msgid="1422401062529014107">"Bokmärken och webbhistorik"</string>
@@ -257,7 +286,8 @@
     <string name="download_pending_network" msgid="6548714525679461053">"Väntar på dataanslutning…"</string>
     <string name="download_running_paused" msgid="6418029352085656495">"Väntar på dataanslutning…"</string>
     <string name="download_canceled" msgid="6057083743144492515">"Hämtningen avbröts."</string>
-    <string name="download_not_acceptable" msgid="282108828207321357">"Det gick inte att hämta. Innehållet stöds inte på telefonen."</string>
+    <!-- no translation found for download_not_acceptable (313769696131563652) -->
+    <skip />
     <string name="download_file_error" msgid="1206648050615176113">"Det går inte att hämta. Det finns inte tillräckligt med utrymme."</string>
     <string name="download_length_required" msgid="9038605488460437406">"Det går inte att hämta eftersom objektets storlek inte kan avläsas."</string>
     <string name="download_precondition_failed" msgid="8327584102874295580">"Hämtningen avbröts. Den kan inte återupptas."</string>
@@ -269,13 +299,20 @@
     <string name="webstorage_clear_data_summary" msgid="3523128713743907805">"Ta bort alla databaser som är kopplade till den här webbplatsen"</string>
     <string name="webstorage_clear_data_dialog_title" msgid="345457466368974706">"Ta bort sparade data"</string>
     <string name="webstorage_clear_data_dialog_message" msgid="6678281256970470125">"Alla data som sparats på webbplatsen tas bort"</string>
-    <string name="webstorage_clear_data_dialog_ok_button" msgid="5074037549893407416">"Ta bort alla"</string>
+    <!-- no translation found for webstorage_clear_data_dialog_ok_button (2516563534211898636) -->
+    <skip />
     <string name="webstorage_clear_data_dialog_cancel_button" msgid="2028867751958942762">"Avbryt"</string>
     <string name="webstorage_origin_summary_mb_stored" msgid="1985885826292236210">"MB har sparats på telefonen"</string>
-    <string name="geolocation_permissions_prompt_message" msgid="2412844044592274106">"<xliff:g id="WEBPAGE">%s</xliff:g> vill känna till din plats"</string>
-    <string name="geolocation_permissions_prompt_share" msgid="6908104491085328731">"Dela"</string>
-    <string name="geolocation_permissions_prompt_dont_share" msgid="5962677371200773835">"Dela inte"</string>
-    <string name="geolocation_permissions_prompt_remember" msgid="5798300962802553043">"Kom ihåg"</string>
+    <!-- no translation found for loading_video (4887871585216091096) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_message (356796102004052471) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_share (9084486342048347976) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_dont_share (6303025160237860300) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_remember (3118526300707348308) -->
+    <skip />
     <string name="geolocation_settings_page_title" msgid="1745477985097536528">"Ta bort platsåtkomst"</string>
     <string name="geolocation_settings_page_summary_allowed" msgid="9180251524290811398">"Den här webbplatsen har för närvarande åtkomst till din plats"</string>
     <string name="geolocation_settings_page_summary_not_allowed" msgid="4589649082203102544">"Den här webbplatsen har för närvarande inte åtkomst till din plats"</string>
@@ -283,13 +320,13 @@
     <string name="geolocation_settings_page_dialog_message" msgid="7586671987576403993">"Platsåtkomst tas bort för den här webbplatsen"</string>
     <string name="geolocation_settings_page_dialog_ok_button" msgid="4789434178048077287">"Ta bort åtkomst"</string>
     <string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"Avbryt"</string>
-    <!-- no translation found for website_settings_clear_all (2073906304824388952) -->
+    <!-- no translation found for website_settings_clear_all (8739804325997655980) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_title (1975103796504323734) -->
+    <!-- no translation found for website_settings_clear_all_dialog_title (7791826325122461718) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_message (6545526672017530811) -->
+    <!-- no translation found for website_settings_clear_all_dialog_message (6150502090601476333) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_ok_button (3677457125416372255) -->
+    <!-- no translation found for website_settings_clear_all_dialog_ok_button (6401582240627669431) -->
     <skip />
     <!-- no translation found for website_settings_clear_all_dialog_cancel_button (1896757051856611674) -->
     <skip />
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 62d4f43..e58b315 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -16,8 +16,11 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Tarayıcı"</string>
-    <string name="new_tab" msgid="7971857320679510529">"Yeni sekme"</string>
-    <!-- no translation found for active_tabs (8423342514993323050) -->
+    <!-- no translation found for choose_upload (3649366287575002063) -->
+    <skip />
+    <!-- no translation found for new_tab (4505722538297295141) -->
+    <skip />
+    <!-- no translation found for active_tabs (3050623868203544623) -->
     <skip />
     <string name="tab_bookmarks" msgid="2305793036003473653">"Favoriler"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"En çok ziyaret edilenler"</string>
@@ -79,7 +82,10 @@
     <string name="remove_history_item" msgid="5021424935726728618">"Geçmişten kaldır"</string>
     <string name="set_as_homepage" msgid="4752937379414905560">"Ana sayfa olarak ayarla"</string>
     <string name="bookmark_saved" msgid="2766434679871317557">"Favorilere kaydedildi."</string>
-    <string name="homepage_set" msgid="9127149128262321090">"Ana sayfa ayarlandı"</string>
+    <!-- no translation found for bookmark_not_saved (700600955089376724) -->
+    <skip />
+    <!-- no translation found for homepage_set (8768087280310966395) -->
+    <skip />
     <string name="bookmark_needs_title" msgid="6245900436119218187">"Favorinin bir adı olmalıdır."</string>
     <string name="bookmark_needs_url" msgid="7809876865972755158">"Favorinin bir konumu olmalıdır."</string>
     <string name="empty_bookmark" msgid="7008697085928540511">"Boş favori oluşturulamaz."</string>
@@ -107,6 +113,8 @@
     <string name="shortcut_bookmark" msgid="3974876480401135895">"Favori"</string>
     <string name="history" msgid="2451240511251410032">"Geçmiş"</string>
     <string name="menu_view_download" msgid="2124570321712995120">"İndirme işlemleri"</string>
+    <!-- no translation found for copy_page_url (7635062169011319208) -->
+    <skip />
     <string name="share_page" msgid="593756995297268343">"Sayfayı paylaş"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Aç"</string>
     <string name="contextmenu_openlink_newwindow" msgid="992765050093960353">"Yeni pencerede aç"</string>
@@ -121,38 +129,54 @@
     <string name="contextmenu_add_contact" msgid="3183511922223645716">"Kişi ekle"</string>
     <string name="contextmenu_send_mail" msgid="1014513374828775660">"E-posta gönder"</string>
     <string name="contextmenu_map" msgid="7471390435434034912">"Harita"</string>
+    <!-- no translation found for choosertitle_sharevia (4600490613341909086) -->
+    <skip />
     <string name="clear" msgid="7070043081700011461">"Temizle"</string>
     <string name="replace" msgid="4843033491070384047">"Değiştir"</string>
     <string name="browser_bookmarks_page_bookmarks_text" msgid="6787605028726162673">"Favoriler"</string>
     <string name="menu_preferences" msgid="6709237687234102240">"Ayarlar"</string>
     <string name="pref_content_title" msgid="722227111894838633">"Sayfa içeriği ayarları"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Görselleri yükle"</string>
-    <string name="pref_content_load_images_summary" msgid="5149716777459747214">"Web sayfalarındaki görselleri görüntüle"</string>
+    <!-- no translation found for pref_content_load_images_summary (5055874125248398584) -->
+    <skip />
     <string name="pref_content_block_popups" msgid="7808433807197256726">"Pop-up\'ları engelle"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"JavaScript\'i etkinleştir"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Arka planda aç"</string>
-    <string name="pref_content_open_in_background_summary" msgid="1543556325431215041">"Yeni pencereler geçerli olanın arkasında açılır"</string>
+    <!-- no translation found for pref_content_plugins (7231944644794301582) -->
+    <skip />
+    <!-- no translation found for pref_content_open_in_background_summary (1737664075721181678) -->
+    <skip />
     <string name="pref_content_homepage" msgid="6082437160778559806">"Ana sayfayı ayarla"</string>
     <string name="pref_content_autofit" msgid="8260474534053660809">"Sayfaları otomatik sığdır"</string>
-    <string name="pref_content_autofit_summary" msgid="2358178043889761026">"Web sayfalarını ekrana sığacak şekilde biçimlendir"</string>
-    <string name="pref_content_landscape_only" msgid="5863539054484585534">"Yalnızca yatay görüntüleme"</string>
-    <string name="pref_content_landscape_only_summary" msgid="1128170515157691793">"Sayfaları her zaman daha geniş, yatay ekran yönünde oku"</string>
+    <!-- no translation found for pref_content_autofit_summary (4587831659894879986) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only (2022546812766219672) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only_summary (1008238895535428855) -->
+    <skip />
     <string name="pref_privacy_title" msgid="1052470980370846151">"Gizlilik ayarları"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Önbelleği temizle"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Yerel olarak önbelleğe alınmış içeriği ve veritabanlarını temizle"</string>
-    <string name="pref_privacy_clear_cache_dlg" msgid="1027868030632828913">"Yerel olarak önbelleğe alınmış içerik ve veritabanları silinecek."</string>
+    <!-- no translation found for pref_privacy_clear_cache_dlg (5541011591300753881) -->
+    <skip />
     <string name="pref_privacy_clear_cookies" msgid="3095583579133780331">"Tüm çerez verilerini temizle"</string>
-    <string name="pref_privacy_clear_cookies_summary" msgid="8602064521480657942">"Tüm tarayıcı çerezlerini temizle"</string>
-    <string name="pref_privacy_clear_cookies_dlg" msgid="5399971428430900904">"Tüm çerezler temizlenecek."</string>
+    <!-- no translation found for pref_privacy_clear_cookies_summary (6962742063990677520) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_cookies_dlg (552855688091432682) -->
+    <skip />
     <string name="pref_privacy_clear_history" msgid="8723795508825198477">"Geçmişi temizle"</string>
     <string name="pref_privacy_clear_history_summary" msgid="6868501330708940734">"Tarayıcı gezinme geçmişini temizle"</string>
-    <string name="pref_privacy_clear_history_dlg" msgid="1433519059550861064">"Tarayıcının gezinme geçmişi temizlenecek."</string>
+    <!-- no translation found for pref_privacy_clear_history_dlg (544903007914753853) -->
+    <skip />
     <string name="pref_privacy_clear_form_data" msgid="4232668196344383987">"Form verilerini temizle"</string>
     <string name="pref_privacy_clear_form_data_summary" msgid="1790390894719517167">"Tüm kayıtlı form verilerini temizle"</string>
-    <string name="pref_privacy_clear_form_data_dlg" msgid="567352105409238549">"Kayıtlı tüm form verileri temizlenecek."</string>
+    <!-- no translation found for pref_privacy_clear_form_data_dlg (4443621086781197928) -->
+    <skip />
     <string name="pref_privacy_clear_passwords" msgid="4750234112289277480">"Şifreleri temizle"</string>
-    <string name="pref_privacy_clear_passwords_summary" msgid="1267552159370789981">"Kayıtlı tüm şifreleri temizle"</string>
-    <string name="pref_privacy_clear_passwords_dlg" msgid="8425666119003961466">"Kayıtlı tüm şifreler temizlenecek."</string>
+    <!-- no translation found for pref_privacy_clear_passwords_summary (8856782718942903335) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_passwords_dlg (2083869328824248255) -->
+    <skip />
     <string name="pref_privacy_enable_geolocation" msgid="1395040170290765686">"Konumu etkinleştir"</string>
     <string name="pref_privacy_enable_geolocation_summary" msgid="8437020934664306205">"Sitelerin konumunuza erişmek istemesine izin verin"</string>
     <string name="pref_privacy_clear_geolocation_access" msgid="6649680770030042980">"Konum erişimini temizle"</string>
@@ -160,7 +184,8 @@
     <string name="pref_privacy_clear_geolocation_access_dlg" msgid="7327063124488827244">"Tüm web siteleri için konum erişimini temizle"</string>
     <string name="pref_security_title" msgid="5763978646932160021">"Güvenlik ayarları"</string>
     <string name="pref_security_remember_passwords" msgid="6492957683454529549">"Şifreleri hatırla"</string>
-    <string name="pref_security_remember_passwords_summary" msgid="6789880514358003065">"Web siteleri için kullanıcı adlarını ve şifreleri kaydet"</string>
+    <!-- no translation found for pref_security_remember_passwords_summary (256388703356349137) -->
+    <skip />
     <string name="pref_security_save_form_data" msgid="1213669802810198893">"Form verilerini hatırla"</string>
     <string name="pref_security_save_form_data_summary" msgid="4994074685153708026">"Daha sonra kullanmak üzere formlara yazdığım verileri hatırla"</string>
     <string name="pref_security_show_security_warning" msgid="8901135676266754559">"Güvenlik uyarıl. göster"</string>
@@ -183,14 +208,17 @@
     <item msgid="3840999588443167001">"Kapat"</item>
   </string-array>
     <string name="pref_default_zoom_dialogtitle" msgid="6095974367125109021">"Varsayılan zum"</string>
-    <string name="pref_content_load_page" msgid="8834308472508060268">"Bir sayfa yüklediğinde:"</string>
-    <string name="pref_content_load_page_summary" msgid="3161792969308430976">"Sayfanın önizlemesini göster"</string>
+    <!-- no translation found for pref_content_load_page (2219810141690955452) -->
+    <skip />
+    <!-- no translation found for pref_content_load_page_summary (8792093504054149369) -->
+    <skip />
     <string name="pref_extras_title" msgid="3091250467679722382">"Gelişmiş ayarlar"</string>
     <string name="pref_extras_website_settings" msgid="67866640052455549">"Web sitesi ayarları"</string>
     <string name="pref_extras_website_settings_summary" msgid="3917568895776162240">"Her web sitesi için gelişmiş ayarları görüntüle"</string>
     <string name="pref_extras_reset_default" msgid="8904000515846202110">"Varsayılana sıfırla"</string>
     <string name="pref_extras_reset_default_summary" msgid="7984680562706914966">"Tüm tarayıcı verilerini temizle ve tüm ayarları varsayılana sıfırla"</string>
-    <string name="pref_extras_reset_default_dlg" msgid="5332227004054477008">"Tüm tarayıcı verileri temizlenecek ve ayarlar varsayılan değerlere geri döndürülecek."</string>
+    <!-- no translation found for pref_extras_reset_default_dlg (6894807766578874830) -->
+    <skip />
     <string name="pref_extras_reset_default_dlg_title" msgid="2250334970728938936">"Varsayılana sıfırla"</string>
     <string name="pref_development_title" msgid="3263854204533056480">"Hata Ayıklama"</string>
     <string name="pref_default_text_encoding" msgid="5742965543955558478">"Metin kodlama"</string>
@@ -204,20 +232,21 @@
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Metin kodlama"</string>
     <string name="pref_default_text_encoding_default" msgid="5272126711231936722">"Latin-1"</string>
     <string name="browserFrameRedirect" msgid="7049675479777828343">"Yeniden yönlendir"</string>
-    <string name="browserFrame307Post" msgid="739650008647852203">"Bu Web sayfası yeniden yönlendiriliyor. Yazılı form verileriniz yeni konuma tekrar gönderilsin mi?"</string>
+    <!-- no translation found for browserFrame307Post (1429094844669510768) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Veri bağlantısı sorunu"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Sorunlu dosya"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Doğrula"</string>
     <string name="browserFrameFormResubmitMessage" msgid="2752182215695632138">"Görüntülemeye çalıştığınız sayfa zaten gönderilmiş veriler (\"POSTDATA\") içeriyor. Verileri tekrar gönderirseniz sayfa üzerinde yapılmış tüm işlemler (arama veya çevrimiçi satın alma gibi) tekrarlanacaktır."</string>
     <string name="loadSuspendedTitle" msgid="675991625288706944">"Ağ bağlantısı yok"</string>
-    <!-- no translation found for loadSuspended (724674402736067146) -->
+    <!-- no translation found for loadSuspended (3133656588880851273) -->
     <skip />
     <string name="clear_history" msgid="5998307092715979619">"Geçmişi temizle"</string>
-    <string name="browser_history" msgid="2979476257919939232">"Son ziyaret edilen sayfalar"</string>
+    <!-- no translation found for browser_history (1038987118290272525) -->
+    <skip />
     <string name="empty_history" msgid="8738772352308207274">"Tarayıcı geçmişi boş."</string>
     <string name="add_new_bookmark" msgid="8086367791400349049">"Favori ekle..."</string>
     <string name="add_bookmark_short" msgid="3783984330998103735">"Ekle"</string>
-    <string name="no_database" msgid="2256698896757181084">"Veritabanı yok!"</string>
     <string name="search_hint" msgid="4647356319916631820">"Arayın veya URL\'yi yazın"</string>
     <string name="search_button_text" msgid="5235226933877634410">"Git"</string>
     <string name="search_settings_description" msgid="1422401062529014107">"Favoriler ve web geçmişi"</string>
@@ -257,7 +286,8 @@
     <string name="download_pending_network" msgid="6548714525679461053">"Veri bağlantısı bekleniyor..."</string>
     <string name="download_running_paused" msgid="6418029352085656495">"Veri bağlantısı bekleniyor..."</string>
     <string name="download_canceled" msgid="6057083743144492515">"İndirme işlemi iptal edildi."</string>
-    <string name="download_not_acceptable" msgid="282108828207321357">"İndirilemiyor. İçerik bu telefonda desteklenmiyor."</string>
+    <!-- no translation found for download_not_acceptable (313769696131563652) -->
+    <skip />
     <string name="download_file_error" msgid="1206648050615176113">"İndirme işlemi tamamlanamıyor. Yeterli alan yok."</string>
     <string name="download_length_required" msgid="9038605488460437406">"İndirilemiyor. Öğenin boyutu belirlenemiyor."</string>
     <string name="download_precondition_failed" msgid="8327584102874295580">"İndirme işlemi kesintiye uğradı. Sürdürülemez."</string>
@@ -269,13 +299,20 @@
     <string name="webstorage_clear_data_summary" msgid="3523128713743907805">"Bu web sitesi ile ilişkilendirilmiş tüm veritabanlarını kaldır"</string>
     <string name="webstorage_clear_data_dialog_title" msgid="345457466368974706">"Depolanmış verileri temizle"</string>
     <string name="webstorage_clear_data_dialog_message" msgid="6678281256970470125">"Bu web sitesi tarafından depolanmış tüm veriler silinecek"</string>
-    <string name="webstorage_clear_data_dialog_ok_button" msgid="5074037549893407416">"Tümünü Temizle"</string>
+    <!-- no translation found for webstorage_clear_data_dialog_ok_button (2516563534211898636) -->
+    <skip />
     <string name="webstorage_clear_data_dialog_cancel_button" msgid="2028867751958942762">"İptal"</string>
     <string name="webstorage_origin_summary_mb_stored" msgid="1985885826292236210">"Telefonunuzda depolanan MB"</string>
-    <string name="geolocation_permissions_prompt_message" msgid="2412844044592274106">"<xliff:g id="WEBPAGE">%s</xliff:g> konumunuzu bilmek istiyor"</string>
-    <string name="geolocation_permissions_prompt_share" msgid="6908104491085328731">"Paylaş"</string>
-    <string name="geolocation_permissions_prompt_dont_share" msgid="5962677371200773835">"Paylaşma"</string>
-    <string name="geolocation_permissions_prompt_remember" msgid="5798300962802553043">"Anımsa"</string>
+    <!-- no translation found for loading_video (4887871585216091096) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_message (356796102004052471) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_share (9084486342048347976) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_dont_share (6303025160237860300) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_remember (3118526300707348308) -->
+    <skip />
     <string name="geolocation_settings_page_title" msgid="1745477985097536528">"Konum erişimini temizle"</string>
     <string name="geolocation_settings_page_summary_allowed" msgid="9180251524290811398">"Bu site şu anda konumunuza erişebilir"</string>
     <string name="geolocation_settings_page_summary_not_allowed" msgid="4589649082203102544">"Bu site şu anda konumunuza erişemiyor"</string>
@@ -283,13 +320,13 @@
     <string name="geolocation_settings_page_dialog_message" msgid="7586671987576403993">"Bu web sitesi için konum erişimi temizlenecek"</string>
     <string name="geolocation_settings_page_dialog_ok_button" msgid="4789434178048077287">"Erişimi temizle"</string>
     <string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"İptal"</string>
-    <!-- no translation found for website_settings_clear_all (2073906304824388952) -->
+    <!-- no translation found for website_settings_clear_all (8739804325997655980) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_title (1975103796504323734) -->
+    <!-- no translation found for website_settings_clear_all_dialog_title (7791826325122461718) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_message (6545526672017530811) -->
+    <!-- no translation found for website_settings_clear_all_dialog_message (6150502090601476333) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_ok_button (3677457125416372255) -->
+    <!-- no translation found for website_settings_clear_all_dialog_ok_button (6401582240627669431) -->
     <skip />
     <!-- no translation found for website_settings_clear_all_dialog_cancel_button (1896757051856611674) -->
     <skip />
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 70614ad..353a9fb 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -16,8 +16,11 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"浏览器"</string>
-    <string name="new_tab" msgid="7971857320679510529">"新标签"</string>
-    <!-- no translation found for active_tabs (8423342514993323050) -->
+    <!-- no translation found for choose_upload (3649366287575002063) -->
+    <skip />
+    <!-- no translation found for new_tab (4505722538297295141) -->
+    <skip />
+    <!-- no translation found for active_tabs (3050623868203544623) -->
     <skip />
     <string name="tab_bookmarks" msgid="2305793036003473653">"书签"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"访问最多"</string>
@@ -79,7 +82,10 @@
     <string name="remove_history_item" msgid="5021424935726728618">"从历史记录中删除"</string>
     <string name="set_as_homepage" msgid="4752937379414905560">"设置为主页"</string>
     <string name="bookmark_saved" msgid="2766434679871317557">"已保存至书签。"</string>
-    <string name="homepage_set" msgid="9127149128262321090">"主页已设置"</string>
+    <!-- no translation found for bookmark_not_saved (700600955089376724) -->
+    <skip />
+    <!-- no translation found for homepage_set (8768087280310966395) -->
+    <skip />
     <string name="bookmark_needs_title" msgid="6245900436119218187">"书签必须具有名称。"</string>
     <string name="bookmark_needs_url" msgid="7809876865972755158">"书签必须具有位置。"</string>
     <string name="empty_bookmark" msgid="7008697085928540511">"无法创建空书签。"</string>
@@ -107,6 +113,8 @@
     <string name="shortcut_bookmark" msgid="3974876480401135895">"书签"</string>
     <string name="history" msgid="2451240511251410032">"历史记录"</string>
     <string name="menu_view_download" msgid="2124570321712995120">"下载"</string>
+    <!-- no translation found for copy_page_url (7635062169011319208) -->
+    <skip />
     <string name="share_page" msgid="593756995297268343">"分享网页"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"打开"</string>
     <string name="contextmenu_openlink_newwindow" msgid="992765050093960353">"在新窗口中打开"</string>
@@ -121,38 +129,54 @@
     <string name="contextmenu_add_contact" msgid="3183511922223645716">"添加联系人"</string>
     <string name="contextmenu_send_mail" msgid="1014513374828775660">"发送电子邮件"</string>
     <string name="contextmenu_map" msgid="7471390435434034912">"地图"</string>
+    <!-- no translation found for choosertitle_sharevia (4600490613341909086) -->
+    <skip />
     <string name="clear" msgid="7070043081700011461">"清除"</string>
     <string name="replace" msgid="4843033491070384047">"替换"</string>
     <string name="browser_bookmarks_page_bookmarks_text" msgid="6787605028726162673">"书签"</string>
     <string name="menu_preferences" msgid="6709237687234102240">"设置"</string>
     <string name="pref_content_title" msgid="722227111894838633">"网页内容设置"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"载入图片"</string>
-    <string name="pref_content_load_images_summary" msgid="5149716777459747214">"在网页上显示图片"</string>
+    <!-- no translation found for pref_content_load_images_summary (5055874125248398584) -->
+    <skip />
     <string name="pref_content_block_popups" msgid="7808433807197256726">"阻止弹出式窗口"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"启用 JavaScript"</string>
-    <string name="pref_content_open_in_background" msgid="824123779725118663">"在后台打开"</string>
-    <string name="pref_content_open_in_background_summary" msgid="1543556325431215041">"新窗口会在当前窗口后方打开"</string>
+    <string name="pref_content_open_in_background" msgid="824123779725118663">"在后方打开"</string>
+    <!-- no translation found for pref_content_plugins (7231944644794301582) -->
+    <skip />
+    <!-- no translation found for pref_content_open_in_background_summary (1737664075721181678) -->
+    <skip />
     <string name="pref_content_homepage" msgid="6082437160778559806">"设置主页"</string>
-    <string name="pref_content_autofit" msgid="8260474534053660809">"自动调整为网页大小"</string>
-    <string name="pref_content_autofit_summary" msgid="2358178043889761026">"调整网页格式以适合屏幕大小"</string>
-    <string name="pref_content_landscape_only" msgid="5863539054484585534">"仅以横向模式显示"</string>
-    <string name="pref_content_landscape_only_summary" msgid="1128170515157691793">"始终以横向浏览模式阅读网页"</string>
+    <string name="pref_content_autofit" msgid="8260474534053660809">"自动调整页面"</string>
+    <!-- no translation found for pref_content_autofit_summary (4587831659894879986) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only (2022546812766219672) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only_summary (1008238895535428855) -->
+    <skip />
     <string name="pref_privacy_title" msgid="1052470980370846151">"隐私权设置"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"清除缓存"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"清除存储在本地缓存中的内容和数据库"</string>
-    <string name="pref_privacy_clear_cache_dlg" msgid="1027868030632828913">"此时将清除存储在本地缓存中的内容和数据库。"</string>
+    <!-- no translation found for pref_privacy_clear_cache_dlg (5541011591300753881) -->
+    <skip />
     <string name="pref_privacy_clear_cookies" msgid="3095583579133780331">"清除所有 Cookie 数据"</string>
-    <string name="pref_privacy_clear_cookies_summary" msgid="8602064521480657942">"清除所有浏览器 Cookie"</string>
-    <string name="pref_privacy_clear_cookies_dlg" msgid="5399971428430900904">"将会清除所有 Cookie。"</string>
+    <!-- no translation found for pref_privacy_clear_cookies_summary (6962742063990677520) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_cookies_dlg (552855688091432682) -->
+    <skip />
     <string name="pref_privacy_clear_history" msgid="8723795508825198477">"清除历史记录"</string>
     <string name="pref_privacy_clear_history_summary" msgid="6868501330708940734">"清除浏览器导航历史记录"</string>
-    <string name="pref_privacy_clear_history_dlg" msgid="1433519059550861064">"将会清除浏览器导航历史记录。"</string>
+    <!-- no translation found for pref_privacy_clear_history_dlg (544903007914753853) -->
+    <skip />
     <string name="pref_privacy_clear_form_data" msgid="4232668196344383987">"清除表单数据"</string>
     <string name="pref_privacy_clear_form_data_summary" msgid="1790390894719517167">"清除所有已保存的表单数据"</string>
-    <string name="pref_privacy_clear_form_data_dlg" msgid="567352105409238549">"将会清除所有保存的表单数据。"</string>
+    <!-- no translation found for pref_privacy_clear_form_data_dlg (4443621086781197928) -->
+    <skip />
     <string name="pref_privacy_clear_passwords" msgid="4750234112289277480">"清除密码"</string>
-    <string name="pref_privacy_clear_passwords_summary" msgid="1267552159370789981">"清除所有保存的密码"</string>
-    <string name="pref_privacy_clear_passwords_dlg" msgid="8425666119003961466">"将会清除所有保存的密码。"</string>
+    <!-- no translation found for pref_privacy_clear_passwords_summary (8856782718942903335) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_passwords_dlg (2083869328824248255) -->
+    <skip />
     <string name="pref_privacy_enable_geolocation" msgid="1395040170290765686">"启用位置信息功能"</string>
     <string name="pref_privacy_enable_geolocation_summary" msgid="8437020934664306205">"允许网站访问您的位置信息"</string>
     <string name="pref_privacy_clear_geolocation_access" msgid="6649680770030042980">"取消位置信息访问权限"</string>
@@ -160,7 +184,8 @@
     <string name="pref_privacy_clear_geolocation_access_dlg" msgid="7327063124488827244">"取消所有网站的位置信息访问权限"</string>
     <string name="pref_security_title" msgid="5763978646932160021">"安全设置"</string>
     <string name="pref_security_remember_passwords" msgid="6492957683454529549">"记住密码"</string>
-    <string name="pref_security_remember_passwords_summary" msgid="6789880514358003065">"保存访问网站所用的用户名和密码"</string>
+    <!-- no translation found for pref_security_remember_passwords_summary (256388703356349137) -->
+    <skip />
     <string name="pref_security_save_form_data" msgid="1213669802810198893">"记住表单数据"</string>
     <string name="pref_security_save_form_data_summary" msgid="4994074685153708026">"记住我在表单中输入的数据以便于以后使用"</string>
     <string name="pref_security_show_security_warning" msgid="8901135676266754559">"显示安全警告"</string>
@@ -180,18 +205,21 @@
   <string-array name="pref_default_zoom_choices">
     <item msgid="549583171195154919">"远"</item>
     <item msgid="5619034257768161024">"中"</item>
-    <item msgid="3840999588443167001">"关闭"</item>
+    <item msgid="3840999588443167001">"近"</item>
   </string-array>
     <string name="pref_default_zoom_dialogtitle" msgid="6095974367125109021">"默认缩放设置"</string>
-    <string name="pref_content_load_page" msgid="8834308472508060268">"载入网页时:"</string>
-    <string name="pref_content_load_page_summary" msgid="3161792969308430976">"显示网页概览"</string>
+    <!-- no translation found for pref_content_load_page (2219810141690955452) -->
+    <skip />
+    <!-- no translation found for pref_content_load_page_summary (8792093504054149369) -->
+    <skip />
     <string name="pref_extras_title" msgid="3091250467679722382">"高级设置"</string>
     <string name="pref_extras_website_settings" msgid="67866640052455549">"网站设置"</string>
     <string name="pref_extras_website_settings_summary" msgid="3917568895776162240">"查看各网站的高级设置"</string>
-    <string name="pref_extras_reset_default" msgid="8904000515846202110">"重置为默认值"</string>
-    <string name="pref_extras_reset_default_summary" msgid="7984680562706914966">"清除所有浏览器数据并将所有设置重置为默认值"</string>
-    <string name="pref_extras_reset_default_dlg" msgid="5332227004054477008">"将会清除所有浏览器数据并将设置恢复为默认值。"</string>
-    <string name="pref_extras_reset_default_dlg_title" msgid="2250334970728938936">"重置为默认值"</string>
+    <string name="pref_extras_reset_default" msgid="8904000515846202110">"重置为默认设置"</string>
+    <string name="pref_extras_reset_default_summary" msgid="7984680562706914966">"清除所有浏览器数据并恢复所有默认设置"</string>
+    <!-- no translation found for pref_extras_reset_default_dlg (6894807766578874830) -->
+    <skip />
+    <string name="pref_extras_reset_default_dlg_title" msgid="2250334970728938936">"重置为默认设置"</string>
     <string name="pref_development_title" msgid="3263854204533056480">"调试"</string>
     <string name="pref_default_text_encoding" msgid="5742965543955558478">"文字编码"</string>
   <string-array name="pref_default_text_encoding_choices">
@@ -202,22 +230,23 @@
     <item msgid="6545734186479713946">"日文 (EUC-JP)"</item>
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"文字编码"</string>
-    <string name="pref_default_text_encoding_default" msgid="5272126711231936722">"拉丁语-1"</string>
+    <string name="pref_default_text_encoding_default" msgid="5272126711231936722">"Latin-1"</string>
     <string name="browserFrameRedirect" msgid="7049675479777828343">"重定向"</string>
-    <string name="browserFrame307Post" msgid="739650008647852203">"该网页正在进行重定向。是否要将您输入的表单数据重新发送到新位置?"</string>
+    <!-- no translation found for browserFrame307Post (1429094844669510768) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"数据连接性问题"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"文件有问题"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"确认"</string>
     <string name="browserFrameFormResubmitMessage" msgid="2752182215695632138">"您尝试查看的网页中包含已经提交的数据(“POSTDATA”)。如果您重新发送这些数据,系统会重复该网页上的表单所执行过的一切操作(如搜索或在线购买)。"</string>
     <string name="loadSuspendedTitle" msgid="675991625288706944">"没有网络连接"</string>
-    <!-- no translation found for loadSuspended (724674402736067146) -->
+    <!-- no translation found for loadSuspended (3133656588880851273) -->
     <skip />
     <string name="clear_history" msgid="5998307092715979619">"清除历史记录"</string>
-    <string name="browser_history" msgid="2979476257919939232">"最近访问过的网页"</string>
+    <!-- no translation found for browser_history (1038987118290272525) -->
+    <skip />
     <string name="empty_history" msgid="8738772352308207274">"浏览器历史记录为空。"</string>
     <string name="add_new_bookmark" msgid="8086367791400349049">"添加书签..."</string>
     <string name="add_bookmark_short" msgid="3783984330998103735">"添加"</string>
-    <string name="no_database" msgid="2256698896757181084">"没有数据库!"</string>
     <string name="search_hint" msgid="4647356319916631820">"搜索或键入网址"</string>
     <string name="search_button_text" msgid="5235226933877634410">"转至"</string>
     <string name="search_settings_description" msgid="1422401062529014107">"书签和网络历史记录"</string>
@@ -257,9 +286,10 @@
     <string name="download_pending_network" msgid="6548714525679461053">"正在等待数据连接..."</string>
     <string name="download_running_paused" msgid="6418029352085656495">"正在等待数据连接..."</string>
     <string name="download_canceled" msgid="6057083743144492515">"下载已取消。"</string>
-    <string name="download_not_acceptable" msgid="282108828207321357">"无法下载,手机不支持此内容。"</string>
+    <!-- no translation found for download_not_acceptable (313769696131563652) -->
+    <skip />
     <string name="download_file_error" msgid="1206648050615176113">"无法完成下载,存储空间不足。"</string>
-    <string name="download_length_required" msgid="9038605488460437406">"无法下载,无法确定该项的大小。"</string>
+    <string name="download_length_required" msgid="9038605488460437406">"无法下载,因为无法确定该下载项的大小。"</string>
     <string name="download_precondition_failed" msgid="8327584102874295580">"下载中断,无法重新开始。"</string>
     <string name="activity_instrumentation_test_runner" msgid="8215091309334005029">"浏览器测试运行程序"</string>
     <string name="search_the_web" msgid="6046130189241962337">"搜索网页"</string>
@@ -269,13 +299,20 @@
     <string name="webstorage_clear_data_summary" msgid="3523128713743907805">"删除所有与此网站相关联的数据库"</string>
     <string name="webstorage_clear_data_dialog_title" msgid="345457466368974706">"清除存储的数据"</string>
     <string name="webstorage_clear_data_dialog_message" msgid="6678281256970470125">"此时将删除由此网站存储的所有数据"</string>
-    <string name="webstorage_clear_data_dialog_ok_button" msgid="5074037549893407416">"全部清除"</string>
+    <!-- no translation found for webstorage_clear_data_dialog_ok_button (2516563534211898636) -->
+    <skip />
     <string name="webstorage_clear_data_dialog_cancel_button" msgid="2028867751958942762">"取消"</string>
     <string name="webstorage_origin_summary_mb_stored" msgid="1985885826292236210">"您手机的存储空间 (MB)"</string>
-    <string name="geolocation_permissions_prompt_message" msgid="2412844044592274106">"<xliff:g id="WEBPAGE">%s</xliff:g>需要了解您的位置信息"</string>
-    <string name="geolocation_permissions_prompt_share" msgid="6908104491085328731">"分享"</string>
-    <string name="geolocation_permissions_prompt_dont_share" msgid="5962677371200773835">"不分享"</string>
-    <string name="geolocation_permissions_prompt_remember" msgid="5798300962802553043">"记住"</string>
+    <!-- no translation found for loading_video (4887871585216091096) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_message (356796102004052471) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_share (9084486342048347976) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_dont_share (6303025160237860300) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_remember (3118526300707348308) -->
+    <skip />
     <string name="geolocation_settings_page_title" msgid="1745477985097536528">"取消位置信息访问权限"</string>
     <string name="geolocation_settings_page_summary_allowed" msgid="9180251524290811398">"此网站目前可访问您的位置信息"</string>
     <string name="geolocation_settings_page_summary_not_allowed" msgid="4589649082203102544">"此网站目前不能访问您的位置信息"</string>
@@ -283,13 +320,13 @@
     <string name="geolocation_settings_page_dialog_message" msgid="7586671987576403993">"此时将取消此网站的位置信息访问权限"</string>
     <string name="geolocation_settings_page_dialog_ok_button" msgid="4789434178048077287">"取消访问权限"</string>
     <string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"取消"</string>
-    <!-- no translation found for website_settings_clear_all (2073906304824388952) -->
+    <!-- no translation found for website_settings_clear_all (8739804325997655980) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_title (1975103796504323734) -->
+    <!-- no translation found for website_settings_clear_all_dialog_title (7791826325122461718) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_message (6545526672017530811) -->
+    <!-- no translation found for website_settings_clear_all_dialog_message (6150502090601476333) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_ok_button (3677457125416372255) -->
+    <!-- no translation found for website_settings_clear_all_dialog_ok_button (6401582240627669431) -->
     <skip />
     <!-- no translation found for website_settings_clear_all_dialog_cancel_button (1896757051856611674) -->
     <skip />
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index c8aa573..fc7f503 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -16,8 +16,11 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"瀏覽器"</string>
-    <string name="new_tab" msgid="7971857320679510529">"新標籤"</string>
-    <!-- no translation found for active_tabs (8423342514993323050) -->
+    <!-- no translation found for choose_upload (3649366287575002063) -->
+    <skip />
+    <!-- no translation found for new_tab (4505722538297295141) -->
+    <skip />
+    <!-- no translation found for active_tabs (3050623868203544623) -->
     <skip />
     <string name="tab_bookmarks" msgid="2305793036003473653">"書籤"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"常用網頁"</string>
@@ -79,7 +82,10 @@
     <string name="remove_history_item" msgid="5021424935726728618">"從記錄中移除"</string>
     <string name="set_as_homepage" msgid="4752937379414905560">"設為首頁"</string>
     <string name="bookmark_saved" msgid="2766434679871317557">"已儲存至書籤。"</string>
-    <string name="homepage_set" msgid="9127149128262321090">"已設定首頁"</string>
+    <!-- no translation found for bookmark_not_saved (700600955089376724) -->
+    <skip />
+    <!-- no translation found for homepage_set (8768087280310966395) -->
+    <skip />
     <string name="bookmark_needs_title" msgid="6245900436119218187">"請輸入書籤名稱。"</string>
     <string name="bookmark_needs_url" msgid="7809876865972755158">"請選取書籤位置。"</string>
     <string name="empty_bookmark" msgid="7008697085928540511">"無法建立空白書籤。"</string>
@@ -107,6 +113,8 @@
     <string name="shortcut_bookmark" msgid="3974876480401135895">"書籤"</string>
     <string name="history" msgid="2451240511251410032">"記錄"</string>
     <string name="menu_view_download" msgid="2124570321712995120">"下載"</string>
+    <!-- no translation found for copy_page_url (7635062169011319208) -->
+    <skip />
     <string name="share_page" msgid="593756995297268343">"分享網頁"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"開啟"</string>
     <string name="contextmenu_openlink_newwindow" msgid="992765050093960353">"在新視窗開啟"</string>
@@ -121,38 +129,54 @@
     <string name="contextmenu_add_contact" msgid="3183511922223645716">"新增聯絡人"</string>
     <string name="contextmenu_send_mail" msgid="1014513374828775660">"傳送電子郵件"</string>
     <string name="contextmenu_map" msgid="7471390435434034912">"地圖"</string>
+    <!-- no translation found for choosertitle_sharevia (4600490613341909086) -->
+    <skip />
     <string name="clear" msgid="7070043081700011461">"清除"</string>
     <string name="replace" msgid="4843033491070384047">"取代"</string>
     <string name="browser_bookmarks_page_bookmarks_text" msgid="6787605028726162673">"書籤"</string>
     <string name="menu_preferences" msgid="6709237687234102240">"設定"</string>
     <string name="pref_content_title" msgid="722227111894838633">"頁面內容設定"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"載入圖片"</string>
-    <string name="pref_content_load_images_summary" msgid="5149716777459747214">"顯示網頁上的圖片"</string>
+    <!-- no translation found for pref_content_load_images_summary (5055874125248398584) -->
+    <skip />
     <string name="pref_content_block_popups" msgid="7808433807197256726">"封鎖快顯視窗"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"啟用 JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"在背景中開啟"</string>
-    <string name="pref_content_open_in_background_summary" msgid="1543556325431215041">"在目前頁面後面開啟新分頁"</string>
+    <!-- no translation found for pref_content_plugins (7231944644794301582) -->
+    <skip />
+    <!-- no translation found for pref_content_open_in_background_summary (1737664075721181678) -->
+    <skip />
     <string name="pref_content_homepage" msgid="6082437160778559806">"設定首頁"</string>
     <string name="pref_content_autofit" msgid="8260474534053660809">"自動調整頁面"</string>
-    <string name="pref_content_autofit_summary" msgid="2358178043889761026">"將網頁調整至適合螢幕的大小"</string>
-    <string name="pref_content_landscape_only" msgid="5863539054484585534">"僅以橫向模式顯示"</string>
-    <string name="pref_content_landscape_only_summary" msgid="1128170515157691793">"永遠使用橫向寬螢幕瀏覽模式閱讀網頁"</string>
+    <!-- no translation found for pref_content_autofit_summary (4587831659894879986) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only (2022546812766219672) -->
+    <skip />
+    <!-- no translation found for pref_content_landscape_only_summary (1008238895535428855) -->
+    <skip />
     <string name="pref_privacy_title" msgid="1052470980370846151">"隱私設定"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"清除快取"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"清除本機快取內容與資料庫"</string>
-    <string name="pref_privacy_clear_cache_dlg" msgid="1027868030632828913">"即將清除本機快取內容與資料庫。"</string>
+    <!-- no translation found for pref_privacy_clear_cache_dlg (5541011591300753881) -->
+    <skip />
     <string name="pref_privacy_clear_cookies" msgid="3095583579133780331">"清除所有 cookie"</string>
-    <string name="pref_privacy_clear_cookies_summary" msgid="8602064521480657942">"清除所有 cookie"</string>
-    <string name="pref_privacy_clear_cookies_dlg" msgid="5399971428430900904">"所有 cookie 會被清除。"</string>
+    <!-- no translation found for pref_privacy_clear_cookies_summary (6962742063990677520) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_cookies_dlg (552855688091432682) -->
+    <skip />
     <string name="pref_privacy_clear_history" msgid="8723795508825198477">"清除記錄"</string>
     <string name="pref_privacy_clear_history_summary" msgid="6868501330708940734">"清除瀏覽記錄"</string>
-    <string name="pref_privacy_clear_history_dlg" msgid="1433519059550861064">"瀏覽記錄將被清除。"</string>
+    <!-- no translation found for pref_privacy_clear_history_dlg (544903007914753853) -->
+    <skip />
     <string name="pref_privacy_clear_form_data" msgid="4232668196344383987">"清除表單資料"</string>
     <string name="pref_privacy_clear_form_data_summary" msgid="1790390894719517167">"清除所有表單"</string>
-    <string name="pref_privacy_clear_form_data_dlg" msgid="567352105409238549">"所有儲存的資料會被清除。"</string>
+    <!-- no translation found for pref_privacy_clear_form_data_dlg (4443621086781197928) -->
+    <skip />
     <string name="pref_privacy_clear_passwords" msgid="4750234112289277480">"清除密碼"</string>
-    <string name="pref_privacy_clear_passwords_summary" msgid="1267552159370789981">"清除所有儲存的密碼"</string>
-    <string name="pref_privacy_clear_passwords_dlg" msgid="8425666119003961466">"所有儲存密碼會被清除"</string>
+    <!-- no translation found for pref_privacy_clear_passwords_summary (8856782718942903335) -->
+    <skip />
+    <!-- no translation found for pref_privacy_clear_passwords_dlg (2083869328824248255) -->
+    <skip />
     <string name="pref_privacy_enable_geolocation" msgid="1395040170290765686">"啟用定位功能"</string>
     <string name="pref_privacy_enable_geolocation_summary" msgid="8437020934664306205">"允許網站向您要求位置資訊存取權"</string>
     <string name="pref_privacy_clear_geolocation_access" msgid="6649680770030042980">"清除位置資訊存取權"</string>
@@ -160,7 +184,8 @@
     <string name="pref_privacy_clear_geolocation_access_dlg" msgid="7327063124488827244">"清除所有網站的位置資訊存取權"</string>
     <string name="pref_security_title" msgid="5763978646932160021">"安全性設定"</string>
     <string name="pref_security_remember_passwords" msgid="6492957683454529549">"記住密碼"</string>
-    <string name="pref_security_remember_passwords_summary" msgid="6789880514358003065">"儲存網站使用者名稱與密碼"</string>
+    <!-- no translation found for pref_security_remember_passwords_summary (256388703356349137) -->
+    <skip />
     <string name="pref_security_save_form_data" msgid="1213669802810198893">"儲存表單資料"</string>
     <string name="pref_security_save_form_data_summary" msgid="4994074685153708026">"儲存輸入的表單資料"</string>
     <string name="pref_security_show_security_warning" msgid="8901135676266754559">"顯示安全性警告"</string>
@@ -183,14 +208,17 @@
     <item msgid="3840999588443167001">"近"</item>
   </string-array>
     <string name="pref_default_zoom_dialogtitle" msgid="6095974367125109021">"預設縮放"</string>
-    <string name="pref_content_load_page" msgid="8834308472508060268">"網頁載入時:"</string>
-    <string name="pref_content_load_page_summary" msgid="3161792969308430976">"顯示網頁總覽"</string>
+    <!-- no translation found for pref_content_load_page (2219810141690955452) -->
+    <skip />
+    <!-- no translation found for pref_content_load_page_summary (8792093504054149369) -->
+    <skip />
     <string name="pref_extras_title" msgid="3091250467679722382">"進階設定"</string>
     <string name="pref_extras_website_settings" msgid="67866640052455549">"網站設定"</string>
     <string name="pref_extras_website_settings_summary" msgid="3917568895776162240">"查看個別網站的進階設定"</string>
     <string name="pref_extras_reset_default" msgid="8904000515846202110">"還原至初始設定"</string>
     <string name="pref_extras_reset_default_summary" msgid="7984680562706914966">"清除瀏覽器所有資料,並還原至初始設定"</string>
-    <string name="pref_extras_reset_default_dlg" msgid="5332227004054477008">"瀏覽器所有資料會被清除, 並還原至初始設定。"</string>
+    <!-- no translation found for pref_extras_reset_default_dlg (6894807766578874830) -->
+    <skip />
     <string name="pref_extras_reset_default_dlg_title" msgid="2250334970728938936">"還原至初始設定"</string>
     <string name="pref_development_title" msgid="3263854204533056480">"偵錯"</string>
     <string name="pref_default_text_encoding" msgid="5742965543955558478">"文字編碼"</string>
@@ -204,20 +232,21 @@
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"文字編碼"</string>
     <string name="pref_default_text_encoding_default" msgid="5272126711231936722">"Latin-1"</string>
     <string name="browserFrameRedirect" msgid="7049675479777828343">"轉址"</string>
-    <string name="browserFrame307Post" msgid="739650008647852203">"此網頁即將轉向其他頁面。您是否要將輸入的表單資料傳送到新頁面?"</string>
+    <!-- no translation found for browserFrame307Post (1429094844669510768) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"資料連線問題"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"檔案有問題"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"確認"</string>
     <string name="browserFrameFormResubmitMessage" msgid="2752182215695632138">"您想瀏覽的頁面包含已傳送的 (「POSTDATA」),如重新送出資料,此頁表單上執行的操作將會重複 (包括搜尋或線上購物等)。"</string>
     <string name="loadSuspendedTitle" msgid="675991625288706944">"沒有網路連線"</string>
-    <!-- no translation found for loadSuspended (724674402736067146) -->
+    <!-- no translation found for loadSuspended (3133656588880851273) -->
     <skip />
     <string name="clear_history" msgid="5998307092715979619">"清除記錄"</string>
-    <string name="browser_history" msgid="2979476257919939232">"最近瀏覽的頁面"</string>
+    <!-- no translation found for browser_history (1038987118290272525) -->
+    <skip />
     <string name="empty_history" msgid="8738772352308207274">"瀏覽記錄是空的。"</string>
     <string name="add_new_bookmark" msgid="8086367791400349049">"加入書籤…"</string>
     <string name="add_bookmark_short" msgid="3783984330998103735">"新增"</string>
-    <string name="no_database" msgid="2256698896757181084">"沒有資料!"</string>
     <string name="search_hint" msgid="4647356319916631820">"搜尋或輸入網址"</string>
     <string name="search_button_text" msgid="5235226933877634410">"前往"</string>
     <string name="search_settings_description" msgid="1422401062529014107">"書籤與網頁記錄"</string>
@@ -257,7 +286,8 @@
     <string name="download_pending_network" msgid="6548714525679461053">"等待資料連線中…"</string>
     <string name="download_running_paused" msgid="6418029352085656495">"等待資料連線中…"</string>
     <string name="download_canceled" msgid="6057083743144492515">"下載已取消。"</string>
-    <string name="download_not_acceptable" msgid="282108828207321357">"無法下載。電話不支援該內容。"</string>
+    <!-- no translation found for download_not_acceptable (313769696131563652) -->
+    <skip />
     <string name="download_file_error" msgid="1206648050615176113">"無法完成下載。儲存空間不足。"</string>
     <string name="download_length_required" msgid="9038605488460437406">"無法下載。物件大小無法估計。"</string>
     <string name="download_precondition_failed" msgid="8327584102874295580">"下載中斷。無法續傳。"</string>
@@ -269,13 +299,20 @@
     <string name="webstorage_clear_data_summary" msgid="3523128713743907805">"移除所有與此網站關聯的資料庫"</string>
     <string name="webstorage_clear_data_dialog_title" msgid="345457466368974706">"清除儲存的資料"</string>
     <string name="webstorage_clear_data_dialog_message" msgid="6678281256970470125">"即將刪除此網站儲存的所有資料"</string>
-    <string name="webstorage_clear_data_dialog_ok_button" msgid="5074037549893407416">"全部清除"</string>
+    <!-- no translation found for webstorage_clear_data_dialog_ok_button (2516563534211898636) -->
+    <skip />
     <string name="webstorage_clear_data_dialog_cancel_button" msgid="2028867751958942762">"取消"</string>
     <string name="webstorage_origin_summary_mb_stored" msgid="1985885826292236210">"您手機的儲存空間使用量 (MB)"</string>
-    <string name="geolocation_permissions_prompt_message" msgid="2412844044592274106">"「<xliff:g id="WEBPAGE">%s</xliff:g>」想取得您的位置資訊"</string>
-    <string name="geolocation_permissions_prompt_share" msgid="6908104491085328731">"分享"</string>
-    <string name="geolocation_permissions_prompt_dont_share" msgid="5962677371200773835">"不要分享"</string>
-    <string name="geolocation_permissions_prompt_remember" msgid="5798300962802553043">"記住"</string>
+    <!-- no translation found for loading_video (4887871585216091096) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_message (356796102004052471) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_share (9084486342048347976) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_dont_share (6303025160237860300) -->
+    <skip />
+    <!-- no translation found for geolocation_permissions_prompt_remember (3118526300707348308) -->
+    <skip />
     <string name="geolocation_settings_page_title" msgid="1745477985097536528">"清除位置資訊存取權"</string>
     <string name="geolocation_settings_page_summary_allowed" msgid="9180251524290811398">"此網站目前可以存取您的位置資訊"</string>
     <string name="geolocation_settings_page_summary_not_allowed" msgid="4589649082203102544">"此網站目前無法存取您的位置資訊"</string>
@@ -283,13 +320,13 @@
     <string name="geolocation_settings_page_dialog_message" msgid="7586671987576403993">"即將清除此網站的位置資訊存取權"</string>
     <string name="geolocation_settings_page_dialog_ok_button" msgid="4789434178048077287">"清除存取權"</string>
     <string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"取消"</string>
-    <!-- no translation found for website_settings_clear_all (2073906304824388952) -->
+    <!-- no translation found for website_settings_clear_all (8739804325997655980) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_title (1975103796504323734) -->
+    <!-- no translation found for website_settings_clear_all_dialog_title (7791826325122461718) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_message (6545526672017530811) -->
+    <!-- no translation found for website_settings_clear_all_dialog_message (6150502090601476333) -->
     <skip />
-    <!-- no translation found for website_settings_clear_all_dialog_ok_button (3677457125416372255) -->
+    <!-- no translation found for website_settings_clear_all_dialog_ok_button (6401582240627669431) -->
     <skip />
     <!-- no translation found for website_settings_clear_all_dialog_cancel_button (1896757051856611674) -->
     <skip />
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 3bb6ffd..1da745a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -17,7 +17,8 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <!-- The name of the application. -->
     <string name="application_name">Browser</string>
-
+    <!-- Displayed with a file picker to choose a file to upload -->
+    <string name="choose_upload">Choose file for upload</string>
     <!-- Name of menu item of a new tab.  Also used in the title bar when displaying a new tab -->
     <string name="new_tab">New window</string>
     <!-- Name of menu item which brings up a list of the currently active tabs -->
@@ -170,6 +171,8 @@
     <string name="empty_bookmark">"Cannot create empty bookmark."</string>
         <!-- Error that appears in the title of Bookmark dialog when user selects OK with invalid URL -->
     <string name="bookmark_url_not_valid">URL is not valid.</string>
+        <!-- Error that appears in the Bookmark dialog when user selects OK with a URL of a type we cannot bookmark -->
+    <string name="bookmark_cannot_save_url">This URL cannot be bookmarked.</string>
         <!-- Title of a confirmation dialog when the user deletes a bookmark-->
     <string name="delete_bookmark">Delete</string>
     <!-- Menu item in the page that displays all bookmarks. It brings up a
@@ -673,7 +676,7 @@
         <item>eBay</item>
         <item>http://www.ebay.com/</item>
         <item>CNN</item>
-        <item>http://www.cnn.com/index.html</item>
+        <item>http://www.cnn.com/</item>
         <item>NY Times</item>
         <item>http://www.nytimes.com/</item>
         <item>ESPN</item>
diff --git a/src/com/android/browser/ActiveTabsPage.java b/src/com/android/browser/ActiveTabsPage.java
index 90c417a..72f291c 100644
--- a/src/com/android/browser/ActiveTabsPage.java
+++ b/src/com/android/browser/ActiveTabsPage.java
@@ -49,7 +49,7 @@
         mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                 public void onItemClick(AdapterView<?> parent, View view,
                         int position, long id) {
-                    if (mControl.getTabCount() < TabControl.MAX_TABS) {
+                    if (mControl.canCreateNewTab()) {
                         position--;
                     }
                     boolean needToAttach = false;
@@ -92,7 +92,7 @@
     private class TabsListAdapter extends BaseAdapter {
         public int getCount() {
             int count = mControl.getTabCount();
-            if (count < TabControl.MAX_TABS) {
+            if (mControl.canCreateNewTab()) {
                 count++;
             }
             return count;
@@ -107,7 +107,7 @@
             return 2;
         }
         public int getItemViewType(int position) {
-            if (mControl.getTabCount() < TabControl.MAX_TABS) {
+            if (mControl.canCreateNewTab()) {
                 position--;
             }
             // Do not recycle the "add new tab" item.
@@ -115,7 +115,7 @@
         }
         public View getView(int position, View convertView, ViewGroup parent) {
             final int tabCount = mControl.getTabCount();
-            if (tabCount < TabControl.MAX_TABS) {
+            if (mControl.canCreateNewTab()) {
                 position--;
             }
 
@@ -131,8 +131,8 @@
                 ImageView favicon =
                         (ImageView) convertView.findViewById(R.id.favicon);
                 View close = convertView.findViewById(R.id.close);
-                TabControl.Tab tab = mControl.getTab(position);
-                mControl.populatePickerData(tab);
+                Tab tab = mControl.getTab(position);
+                tab.populatePickerData();
                 title.setText(tab.getTitle());
                 url.setText(tab.getUrl());
                 Bitmap icon = tab.getFavicon();
diff --git a/src/com/android/browser/AddBookmarkPage.java b/src/com/android/browser/AddBookmarkPage.java
index 81123ba..9ab8473 100644
--- a/src/com/android/browser/AddBookmarkPage.java
+++ b/src/com/android/browser/AddBookmarkPage.java
@@ -182,9 +182,14 @@
         try {
             URI uriObj = new URI(url);
             String scheme = uriObj.getScheme();
-            if (!("about".equals(scheme) || "data".equals(scheme)
-                    || "javascript".equals(scheme)
-                    || "file".equals(scheme) || "content".equals(scheme))) {
+            if (!Bookmarks.urlHasAcceptableScheme(url)) {
+                // If the scheme was non-null, let the user know that we
+                // can't save their bookmark. If it was null, we'll assume
+                // they meant http when we parse it in the WebAddress class.
+                if (scheme != null) {
+                    mAddress.setError(r.getText(R.string.bookmark_cannot_save_url));
+                    return false;
+                }
                 WebAddress address;
                 try {
                     address = new WebAddress(unfilteredUrl);
diff --git a/src/com/android/browser/Bookmarks.java b/src/com/android/browser/Bookmarks.java
index c8aaee7..8d98f89 100644
--- a/src/com/android/browser/Bookmarks.java
+++ b/src/com/android/browser/Bookmarks.java
@@ -41,6 +41,18 @@
 
     private static String[]         SELECTION_ARGS;
 
+    // We only want the user to be able to bookmark content that
+    // the browser can handle directly.
+    private static final String acceptableBookmarkSchemes[] = {
+            "http:",
+            "https:",
+            "about:",
+            "data:",
+            "javascript:",
+            "file:",
+            "content:"
+    };
+
     /**
      *  Add a bookmark to the database.
      *  @param context Context of the calling Activity.  This is used to make
@@ -214,4 +226,17 @@
         bm.compress(Bitmap.CompressFormat.PNG, 100, os);
         return os.toByteArray();
     }
+
+    /* package */ static boolean urlHasAcceptableScheme(String url) {
+        if (url == null) {
+            return false;
+        }
+
+        for (int i = 0; i < acceptableBookmarkSchemes.length; i++) {
+            if (url.startsWith(acceptableBookmarkSchemes[i])) {
+                return true;
+            }
+        }
+        return false;
+    }
 }
diff --git a/src/com/android/browser/BrowserActivity.java b/src/com/android/browser/BrowserActivity.java
index 65b7911..c6f4056 100644
--- a/src/com/android/browser/BrowserActivity.java
+++ b/src/com/android/browser/BrowserActivity.java
@@ -34,33 +34,23 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.ServiceConnection;
-import android.content.DialogInterface.OnCancelListener;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
-import android.content.res.AssetManager;
 import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.database.Cursor;
-import android.database.sqlite.SQLiteDatabase;
-import android.database.sqlite.SQLiteException;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.graphics.Canvas;
-import android.graphics.DrawFilter;
-import android.graphics.Paint;
-import android.graphics.PaintFlagsDrawFilter;
 import android.graphics.Picture;
 import android.graphics.PixelFormat;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
-import android.hardware.SensorListener;
-import android.hardware.SensorManager;
 import android.net.ConnectivityManager;
 import android.net.NetworkInfo;
 import android.net.Uri;
 import android.net.WebAddress;
-import android.net.http.EventHandler;
 import android.net.http.SslCertificate;
 import android.net.http.SslError;
 import android.os.AsyncTask;
@@ -99,41 +89,26 @@
 import android.view.WindowManager;
 import android.view.ContextMenu.ContextMenuInfo;
 import android.view.MenuItem.OnMenuItemClickListener;
-import android.view.animation.AlphaAnimation;
-import android.view.animation.Animation;
-import android.view.animation.AnimationSet;
-import android.view.animation.DecelerateInterpolator;
-import android.view.animation.ScaleAnimation;
-import android.view.animation.TranslateAnimation;
 import android.webkit.CookieManager;
 import android.webkit.CookieSyncManager;
 import android.webkit.DownloadListener;
-import android.webkit.GeolocationPermissions;
 import android.webkit.HttpAuthHandler;
 import android.webkit.PluginManager;
 import android.webkit.SslErrorHandler;
 import android.webkit.URLUtil;
 import android.webkit.ValueCallback;
 import android.webkit.WebChromeClient;
-import android.webkit.WebChromeClient.CustomViewCallback;
 import android.webkit.WebHistoryItem;
 import android.webkit.WebIconDatabase;
-import android.webkit.WebStorage;
 import android.webkit.WebView;
-import android.webkit.WebViewClient;
 import android.widget.EditText;
 import android.widget.FrameLayout;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 import android.widget.Toast;
 
-import java.io.BufferedOutputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -141,14 +116,9 @@
 import java.net.URLEncoder;
 import java.text.ParseException;
 import java.util.Date;
-import java.util.Enumeration;
 import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.Vector;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
 
 public class BrowserActivity extends Activity
     implements View.OnCreateContextMenuListener,
@@ -164,8 +134,6 @@
     private IGoogleLoginService mGls = null;
     private ServiceConnection mGlsConnection = null;
 
-    private SensorManager mSensorManager = null;
-
     // These are single-character shortcuts for searching popular sources.
     private static final int SHORTCUT_INVALID = 0;
     private static final int SHORTCUT_GOOGLE_SEARCH = 1;
@@ -173,23 +141,6 @@
     private static final int SHORTCUT_DICTIONARY_SEARCH = 3;
     private static final int SHORTCUT_GOOGLE_MOBILE_LOCAL_SEARCH = 4;
 
-    /* Whitelisted webpages
-    private static HashSet<String> sWhiteList;
-
-    static {
-        sWhiteList = new HashSet<String>();
-        sWhiteList.add("cnn.com/");
-        sWhiteList.add("espn.go.com/");
-        sWhiteList.add("nytimes.com/");
-        sWhiteList.add("engadget.com/");
-        sWhiteList.add("yahoo.com/");
-        sWhiteList.add("msn.com/");
-        sWhiteList.add("amazon.com/");
-        sWhiteList.add("consumerist.com/");
-        sWhiteList.add("google.com/m/news");
-    }
-    */
-
     private void setupHomePage() {
         final Runnable getAccount = new Runnable() {
             public void run() {
@@ -295,7 +246,8 @@
      */
     private FrameLayout mBrowserFrameLayout;
 
-    @Override public void onCreate(Bundle icicle) {
+    @Override
+    public void onCreate(Bundle icicle) {
         if (LOGV_ENABLED) {
             Log.v(LOGTAG, this + " onStart");
         }
@@ -314,16 +266,6 @@
             return;
         }
 
-        //
-        // start MASF proxy service
-        //
-        //Intent proxyServiceIntent = new Intent();
-        //proxyServiceIntent.setComponent
-        //    (new ComponentName(
-        //        "com.android.masfproxyservice",
-        //        "com.android.masfproxyservice.MasfProxyService"));
-        //startService(proxyServiceIntent, null);
-
         mSecLockIcon = Resources.getSystem().getDrawable(
                 android.R.drawable.ic_secure);
         mMixLockIcon = Resources.getSystem().getDrawable(
@@ -341,6 +283,7 @@
                 .findViewById(R.id.fullscreen_custom_content);
         frameLayout.addView(mBrowserFrameLayout, COVER_SCREEN_PARAMS);
         mTitleBar = new TitleBar(this);
+        mFakeTitleBar = new TitleBar(this);
 
         // Create the tab control and our initial tab
         mTabControl = new TabControl(this);
@@ -437,7 +380,7 @@
             // the tab will be close when exit.
             UrlData urlData = getUrlDataFromIntent(intent);
 
-            final TabControl.Tab t = mTabControl.createNewTab(
+            final Tab t = mTabControl.createNewTab(
                     Intent.ACTION_VIEW.equals(intent.getAction()) &&
                     intent.getData() != null,
                     intent.getStringExtra(Browser.EXTRA_APPLICATION_ID), urlData.mUrl);
@@ -487,7 +430,7 @@
 
     @Override
     protected void onNewIntent(Intent intent) {
-        TabControl.Tab current = mTabControl.getCurrentTab();
+        Tab current = mTabControl.getCurrentTab();
         // When a tab is closed on exit, the current tab index is set to -1.
         // Reset before proceed as Browser requires the current tab to be set.
         if (current == null) {
@@ -530,7 +473,7 @@
             if (Intent.ACTION_VIEW.equals(action)
                     && !getPackageName().equals(appId)
                     && (flags & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
-                TabControl.Tab appTab = mTabControl.getTabFromId(appId);
+                Tab appTab = mTabControl.getTabFromId(appId);
                 if (appTab != null) {
                     Log.i(LOGTAG, "Reusing tab for " + appId);
                     // Dismiss the subwindow if applicable.
@@ -746,100 +689,8 @@
         return inUrl;
     }
 
-    /**
-     * Looking for the pattern like this
-     *
-     *          *
-     *         * *
-     *      ***   *     *******
-     *             *   *
-     *              * *
-     *               *
-     */
-    private final SensorListener mSensorListener = new SensorListener() {
-        private long mLastGestureTime;
-        private float[] mPrev = new float[3];
-        private float[] mPrevDiff = new float[3];
-        private float[] mDiff = new float[3];
-        private float[] mRevertDiff = new float[3];
-
-        public void onSensorChanged(int sensor, float[] values) {
-            boolean show = false;
-            float[] diff = new float[3];
-
-            for (int i = 0; i < 3; i++) {
-                diff[i] = values[i] - mPrev[i];
-                if (Math.abs(diff[i]) > 1) {
-                    show = true;
-                }
-                if ((diff[i] > 1.0 && mDiff[i] < 0.2)
-                        || (diff[i] < -1.0 && mDiff[i] > -0.2)) {
-                    // start track when there is a big move, or revert
-                    mRevertDiff[i] = mDiff[i];
-                    mDiff[i] = 0;
-                } else if (diff[i] > -0.2 && diff[i] < 0.2) {
-                    // reset when it is flat
-                    mDiff[i] = mRevertDiff[i]  = 0;
-                }
-                mDiff[i] += diff[i];
-                mPrevDiff[i] = diff[i];
-                mPrev[i] = values[i];
-            }
-
-            if (false) {
-                // only shows if we think the delta is big enough, in an attempt
-                // to detect "serious" moves left/right or up/down
-                Log.d("BrowserSensorHack", "sensorChanged " + sensor + " ("
-                        + values[0] + ", " + values[1] + ", " + values[2] + ")"
-                        + " diff(" + diff[0] + " " + diff[1] + " " + diff[2]
-                        + ")");
-                Log.d("BrowserSensorHack", "      mDiff(" + mDiff[0] + " "
-                        + mDiff[1] + " " + mDiff[2] + ")" + " mRevertDiff("
-                        + mRevertDiff[0] + " " + mRevertDiff[1] + " "
-                        + mRevertDiff[2] + ")");
-            }
-
-            long now = android.os.SystemClock.uptimeMillis();
-            if (now - mLastGestureTime > 1000) {
-                mLastGestureTime = 0;
-
-                float y = mDiff[1];
-                float z = mDiff[2];
-                float ay = Math.abs(y);
-                float az = Math.abs(z);
-                float ry = mRevertDiff[1];
-                float rz = mRevertDiff[2];
-                float ary = Math.abs(ry);
-                float arz = Math.abs(rz);
-                boolean gestY = ay > 2.5f && ary > 1.0f && ay > ary;
-                boolean gestZ = az > 3.5f && arz > 1.0f && az > arz;
-
-                if ((gestY || gestZ) && !(gestY && gestZ)) {
-                    WebView view = mTabControl.getCurrentWebView();
-
-                    if (view != null) {
-                        if (gestZ) {
-                            if (z < 0) {
-                                view.zoomOut();
-                            } else {
-                                view.zoomIn();
-                            }
-                        } else {
-                            view.flingScroll(0, Math.round(y * 100));
-                        }
-                    }
-                    mLastGestureTime = now;
-                }
-            }
-        }
-
-        public void onAccuracyChanged(int sensor, int accuracy) {
-            // TODO Auto-generated method stub
-
-        }
-    };
-
-    @Override protected void onResume() {
+    @Override
+    protected void onResume() {
         super.onResume();
         if (LOGV_ENABLED) {
             Log.v(LOGTAG, "BrowserActivity.onResume: this=" + this);
@@ -869,24 +720,12 @@
         registerReceiver(mNetworkStateIntentReceiver,
                          mNetworkStateChangedFilter);
         WebView.enablePlatformNotifications();
-
-        if (mSettings.doFlick()) {
-            if (mSensorManager == null) {
-                mSensorManager = (SensorManager) getSystemService(
-                        Context.SENSOR_SERVICE);
-            }
-            mSensorManager.registerListener(mSensorListener,
-                    SensorManager.SENSOR_ACCELEROMETER,
-                    SensorManager.SENSOR_DELAY_FASTEST);
-        } else {
-            mSensorManager = null;
-        }
     }
 
     /**
      * Since the actual title bar is embedded in the WebView, and removing it
-     * would change its appearance, create a temporary title bar to go at
-     * the top of the screen while the menu is open.
+     * would change its appearance, use a different TitleBar to show overlayed
+     * at the top of the screen, when the menu is open or the page is loading.
      */
     private TitleBar mFakeTitleBar;
 
@@ -989,7 +828,7 @@
 
     private void showFakeTitleBar() {
         final View decor = getWindow().peekDecorView();
-        if (mFakeTitleBar == null && mActiveTabsPage == null
+        if (mFakeTitleBar.getParent() == null && mActiveTabsPage == null
                 && !mActivityInPause && decor != null
                 && decor.getWindowToken() != null) {
             Rect visRect = new Rect();
@@ -999,12 +838,6 @@
                 }
                 return;
             }
-            final WebView webView = getTopWindow();
-            mFakeTitleBar = new TitleBar(this);
-            mFakeTitleBar.setTitleAndUrl(null, webView.getUrl());
-            mFakeTitleBar.setProgress(webView.getProgress());
-            mFakeTitleBar.setFavicon(webView.getFavicon());
-            updateLockIconToLatest();
 
             WindowManager manager
                     = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
@@ -1052,8 +885,9 @@
             showFakeTitleBar();
         }
     }
+
     private void hideFakeTitleBar() {
-        if (mFakeTitleBar == null) return;
+        if (mFakeTitleBar.getParent() == null) return;
         WindowManager.LayoutParams params = (WindowManager.LayoutParams)
                 mFakeTitleBarHolder.getLayoutParams();
         WebView mainView = mTabControl.getCurrentWebView();
@@ -1068,7 +902,6 @@
         manager.updateViewLayout(mFakeTitleBarHolder, params);
         mFakeTitleBarHolder.removeView(mFakeTitleBar);
         manager.removeView(mFakeTitleBarHolder);
-        mFakeTitleBar = null;
     }
 
     /**
@@ -1083,12 +916,21 @@
         openContextMenu(mTitleBar);
     }
 
+    @Override
+    public void onContextMenuClosed(Menu menu) {
+        super.onContextMenuClosed(menu);
+        if (mInLoad) {
+            showFakeTitleBar();
+        }
+    }
+
     /**
      *  onSaveInstanceState(Bundle map)
      *  onSaveInstanceState is called right before onStop(). The map contains
      *  the saved state.
      */
-    @Override protected void onSaveInstanceState(Bundle outState) {
+    @Override
+    protected void onSaveInstanceState(Bundle outState) {
         if (LOGV_ENABLED) {
             Log.v(LOGTAG, "BrowserActivity.onSaveInstanceState: this=" + this);
         }
@@ -1102,7 +944,8 @@
         mTabControl.saveState(outState);
     }
 
-    @Override protected void onPause() {
+    @Override
+    protected void onPause() {
         super.onPause();
 
         if (mActivityInPause) {
@@ -1137,22 +980,24 @@
         // unregister network state listener
         unregisterReceiver(mNetworkStateIntentReceiver);
         WebView.disablePlatformNotifications();
-
-        if (mSensorManager != null) {
-            mSensorManager.unregisterListener(mSensorListener);
-        }
     }
 
-    @Override protected void onDestroy() {
+    @Override
+    protected void onDestroy() {
         if (LOGV_ENABLED) {
             Log.v(LOGTAG, "BrowserActivity.onDestroy: this=" + this);
         }
         super.onDestroy();
 
+        if (mUploadMessage != null) {
+            mUploadMessage.onReceiveValue(null);
+            mUploadMessage = null;
+        }
+
         if (mTabControl == null) return;
 
         // Remove the current tab and sub window
-        TabControl.Tab t = mTabControl.getCurrentTab();
+        Tab t = mTabControl.getCurrentTab();
         if (t != null) {
             dismissSubWindow(t);
             removeTabFromContentView(t);
@@ -1165,16 +1010,6 @@
             mGlsConnection = null;
         }
 
-        //
-        // stop MASF proxy service
-        //
-        //Intent proxyServiceIntent = new Intent();
-        //proxyServiceIntent.setComponent
-        //   (new ComponentName(
-        //        "com.android.masfproxyservice",
-        //        "com.android.masfproxyservice.MasfProxyService"));
-        //stopService(proxyServiceIntent);
-
         unregisterReceiver(mPackageInstallationReceiver);
     }
 
@@ -1220,16 +1055,18 @@
         }
     }
 
-    @Override public void onLowMemory() {
+    @Override
+    public void onLowMemory() {
         super.onLowMemory();
         mTabControl.freeMemory();
     }
 
     private boolean resumeWebViewTimers() {
-        if ((!mActivityInPause && !mPageStarted) ||
-                (mActivityInPause && mPageStarted)) {
+        Tab tab = mTabControl.getCurrentTab();
+        boolean inLoad = tab.inLoad();
+        if ((!mActivityInPause && !inLoad) || (mActivityInPause && inLoad)) {
             CookieSyncManager.getInstance().startSync();
-            WebView w = mTabControl.getCurrentWebView();
+            WebView w = tab.getWebView();
             if (w != null) {
                 w.resumeTimers();
             }
@@ -1240,7 +1077,9 @@
     }
 
     private boolean pauseWebViewTimers() {
-        if (mActivityInPause && !mPageStarted) {
+        Tab tab = mTabControl.getCurrentTab();
+        boolean inLoad = tab.inLoad();
+        if (mActivityInPause && !inLoad) {
             CookieSyncManager.getInstance().stopSync();
             WebView w = mTabControl.getCurrentWebView();
             if (w != null) {
@@ -1329,6 +1168,10 @@
         return mTabControl.getCurrentTopWebView();
     }
 
+    TabControl getTabControl() {
+        return mTabControl;
+    }
+
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         super.onCreateOptionsMenu(menu);
@@ -1440,8 +1283,8 @@
      *                 the current one, return false.
      */
     /* package */ boolean switchToTab(int index) {
-        TabControl.Tab tab = mTabControl.getTab(index);
-        TabControl.Tab currentTab = mTabControl.getCurrentTab();
+        Tab tab = mTabControl.getTab(index);
+        Tab currentTab = mTabControl.getCurrentTab();
         if (tab == null || tab == currentTab) {
             return false;
         }
@@ -1457,20 +1300,20 @@
         return true;
     }
 
-    /* package */ TabControl.Tab openTabToHomePage() {
+    /* package */ Tab openTabToHomePage() {
         return openTabAndShow(mSettings.getHomePage(), false, null);
     }
 
     /* package */ void closeCurrentWindow() {
-        final TabControl.Tab current = mTabControl.getCurrentTab();
+        final Tab current = mTabControl.getCurrentTab();
         if (mTabControl.getTabCount() == 1) {
             // This is the last tab.  Open a new one, with the home
             // page and close the current one.
-            TabControl.Tab newTab = openTabToHomePage();
+            openTabToHomePage();
             closeTab(current);
             return;
         }
-        final TabControl.Tab parent = current.getParentTab();
+        final Tab parent = current.getParentTab();
         int indexToShow = -1;
         if (parent != null) {
             indexToShow = mTabControl.getTabIndex(parent);
@@ -1583,7 +1426,7 @@
                 break;
 
             case R.id.homepage_menu_id:
-                TabControl.Tab current = mTabControl.getCurrentTab();
+                Tab current = mTabControl.getCurrentTab();
                 if (current != null) {
                     dismissSubWindow(current);
                     current.getWebView().loadUrl(mSettings.getHomePage());
@@ -1649,7 +1492,7 @@
                     int menuid = item.getItemId();
                     for (int id = 0; id < WINDOW_SHORTCUT_ID_ARRAY.length; id++) {
                         if (WINDOW_SHORTCUT_ID_ARRAY[id] == menuid) {
-                            TabControl.Tab desiredTab = mTabControl.getTab(id);
+                            Tab desiredTab = mTabControl.getTab(id);
                             if (desiredTab != null &&
                                     desiredTab != mTabControl.getCurrentTab()) {
                                 switchToTab(id);
@@ -1674,8 +1517,8 @@
         mMenuState = R.id.MAIN_MENU;
     }
 
-    @Override public boolean onPrepareOptionsMenu(Menu menu)
-    {
+    @Override
+    public boolean onPrepareOptionsMenu(Menu menu) {
         // This happens when the user begins to hold down the menu key, so
         // allow them to chord to get a shortcut.
         mCanChord = true;
@@ -1716,7 +1559,7 @@
                         .setEnabled(canGoForward);
 
                 menu.findItem(R.id.new_tab_menu_id).setEnabled(
-                        mTabControl.getTabCount() < TabControl.MAX_TABS);
+                        mTabControl.canCreateNewTab());
 
                 // decide whether to show the share link option
                 PackageManager pm = getPackageManager();
@@ -1820,7 +1663,9 @@
                 menu.setHeaderView(titleView);
                 // decide whether to show the open link in new tab option
                 menu.findItem(R.id.open_newtab_context_menu_id).setVisible(
-                        mTabControl.getTabCount() < TabControl.MAX_TABS);
+                        mTabControl.canCreateNewTab());
+                menu.findItem(R.id.bookmark_context_menu_id).setVisible(
+                        Bookmarks.urlHasAcceptableScheme(extra));
                 PackageManager pm = getPackageManager();
                 Intent send = new Intent(Intent.ACTION_SEND);
                 send.setType("text/plain");
@@ -1844,17 +1689,18 @@
                 Log.w(LOGTAG, "We should not get here.");
                 break;
         }
+        hideFakeTitleBar();
     }
 
     // Attach the given tab to the content view.
     // this should only be called for the current tab.
-    private void attachTabToContentView(TabControl.Tab t) {
+    private void attachTabToContentView(Tab t) {
         // Attach the container that contains the main WebView and any other UI
         // associated with the tab.
         t.attachTabToContentView(mContentView);
 
         if (mShouldShowErrorConsole) {
-            ErrorConsoleView errorConsole = mTabControl.getCurrentErrorConsole(true);
+            ErrorConsoleView errorConsole = t.getErrorConsole(true);
             if (errorConsole.numberOfErrors() == 0) {
                 errorConsole.showConsole(ErrorConsoleView.SHOW_NONE);
             } else {
@@ -1866,14 +1712,6 @@
                                                   ViewGroup.LayoutParams.WRAP_CONTENT));
         }
 
-        setLockIconType(t.getLockIconType());
-        setPrevLockType(t.getPrevLockIconType());
-
-        // this is to match the code in removeTabFromContentView()
-        if (!mPageStarted && t.getTopWindow().getProgress() < 100) {
-            mPageStarted = true;
-        }
-
         WebView view = t.getWebView();
         view.setEmbeddedTitleBar(mTitleBar);
         // Request focus on the top window.
@@ -1881,70 +1719,51 @@
     }
 
     // Attach a sub window to the main WebView of the given tab.
-    private void attachSubWindow(TabControl.Tab t) {
+    void attachSubWindow(Tab t) {
         t.attachSubWindow(mContentView);
         getTopWindow().requestFocus();
     }
 
     // Remove the given tab from the content view.
-    private void removeTabFromContentView(TabControl.Tab t) {
+    private void removeTabFromContentView(Tab t) {
         // Remove the container that contains the main WebView.
         t.removeTabFromContentView(mContentView);
 
-        if (mTabControl.getCurrentErrorConsole(false) != null) {
-            mErrorConsoleContainer.removeView(mTabControl.getCurrentErrorConsole(false));
+        ErrorConsoleView errorConsole = t.getErrorConsole(false);
+        if (errorConsole != null) {
+            mErrorConsoleContainer.removeView(errorConsole);
         }
 
         WebView view = t.getWebView();
         if (view != null) {
             view.setEmbeddedTitleBar(null);
         }
-
-        // unlike attachTabToContentView(), removeTabFromContentView() can be
-        // called for the non-current tab. Need to add the check.
-        if (t == mTabControl.getCurrentTab()) {
-            t.setLockIconType(getLockIconType());
-            t.setPrevLockIconType(getPrevLockType());
-
-            // this is not a perfect solution. But currently there is one
-            // WebViewClient for all the WebView. if user switches from an
-            // in-load window to an already loaded window, mPageStarted will not
-            // be set to false. If user leaves the Browser, pauseWebViewTimers()
-            // won't do anything and leaves the timer running even Browser is in
-            // the background.
-            if (mPageStarted) {
-                mPageStarted = false;
-            }
-        }
     }
 
     // Remove the sub window if it exists. Also called by TabControl when the
     // user clicks the 'X' to dismiss a sub window.
-    /* package */ void dismissSubWindow(TabControl.Tab t) {
+    /* package */ void dismissSubWindow(Tab t) {
         t.removeSubWindow(mContentView);
-        // Tell the TabControl to dismiss the subwindow. This will destroy
-        // the WebView.
-        mTabControl.dismissSubWindow(t);
+        // dismiss the subwindow. This will destroy the WebView.
+        t.dismissSubWindow();
         getTopWindow().requestFocus();
     }
 
     // A wrapper function of {@link #openTabAndShow(UrlData, boolean, String)}
     // that accepts url as string.
-    private TabControl.Tab openTabAndShow(String url, boolean closeOnExit,
-            String appId) {
+    private Tab openTabAndShow(String url, boolean closeOnExit, String appId) {
         return openTabAndShow(new UrlData(url), closeOnExit, appId);
     }
 
     // This method does a ton of stuff. It will attempt to create a new tab
     // if we haven't reached MAX_TABS. Otherwise it uses the current tab. If
     // url isn't null, it will load the given url.
-    /* package */ TabControl.Tab openTabAndShow(UrlData urlData,
-            boolean closeOnExit, String appId) {
-        final boolean newTab = mTabControl.getTabCount() != TabControl.MAX_TABS;
-        final TabControl.Tab currentTab = mTabControl.getCurrentTab();
-        if (newTab) {
-            final TabControl.Tab tab = mTabControl.createNewTab(
-                    closeOnExit, appId, urlData.mUrl);
+    /* package */Tab openTabAndShow(UrlData urlData, boolean closeOnExit,
+            String appId) {
+        final Tab currentTab = mTabControl.getCurrentTab();
+        if (mTabControl.canCreateNewTab()) {
+            final Tab tab = mTabControl.createNewTab(closeOnExit, appId,
+                    urlData.mUrl);
             WebView webview = tab.getWebView();
             // If the last tab was removed from the active tabs page, currentTab
             // will be null.
@@ -1970,9 +1789,9 @@
         return currentTab;
     }
 
-    private TabControl.Tab openTab(String url) {
+    private Tab openTab(String url) {
         if (mSettings.openInBackground()) {
-            TabControl.Tab t = mTabControl.createNewTab();
+            Tab t = mTabControl.createNewTab();
             if (t != null) {
                 WebView view = t.getWebView();
                 view.loadUrl(url);
@@ -2029,7 +1848,8 @@
      * call resetTitleAndRevertLockIcon.
      */
     /* package */ void resetTitleAndRevertLockIcon() {
-        revertLockIcon();
+        mTabControl.getCurrentTab().revertLockIcon();
+        updateLockIconToLatest();
         resetTitleIconAndProgress();
     }
 
@@ -2043,7 +1863,7 @@
         }
         resetTitleAndIcon(current);
         int progress = current.getProgress();
-        mWebChromeClient.onProgressChanged(current, progress);
+        current.getWebChromeClient().onProgressChanged(current, progress);
     }
 
     // Reset the title and the icon based on the given item.
@@ -2063,14 +1883,12 @@
      * @param url The URL of the site being loaded.
      * @param title The title of the site being loaded.
      */
-    private void setUrlTitle(String url, String title) {
+    void setUrlTitle(String url, String title) {
         mUrl = url;
         mTitle = title;
 
         mTitleBar.setTitleAndUrl(title, url);
-        if (mFakeTitleBar != null) {
-            mFakeTitleBar.setTitleAndUrl(title, url);
-        }
+        mFakeTitleBar.setTitleAndUrl(title, url);
     }
 
     /**
@@ -2111,43 +1929,16 @@
     }
 
     // Set the favicon in the title bar.
-    private void setFavicon(Bitmap icon) {
+    void setFavicon(Bitmap icon) {
         mTitleBar.setFavicon(icon);
-        if (mFakeTitleBar != null) {
-            mFakeTitleBar.setFavicon(icon);
-        }
-    }
-
-    /**
-     * Saves the current lock-icon state before resetting
-     * the lock icon. If we have an error, we may need to
-     * roll back to the previous state.
-     */
-    private void saveLockIcon() {
-        mPrevLockType = mLockIconType;
-    }
-
-    /**
-     * Reverts the lock-icon state to the last saved state,
-     * for example, if we had an error, and need to cancel
-     * the load.
-     */
-    private void revertLockIcon() {
-        mLockIconType = mPrevLockType;
-
-        if (LOGV_ENABLED) {
-            Log.v(LOGTAG, "BrowserActivity.revertLockIcon:" +
-                  " revert lock icon to " + mLockIconType);
-        }
-
-        updateLockIconToLatest();
+        mFakeTitleBar.setFavicon(icon);
     }
 
     /**
      * Close the tab, remove its associated title bar, and adjust mTabControl's
      * current tab to a valid value.
      */
-    /* package */ void closeTab(TabControl.Tab t) {
+    /* package */ void closeTab(Tab t) {
         int currentIndex = mTabControl.getCurrentIndex();
         int removeIndex = mTabControl.getTabIndex(t);
         mTabControl.removeTab(t);
@@ -2159,7 +1950,7 @@
     }
 
     private void goBackOnePageOrQuit() {
-        TabControl.Tab current = mTabControl.getCurrentTab();
+        Tab current = mTabControl.getCurrentTab();
         if (current == null) {
             /*
              * Instead of finishing the activity, simply push this to the back
@@ -2177,17 +1968,17 @@
         } else {
             // Check to see if we are closing a window that was created by
             // another window. If so, we switch back to that window.
-            TabControl.Tab parent = current.getParentTab();
+            Tab parent = current.getParentTab();
             if (parent != null) {
                 switchToTab(mTabControl.getTabIndex(parent));
                 // Now we close the other tab
                 closeTab(current);
             } else {
                 if (current.closeOnExit()) {
-                    // force mPageStarted to be false as we are going to either
-                    // finish the activity or remove the tab. This will ensure
-                    // pauseWebView() taking action.
-                    mPageStarted = false;
+                    // force the tab's inLoad() to be false as we are going to
+                    // either finish the activity or remove the tab. This will
+                    // ensure pauseWebViewTimers() taking action.
+                    mTabControl.getCurrentTab().clearInLoad();
                     if (mTabControl.getTabCount() == 1) {
                         finish();
                         return;
@@ -2220,6 +2011,10 @@
         }
     }
 
+    boolean isMenuDown() {
+        return mMenuIsDown;
+    }
+
     @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {
         // The default key mode is DEFAULT_KEYS_SEARCH_LOCAL. As the MENU is
@@ -2265,7 +2060,8 @@
                 if (event.isTracking() && !event.isCanceled()) {
                     if (mCustomView != null) {
                         // if a custom view is showing, hide it
-                        mWebChromeClient.onHideCustomView();
+                        mTabControl.getCurrentWebView().getWebChromeClient()
+                                .onHideCustomView();
                     } else if (mActiveTabsPage != null) {
                         // if tab page is showing, hide it
                         removeActiveTabPage(true);
@@ -2293,7 +2089,12 @@
         resetTitleAndRevertLockIcon();
         WebView w = getTopWindow();
         w.stopLoading();
-        mWebViewClient.onPageFinished(w, w.getUrl());
+        // FIXME: before refactor, it is using mWebViewClient. So I keep the
+        // same logic here. But for subwindow case, should we call into the main
+        // WebView's onPageFinished as we never call its onPageStarted and if
+        // the page finishes itself, we don't call onPageFinished.
+        mTabControl.getCurrentWebView().getWebViewClient().onPageFinished(w,
+                w.getUrl());
 
         cancelStopToast();
         mStopToast = Toast
@@ -2301,6 +2102,10 @@
         mStopToast.show();
     }
 
+    boolean didUserStopLoading() {
+        return mDidStopLoad;
+    }
+
     private void cancelStopToast() {
         if (mStopToast != null) {
             mStopToast.cancel();
@@ -2308,9 +2113,16 @@
         }
     }
 
-    // called by a non-UI thread to post the message
-    public void postMessage(int what, int arg1, int arg2, Object obj) {
-        mHandler.sendMessage(mHandler.obtainMessage(what, arg1, arg2, obj));
+    // called by a UI or non-UI thread to post the message
+    public void postMessage(int what, int arg1, int arg2, Object obj,
+            long delayMillis) {
+        mHandler.sendMessageDelayed(mHandler.obtainMessage(what, arg1, arg2,
+                obj), delayMillis);
+    }
+
+    // called by a UI or non-UI thread to remove the message
+    void removeMessages(int what, Object object) {
+        mHandler.removeMessages(what, object);
     }
 
     // public message ids
@@ -2322,7 +2134,7 @@
     private static final int CANCEL_CREDS_REQUEST    = 103;
     private static final int RELEASE_WAKELOCK        = 107;
 
-    private static final int UPDATE_BOOKMARK_THUMBNAIL = 108;
+    static final int UPDATE_BOOKMARK_THUMBNAIL       = 108;
 
     // Private handler for handling javascript and saving passwords
     private Handler mHandler = new Handler() {
@@ -2347,9 +2159,8 @@
                             loadURL(getTopWindow(), url);
                             break;
                         case R.id.open_newtab_context_menu_id:
-                            final TabControl.Tab parent = mTabControl
-                                    .getCurrentTab();
-                            final TabControl.Tab newTab = openTab(url);
+                            final Tab parent = mTabControl.getCurrentTab();
+                            final Tab newTab = openTab(url);
                             if (newTab != parent) {
                                 parent.addChildTab(newTab);
                             }
@@ -2390,6 +2201,10 @@
                 case RELEASE_WAKELOCK:
                     if (mWakeLock.isHeld()) {
                         mWakeLock.release();
+                        // if we reach here, Browser should be still in the
+                        // background loading after WAKELOCK_TIMEOUT (5-min).
+                        // To avoid burning the battery, stop loading.
+                        mTabControl.stopAllLoading();
                     }
                     break;
 
@@ -2494,7 +2309,7 @@
     }
 
     // -------------------------------------------------------------------------
-    // WebViewClient implementation.
+    // Helper function for WebViewClient.
     //-------------------------------------------------------------------------
 
     // Use in overrideUrlLoading
@@ -2503,1020 +2318,305 @@
     /* package */ final static String SCHEME_WTAI_SD = "wtai://wp/sd;";
     /* package */ final static String SCHEME_WTAI_AP = "wtai://wp/ap;";
 
-    /* package */ WebViewClient getWebViewClient() {
-        return mWebViewClient;
-    }
+    void onPageStarted(WebView view, String url, Bitmap favicon) {
+        // when BrowserActivity just starts, onPageStarted may be called before
+        // onResume as it is triggered from onCreate. Call resumeWebViewTimers
+        // to start the timer. As we won't switch tabs while an activity is in
+        // pause state, we can ensure calling resume and pause in pair.
+        if (mActivityInPause) resumeWebViewTimers();
 
-    private void updateIcon(WebView view, Bitmap icon) {
-        if (icon != null) {
-            BrowserBookmarksAdapter.updateBookmarkFavicon(mResolver,
-                    view.getOriginalUrl(), view.getUrl(), icon);
-        }
-        setFavicon(icon);
-    }
+        resetLockIcon(url);
+        setUrlTitle(url, null);
+        setFavicon(favicon);
+        mInLoad = true;
+        mDidStopLoad = false;
+        showFakeTitleBar();
+        updateInLoadMenuItems();
+        if (!mIsNetworkUp) createAndShowNetworkDialog();
 
-    private void updateIcon(String url, Bitmap icon) {
-        if (icon != null) {
-            BrowserBookmarksAdapter.updateBookmarkFavicon(mResolver,
-                    null, url, icon);
-        }
-        setFavicon(icon);
-    }
-
-    private final WebViewClient mWebViewClient = new WebViewClient() {
-        @Override
-        public void onPageStarted(WebView view, String url, Bitmap favicon) {
-            resetLockIcon(url);
-            setUrlTitle(url, null);
-
-            // We've started to load a new page. If there was a pending message
-            // to save a screenshot then we will now take the new page and
-            // save an incorrect screenshot. Therefore, remove any pending
-            // thumbnail messages from the queue.
-            mHandler.removeMessages(UPDATE_BOOKMARK_THUMBNAIL);
-
-            // If we start a touch icon load and then load a new page, we don't
-            // want to cancel the current touch icon loader. But, we do want to
-            // create a new one when the touch icon url is known.
-            if (mTouchIconLoader != null) {
-                mTouchIconLoader.mActivity = null;
-                mTouchIconLoader = null;
-            }
-
-            ErrorConsoleView errorConsole = mTabControl.getCurrentErrorConsole(false);
-            if (errorConsole != null) {
-                errorConsole.clearErrorMessages();
-                if (mShouldShowErrorConsole) {
-                    errorConsole.showConsole(ErrorConsoleView.SHOW_NONE);
-                }
-            }
-
-            // Call updateIcon instead of setFavicon so the bookmark
-            // database can be updated.
-            updateIcon(url, favicon);
-
-            if (mSettings.isTracing()) {
-                String host;
-                try {
-                    WebAddress uri = new WebAddress(url);
-                    host = uri.mHost;
-                } catch (android.net.ParseException ex) {
-                    host = "browser";
-                }
-                host = host.replace('.', '_');
-                host += ".trace";
-                mInTrace = true;
-                Debug.startMethodTracing(host, 20 * 1024 * 1024);
-            }
-
-            // Performance probe
-            if (false) {
-                mStart = SystemClock.uptimeMillis();
-                mProcessStart = Process.getElapsedCpuTime();
-                long[] sysCpu = new long[7];
-                if (Process.readProcFile("/proc/stat", SYSTEM_CPU_FORMAT, null,
-                        sysCpu, null)) {
-                    mUserStart = sysCpu[0] + sysCpu[1];
-                    mSystemStart = sysCpu[2];
-                    mIdleStart = sysCpu[3];
-                    mIrqStart = sysCpu[4] + sysCpu[5] + sysCpu[6];
-                }
-                mUiStart = SystemClock.currentThreadTimeMillis();
-            }
-
-            if (!mPageStarted) {
-                mPageStarted = true;
-                // if onResume() has been called, resumeWebViewTimers() does
-                // nothing.
-                resumeWebViewTimers();
-            }
-
-            // reset sync timer to avoid sync starts during loading a page
-            CookieSyncManager.getInstance().resetSync();
-
-            mInLoad = true;
-            mDidStopLoad = false;
-            showFakeTitleBar();
-            updateInLoadMenuItems();
-            if (!mIsNetworkUp) {
-                createAndShowNetworkDialog();
-                if (view != null) {
-                    view.setNetworkAvailable(false);
-                }
-            }
-        }
-
-        @Override
-        public void onPageFinished(WebView view, String url) {
-            // Reset the title and icon in case we stopped a provisional
-            // load.
-            resetTitleAndIcon(view);
-
-            if (!mDidStopLoad) {
-                // Only update the bookmark screenshot if the user did not
-                // cancel the load early.
-                Message updateScreenshot = Message.obtain(mHandler, UPDATE_BOOKMARK_THUMBNAIL, view);
-                mHandler.sendMessageDelayed(updateScreenshot, 500);
-            }
-
-            // Update the lock icon image only once we are done loading
-            updateLockIconToLatest();
-
-            // Performance probe
-            if (false) {
-                long[] sysCpu = new long[7];
-                if (Process.readProcFile("/proc/stat", SYSTEM_CPU_FORMAT, null,
-                        sysCpu, null)) {
-                    String uiInfo = "UI thread used "
-                            + (SystemClock.currentThreadTimeMillis() - mUiStart)
-                            + " ms";
-                    if (LOGD_ENABLED) {
-                        Log.d(LOGTAG, uiInfo);
-                    }
-                    //The string that gets written to the log
-                    String performanceString = "It took total "
-                            + (SystemClock.uptimeMillis() - mStart)
-                            + " ms clock time to load the page."
-                            + "\nbrowser process used "
-                            + (Process.getElapsedCpuTime() - mProcessStart)
-                            + " ms, user processes used "
-                            + (sysCpu[0] + sysCpu[1] - mUserStart) * 10
-                            + " ms, kernel used "
-                            + (sysCpu[2] - mSystemStart) * 10
-                            + " ms, idle took " + (sysCpu[3] - mIdleStart) * 10
-                            + " ms and irq took "
-                            + (sysCpu[4] + sysCpu[5] + sysCpu[6] - mIrqStart)
-                            * 10 + " ms, " + uiInfo;
-                    if (LOGD_ENABLED) {
-                        Log.d(LOGTAG, performanceString + "\nWebpage: " + url);
-                    }
-                    if (url != null) {
-                        // strip the url to maintain consistency
-                        String newUrl = new String(url);
-                        if (newUrl.startsWith("http://www.")) {
-                            newUrl = newUrl.substring(11);
-                        } else if (newUrl.startsWith("http://")) {
-                            newUrl = newUrl.substring(7);
-                        } else if (newUrl.startsWith("https://www.")) {
-                            newUrl = newUrl.substring(12);
-                        } else if (newUrl.startsWith("https://")) {
-                            newUrl = newUrl.substring(8);
-                        }
-                        if (LOGD_ENABLED) {
-                            Log.d(LOGTAG, newUrl + " loaded");
-                        }
-                        /*
-                        if (sWhiteList.contains(newUrl)) {
-                            // The string that gets pushed to the statistcs
-                            // service
-                            performanceString = performanceString
-                                    + "\nWebpage: "
-                                    + newUrl
-                                    + "\nCarrier: "
-                                    + android.os.SystemProperties
-                                            .get("gsm.sim.operator.alpha");
-                            if (mWebView != null
-                                    && mWebView.getContext() != null
-                                    && mWebView.getContext().getSystemService(
-                                    Context.CONNECTIVITY_SERVICE) != null) {
-                                ConnectivityManager cManager =
-                                        (ConnectivityManager) mWebView
-                                        .getContext().getSystemService(
-                                        Context.CONNECTIVITY_SERVICE);
-                                NetworkInfo nInfo = cManager
-                                        .getActiveNetworkInfo();
-                                if (nInfo != null) {
-                                    performanceString = performanceString
-                                            + "\nNetwork Type: "
-                                            + nInfo.getType().toString();
-                                }
-                            }
-                            Checkin.logEvent(mResolver,
-                                    Checkin.Events.Tag.WEBPAGE_LOAD,
-                                    performanceString);
-                            Log.w(LOGTAG, "pushed to the statistics service");
-                        }
-                        */
-                    }
-                }
-             }
-
-            if (mInTrace) {
-                mInTrace = false;
-                Debug.stopMethodTracing();
-            }
-
-            if (mPageStarted) {
-                mPageStarted = false;
-                // pauseWebViewTimers() will do nothing and return false if
-                // onPause() is not called yet.
-                if (pauseWebViewTimers()) {
-                    if (mWakeLock.isHeld()) {
-                        mHandler.removeMessages(RELEASE_WAKELOCK);
-                        mWakeLock.release();
-                    }
-                }
-            }
-        }
-
-        // return true if want to hijack the url to let another app to handle it
-        @Override
-        public boolean shouldOverrideUrlLoading(WebView view, String url) {
-            if (url.startsWith(SCHEME_WTAI)) {
-                // wtai://wp/mc;number
-                // number=string(phone-number)
-                if (url.startsWith(SCHEME_WTAI_MC)) {
-                    Intent intent = new Intent(Intent.ACTION_VIEW,
-                            Uri.parse(WebView.SCHEME_TEL +
-                            url.substring(SCHEME_WTAI_MC.length())));
-                    startActivity(intent);
-                    return true;
-                }
-                // wtai://wp/sd;dtmf
-                // dtmf=string(dialstring)
-                if (url.startsWith(SCHEME_WTAI_SD)) {
-                    // TODO
-                    // only send when there is active voice connection
-                    return false;
-                }
-                // wtai://wp/ap;number;name
-                // number=string(phone-number)
-                // name=string
-                if (url.startsWith(SCHEME_WTAI_AP)) {
-                    // TODO
-                    return false;
-                }
-            }
-
-            // The "about:" schemes are internal to the browser; don't
-            // want these to be dispatched to other apps.
-            if (url.startsWith("about:")) {
-                return false;
-            }
-
-            Intent intent;
-
-            // perform generic parsing of the URI to turn it into an Intent.
+        if (mSettings.isTracing()) {
+            String host;
             try {
-                intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
-            } catch (URISyntaxException ex) {
-                Log.w("Browser", "Bad URI " + url + ": " + ex.getMessage());
-                return false;
+                WebAddress uri = new WebAddress(url);
+                host = uri.mHost;
+            } catch (android.net.ParseException ex) {
+                host = "browser";
             }
+            host = host.replace('.', '_');
+            host += ".trace";
+            mInTrace = true;
+            Debug.startMethodTracing(host, 20 * 1024 * 1024);
+        }
 
-            // check whether the intent can be resolved. If not, we will see
-            // whether we can download it from the Market.
-            if (getPackageManager().resolveActivity(intent, 0) == null) {
-                String packagename = intent.getPackage();
-                if (packagename != null) {
-                    intent = new Intent(Intent.ACTION_VIEW, Uri
-                            .parse("market://search?q=pname:" + packagename));
-                    intent.addCategory(Intent.CATEGORY_BROWSABLE);
-                    startActivity(intent);
-                    return true;
-                } else {
-                    return false;
+        // Performance probe
+        if (false) {
+            mStart = SystemClock.uptimeMillis();
+            mProcessStart = Process.getElapsedCpuTime();
+            long[] sysCpu = new long[7];
+            if (Process.readProcFile("/proc/stat", SYSTEM_CPU_FORMAT, null,
+                    sysCpu, null)) {
+                mUserStart = sysCpu[0] + sysCpu[1];
+                mSystemStart = sysCpu[2];
+                mIdleStart = sysCpu[3];
+                mIrqStart = sysCpu[4] + sysCpu[5] + sysCpu[6];
+            }
+            mUiStart = SystemClock.currentThreadTimeMillis();
+        }
+    }
+
+    void onPageFinished(WebView view, String url) {
+        // Reset the title and icon in case we stopped a provisional load.
+        resetTitleAndIcon(view);
+        // Update the lock icon image only once we are done loading
+        updateLockIconToLatest();
+        // pause the WebView timer and release the wake lock if it is finished
+        // while BrowserActivity is in pause state.
+        if (mActivityInPause && pauseWebViewTimers()) {
+            if (mWakeLock.isHeld()) {
+                mHandler.removeMessages(RELEASE_WAKELOCK);
+                mWakeLock.release();
+            }
+        }
+
+        // Performance probe
+        if (false) {
+            long[] sysCpu = new long[7];
+            if (Process.readProcFile("/proc/stat", SYSTEM_CPU_FORMAT, null,
+                    sysCpu, null)) {
+                String uiInfo = "UI thread used "
+                        + (SystemClock.currentThreadTimeMillis() - mUiStart)
+                        + " ms";
+                if (LOGD_ENABLED) {
+                    Log.d(LOGTAG, uiInfo);
+                }
+                //The string that gets written to the log
+                String performanceString = "It took total "
+                        + (SystemClock.uptimeMillis() - mStart)
+                        + " ms clock time to load the page."
+                        + "\nbrowser process used "
+                        + (Process.getElapsedCpuTime() - mProcessStart)
+                        + " ms, user processes used "
+                        + (sysCpu[0] + sysCpu[1] - mUserStart) * 10
+                        + " ms, kernel used "
+                        + (sysCpu[2] - mSystemStart) * 10
+                        + " ms, idle took " + (sysCpu[3] - mIdleStart) * 10
+                        + " ms and irq took "
+                        + (sysCpu[4] + sysCpu[5] + sysCpu[6] - mIrqStart)
+                        * 10 + " ms, " + uiInfo;
+                if (LOGD_ENABLED) {
+                    Log.d(LOGTAG, performanceString + "\nWebpage: " + url);
+                }
+                if (url != null) {
+                    // strip the url to maintain consistency
+                    String newUrl = new String(url);
+                    if (newUrl.startsWith("http://www.")) {
+                        newUrl = newUrl.substring(11);
+                    } else if (newUrl.startsWith("http://")) {
+                        newUrl = newUrl.substring(7);
+                    } else if (newUrl.startsWith("https://www.")) {
+                        newUrl = newUrl.substring(12);
+                    } else if (newUrl.startsWith("https://")) {
+                        newUrl = newUrl.substring(8);
+                    }
+                    if (LOGD_ENABLED) {
+                        Log.d(LOGTAG, newUrl + " loaded");
+                    }
                 }
             }
+         }
 
-            // sanitize the Intent, ensuring web pages can not bypass browser
-            // security (only access to BROWSABLE activities).
-            intent.addCategory(Intent.CATEGORY_BROWSABLE);
-            intent.setComponent(null);
-            try {
-                if (startActivityIfNeeded(intent, -1)) {
-                    return true;
-                }
-            } catch (ActivityNotFoundException ex) {
-                // ignore the error. If no application can handle the URL,
-                // eg about:blank, assume the browser can handle it.
-            }
+        if (mInTrace) {
+            mInTrace = false;
+            Debug.stopMethodTracing();
+        }
+    }
 
-            if (mMenuIsDown) {
-                openTab(url);
-                closeOptionsMenu();
+    boolean shouldOverrideUrlLoading(WebView view, String url) {
+        if (url.startsWith(SCHEME_WTAI)) {
+            // wtai://wp/mc;number
+            // number=string(phone-number)
+            if (url.startsWith(SCHEME_WTAI_MC)) {
+                Intent intent = new Intent(Intent.ACTION_VIEW,
+                        Uri.parse(WebView.SCHEME_TEL +
+                        url.substring(SCHEME_WTAI_MC.length())));
+                startActivity(intent);
                 return true;
             }
+            // wtai://wp/sd;dtmf
+            // dtmf=string(dialstring)
+            if (url.startsWith(SCHEME_WTAI_SD)) {
+                // TODO: only send when there is active voice connection
+                return false;
+            }
+            // wtai://wp/ap;number;name
+            // number=string(phone-number)
+            // name=string
+            if (url.startsWith(SCHEME_WTAI_AP)) {
+                // TODO
+                return false;
+            }
+        }
 
+        // The "about:" schemes are internal to the browser; don't want these to
+        // be dispatched to other apps.
+        if (url.startsWith("about:")) {
             return false;
         }
 
-        /**
-         * Updates the lock icon. This method is called when we discover another
-         * resource to be loaded for this page (for example, javascript). While
-         * we update the icon type, we do not update the lock icon itself until
-         * we are done loading, it is slightly more secure this way.
-         */
-        @Override
-        public void onLoadResource(WebView view, String url) {
-            if (url != null && url.length() > 0) {
-                // It is only if the page claims to be secure
-                // that we may have to update the lock:
-                if (mLockIconType == LOCK_ICON_SECURE) {
-                    // If NOT a 'safe' url, change the lock to mixed content!
-                    if (!(URLUtil.isHttpsUrl(url) || URLUtil.isDataUrl(url) || URLUtil.isAboutUrl(url))) {
-                        mLockIconType = LOCK_ICON_MIXED;
-                        if (LOGV_ENABLED) {
-                            Log.v(LOGTAG, "BrowserActivity.updateLockIcon:" +
-                                  " updated lock icon to " + mLockIconType + " due to " + url);
-                        }
-                    }
-                }
-            }
+        Intent intent;
+        // perform generic parsing of the URI to turn it into an Intent.
+        try {
+            intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
+        } catch (URISyntaxException ex) {
+            Log.w("Browser", "Bad URI " + url + ": " + ex.getMessage());
+            return false;
         }
 
-        /**
-         * Show the dialog, asking the user if they would like to continue after
-         * an excessive number of HTTP redirects.
-         */
-        @Override
-        public void onTooManyRedirects(WebView view, final Message cancelMsg,
-                final Message continueMsg) {
-            new AlertDialog.Builder(BrowserActivity.this)
-                .setTitle(R.string.browserFrameRedirect)
-                .setMessage(R.string.browserFrame307Post)
-                .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
-                    public void onClick(DialogInterface dialog, int which) {
-                        continueMsg.sendToTarget();
-                    }})
-                .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
-                    public void onClick(DialogInterface dialog, int which) {
-                        cancelMsg.sendToTarget();
-                    }})
-                .setOnCancelListener(new OnCancelListener() {
-                    public void onCancel(DialogInterface dialog) {
-                        cancelMsg.sendToTarget();
-                    }})
-                .show();
-        }
-
-        // Container class for the next error dialog that needs to be
-        // displayed.
-        class ErrorDialog {
-            public final int mTitle;
-            public final String mDescription;
-            public final int mError;
-            ErrorDialog(int title, String desc, int error) {
-                mTitle = title;
-                mDescription = desc;
-                mError = error;
-            }
-        };
-
-        private void processNextError() {
-            if (mQueuedErrors == null) {
-                return;
-            }
-            // The first one is currently displayed so just remove it.
-            mQueuedErrors.removeFirst();
-            if (mQueuedErrors.size() == 0) {
-                mQueuedErrors = null;
-                return;
-            }
-            showError(mQueuedErrors.getFirst());
-        }
-
-        private DialogInterface.OnDismissListener mDialogListener =
-                new DialogInterface.OnDismissListener() {
-                    public void onDismiss(DialogInterface d) {
-                        processNextError();
-                    }
-                };
-        private LinkedList<ErrorDialog> mQueuedErrors;
-
-        private void queueError(int err, String desc) {
-            if (mQueuedErrors == null) {
-                mQueuedErrors = new LinkedList<ErrorDialog>();
-            }
-            for (ErrorDialog d : mQueuedErrors) {
-                if (d.mError == err) {
-                    // Already saw a similar error, ignore the new one.
-                    return;
-                }
-            }
-            ErrorDialog errDialog = new ErrorDialog(
-                    err == WebViewClient.ERROR_FILE_NOT_FOUND ?
-                    R.string.browserFrameFileErrorLabel :
-                    R.string.browserFrameNetworkErrorLabel,
-                    desc, err);
-            mQueuedErrors.addLast(errDialog);
-
-            // Show the dialog now if the queue was empty.
-            if (mQueuedErrors.size() == 1) {
-                showError(errDialog);
-            }
-        }
-
-        private void showError(ErrorDialog errDialog) {
-            AlertDialog d = new AlertDialog.Builder(BrowserActivity.this)
-                    .setTitle(errDialog.mTitle)
-                    .setMessage(errDialog.mDescription)
-                    .setPositiveButton(R.string.ok, null)
-                    .create();
-            d.setOnDismissListener(mDialogListener);
-            d.show();
-        }
-
-        /**
-         * Show a dialog informing the user of the network error reported by
-         * WebCore.
-         */
-        @Override
-        public void onReceivedError(WebView view, int errorCode,
-                String description, String failingUrl) {
-            if (errorCode != WebViewClient.ERROR_HOST_LOOKUP &&
-                    errorCode != WebViewClient.ERROR_CONNECT &&
-                    errorCode != WebViewClient.ERROR_BAD_URL &&
-                    errorCode != WebViewClient.ERROR_UNSUPPORTED_SCHEME &&
-                    errorCode != WebViewClient.ERROR_FILE) {
-                queueError(errorCode, description);
-            }
-            Log.e(LOGTAG, "onReceivedError " + errorCode + " " + failingUrl
-                    + " " + description);
-
-            // We need to reset the title after an error.
-            resetTitleAndRevertLockIcon();
-        }
-
-        /**
-         * Check with the user if it is ok to resend POST data as the page they
-         * are trying to navigate to is the result of a POST.
-         */
-        @Override
-        public void onFormResubmission(WebView view, final Message dontResend,
-                                       final Message resend) {
-            new AlertDialog.Builder(BrowserActivity.this)
-                .setTitle(R.string.browserFrameFormResubmitLabel)
-                .setMessage(R.string.browserFrameFormResubmitMessage)
-                .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
-                    public void onClick(DialogInterface dialog, int which) {
-                        resend.sendToTarget();
-                    }})
-                .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
-                    public void onClick(DialogInterface dialog, int which) {
-                        dontResend.sendToTarget();
-                    }})
-                .setOnCancelListener(new OnCancelListener() {
-                    public void onCancel(DialogInterface dialog) {
-                        dontResend.sendToTarget();
-                    }})
-                .show();
-        }
-
-        /**
-         * Insert the url into the visited history database.
-         * @param url The url to be inserted.
-         * @param isReload True if this url is being reloaded.
-         * FIXME: Not sure what to do when reloading the page.
-         */
-        @Override
-        public void doUpdateVisitedHistory(WebView view, String url,
-                boolean isReload) {
-            if (url.regionMatches(true, 0, "about:", 0, 6)) {
-                return;
-            }
-            // remove "client" before updating it to the history so that it wont
-            // show up in the auto-complete list.
-            int index = url.indexOf("client=ms-");
-            if (index > 0 && url.contains(".google.")) {
-                int end = url.indexOf('&', index);
-                if (end > 0) {
-                    url = url.substring(0, index)
-                            .concat(url.substring(end + 1));
-                } else {
-                    // the url.charAt(index-1) should be either '?' or '&'
-                    url = url.substring(0, index-1);
-                }
-            }
-            Browser.updateVisitedHistory(mResolver, url, true);
-            WebIconDatabase.getInstance().retainIconForPageUrl(url);
-        }
-
-        /**
-         * Displays SSL error(s) dialog to the user.
-         */
-        @Override
-        public void onReceivedSslError(
-            final WebView view, final SslErrorHandler handler, final SslError error) {
-
-            if (mSettings.showSecurityWarnings()) {
-                final LayoutInflater factory =
-                    LayoutInflater.from(BrowserActivity.this);
-                final View warningsView =
-                    factory.inflate(R.layout.ssl_warnings, null);
-                final LinearLayout placeholder =
-                    (LinearLayout)warningsView.findViewById(R.id.placeholder);
-
-                if (error.hasError(SslError.SSL_UNTRUSTED)) {
-                    LinearLayout ll = (LinearLayout)factory
-                        .inflate(R.layout.ssl_warning, null);
-                    ((TextView)ll.findViewById(R.id.warning))
-                        .setText(R.string.ssl_untrusted);
-                    placeholder.addView(ll);
-                }
-
-                if (error.hasError(SslError.SSL_IDMISMATCH)) {
-                    LinearLayout ll = (LinearLayout)factory
-                        .inflate(R.layout.ssl_warning, null);
-                    ((TextView)ll.findViewById(R.id.warning))
-                        .setText(R.string.ssl_mismatch);
-                    placeholder.addView(ll);
-                }
-
-                if (error.hasError(SslError.SSL_EXPIRED)) {
-                    LinearLayout ll = (LinearLayout)factory
-                        .inflate(R.layout.ssl_warning, null);
-                    ((TextView)ll.findViewById(R.id.warning))
-                        .setText(R.string.ssl_expired);
-                    placeholder.addView(ll);
-                }
-
-                if (error.hasError(SslError.SSL_NOTYETVALID)) {
-                    LinearLayout ll = (LinearLayout)factory
-                        .inflate(R.layout.ssl_warning, null);
-                    ((TextView)ll.findViewById(R.id.warning))
-                        .setText(R.string.ssl_not_yet_valid);
-                    placeholder.addView(ll);
-                }
-
-                new AlertDialog.Builder(BrowserActivity.this)
-                    .setTitle(R.string.security_warning)
-                    .setIcon(android.R.drawable.ic_dialog_alert)
-                    .setView(warningsView)
-                    .setPositiveButton(R.string.ssl_continue,
-                            new DialogInterface.OnClickListener() {
-                                public void onClick(DialogInterface dialog, int whichButton) {
-                                    handler.proceed();
-                                }
-                            })
-                    .setNeutralButton(R.string.view_certificate,
-                            new DialogInterface.OnClickListener() {
-                                public void onClick(DialogInterface dialog, int whichButton) {
-                                    showSSLCertificateOnError(view, handler, error);
-                                }
-                            })
-                    .setNegativeButton(R.string.cancel,
-                            new DialogInterface.OnClickListener() {
-                                public void onClick(DialogInterface dialog, int whichButton) {
-                                    handler.cancel();
-                                    BrowserActivity.this.resetTitleAndRevertLockIcon();
-                                }
-                            })
-                    .setOnCancelListener(
-                            new DialogInterface.OnCancelListener() {
-                                public void onCancel(DialogInterface dialog) {
-                                    handler.cancel();
-                                    BrowserActivity.this.resetTitleAndRevertLockIcon();
-                                }
-                            })
-                    .show();
-            } else {
-                handler.proceed();
-            }
-        }
-
-        /**
-         * Handles an HTTP authentication request.
-         *
-         * @param handler The authentication handler
-         * @param host The host
-         * @param realm The realm
-         */
-        @Override
-        public void onReceivedHttpAuthRequest(WebView view,
-                final HttpAuthHandler handler, final String host, final String realm) {
-            String username = null;
-            String password = null;
-
-            boolean reuseHttpAuthUsernamePassword =
-                handler.useHttpAuthUsernamePassword();
-
-            if (reuseHttpAuthUsernamePassword &&
-                    (mTabControl.getCurrentWebView() != null)) {
-                String[] credentials =
-                        mTabControl.getCurrentWebView()
-                                .getHttpAuthUsernamePassword(host, realm);
-                if (credentials != null && credentials.length == 2) {
-                    username = credentials[0];
-                    password = credentials[1];
-                }
-            }
-
-            if (username != null && password != null) {
-                handler.proceed(username, password);
-            } else {
-                showHttpAuthentication(handler, host, realm, null, null, null, 0);
-            }
-        }
-
-        @Override
-        public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
-            if (mMenuIsDown) {
-                // only check shortcut key when MENU is held
-                return getWindow().isShortcutKey(event.getKeyCode(), event);
+        // check whether the intent can be resolved. If not, we will see
+        // whether we can download it from the Market.
+        if (getPackageManager().resolveActivity(intent, 0) == null) {
+            String packagename = intent.getPackage();
+            if (packagename != null) {
+                intent = new Intent(Intent.ACTION_VIEW, Uri
+                        .parse("market://search?q=pname:" + packagename));
+                intent.addCategory(Intent.CATEGORY_BROWSABLE);
+                startActivity(intent);
+                return true;
             } else {
                 return false;
             }
         }
 
-        @Override
-        public void onUnhandledKeyEvent(WebView view, KeyEvent event) {
-            if (view != mTabControl.getCurrentTopWebView()) {
-                return;
-            }
-            if (event.isDown()) {
-                BrowserActivity.this.onKeyDown(event.getKeyCode(), event);
-            } else {
-                BrowserActivity.this.onKeyUp(event.getKeyCode(), event);
-            }
-        }
-    };
-
-    //--------------------------------------------------------------------------
-    // WebChromeClient implementation
-    //--------------------------------------------------------------------------
-
-    /* package */ WebChromeClient getWebChromeClient() {
-        return mWebChromeClient;
-    }
-
-    private final WebChromeClient mWebChromeClient = new WebChromeClient() {
-        // Helper method to create a new tab or sub window.
-        private void createWindow(final boolean dialog, final Message msg) {
-            if (dialog) {
-                mTabControl.createSubWindow();
-                final TabControl.Tab t = mTabControl.getCurrentTab();
-                attachSubWindow(t);
-                WebView.WebViewTransport transport =
-                        (WebView.WebViewTransport) msg.obj;
-                transport.setWebView(t.getSubWebView());
-                msg.sendToTarget();
-            } else {
-                final TabControl.Tab parent = mTabControl.getCurrentTab();
-                final TabControl.Tab newTab
-                        = openTabAndShow(EMPTY_URL_DATA, false, null);
-                if (newTab != parent) {
-                    parent.addChildTab(newTab);
-                }
-                WebView.WebViewTransport transport =
-                        (WebView.WebViewTransport) msg.obj;
-                transport.setWebView(mTabControl.getCurrentWebView());
-                msg.sendToTarget();
-            }
-        }
-
-        @Override
-        public boolean onCreateWindow(WebView view, final boolean dialog,
-                final boolean userGesture, final Message resultMsg) {
-            // Short-circuit if we can't create any more tabs or sub windows.
-            if (dialog && mTabControl.getCurrentSubWindow() != null) {
-                new AlertDialog.Builder(BrowserActivity.this)
-                        .setTitle(R.string.too_many_subwindows_dialog_title)
-                        .setIcon(android.R.drawable.ic_dialog_alert)
-                        .setMessage(R.string.too_many_subwindows_dialog_message)
-                        .setPositiveButton(R.string.ok, null)
-                        .show();
-                return false;
-            } else if (mTabControl.getTabCount() >= TabControl.MAX_TABS) {
-                new AlertDialog.Builder(BrowserActivity.this)
-                        .setTitle(R.string.too_many_windows_dialog_title)
-                        .setIcon(android.R.drawable.ic_dialog_alert)
-                        .setMessage(R.string.too_many_windows_dialog_message)
-                        .setPositiveButton(R.string.ok, null)
-                        .show();
-                return false;
-            }
-
-            // Short-circuit if this was a user gesture.
-            if (userGesture) {
-                createWindow(dialog, resultMsg);
+        // sanitize the Intent, ensuring web pages can not bypass browser
+        // security (only access to BROWSABLE activities).
+        intent.addCategory(Intent.CATEGORY_BROWSABLE);
+        intent.setComponent(null);
+        try {
+            if (startActivityIfNeeded(intent, -1)) {
                 return true;
             }
+        } catch (ActivityNotFoundException ex) {
+            // ignore the error. If no application can handle the URL,
+            // eg about:blank, assume the browser can handle it.
+        }
 
-            // Allow the popup and create the appropriate window.
-            final AlertDialog.OnClickListener allowListener =
-                    new AlertDialog.OnClickListener() {
-                        public void onClick(DialogInterface d,
-                                int which) {
-                            createWindow(dialog, resultMsg);
-                        }
-                    };
-
-            // Block the popup by returning a null WebView.
-            final AlertDialog.OnClickListener blockListener =
-                    new AlertDialog.OnClickListener() {
-                        public void onClick(DialogInterface d, int which) {
-                            resultMsg.sendToTarget();
-                        }
-                    };
-
-            // Build a confirmation dialog to display to the user.
-            final AlertDialog d =
-                    new AlertDialog.Builder(BrowserActivity.this)
-                    .setTitle(R.string.attention)
-                    .setIcon(android.R.drawable.ic_dialog_alert)
-                    .setMessage(R.string.popup_window_attempt)
-                    .setPositiveButton(R.string.allow, allowListener)
-                    .setNegativeButton(R.string.block, blockListener)
-                    .setCancelable(false)
-                    .create();
-
-            // Show the confirmation dialog.
-            d.show();
+        if (mMenuIsDown) {
+            openTab(url);
+            closeOptionsMenu();
             return true;
         }
+        return false;
+    }
 
-        @Override
-        public void onCloseWindow(WebView window) {
-            final TabControl.Tab current = mTabControl.getCurrentTab();
-            final TabControl.Tab parent = current.getParentTab();
-            if (parent != null) {
-                // JavaScript can only close popup window.
-                switchToTab(mTabControl.getTabIndex(parent));
-                // Now we need to close the window
-                closeTab(current);
-            }
-        }
+    // -------------------------------------------------------------------------
+    // Helper function for WebChromeClient
+    // -------------------------------------------------------------------------
 
-        @Override
-        public void onProgressChanged(WebView view, int newProgress) {
-            mTitleBar.setProgress(newProgress);
-            if (mFakeTitleBar != null) {
-                mFakeTitleBar.setProgress(newProgress);
-            }
+    void onProgressChanged(WebView view, int newProgress) {
+        mTitleBar.setProgress(newProgress);
+        mFakeTitleBar.setProgress(newProgress);
 
-            if (newProgress == 100) {
-                // onProgressChanged() may continue to be called after the main
-                // frame has finished loading, as any remaining sub frames
-                // continue to load. We'll only get called once though with
-                // newProgress as 100 when everything is loaded.
-                // (onPageFinished is called once when the main frame completes
-                // loading regardless of the state of any sub frames so calls
-                // to onProgressChanges may continue after onPageFinished has
-                // executed)
-
-                // sync cookies and cache promptly here.
-                CookieSyncManager.getInstance().sync();
-                if (mInLoad) {
-                    mInLoad = false;
-                    updateInLoadMenuItems();
-                    // If the options menu is open, leave the title bar
-                    if (!mOptionsMenuOpen || !mIconView) {
-                        hideFakeTitleBar();
-                    }
-                }
-            } else if (!mInLoad) {
-                // onPageFinished may have already been called but a subframe
-                // is still loading and updating the progress. Reset mInLoad
-                // and update the menu items.
-                mInLoad = true;
+        if (newProgress == 100) {
+            // onProgressChanged() may continue to be called after the main
+            // frame has finished loading, as any remaining sub frames continue
+            // to load. We'll only get called once though with newProgress as
+            // 100 when everything is loaded. (onPageFinished is called once
+            // when the main frame completes loading regardless of the state of
+            // any sub frames so calls to onProgressChanges may continue after
+            // onPageFinished has executed)
+            if (mInLoad) {
+                mInLoad = false;
                 updateInLoadMenuItems();
-                if (!mOptionsMenuOpen || mIconView) {
-                    // This page has begun to load, so show the title bar
-                    showFakeTitleBar();
+                // If the options menu is open, leave the title bar
+                if (!mOptionsMenuOpen || !mIconView) {
+                    hideFakeTitleBar();
                 }
             }
-        }
-
-        @Override
-        public void onReceivedTitle(WebView view, String title) {
-            String url = view.getUrl();
-
-            // here, if url is null, we want to reset the title
-            setUrlTitle(url, title);
-
-            if (url == null ||
-                url.length() >= SQLiteDatabase.SQLITE_MAX_LIKE_PATTERN_LENGTH) {
-                return;
-            }
-            // See if we can find the current url in our history database and
-            // add the new title to it.
-            if (url.startsWith("http://www.")) {
-                url = url.substring(11);
-            } else if (url.startsWith("http://")) {
-                url = url.substring(4);
-            }
-            try {
-                url = "%" + url;
-                String [] selArgs = new String[] { url };
-
-                String where = Browser.BookmarkColumns.URL + " LIKE ? AND "
-                        + Browser.BookmarkColumns.BOOKMARK + " = 0";
-                Cursor c = mResolver.query(Browser.BOOKMARKS_URI,
-                    Browser.HISTORY_PROJECTION, where, selArgs, null);
-                if (c.moveToFirst()) {
-                    // Current implementation of database only has one entry per
-                    // url.
-                    ContentValues map = new ContentValues();
-                    map.put(Browser.BookmarkColumns.TITLE, title);
-                    mResolver.update(Browser.BOOKMARKS_URI, map,
-                            "_id = " + c.getInt(0), null);
-                }
-                c.close();
-            } catch (IllegalStateException e) {
-                Log.e(LOGTAG, "BrowserActivity onReceived title", e);
-            } catch (SQLiteException ex) {
-                Log.e(LOGTAG, "onReceivedTitle() caught SQLiteException: ", ex);
+        } else if (!mInLoad) {
+            // onPageFinished may have already been called but a subframe is
+            // still loading and updating the progress. Reset mInLoad and update
+            // the menu items.
+            mInLoad = true;
+            updateInLoadMenuItems();
+            if (!mOptionsMenuOpen || mIconView) {
+                // This page has begun to load, so show the title bar
+                showFakeTitleBar();
             }
         }
+    }
 
-        @Override
-        public void onReceivedIcon(WebView view, Bitmap icon) {
-            updateIcon(view, icon);
+    void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback) {
+        if (mCustomView != null)
+            return;
+
+        // Add the custom view to its container.
+        mCustomViewContainer.addView(view, COVER_SCREEN_GRAVITY_CENTER);
+        mCustomView = view;
+        mCustomViewCallback = callback;
+        // Save the menu state and set it to empty while the custom
+        // view is showing.
+        mOldMenuState = mMenuState;
+        mMenuState = EMPTY_MENU;
+        // Hide the content view.
+        mContentView.setVisibility(View.GONE);
+        // Finally show the custom view container.
+        mCustomViewContainer.setVisibility(View.VISIBLE);
+        mCustomViewContainer.bringToFront();
+    }
+
+    void onHideCustomView() {
+        if (mCustomView == null)
+            return;
+
+        // Hide the custom view.
+        mCustomView.setVisibility(View.GONE);
+        // Remove the custom view from its container.
+        mCustomViewContainer.removeView(mCustomView);
+        mCustomView = null;
+        // Reset the old menu state.
+        mMenuState = mOldMenuState;
+        mOldMenuState = EMPTY_MENU;
+        mCustomViewContainer.setVisibility(View.GONE);
+        mCustomViewCallback.onCustomViewHidden();
+        // Show the content view.
+        mContentView.setVisibility(View.VISIBLE);
+    }
+
+    Bitmap getDefaultVideoPoster() {
+        if (mDefaultVideoPoster == null) {
+            mDefaultVideoPoster = BitmapFactory.decodeResource(
+                    getResources(), R.drawable.default_video_poster);
         }
+        return mDefaultVideoPoster;
+    }
 
-        @Override
-        public void onReceivedTouchIconUrl(WebView view, String url,
-                boolean precomposed) {
-            final ContentResolver cr = getContentResolver();
-            final Cursor c =
-                    BrowserBookmarksAdapter.queryBookmarksForUrl(cr,
-                            view.getOriginalUrl(), view.getUrl(), true);
-            if (c != null) {
-                if (c.getCount() > 0) {
-                    // Let precomposed icons take precedence over non-composed
-                    // icons.
-                    if (precomposed && mTouchIconLoader != null) {
-                        mTouchIconLoader.cancel(false);
-                        mTouchIconLoader = null;
-                    }
-                    // Have only one async task at a time.
-                    if (mTouchIconLoader == null) {
-                        mTouchIconLoader = new DownloadTouchIcon(
-                                BrowserActivity.this, cr, c, view);
-                        mTouchIconLoader.execute(url);
-                    }
-                } else {
-                    c.close();
-                }
-            }
+    View getVideoLoadingProgressView() {
+        if (mVideoProgressView == null) {
+            LayoutInflater inflater = LayoutInflater.from(BrowserActivity.this);
+            mVideoProgressView = inflater.inflate(
+                    R.layout.video_loading_progress, null);
         }
+        return mVideoProgressView;
+    }
 
-        @Override
-        public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback) {
-            if (mCustomView != null)
-                return;
+    /*
+     * The Object used to inform the WebView of the file to upload.
+     */
+    private ValueCallback<Uri> mUploadMessage;
 
-            // Add the custom view to its container.
-            mCustomViewContainer.addView(view, COVER_SCREEN_GRAVITY_CENTER);
-            mCustomView = view;
-            mCustomViewCallback = callback;
-            // Save the menu state and set it to empty while the custom
-            // view is showing.
-            mOldMenuState = mMenuState;
-            mMenuState = EMPTY_MENU;
-            // Hide the content view.
-            mContentView.setVisibility(View.GONE);
-            // Finally show the custom view container.
-            mCustomViewContainer.setVisibility(View.VISIBLE);
-            mCustomViewContainer.bringToFront();
-        }
+    void openFileChooser(ValueCallback<Uri> uploadMsg) {
+        if (mUploadMessage != null) return;
+        mUploadMessage = uploadMsg;
+        Intent i = new Intent(Intent.ACTION_GET_CONTENT);
+        i.addCategory(Intent.CATEGORY_OPENABLE);
+        i.setType("*/*");
+        BrowserActivity.this.startActivityForResult(Intent.createChooser(i,
+                getString(R.string.choose_upload)), FILE_SELECTED);
+    }
 
-        @Override
-        public void onHideCustomView() {
-            if (mCustomView == null)
-                return;
-
-            // Hide the custom view.
-            mCustomView.setVisibility(View.GONE);
-            // Remove the custom view from its container.
-            mCustomViewContainer.removeView(mCustomView);
-            mCustomView = null;
-            // Reset the old menu state.
-            mMenuState = mOldMenuState;
-            mOldMenuState = EMPTY_MENU;
-            mCustomViewContainer.setVisibility(View.GONE);
-            mCustomViewCallback.onCustomViewHidden();
-            // Show the content view.
-            mContentView.setVisibility(View.VISIBLE);
-        }
-
-        /**
-         * The origin has exceeded its database quota.
-         * @param url the URL that exceeded the quota
-         * @param databaseIdentifier the identifier of the database on
-         *     which the transaction that caused the quota overflow was run
-         * @param currentQuota the current quota for the origin.
-         * @param estimatedSize the estimated size of the database.
-         * @param totalUsedQuota is the sum of all origins' quota.
-         * @param quotaUpdater The callback to run when a decision to allow or
-         *     deny quota has been made. Don't forget to call this!
-         */
-        @Override
-        public void onExceededDatabaseQuota(String url,
-            String databaseIdentifier, long currentQuota, long estimatedSize,
-            long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) {
-            mSettings.getWebStorageSizeManager().onExceededDatabaseQuota(
-                    url, databaseIdentifier, currentQuota, estimatedSize,
-                    totalUsedQuota, quotaUpdater);
-        }
-
-        /**
-         * The Application Cache has exceeded its max size.
-         * @param spaceNeeded is the amount of disk space that would be needed
-         * in order for the last appcache operation to succeed.
-         * @param totalUsedQuota is the sum of all origins' quota.
-         * @param quotaUpdater A callback to inform the WebCore thread that a new
-         * app cache size is available. This callback must always be executed at
-         * some point to ensure that the sleeping WebCore thread is woken up.
-         */
-        @Override
-        public void onReachedMaxAppCacheSize(long spaceNeeded,
-                long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) {
-            mSettings.getWebStorageSizeManager().onReachedMaxAppCacheSize(
-                    spaceNeeded, totalUsedQuota, quotaUpdater);
-        }
-
-        /**
-         * Instructs the browser to show a prompt to ask the user to set the
-         * Geolocation permission state for the specified origin.
-         * @param origin The origin for which Geolocation permissions are
-         *     requested.
-         * @param callback The callback to call once the user has set the
-         *     Geolocation permission state.
-         */
-        @Override
-        public void onGeolocationPermissionsShowPrompt(String origin,
-                GeolocationPermissions.Callback callback) {
-            mTabControl.getCurrentTab().getGeolocationPermissionsPrompt().show(
-                    origin, callback);
-        }
-
-        /**
-         * Instructs the browser to hide the Geolocation permissions prompt.
-         */
-        @Override
-        public void onGeolocationPermissionsHidePrompt() {
-            mTabControl.getCurrentTab().getGeolocationPermissionsPrompt().hide();
-        }
-
-        /* Adds a JavaScript error message to the system log.
-         * @param message The error message to report.
-         * @param lineNumber The line number of the error.
-         * @param sourceID The name of the source file that caused the error.
-         */
-        @Override
-        public void addMessageToConsole(String message, int lineNumber, String sourceID) {
-            ErrorConsoleView errorConsole = mTabControl.getCurrentErrorConsole(true);
-            errorConsole.addErrorMessage(message, sourceID, lineNumber);
-                if (mShouldShowErrorConsole &&
-                        errorConsole.getShowState() != ErrorConsoleView.SHOW_MAXIMIZED) {
-                    errorConsole.showConsole(ErrorConsoleView.SHOW_MINIMIZED);
-                }
-            Log.w(LOGTAG, "Console: " + message + " " + sourceID + ":" + lineNumber);
-        }
-
-        /**
-         * Ask the browser for an icon to represent a <video> element.
-         * This icon will be used if the Web page did not specify a poster attribute.
-         *
-         * @return Bitmap The icon or null if no such icon is available.
-         * @hide pending API Council approval
-         */
-        @Override
-        public Bitmap getDefaultVideoPoster() {
-            if (mDefaultVideoPoster == null) {
-                mDefaultVideoPoster = BitmapFactory.decodeResource(
-                        getResources(), R.drawable.default_video_poster);
-            }
-            return mDefaultVideoPoster;
-        }
-
-        /**
-         * Ask the host application for a custom progress view to show while
-         * a <video> is loading.
-         *
-         * @return View The progress view.
-         * @hide pending API Council approval
-         */
-        @Override
-        public View getVideoLoadingProgressView() {
-            if (mVideoProgressView == null) {
-                LayoutInflater inflater = LayoutInflater.from(BrowserActivity.this);
-                mVideoProgressView = inflater.inflate(R.layout.video_loading_progress, null);
-            }
-            return mVideoProgressView;
-        }
-
-        /**
-         * Deliver a list of already-visited URLs
-         * @hide pending API Council approval
-         */
-        @Override
-        public void getVisitedHistory(final ValueCallback<String[]> callback) {
-            AsyncTask<Void, Void, String[]> task = new AsyncTask<Void, Void, String[]>() {
-                public String[] doInBackground(Void... unused) {
-                    return Browser.getVisitedHistory(getContentResolver());
-                }
-
-                public void onPostExecute(String[] result) {
-                    callback.onReceiveValue(result);
-
-                };
-            };
-            task.execute();
-        };
-    };
+    // -------------------------------------------------------------------------
+    // Implement functions for DownloadListener
+    // -------------------------------------------------------------------------
 
     /**
      * Notify the host application a download should be done, or that
@@ -3670,47 +2770,23 @@
 
     }
 
+    // -------------------------------------------------------------------------
+
     /**
      * Resets the lock icon. This method is called when we start a new load and
      * know the url to be loaded.
      */
     private void resetLockIcon(String url) {
         // Save the lock-icon state (we revert to it if the load gets cancelled)
-        saveLockIcon();
-
-        mLockIconType = LOCK_ICON_UNSECURE;
-        if (URLUtil.isHttpsUrl(url)) {
-            mLockIconType = LOCK_ICON_SECURE;
-            if (LOGV_ENABLED) {
-                Log.v(LOGTAG, "BrowserActivity.resetLockIcon:" +
-                      " reset lock icon to " + mLockIconType);
-            }
-        }
-
+        mTabControl.getCurrentTab().resetLockIcon(url);
         updateLockIconImage(LOCK_ICON_UNSECURE);
     }
 
-    /* package */ void setLockIconType(int type) {
-        mLockIconType = type;
-    }
-
-    /* package */ int getLockIconType() {
-        return mLockIconType;
-    }
-
-    /* package */ void setPrevLockType(int type) {
-        mPrevLockType = type;
-    }
-
-    /* package */ int getPrevLockType() {
-        return mPrevLockType;
-    }
-
     /**
      * Update the lock icon to correspond to our latest state.
      */
-    /* package */ void updateLockIconToLatest() {
-        updateLockIconImage(mLockIconType);
+    private void updateLockIconToLatest() {
+        updateLockIconImage(mTabControl.getCurrentTab().getLockIconType());
     }
 
     /**
@@ -3724,9 +2800,7 @@
             d = mMixLockIcon;
         }
         mTitleBar.setLock(d);
-        if (mFakeTitleBar != null) {
-            mFakeTitleBar.setLock(d);
-        }
+        mFakeTitleBar.setLock(d);
     }
 
     /**
@@ -3737,7 +2811,7 @@
      * not. This is important, since we need to know whether to return to
      * the parent dialog or simply dismiss.
      */
-    private void showPageInfo(final TabControl.Tab tab,
+    private void showPageInfo(final Tab tab,
                               final boolean fromShowSSLCertificateOnError) {
         final LayoutInflater factory = LayoutInflater
                 .from(this);
@@ -3855,7 +2929,7 @@
      * (accessible from the Page-Info dialog).
      * @param tab The tab to show certificate for.
      */
-    private void showSSLCertificate(final TabControl.Tab tab) {
+    private void showSSLCertificate(final Tab tab) {
         final View certificateView =
                 inflateCertificateView(tab.getWebView().getCertificate());
         if (certificateView == null) {
@@ -3907,7 +2981,7 @@
      * connection that resulted in an SSL error or proceeding per user request.
      * @param error The SSL error object.
      */
-    private void showSSLCertificateOnError(
+    void showSSLCertificateOnError(
         final WebView view, final SslErrorHandler handler, final SslError error) {
 
         final View certificateView =
@@ -3966,8 +3040,8 @@
                                 mSSLCertificateOnErrorHandler = null;
                                 mSSLCertificateOnErrorError = null;
 
-                                mWebViewClient.onReceivedSslError(
-                                    view, handler, error);
+                                view.getWebViewClient().onReceivedSslError(
+                                                view, handler, error);
                             }
                         })
                  .setNeutralButton(R.string.page_info_view,
@@ -3992,8 +3066,8 @@
                                 mSSLCertificateOnErrorHandler = null;
                                 mSSLCertificateOnErrorError = null;
 
-                                mWebViewClient.onReceivedSslError(
-                                    view, handler, error);
+                                view.getWebViewClient().onReceivedSslError(
+                                                view, handler, error);
                             }
                         })
                 .show();
@@ -4084,7 +3158,7 @@
     /**
      * Displays an http-authentication dialog.
      */
-    private void showHttpAuthentication(final HttpAuthHandler handler,
+    void showHttpAuthentication(final HttpAuthHandler handler,
             final String host, final String realm, final String title,
             final String name, final String password, int focusId) {
         LayoutInflater factory = LayoutInflater.from(this);
@@ -4205,6 +3279,10 @@
         }
     }
 
+    boolean isNetworkUp() {
+        return mIsNetworkUp;
+    }
+
     // This method shows the network dialog alerting the user that the net is
     // down. It will only show the dialog if mAlertDialog is null.
     private void createAndShowNetworkDialog() {
@@ -4228,7 +3306,7 @@
                     if (extras != null && extras.getBoolean("new_window", false)) {
                         openTab(data);
                     } else {
-                        final TabControl.Tab currentTab =
+                        final Tab currentTab =
                                 mTabControl.getCurrentTab();
                         dismissSubWindow(currentTab);
                         if (data != null && data.length() != 0) {
@@ -4237,6 +3315,14 @@
                     }
                 }
                 break;
+            // Choose a file from the file picker.
+            case FILE_SELECTED:
+                if (null == mUploadMessage) break;
+                Uri result = intent == null || resultCode != RESULT_OK ? null
+                        : intent.getData();
+                mUploadMessage.onReceiveValue(result);
+                mUploadMessage = null;
+                break;
             default:
                 break;
         }
@@ -4252,7 +3338,7 @@
         Intent intent = new Intent(this,
                 BrowserDownloadPage.class);
         intent.setData(downloadRecord);
-        startActivityForResult(intent, this.DOWNLOAD_PAGE);
+        startActivityForResult(intent, BrowserActivity.DOWNLOAD_PAGE);
 
     }
 
@@ -4289,8 +3375,7 @@
         intent.putExtra("url", url);
         intent.putExtra("thumbnail", thumbnail);
         // Disable opening in a new window if we have maxed out the windows
-        intent.putExtra("disable_new_window", mTabControl.getTabCount()
-                >= TabControl.MAX_TABS);
+        intent.putExtra("disable_new_window", !mTabControl.canCreateNewTab());
         intent.putExtra("touch_icon_url", current.getTouchIconUrl());
         if (startWithHistory) {
             intent.putExtra(CombinedBookmarkHistoryActivity.STARTING_TAB,
@@ -4304,7 +3389,7 @@
         // In case the user enters nothing.
         if (url != null && url.length() != 0 && view != null) {
             url = smartUrlFilter(url);
-            if (!mWebViewClient.shouldOverrideUrlLoading(view, url)) {
+            if (!view.getWebViewClient().shouldOverrideUrlLoading(view, url)) {
                 view.loadUrl(url);
             }
         }
@@ -4317,16 +3402,6 @@
         return null;
     }
 
-
-    // get window count
-
-    int getWindowCount(){
-      if(mTabControl != null){
-        return mTabControl.getTabCount();
-      }
-      return 0;
-    }
-
     protected static final Pattern ACCEPTED_URI_SCHEMA = Pattern.compile(
             "(?i)" + // switch on case insensitive matching
             "(" +    // begin group for schema
@@ -4400,7 +3475,8 @@
 
         mShouldShowErrorConsole = flag;
 
-        ErrorConsoleView errorConsole = mTabControl.getCurrentErrorConsole(true);
+        ErrorConsoleView errorConsole = mTabControl.getCurrentTab()
+                .getErrorConsole(true);
 
         if (flag) {
             // Setting the show state of the console will cause it's the layout to be inflated.
@@ -4420,13 +3496,14 @@
 
     }
 
+    boolean shouldShowErrorConsole() {
+        return mShouldShowErrorConsole;
+    }
+
     final static int LOCK_ICON_UNSECURE = 0;
     final static int LOCK_ICON_SECURE   = 1;
     final static int LOCK_ICON_MIXED    = 2;
 
-    private int mLockIconType = LOCK_ICON_UNSECURE;
-    private int mPrevLockType = LOCK_ICON_UNSECURE;
-
     private BrowserSettings mSettings;
     private TabControl      mTabControl;
     private ContentResolver mResolver;
@@ -4452,7 +3529,6 @@
     private boolean mIsNetworkUp;
     private boolean mDidStopLoad;
 
-    private boolean mPageStarted;
     private boolean mActivityInPause = true;
 
     private boolean mMenuIsDown;
@@ -4498,7 +3574,7 @@
     // As PageInfo has different style for landscape / portrait, we have
     // to re-open it when configuration changed
     private AlertDialog mPageInfoDialog;
-    private TabControl.Tab mPageInfoView;
+    private Tab mPageInfoView;
     // If the Page-Info dialog is launched from the SSL-certificate-on-error
     // dialog, we should not just dismiss it, but should get back to the
     // SSL-certificate-on-error dialog. This flag is used to store this state
@@ -4514,7 +3590,7 @@
     // as SSLCertificate has different style for landscape / portrait, we
     // have to re-open it when configuration changed
     private AlertDialog mSSLCertificateDialog;
-    private TabControl.Tab mSSLCertificateView;
+    private Tab mSSLCertificateView;
 
     // as HttpAuthentication has different style for landscape / portrait, we
     // have to re-open it when configuration changed
@@ -4579,13 +3655,11 @@
 
     private BroadcastReceiver mPackageInstallationReceiver;
 
-    // AsyncTask for downloading touch icons
-    /* package */ DownloadTouchIcon mTouchIconLoader;
-
     // activity requestCode
     final static int COMBO_PAGE                 = 1;
     final static int DOWNLOAD_PAGE              = 2;
     final static int PREFERENCES_PAGE           = 3;
+    final static int FILE_SELECTED              = 4;
 
     // the default <video> poster
     private Bitmap mDefaultVideoPoster;
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index 6ab011b..2773089 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -439,9 +439,10 @@
                 p.setStyle(Paint.Style.FILL_AND_STROKE);
                 p.setColor(Color.WHITE);
 
+                float density = getResources().getDisplayMetrics().density;
                 // Create a rectangle that is slightly wider than the favicon
-                final float iconSize = 16; // 16x16 favicon
-                final float padding = 2;   // white padding around icon
+                final float iconSize = 16 * density; // 16x16 favicon
+                final float padding = 2; // white padding around icon
                 final float rectSize = iconSize + 2 * padding;
                 final float y = icon.getHeight() - rectSize;
                 RectF r = new RectF(0, y, rectSize, y + rectSize);
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index e36d54b..bb369ae 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -106,9 +106,6 @@
     // The setting can be then toggled from the settings menu.
     private boolean showConsole = true;
 
-    // Browser only settings
-    private boolean doFlick = false;
-
     // Private preconfigured values
     private static int minimumFontSize = 8;
     private static int minimumLogicalFontSize = 8;
@@ -336,7 +333,6 @@
             tracing = p.getBoolean("enable_tracing", tracing);
             lightTouch = p.getBoolean("enable_light_touch", lightTouch);
             navDump = p.getBoolean("enable_nav_dump", navDump);
-            doFlick = p.getBoolean("enable_flick", doFlick);
             userAgent = Integer.parseInt(p.getString("user_agent", "0"));
         }
         // JS flags is loaded from DB even if showDebugSettings is false,
@@ -422,10 +418,6 @@
         return navDump;
     }
 
-    public boolean doFlick() {
-        return doFlick;
-    }
-
     public boolean showDebugSettings() {
         return showDebugSettings;
     }
diff --git a/src/com/android/browser/DownloadTouchIcon.java b/src/com/android/browser/DownloadTouchIcon.java
index 07d2d3a..1761dd4 100644
--- a/src/com/android/browser/DownloadTouchIcon.java
+++ b/src/com/android/browser/DownloadTouchIcon.java
@@ -42,11 +42,10 @@
     private final String mOriginalUrl;
     private final String mUrl;
     private final String mUserAgent;
-    /* package */ BrowserActivity mActivity;
+    /* package */ Tab mTab;
 
-    public DownloadTouchIcon(BrowserActivity activity, ContentResolver cr,
-            Cursor c, WebView view) {
-        mActivity = activity;
+    public DownloadTouchIcon(Tab tab, ContentResolver cr, Cursor c, WebView view) {
+        mTab = tab;
         mContentResolver = cr;
         mCursor = c;
         // Store these in case they change.
@@ -56,7 +55,7 @@
     }
 
     public DownloadTouchIcon(ContentResolver cr, Cursor c, String url) {
-        mActivity = null;
+        mTab = null;
         mContentResolver = cr;
         mCursor = c;
         mOriginalUrl = null;
@@ -109,9 +108,9 @@
     @Override
     public void onPostExecute(Bitmap icon) {
         // Do this first in case the download failed.
-        if (mActivity != null) {
+        if (mTab != null) {
             // Remove the touch icon loader from the BrowserActivity.
-            mActivity.mTouchIconLoader = null;
+            mTab.mTouchIconLoader = null;
         }
 
         if (icon == null || mCursor == null || isCancelled()) {
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
new file mode 100644
index 0000000..3bb136c
--- /dev/null
+++ b/src/com/android/browser/Tab.java
@@ -0,0 +1,1568 @@
+/*
+ * Copyright (C) 2009 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 java.io.File;
+import java.util.LinkedList;
+import java.util.Vector;
+
+import android.app.AlertDialog;
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnCancelListener;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteException;
+import android.graphics.Bitmap;
+import android.net.Uri;
+import android.net.http.SslError;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.os.Message;
+import android.provider.Browser;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.View.OnClickListener;
+import android.webkit.CookieSyncManager;
+import android.webkit.GeolocationPermissions;
+import android.webkit.HttpAuthHandler;
+import android.webkit.SslErrorHandler;
+import android.webkit.URLUtil;
+import android.webkit.ValueCallback;
+import android.webkit.WebBackForwardList;
+import android.webkit.WebChromeClient;
+import android.webkit.WebHistoryItem;
+import android.webkit.WebIconDatabase;
+import android.webkit.WebStorage;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+import android.widget.FrameLayout;
+import android.widget.ImageButton;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+/**
+ * Class for maintaining Tabs with a main WebView and a subwindow.
+ */
+class Tab {
+    // Log Tag
+    private static final String LOGTAG = "Tab";
+    // The Geolocation permissions prompt
+    private GeolocationPermissionsPrompt mGeolocationPermissionsPrompt;
+    // Main WebView wrapper
+    private View mContainer;
+    // Main WebView
+    private WebView mMainView;
+    // Subwindow container
+    private View mSubViewContainer;
+    // Subwindow WebView
+    private WebView mSubView;
+    // Saved bundle for when we are running low on memory. It contains the
+    // information needed to restore the WebView if the user goes back to the
+    // tab.
+    private Bundle mSavedState;
+    // Data used when displaying the tab in the picker.
+    private PickerData mPickerData;
+    // Parent Tab. This is the Tab that created this Tab, or null if the Tab was
+    // created by the UI
+    private Tab mParentTab;
+    // Tab that constructed by this Tab. This is used when this Tab is
+    // destroyed, it clears all mParentTab values in the children.
+    private Vector<Tab> mChildTabs;
+    // If true, the tab will be removed when back out of the first page.
+    private boolean mCloseOnExit;
+    // If true, the tab is in the foreground of the current activity.
+    private boolean mInForeground;
+    // If true, the tab is in loading state.
+    private boolean mInLoad;
+    // Application identifier used to find tabs that another application wants
+    // to reuse.
+    private String mAppId;
+    // Keep the original url around to avoid killing the old WebView if the url
+    // has not changed.
+    private String mOriginalUrl;
+    // Error console for the tab
+    private ErrorConsoleView mErrorConsole;
+    // the lock icon type and previous lock icon type for the tab
+    private int mLockIconType;
+    private int mPrevLockIconType;
+    // Inflation service for making subwindows.
+    private final LayoutInflater mInflateService;
+    // The BrowserActivity which owners the Tab
+    private final BrowserActivity mActivity;
+
+    // AsyncTask for downloading touch icons
+    DownloadTouchIcon mTouchIconLoader;
+
+    // Extra saved information for displaying the tab in the picker.
+    private static class PickerData {
+        String  mUrl;
+        String  mTitle;
+        Bitmap  mFavicon;
+    }
+
+    // Used for saving and restoring each Tab
+    static final String WEBVIEW = "webview";
+    static final String NUMTABS = "numTabs";
+    static final String CURRTAB = "currentTab";
+    static final String CURRURL = "currentUrl";
+    static final String CURRTITLE = "currentTitle";
+    static final String CURRPICTURE = "currentPicture";
+    static final String CLOSEONEXIT = "closeonexit";
+    static final String PARENTTAB = "parentTab";
+    static final String APPID = "appid";
+    static final String ORIGINALURL = "originalUrl";
+
+    // -------------------------------------------------------------------------
+
+    // Container class for the next error dialog that needs to be displayed
+    private class ErrorDialog {
+        public final int mTitle;
+        public final String mDescription;
+        public final int mError;
+        ErrorDialog(int title, String desc, int error) {
+            mTitle = title;
+            mDescription = desc;
+            mError = error;
+        }
+    };
+
+    private void processNextError() {
+        if (mQueuedErrors == null) {
+            return;
+        }
+        // The first one is currently displayed so just remove it.
+        mQueuedErrors.removeFirst();
+        if (mQueuedErrors.size() == 0) {
+            mQueuedErrors = null;
+            return;
+        }
+        showError(mQueuedErrors.getFirst());
+    }
+
+    private DialogInterface.OnDismissListener mDialogListener =
+            new DialogInterface.OnDismissListener() {
+                public void onDismiss(DialogInterface d) {
+                    processNextError();
+                }
+            };
+    private LinkedList<ErrorDialog> mQueuedErrors;
+
+    private void queueError(int err, String desc) {
+        if (mQueuedErrors == null) {
+            mQueuedErrors = new LinkedList<ErrorDialog>();
+        }
+        for (ErrorDialog d : mQueuedErrors) {
+            if (d.mError == err) {
+                // Already saw a similar error, ignore the new one.
+                return;
+            }
+        }
+        ErrorDialog errDialog = new ErrorDialog(
+                err == WebViewClient.ERROR_FILE_NOT_FOUND ?
+                R.string.browserFrameFileErrorLabel :
+                R.string.browserFrameNetworkErrorLabel,
+                desc, err);
+        mQueuedErrors.addLast(errDialog);
+
+        // Show the dialog now if the queue was empty and it is in foreground
+        if (mQueuedErrors.size() == 1 && mInForeground) {
+            showError(errDialog);
+        }
+    }
+
+    private void showError(ErrorDialog errDialog) {
+        if (mInForeground) {
+            AlertDialog d = new AlertDialog.Builder(mActivity)
+                    .setTitle(errDialog.mTitle)
+                    .setMessage(errDialog.mDescription)
+                    .setPositiveButton(R.string.ok, null)
+                    .create();
+            d.setOnDismissListener(mDialogListener);
+            d.show();
+        }
+    }
+
+    // -------------------------------------------------------------------------
+    // WebViewClient implementation for the main WebView
+    // -------------------------------------------------------------------------
+
+    private final WebViewClient mWebViewClient = new WebViewClient() {
+        @Override
+        public void onPageStarted(WebView view, String url, Bitmap favicon) {
+            mInLoad = true;
+
+            // We've started to load a new page. If there was a pending message
+            // to save a screenshot then we will now take the new page and save
+            // an incorrect screenshot. Therefore, remove any pending thumbnail
+            // messages from the queue.
+            mActivity.removeMessages(BrowserActivity.UPDATE_BOOKMARK_THUMBNAIL,
+                    view);
+
+            // If we start a touch icon load and then load a new page, we don't
+            // want to cancel the current touch icon loader. But, we do want to
+            // create a new one when the touch icon url is known.
+            if (mTouchIconLoader != null) {
+                mTouchIconLoader.mTab = null;
+                mTouchIconLoader = null;
+            }
+
+            // reset the error console
+            if (mErrorConsole != null) {
+                mErrorConsole.clearErrorMessages();
+                if (mActivity.shouldShowErrorConsole()) {
+                    mErrorConsole.showConsole(ErrorConsoleView.SHOW_NONE);
+                }
+            }
+
+            // update the bookmark database for favicon
+            if (favicon != null) {
+                BrowserBookmarksAdapter.updateBookmarkFavicon(mActivity
+                        .getContentResolver(), view.getOriginalUrl(), view
+                        .getUrl(), favicon);
+            }
+
+            // reset sync timer to avoid sync starts during loading a page
+            CookieSyncManager.getInstance().resetSync();
+
+            if (!mActivity.isNetworkUp()) {
+                view.setNetworkAvailable(false);
+            }
+
+            // finally update the UI in the activity if it is in the foreground
+            if (mInForeground) {
+                mActivity.onPageStarted(view, url, favicon);
+            }
+        }
+
+        @Override
+        public void onPageFinished(WebView view, String url) {
+            mInLoad = false;
+
+            if (mInForeground && !mActivity.didUserStopLoading()
+                    || !mInForeground) {
+                // Only update the bookmark screenshot if the user did not
+                // cancel the load early.
+                mActivity.postMessage(
+                        BrowserActivity.UPDATE_BOOKMARK_THUMBNAIL, 0, 0, view,
+                        500);
+            }
+
+            // finally update the UI in the activity if it is in the foreground
+            if (mInForeground) {
+                mActivity.onPageFinished(view, url);
+            }
+        }
+
+        // return true if want to hijack the url to let another app to handle it
+        @Override
+        public boolean shouldOverrideUrlLoading(WebView view, String url) {
+            if (mInForeground) {
+                return mActivity.shouldOverrideUrlLoading(view, url);
+            } else {
+                return false;
+            }
+        }
+
+        /**
+         * Updates the lock icon. This method is called when we discover another
+         * resource to be loaded for this page (for example, javascript). While
+         * we update the icon type, we do not update the lock icon itself until
+         * we are done loading, it is slightly more secure this way.
+         */
+        @Override
+        public void onLoadResource(WebView view, String url) {
+            if (url != null && url.length() > 0) {
+                // It is only if the page claims to be secure that we may have
+                // to update the lock:
+                if (mLockIconType == BrowserActivity.LOCK_ICON_SECURE) {
+                    // If NOT a 'safe' url, change the lock to mixed content!
+                    if (!(URLUtil.isHttpsUrl(url) || URLUtil.isDataUrl(url)
+                            || URLUtil.isAboutUrl(url))) {
+                        mLockIconType = BrowserActivity.LOCK_ICON_MIXED;
+                    }
+                }
+            }
+        }
+
+        /**
+         * Show the dialog if it is in the foreground, asking the user if they
+         * would like to continue after an excessive number of HTTP redirects.
+         * Cancel if it is in the background.
+         */
+        @Override
+        public void onTooManyRedirects(WebView view, final Message cancelMsg,
+                final Message continueMsg) {
+            if (!mInForeground) {
+                cancelMsg.sendToTarget();
+                return;
+            }
+            new AlertDialog.Builder(mActivity).setTitle(
+                    R.string.browserFrameRedirect).setMessage(
+                    R.string.browserFrame307Post).setPositiveButton(
+                    R.string.ok, new DialogInterface.OnClickListener() {
+                        public void onClick(DialogInterface dialog, int which) {
+                            continueMsg.sendToTarget();
+                        }
+                    }).setNegativeButton(R.string.cancel,
+                    new DialogInterface.OnClickListener() {
+                        public void onClick(DialogInterface dialog, int which) {
+                            cancelMsg.sendToTarget();
+                        }
+                    }).setOnCancelListener(new OnCancelListener() {
+                public void onCancel(DialogInterface dialog) {
+                    cancelMsg.sendToTarget();
+                }
+            }).show();
+        }
+
+        /**
+         * Show a dialog informing the user of the network error reported by
+         * WebCore if it is in the foreground.
+         */
+        @Override
+        public void onReceivedError(WebView view, int errorCode,
+                String description, String failingUrl) {
+            if (errorCode != WebViewClient.ERROR_HOST_LOOKUP &&
+                    errorCode != WebViewClient.ERROR_CONNECT &&
+                    errorCode != WebViewClient.ERROR_BAD_URL &&
+                    errorCode != WebViewClient.ERROR_UNSUPPORTED_SCHEME &&
+                    errorCode != WebViewClient.ERROR_FILE) {
+                queueError(errorCode, description);
+            }
+            Log.e(LOGTAG, "onReceivedError " + errorCode + " " + failingUrl
+                    + " " + description);
+
+            // We need to reset the title after an error if it is in foreground.
+            if (mInForeground) {
+                mActivity.resetTitleAndRevertLockIcon();
+            }
+        }
+
+        /**
+         * Check with the user if it is ok to resend POST data as the page they
+         * are trying to navigate to is the result of a POST.
+         */
+        @Override
+        public void onFormResubmission(WebView view, final Message dontResend,
+                                       final Message resend) {
+            if (!mInForeground) {
+                dontResend.sendToTarget();
+                return;
+            }
+            new AlertDialog.Builder(mActivity).setTitle(
+                    R.string.browserFrameFormResubmitLabel).setMessage(
+                    R.string.browserFrameFormResubmitMessage)
+                    .setPositiveButton(R.string.ok,
+                            new DialogInterface.OnClickListener() {
+                                public void onClick(DialogInterface dialog,
+                                        int which) {
+                                    resend.sendToTarget();
+                                }
+                            }).setNegativeButton(R.string.cancel,
+                            new DialogInterface.OnClickListener() {
+                                public void onClick(DialogInterface dialog,
+                                        int which) {
+                                    dontResend.sendToTarget();
+                                }
+                            }).setOnCancelListener(new OnCancelListener() {
+                        public void onCancel(DialogInterface dialog) {
+                            dontResend.sendToTarget();
+                        }
+                    }).show();
+        }
+
+        /**
+         * Insert the url into the visited history database.
+         * @param url The url to be inserted.
+         * @param isReload True if this url is being reloaded.
+         * FIXME: Not sure what to do when reloading the page.
+         */
+        @Override
+        public void doUpdateVisitedHistory(WebView view, String url,
+                boolean isReload) {
+            if (url.regionMatches(true, 0, "about:", 0, 6)) {
+                return;
+            }
+            // remove "client" before updating it to the history so that it wont
+            // show up in the auto-complete list.
+            int index = url.indexOf("client=ms-");
+            if (index > 0 && url.contains(".google.")) {
+                int end = url.indexOf('&', index);
+                if (end > 0) {
+                    url = url.substring(0, index)
+                            .concat(url.substring(end + 1));
+                } else {
+                    // the url.charAt(index-1) should be either '?' or '&'
+                    url = url.substring(0, index-1);
+                }
+            }
+            Browser.updateVisitedHistory(mActivity.getContentResolver(), url,
+                    true);
+            WebIconDatabase.getInstance().retainIconForPageUrl(url);
+        }
+
+        /**
+         * Displays SSL error(s) dialog to the user.
+         */
+        @Override
+        public void onReceivedSslError(final WebView view,
+                final SslErrorHandler handler, final SslError error) {
+            if (!mInForeground) {
+                handler.cancel();
+                return;
+            }
+            if (BrowserSettings.getInstance().showSecurityWarnings()) {
+                final LayoutInflater factory =
+                    LayoutInflater.from(mActivity);
+                final View warningsView =
+                    factory.inflate(R.layout.ssl_warnings, null);
+                final LinearLayout placeholder =
+                    (LinearLayout)warningsView.findViewById(R.id.placeholder);
+
+                if (error.hasError(SslError.SSL_UNTRUSTED)) {
+                    LinearLayout ll = (LinearLayout)factory
+                        .inflate(R.layout.ssl_warning, null);
+                    ((TextView)ll.findViewById(R.id.warning))
+                        .setText(R.string.ssl_untrusted);
+                    placeholder.addView(ll);
+                }
+
+                if (error.hasError(SslError.SSL_IDMISMATCH)) {
+                    LinearLayout ll = (LinearLayout)factory
+                        .inflate(R.layout.ssl_warning, null);
+                    ((TextView)ll.findViewById(R.id.warning))
+                        .setText(R.string.ssl_mismatch);
+                    placeholder.addView(ll);
+                }
+
+                if (error.hasError(SslError.SSL_EXPIRED)) {
+                    LinearLayout ll = (LinearLayout)factory
+                        .inflate(R.layout.ssl_warning, null);
+                    ((TextView)ll.findViewById(R.id.warning))
+                        .setText(R.string.ssl_expired);
+                    placeholder.addView(ll);
+                }
+
+                if (error.hasError(SslError.SSL_NOTYETVALID)) {
+                    LinearLayout ll = (LinearLayout)factory
+                        .inflate(R.layout.ssl_warning, null);
+                    ((TextView)ll.findViewById(R.id.warning))
+                        .setText(R.string.ssl_not_yet_valid);
+                    placeholder.addView(ll);
+                }
+
+                new AlertDialog.Builder(mActivity).setTitle(
+                        R.string.security_warning).setIcon(
+                        android.R.drawable.ic_dialog_alert).setView(
+                        warningsView).setPositiveButton(R.string.ssl_continue,
+                        new DialogInterface.OnClickListener() {
+                            public void onClick(DialogInterface dialog,
+                                    int whichButton) {
+                                handler.proceed();
+                            }
+                        }).setNeutralButton(R.string.view_certificate,
+                        new DialogInterface.OnClickListener() {
+                            public void onClick(DialogInterface dialog,
+                                    int whichButton) {
+                                mActivity.showSSLCertificateOnError(view,
+                                        handler, error);
+                            }
+                        }).setNegativeButton(R.string.cancel,
+                        new DialogInterface.OnClickListener() {
+                            public void onClick(DialogInterface dialog,
+                                    int whichButton) {
+                                handler.cancel();
+                                mActivity.resetTitleAndRevertLockIcon();
+                            }
+                        }).setOnCancelListener(
+                        new DialogInterface.OnCancelListener() {
+                            public void onCancel(DialogInterface dialog) {
+                                handler.cancel();
+                                mActivity.resetTitleAndRevertLockIcon();
+                            }
+                        }).show();
+            } else {
+                handler.proceed();
+            }
+        }
+
+        /**
+         * Handles an HTTP authentication request.
+         *
+         * @param handler The authentication handler
+         * @param host The host
+         * @param realm The realm
+         */
+        @Override
+        public void onReceivedHttpAuthRequest(WebView view,
+                final HttpAuthHandler handler, final String host,
+                final String realm) {
+            String username = null;
+            String password = null;
+
+            boolean reuseHttpAuthUsernamePassword = handler
+                    .useHttpAuthUsernamePassword();
+
+            if (reuseHttpAuthUsernamePassword && mMainView != null) {
+                String[] credentials = mMainView.getHttpAuthUsernamePassword(
+                        host, realm);
+                if (credentials != null && credentials.length == 2) {
+                    username = credentials[0];
+                    password = credentials[1];
+                }
+            }
+
+            if (username != null && password != null) {
+                handler.proceed(username, password);
+            } else {
+                if (mInForeground) {
+                    mActivity.showHttpAuthentication(handler, host, realm,
+                            null, null, null, 0);
+                } else {
+                    handler.cancel();
+                }
+            }
+        }
+
+        @Override
+        public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
+            if (!mInForeground) {
+                return false;
+            }
+            if (mActivity.isMenuDown()) {
+                // only check shortcut key when MENU is held
+                return mActivity.getWindow().isShortcutKey(event.getKeyCode(),
+                        event);
+            } else {
+                return false;
+            }
+        }
+
+        @Override
+        public void onUnhandledKeyEvent(WebView view, KeyEvent event) {
+            if (!mInForeground) {
+                return;
+            }
+            if (event.isDown()) {
+                mActivity.onKeyDown(event.getKeyCode(), event);
+            } else {
+                mActivity.onKeyUp(event.getKeyCode(), event);
+            }
+        }
+    };
+
+    // -------------------------------------------------------------------------
+    // WebChromeClient implementation for the main WebView
+    // -------------------------------------------------------------------------
+
+    private final WebChromeClient mWebChromeClient = new WebChromeClient() {
+        // Helper method to create a new tab or sub window.
+        private void createWindow(final boolean dialog, final Message msg) {
+            WebView.WebViewTransport transport =
+                    (WebView.WebViewTransport) msg.obj;
+            if (dialog) {
+                createSubWindow();
+                mActivity.attachSubWindow(Tab.this);
+                transport.setWebView(mSubView);
+            } else {
+                final Tab newTab = mActivity.openTabAndShow(
+                        BrowserActivity.EMPTY_URL_DATA, false, null);
+                if (newTab != Tab.this) {
+                    Tab.this.addChildTab(newTab);
+                }
+                transport.setWebView(newTab.getWebView());
+            }
+            msg.sendToTarget();
+        }
+
+        @Override
+        public boolean onCreateWindow(WebView view, final boolean dialog,
+                final boolean userGesture, final Message resultMsg) {
+            // only allow new window or sub window for the foreground case
+            if (!mInForeground) {
+                return false;
+            }
+            // Short-circuit if we can't create any more tabs or sub windows.
+            if (dialog && mSubView != null) {
+                new AlertDialog.Builder(mActivity)
+                        .setTitle(R.string.too_many_subwindows_dialog_title)
+                        .setIcon(android.R.drawable.ic_dialog_alert)
+                        .setMessage(R.string.too_many_subwindows_dialog_message)
+                        .setPositiveButton(R.string.ok, null)
+                        .show();
+                return false;
+            } else if (!mActivity.getTabControl().canCreateNewTab()) {
+                new AlertDialog.Builder(mActivity)
+                        .setTitle(R.string.too_many_windows_dialog_title)
+                        .setIcon(android.R.drawable.ic_dialog_alert)
+                        .setMessage(R.string.too_many_windows_dialog_message)
+                        .setPositiveButton(R.string.ok, null)
+                        .show();
+                return false;
+            }
+
+            // Short-circuit if this was a user gesture.
+            if (userGesture) {
+                createWindow(dialog, resultMsg);
+                return true;
+            }
+
+            // Allow the popup and create the appropriate window.
+            final AlertDialog.OnClickListener allowListener =
+                    new AlertDialog.OnClickListener() {
+                        public void onClick(DialogInterface d,
+                                int which) {
+                            createWindow(dialog, resultMsg);
+                        }
+                    };
+
+            // Block the popup by returning a null WebView.
+            final AlertDialog.OnClickListener blockListener =
+                    new AlertDialog.OnClickListener() {
+                        public void onClick(DialogInterface d, int which) {
+                            resultMsg.sendToTarget();
+                        }
+                    };
+
+            // Build a confirmation dialog to display to the user.
+            final AlertDialog d =
+                    new AlertDialog.Builder(mActivity)
+                    .setTitle(R.string.attention)
+                    .setIcon(android.R.drawable.ic_dialog_alert)
+                    .setMessage(R.string.popup_window_attempt)
+                    .setPositiveButton(R.string.allow, allowListener)
+                    .setNegativeButton(R.string.block, blockListener)
+                    .setCancelable(false)
+                    .create();
+
+            // Show the confirmation dialog.
+            d.show();
+            return true;
+        }
+
+        @Override
+        public void onRequestFocus(WebView view) {
+            if (!mInForeground) {
+                mActivity.switchToTab(mActivity.getTabControl().getTabIndex(
+                        Tab.this));
+            }
+        }
+
+        @Override
+        public void onCloseWindow(WebView window) {
+            if (mParentTab != null) {
+                // JavaScript can only close popup window.
+                if (mInForeground) {
+                    mActivity.switchToTab(mActivity.getTabControl()
+                            .getTabIndex(mParentTab));
+                }
+                mActivity.closeTab(Tab.this);
+            }
+        }
+
+        @Override
+        public void onProgressChanged(WebView view, int newProgress) {
+            if (newProgress == 100) {
+                // sync cookies and cache promptly here.
+                CookieSyncManager.getInstance().sync();
+            }
+            if (mInForeground) {
+                mActivity.onProgressChanged(view, newProgress);
+            }
+        }
+
+        @Override
+        public void onReceivedTitle(WebView view, String title) {
+            String url = view.getUrl();
+            if (mInForeground) {
+                // here, if url is null, we want to reset the title
+                mActivity.setUrlTitle(url, title);
+            }
+            if (url == null ||
+                url.length() >= SQLiteDatabase.SQLITE_MAX_LIKE_PATTERN_LENGTH) {
+                return;
+            }
+            // See if we can find the current url in our history database and
+            // add the new title to it.
+            if (url.startsWith("http://www.")) {
+                url = url.substring(11);
+            } else if (url.startsWith("http://")) {
+                url = url.substring(4);
+            }
+            try {
+                final ContentResolver cr = mActivity.getContentResolver();
+                url = "%" + url;
+                String [] selArgs = new String[] { url };
+                String where = Browser.BookmarkColumns.URL + " LIKE ? AND "
+                        + Browser.BookmarkColumns.BOOKMARK + " = 0";
+                Cursor c = cr.query(Browser.BOOKMARKS_URI,
+                        Browser.HISTORY_PROJECTION, where, selArgs, null);
+                if (c.moveToFirst()) {
+                    // Current implementation of database only has one entry per
+                    // url.
+                    ContentValues map = new ContentValues();
+                    map.put(Browser.BookmarkColumns.TITLE, title);
+                    cr.update(Browser.BOOKMARKS_URI, map, "_id = "
+                            + c.getInt(0), null);
+                }
+                c.close();
+            } catch (IllegalStateException e) {
+                Log.e(LOGTAG, "Tab onReceived title", e);
+            } catch (SQLiteException ex) {
+                Log.e(LOGTAG, "onReceivedTitle() caught SQLiteException: ", ex);
+            }
+        }
+
+        @Override
+        public void onReceivedIcon(WebView view, Bitmap icon) {
+            if (icon != null) {
+                BrowserBookmarksAdapter.updateBookmarkFavicon(mActivity
+                        .getContentResolver(), view.getOriginalUrl(), view
+                        .getUrl(), icon);
+            }
+            if (mInForeground) {
+                mActivity.setFavicon(icon);
+            }
+        }
+
+        @Override
+        public void onReceivedTouchIconUrl(WebView view, String url,
+                boolean precomposed) {
+            final ContentResolver cr = mActivity.getContentResolver();
+            final Cursor c = BrowserBookmarksAdapter.queryBookmarksForUrl(cr,
+                            view.getOriginalUrl(), view.getUrl(), true);
+            if (c != null) {
+                if (c.getCount() > 0) {
+                    // Let precomposed icons take precedence over non-composed
+                    // icons.
+                    if (precomposed && mTouchIconLoader != null) {
+                        mTouchIconLoader.cancel(false);
+                        mTouchIconLoader = null;
+                    }
+                    // Have only one async task at a time.
+                    if (mTouchIconLoader == null) {
+                        mTouchIconLoader = new DownloadTouchIcon(Tab.this, cr,
+                                c, view);
+                        mTouchIconLoader.execute(url);
+                    }
+                } else {
+                    c.close();
+                }
+            }
+        }
+
+        @Override
+        public void onShowCustomView(View view,
+                WebChromeClient.CustomViewCallback callback) {
+            if (mInForeground) mActivity.onShowCustomView(view, callback);
+        }
+
+        @Override
+        public void onHideCustomView() {
+            if (mInForeground) mActivity.onHideCustomView();
+        }
+
+        /**
+         * The origin has exceeded its database quota.
+         * @param url the URL that exceeded the quota
+         * @param databaseIdentifier the identifier of the database on which the
+         *            transaction that caused the quota overflow was run
+         * @param currentQuota the current quota for the origin.
+         * @param estimatedSize the estimated size of the database.
+         * @param totalUsedQuota is the sum of all origins' quota.
+         * @param quotaUpdater The callback to run when a decision to allow or
+         *            deny quota has been made. Don't forget to call this!
+         */
+        @Override
+        public void onExceededDatabaseQuota(String url,
+            String databaseIdentifier, long currentQuota, long estimatedSize,
+            long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) {
+            BrowserSettings.getInstance().getWebStorageSizeManager()
+                    .onExceededDatabaseQuota(url, databaseIdentifier,
+                            currentQuota, estimatedSize, totalUsedQuota,
+                            quotaUpdater);
+        }
+
+        /**
+         * The Application Cache has exceeded its max size.
+         * @param spaceNeeded is the amount of disk space that would be needed
+         *            in order for the last appcache operation to succeed.
+         * @param totalUsedQuota is the sum of all origins' quota.
+         * @param quotaUpdater A callback to inform the WebCore thread that a
+         *            new app cache size is available. This callback must always
+         *            be executed at some point to ensure that the sleeping
+         *            WebCore thread is woken up.
+         */
+        @Override
+        public void onReachedMaxAppCacheSize(long spaceNeeded,
+                long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) {
+            BrowserSettings.getInstance().getWebStorageSizeManager()
+                    .onReachedMaxAppCacheSize(spaceNeeded, totalUsedQuota,
+                            quotaUpdater);
+        }
+
+        /**
+         * Instructs the browser to show a prompt to ask the user to set the
+         * Geolocation permission state for the specified origin.
+         * @param origin The origin for which Geolocation permissions are
+         *     requested.
+         * @param callback The callback to call once the user has set the
+         *     Geolocation permission state.
+         */
+        @Override
+        public void onGeolocationPermissionsShowPrompt(String origin,
+                GeolocationPermissions.Callback callback) {
+            if (mInForeground) {
+                mGeolocationPermissionsPrompt.show(origin, callback);
+            }
+        }
+
+        /**
+         * Instructs the browser to hide the Geolocation permissions prompt.
+         */
+        @Override
+        public void onGeolocationPermissionsHidePrompt() {
+            if (mInForeground) {
+                mGeolocationPermissionsPrompt.hide();
+            }
+        }
+
+        /* Adds a JavaScript error message to the system log.
+         * @param message The error message to report.
+         * @param lineNumber The line number of the error.
+         * @param sourceID The name of the source file that caused the error.
+         */
+        @Override
+        public void addMessageToConsole(String message, int lineNumber,
+                String sourceID) {
+            if (mInForeground) {
+                // call getErrorConsole(true) so it will create one if needed
+                ErrorConsoleView errorConsole = getErrorConsole(true);
+                errorConsole.addErrorMessage(message, sourceID, lineNumber);
+                if (mActivity.shouldShowErrorConsole()
+                        && errorConsole.getShowState() != ErrorConsoleView.SHOW_MAXIMIZED) {
+                    errorConsole.showConsole(ErrorConsoleView.SHOW_MINIMIZED);
+                }
+            }
+            Log.w(LOGTAG, "Console: " + message + " " + sourceID + ":"
+                    + lineNumber);
+        }
+
+        /**
+         * Ask the browser for an icon to represent a <video> element.
+         * This icon will be used if the Web page did not specify a poster attribute.
+         * @return Bitmap The icon or null if no such icon is available.
+         */
+        @Override
+        public Bitmap getDefaultVideoPoster() {
+            if (mInForeground) {
+                return mActivity.getDefaultVideoPoster();
+            }
+            return null;
+        }
+
+        /**
+         * Ask the host application for a custom progress view to show while
+         * a <video> is loading.
+         * @return View The progress view.
+         */
+        @Override
+        public View getVideoLoadingProgressView() {
+            if (mInForeground) {
+                return mActivity.getVideoLoadingProgressView();
+            }
+            return null;
+        }
+
+        @Override
+        public void openFileChooser(ValueCallback<Uri> uploadMsg) {
+            if (mInForeground) {
+                mActivity.openFileChooser(uploadMsg);
+            } else {
+                uploadMsg.onReceiveValue(null);
+            }
+        }
+
+        /**
+         * Deliver a list of already-visited URLs
+         */
+        @Override
+        public void getVisitedHistory(final ValueCallback<String[]> callback) {
+            AsyncTask<Void, Void, String[]> task = new AsyncTask<Void, Void, String[]>() {
+                public String[] doInBackground(Void... unused) {
+                    return Browser.getVisitedHistory(mActivity
+                            .getContentResolver());
+                }
+                public void onPostExecute(String[] result) {
+                    callback.onReceiveValue(result);
+                };
+            };
+            task.execute();
+        };
+    };
+
+    // -------------------------------------------------------------------------
+    // WebViewClient implementation for the sub window
+    // -------------------------------------------------------------------------
+
+    // Subclass of WebViewClient used in subwindows to notify the main
+    // WebViewClient of certain WebView activities.
+    private static class SubWindowClient extends WebViewClient {
+        // The main WebViewClient.
+        private final WebViewClient mClient;
+
+        SubWindowClient(WebViewClient client) {
+            mClient = client;
+        }
+        @Override
+        public void doUpdateVisitedHistory(WebView view, String url,
+                boolean isReload) {
+            mClient.doUpdateVisitedHistory(view, url, isReload);
+        }
+        @Override
+        public boolean shouldOverrideUrlLoading(WebView view, String url) {
+            return mClient.shouldOverrideUrlLoading(view, url);
+        }
+        @Override
+        public void onReceivedSslError(WebView view, SslErrorHandler handler,
+                SslError error) {
+            mClient.onReceivedSslError(view, handler, error);
+        }
+        @Override
+        public void onReceivedHttpAuthRequest(WebView view,
+                HttpAuthHandler handler, String host, String realm) {
+            mClient.onReceivedHttpAuthRequest(view, handler, host, realm);
+        }
+        @Override
+        public void onFormResubmission(WebView view, Message dontResend,
+                Message resend) {
+            mClient.onFormResubmission(view, dontResend, resend);
+        }
+        @Override
+        public void onReceivedError(WebView view, int errorCode,
+                String description, String failingUrl) {
+            mClient.onReceivedError(view, errorCode, description, failingUrl);
+        }
+        @Override
+        public boolean shouldOverrideKeyEvent(WebView view,
+                android.view.KeyEvent event) {
+            return mClient.shouldOverrideKeyEvent(view, event);
+        }
+        @Override
+        public void onUnhandledKeyEvent(WebView view,
+                android.view.KeyEvent event) {
+            mClient.onUnhandledKeyEvent(view, event);
+        }
+    }
+
+    // -------------------------------------------------------------------------
+    // WebChromeClient implementation for the sub window
+    // -------------------------------------------------------------------------
+
+    private class SubWindowChromeClient extends WebChromeClient {
+        // The main WebChromeClient.
+        private final WebChromeClient mClient;
+
+        SubWindowChromeClient(WebChromeClient client) {
+            mClient = client;
+        }
+        @Override
+        public void onProgressChanged(WebView view, int newProgress) {
+            mClient.onProgressChanged(view, newProgress);
+        }
+        @Override
+        public boolean onCreateWindow(WebView view, boolean dialog,
+                boolean userGesture, android.os.Message resultMsg) {
+            return mClient.onCreateWindow(view, dialog, userGesture, resultMsg);
+        }
+        @Override
+        public void onCloseWindow(WebView window) {
+            if (window != mSubView) {
+                Log.e(LOGTAG, "Can't close the window");
+            }
+            mActivity.dismissSubWindow(Tab.this);
+        }
+    }
+
+    // -------------------------------------------------------------------------
+
+    // Construct a new tab
+    Tab(BrowserActivity activity, WebView w, boolean closeOnExit, String appId,
+            String url) {
+        mActivity = activity;
+        mCloseOnExit = closeOnExit;
+        mAppId = appId;
+        mOriginalUrl = url;
+        mLockIconType = BrowserActivity.LOCK_ICON_UNSECURE;
+        mPrevLockIconType = BrowserActivity.LOCK_ICON_UNSECURE;
+        mInLoad = false;
+        mInForeground = false;
+
+        mInflateService = LayoutInflater.from(activity);
+
+        // The tab consists of a container view, which contains the main
+        // WebView, as well as any other UI elements associated with the tab.
+        mContainer = mInflateService.inflate(R.layout.tab, null);
+
+        mGeolocationPermissionsPrompt =
+            (GeolocationPermissionsPrompt) mContainer.findViewById(
+                R.id.geolocation_permissions_prompt);
+
+        setWebView(w);
+    }
+
+    /**
+     * Sets the WebView for this tab, correctly removing the old WebView from
+     * the container view.
+     */
+    void setWebView(WebView w) {
+        if (mMainView == w) {
+            return;
+        }
+        // If the WebView is changing, the page will be reloaded, so any ongoing
+        // Geolocation permission requests are void.
+        mGeolocationPermissionsPrompt.hide();
+
+        // Just remove the old one.
+        FrameLayout wrapper =
+                (FrameLayout) mContainer.findViewById(R.id.webview_wrapper);
+        wrapper.removeView(mMainView);
+
+        // set the new one
+        mMainView = w;
+        // attached the WebViewClient and WebChromeClient
+        if (mMainView != null) {
+            mMainView.setWebViewClient(mWebViewClient);
+            mMainView.setWebChromeClient(mWebChromeClient);
+        }
+    }
+
+    /**
+     * Destroy the tab's main WebView and subWindow if any
+     */
+    void destroy() {
+        if (mMainView != null) {
+            dismissSubWindow();
+            BrowserSettings.getInstance().deleteObserver(mMainView.getSettings());
+            // save the WebView to call destroy() after detach it from the tab
+            WebView webView = mMainView;
+            setWebView(null);
+            webView.destroy();
+        }
+    }
+
+    /**
+     * Remove the tab from the parent
+     */
+    void removeFromTree() {
+        // detach the children
+        if (mChildTabs != null) {
+            for(Tab t : mChildTabs) {
+                t.setParentTab(null);
+            }
+        }
+        // remove itself from the parent list
+        if (mParentTab != null) {
+            mParentTab.mChildTabs.remove(this);
+        }
+    }
+
+    /**
+     * Create a new subwindow unless a subwindow already exists.
+     * @return True if a new subwindow was created. False if one already exists.
+     */
+    boolean createSubWindow() {
+        if (mSubView == null) {
+            mSubViewContainer = mInflateService.inflate(
+                    R.layout.browser_subwindow, null);
+            mSubView = (WebView) mSubViewContainer.findViewById(R.id.webview);
+            // use trackball directly
+            mSubView.setMapTrackballToArrowKeys(false);
+            mSubView.setWebViewClient(new SubWindowClient(mWebViewClient));
+            mSubView.setWebChromeClient(new SubWindowChromeClient(
+                    mWebChromeClient));
+            mSubView.setDownloadListener(mActivity);
+            mSubView.setOnCreateContextMenuListener(mActivity);
+            final BrowserSettings s = BrowserSettings.getInstance();
+            s.addObserver(mSubView.getSettings()).update(s, null);
+            final ImageButton cancel = (ImageButton) mSubViewContainer
+                    .findViewById(R.id.subwindow_close);
+            cancel.setOnClickListener(new OnClickListener() {
+                public void onClick(View v) {
+                    mSubView.getWebChromeClient().onCloseWindow(mSubView);
+                }
+            });
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Dismiss the subWindow for the tab.
+     */
+    void dismissSubWindow() {
+        if (mSubView != null) {
+            BrowserSettings.getInstance().deleteObserver(
+                    mSubView.getSettings());
+            mSubView.destroy();
+            mSubView = null;
+            mSubViewContainer = null;
+        }
+    }
+
+    /**
+     * Attach the sub window to the content view.
+     */
+    void attachSubWindow(ViewGroup content) {
+        if (mSubView != null) {
+            content.addView(mSubViewContainer,
+                    BrowserActivity.COVER_SCREEN_PARAMS);
+        }
+    }
+
+    /**
+     * Remove the sub window from the content view.
+     */
+    void removeSubWindow(ViewGroup content) {
+        if (mSubView != null) {
+            content.removeView(mSubViewContainer);
+        }
+    }
+
+    /**
+     * This method attaches both the WebView and any sub window to the
+     * given content view.
+     */
+    void attachTabToContentView(ViewGroup content) {
+        if (mMainView == null) {
+            return;
+        }
+
+        // Attach the WebView to the container and then attach the
+        // container to the content view.
+        FrameLayout wrapper =
+                (FrameLayout) mContainer.findViewById(R.id.webview_wrapper);
+        wrapper.addView(mMainView);
+        content.addView(mContainer, BrowserActivity.COVER_SCREEN_PARAMS);
+        attachSubWindow(content);
+    }
+
+    /**
+     * Remove the WebView and any sub window from the given content view.
+     */
+    void removeTabFromContentView(ViewGroup content) {
+        if (mMainView == null) {
+            return;
+        }
+
+        // Remove the container from the content and then remove the
+        // WebView from the container. This will trigger a focus change
+        // needed by WebView.
+        FrameLayout wrapper =
+                (FrameLayout) mContainer.findViewById(R.id.webview_wrapper);
+        wrapper.removeView(mMainView);
+        content.removeView(mContainer);
+        removeSubWindow(content);
+    }
+
+    /**
+     * Set the parent tab of this tab.
+     */
+    void setParentTab(Tab parent) {
+        mParentTab = parent;
+        // This tab may have been freed due to low memory. If that is the case,
+        // the parent tab index is already saved. If we are changing that index
+        // (most likely due to removing the parent tab) we must update the
+        // parent tab index in the saved Bundle.
+        if (mSavedState != null) {
+            if (parent == null) {
+                mSavedState.remove(PARENTTAB);
+            } else {
+                mSavedState.putInt(PARENTTAB, mActivity.getTabControl()
+                        .getTabIndex(parent));
+            }
+        }
+    }
+
+    /**
+     * When a Tab is created through the content of another Tab, then we
+     * associate the Tabs.
+     * @param child the Tab that was created from this Tab
+     */
+    void addChildTab(Tab child) {
+        if (mChildTabs == null) {
+            mChildTabs = new Vector<Tab>();
+        }
+        mChildTabs.add(child);
+        child.setParentTab(this);
+    }
+
+    Vector<Tab> getChildTabs() {
+        return mChildTabs;
+    }
+
+    void resume() {
+        if (mMainView != null) {
+            mMainView.onResume();
+            if (mSubView != null) {
+                mSubView.onResume();
+            }
+        }
+    }
+
+    void pause() {
+        if (mMainView != null) {
+            mMainView.onPause();
+            if (mSubView != null) {
+                mSubView.onPause();
+            }
+        }
+    }
+
+    void putInForeground() {
+        mInForeground = true;
+        resume();
+        mMainView.setOnCreateContextMenuListener(mActivity);
+        if (mSubView != null) {
+            mSubView.setOnCreateContextMenuListener(mActivity);
+        }
+        // Show the pending error dialog if the queue is not empty
+        if (mQueuedErrors != null && mQueuedErrors.size() >  0) {
+            showError(mQueuedErrors.getFirst());
+        }
+    }
+
+    void putInBackground() {
+        mInForeground = false;
+        pause();
+        mMainView.setOnCreateContextMenuListener(null);
+        if (mSubView != null) {
+            mSubView.setOnCreateContextMenuListener(null);
+        }
+    }
+
+    /**
+     * Return the top window of this tab; either the subwindow if it is not
+     * null or the main window.
+     * @return The top window of this tab.
+     */
+    WebView getTopWindow() {
+        if (mSubView != null) {
+            return mSubView;
+        }
+        return mMainView;
+    }
+
+    /**
+     * Return the main window of this tab. Note: if a tab is freed in the
+     * background, this can return null. It is only guaranteed to be
+     * non-null for the current tab.
+     * @return The main WebView of this tab.
+     */
+    WebView getWebView() {
+        return mMainView;
+    }
+
+    /**
+     * Return the subwindow of this tab or null if there is no subwindow.
+     * @return The subwindow of this tab or null.
+     */
+    WebView getSubWebView() {
+        return mSubView;
+    }
+
+    /**
+     * @return The geolocation permissions prompt for this tab.
+     */
+    GeolocationPermissionsPrompt getGeolocationPermissionsPrompt() {
+        return mGeolocationPermissionsPrompt;
+    }
+
+    /**
+     * @return The application id string
+     */
+    String getAppId() {
+        return mAppId;
+    }
+
+    /**
+     * Set the application id string
+     * @param id
+     */
+    void setAppId(String id) {
+        mAppId = id;
+    }
+
+    /**
+     * @return The original url associated with this Tab
+     */
+    String getOriginalUrl() {
+        return mOriginalUrl;
+    }
+
+    /**
+     * Set the original url associated with this tab
+     */
+    void setOriginalUrl(String url) {
+        mOriginalUrl = url;
+    }
+
+    /**
+     * Get the url of this tab. Valid after calling populatePickerData, but
+     * before calling wipePickerData, or if the webview has been destroyed.
+     * @return The WebView's url or null.
+     */
+    String getUrl() {
+        if (mPickerData != null) {
+            return mPickerData.mUrl;
+        }
+        return null;
+    }
+
+    /**
+     * Get the title of this tab. Valid after calling populatePickerData, but
+     * before calling wipePickerData, or if the webview has been destroyed. If
+     * the url has no title, use the url instead.
+     * @return The WebView's title (or url) or null.
+     */
+    String getTitle() {
+        if (mPickerData != null) {
+            return mPickerData.mTitle;
+        }
+        return null;
+    }
+
+    /**
+     * Get the favicon of this tab. Valid after calling populatePickerData, but
+     * before calling wipePickerData, or if the webview has been destroyed.
+     * @return The WebView's favicon or null.
+     */
+    Bitmap getFavicon() {
+        if (mPickerData != null) {
+            return mPickerData.mFavicon;
+        }
+        return null;
+    }
+
+    /**
+     * Return the tab's error console. Creates the console if createIfNEcessary
+     * is true and we haven't already created the console.
+     * @param createIfNecessary Flag to indicate if the console should be
+     *            created if it has not been already.
+     * @return The tab's error console, or null if one has not been created and
+     *         createIfNecessary is false.
+     */
+    ErrorConsoleView getErrorConsole(boolean createIfNecessary) {
+        if (createIfNecessary && mErrorConsole == null) {
+            mErrorConsole = new ErrorConsoleView(mActivity);
+            mErrorConsole.setWebView(mMainView);
+        }
+        return mErrorConsole;
+    }
+
+    /**
+     * If this Tab was created through another Tab, then this method returns
+     * that Tab.
+     * @return the Tab parent or null
+     */
+    public Tab getParentTab() {
+        return mParentTab;
+    }
+
+    /**
+     * Return whether this tab should be closed when it is backing out of the
+     * first page.
+     * @return TRUE if this tab should be closed when exit.
+     */
+    boolean closeOnExit() {
+        return mCloseOnExit;
+    }
+
+    /**
+     * Saves the current lock-icon state before resetting the lock icon. If we
+     * have an error, we may need to roll back to the previous state.
+     */
+    void resetLockIcon(String url) {
+        mPrevLockIconType = mLockIconType;
+        mLockIconType = BrowserActivity.LOCK_ICON_UNSECURE;
+        if (URLUtil.isHttpsUrl(url)) {
+            mLockIconType = BrowserActivity.LOCK_ICON_SECURE;
+        }
+    }
+
+    /**
+     * Reverts the lock-icon state to the last saved state, for example, if we
+     * had an error, and need to cancel the load.
+     */
+    void revertLockIcon() {
+        mLockIconType = mPrevLockIconType;
+    }
+
+    /**
+     * @return The tab's lock icon type.
+     */
+    int getLockIconType() {
+        return mLockIconType;
+    }
+
+    /**
+     * @return TRUE if onPageStarted is called while onPageFinished is not
+     *         called yet.
+     */
+    boolean inLoad() {
+        return mInLoad;
+    }
+
+    // force mInLoad to be false. This should only be called before closing the
+    // tab to ensure BrowserActivity's pauseWebViewTimers() is called correctly.
+    void clearInLoad() {
+        mInLoad = false;
+    }
+
+    void populatePickerData() {
+        if (mMainView == null) {
+            populatePickerDataFromSavedState();
+            return;
+        }
+
+        // FIXME: The only place we cared about subwindow was for
+        // bookmarking (i.e. not when saving state). Was this deliberate?
+        final WebBackForwardList list = mMainView.copyBackForwardList();
+        final WebHistoryItem item = list != null ? list.getCurrentItem() : null;
+        populatePickerData(item);
+    }
+
+    // Populate the picker data using the given history item and the current top
+    // WebView.
+    private void populatePickerData(WebHistoryItem item) {
+        mPickerData = new PickerData();
+        if (item != null) {
+            mPickerData.mUrl = item.getUrl();
+            mPickerData.mTitle = item.getTitle();
+            mPickerData.mFavicon = item.getFavicon();
+            if (mPickerData.mTitle == null) {
+                mPickerData.mTitle = mPickerData.mUrl;
+            }
+        }
+    }
+
+    // Create the PickerData and populate it using the saved state of the tab.
+    void populatePickerDataFromSavedState() {
+        if (mSavedState == null) {
+            return;
+        }
+        mPickerData = new PickerData();
+        mPickerData.mUrl = mSavedState.getString(CURRURL);
+        mPickerData.mTitle = mSavedState.getString(CURRTITLE);
+    }
+
+    void clearPickerData() {
+        mPickerData = null;
+    }
+
+    /**
+     * Get the saved state bundle.
+     * @return
+     */
+    Bundle getSavedState() {
+        return mSavedState;
+    }
+
+    /**
+     * Set the saved state.
+     */
+    void setSavedState(Bundle state) {
+        mSavedState = state;
+    }
+
+    /**
+     * @return TRUE if succeed in saving the state.
+     */
+    boolean saveState() {
+        // If the WebView is null it means we ran low on memory and we already
+        // stored the saved state in mSavedState.
+        if (mMainView == null) {
+            return mSavedState != null;
+        }
+
+        mSavedState = new Bundle();
+        final WebBackForwardList list = mMainView.saveState(mSavedState);
+        if (list != null) {
+            final File f = new File(mActivity.getTabControl().getThumbnailDir(),
+                    mMainView.hashCode() + "_pic.save");
+            if (mMainView.savePicture(mSavedState, f)) {
+                mSavedState.putString(CURRPICTURE, f.getPath());
+            }
+        }
+
+        // Store some extra info for displaying the tab in the picker.
+        final WebHistoryItem item = list != null ? list.getCurrentItem() : null;
+        populatePickerData(item);
+
+        if (mPickerData.mUrl != null) {
+            mSavedState.putString(CURRURL, mPickerData.mUrl);
+        }
+        if (mPickerData.mTitle != null) {
+            mSavedState.putString(CURRTITLE, mPickerData.mTitle);
+        }
+        mSavedState.putBoolean(CLOSEONEXIT, mCloseOnExit);
+        if (mAppId != null) {
+            mSavedState.putString(APPID, mAppId);
+        }
+        if (mOriginalUrl != null) {
+            mSavedState.putString(ORIGINALURL, mOriginalUrl);
+        }
+        // Remember the parent tab so the relationship can be restored.
+        if (mParentTab != null) {
+            mSavedState.putInt(PARENTTAB, mActivity.getTabControl().getTabIndex(
+                    mParentTab));
+        }
+        return true;
+    }
+
+    /*
+     * Restore the state of the tab.
+     */
+    boolean restoreState(Bundle b) {
+        if (b == null) {
+            return false;
+        }
+        // Restore the internal state even if the WebView fails to restore.
+        // This will maintain the app id, original url and close-on-exit values.
+        mSavedState = null;
+        mPickerData = null;
+        mCloseOnExit = b.getBoolean(CLOSEONEXIT);
+        mAppId = b.getString(APPID);
+        mOriginalUrl = b.getString(ORIGINALURL);
+
+        final WebBackForwardList list = mMainView.restoreState(b);
+        if (list == null) {
+            return false;
+        }
+        if (b.containsKey(CURRPICTURE)) {
+            final File f = new File(b.getString(CURRPICTURE));
+            mMainView.restorePicture(b, f);
+            f.delete();
+        }
+        return true;
+    }
+}
diff --git a/src/com/android/browser/TabControl.java b/src/com/android/browser/TabControl.java
index 2f15a9c..8373182 100644
--- a/src/com/android/browser/TabControl.java
+++ b/src/com/android/browser/TabControl.java
@@ -16,33 +16,13 @@
 
 package com.android.browser;
 
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.Picture;
-import android.net.http.SslError;
 import android.os.Bundle;
-import android.os.Message;
 import android.util.Log;
-import android.view.Gravity;
-import android.view.LayoutInflater;
 import android.view.View;
-import android.view.ViewGroup;
-import android.view.View.OnClickListener;
-import android.webkit.HttpAuthHandler;
-import android.webkit.JsPromptResult;
-import android.webkit.JsResult;
-import android.webkit.SslErrorHandler;
 import android.webkit.WebBackForwardList;
-import android.webkit.WebChromeClient;
-import android.webkit.WebHistoryItem;
 import android.webkit.WebView;
-import android.webkit.WebViewClient;
-import android.widget.FrameLayout;
-import android.widget.ImageButton;
-import android.widget.LinearLayout;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.util.ArrayList;
 import java.util.Vector;
 
@@ -50,13 +30,7 @@
     // Log Tag
     private static final String LOGTAG = "TabControl";
     // Maximum number of tabs.
-    static final int MAX_TABS = 8;
-    // Static instance of an empty callback.
-    private static final WebViewClient mEmptyClient =
-            new WebViewClient();
-    // Instance of BackgroundChromeClient for background tabs.
-    private final BackgroundChromeClient mBackgroundChromeClient =
-            new BackgroundChromeClient();
+    private static final int MAX_TABS = 8;
     // Private array of WebViews that are used as tabs.
     private ArrayList<Tab> mTabs = new ArrayList<Tab>(MAX_TABS);
     // Queue of most recently viewed tabs.
@@ -66,393 +40,6 @@
     // A private instance of BrowserActivity to interface with when adding and
     // switching between tabs.
     private final BrowserActivity mActivity;
-    // Inflation service for making subwindows.
-    private final LayoutInflater mInflateService;
-    // Subclass of WebViewClient used in subwindows to notify the main
-    // WebViewClient of certain WebView activities.
-    private static class SubWindowClient extends WebViewClient {
-        // The main WebViewClient.
-        private final WebViewClient mClient;
-
-        SubWindowClient(WebViewClient client) {
-            mClient = client;
-        }
-        @Override
-        public void doUpdateVisitedHistory(WebView view, String url,
-                boolean isReload) {
-            mClient.doUpdateVisitedHistory(view, url, isReload);
-        }
-        @Override
-        public boolean shouldOverrideUrlLoading(WebView view, String url) {
-            return mClient.shouldOverrideUrlLoading(view, url);
-        }
-        @Override
-        public void onReceivedSslError(WebView view, SslErrorHandler handler,
-                SslError error) {
-            mClient.onReceivedSslError(view, handler, error);
-        }
-        @Override
-        public void onReceivedHttpAuthRequest(WebView view,
-                HttpAuthHandler handler, String host, String realm) {
-            mClient.onReceivedHttpAuthRequest(view, handler, host, realm);
-        }
-        @Override
-        public void onFormResubmission(WebView view, Message dontResend,
-                Message resend) {
-            mClient.onFormResubmission(view, dontResend, resend);
-        }
-        @Override
-        public void onReceivedError(WebView view, int errorCode,
-                String description, String failingUrl) {
-            mClient.onReceivedError(view, errorCode, description, failingUrl);
-        }
-        @Override
-        public boolean shouldOverrideKeyEvent(WebView view,
-                android.view.KeyEvent event) {
-            return mClient.shouldOverrideKeyEvent(view, event);
-        }
-        @Override
-        public void onUnhandledKeyEvent(WebView view,
-                android.view.KeyEvent event) {
-            mClient.onUnhandledKeyEvent(view, event);
-        }
-    }
-    // Subclass of WebChromeClient to display javascript dialogs.
-    private class SubWindowChromeClient extends WebChromeClient {
-        // This subwindow's tab.
-        private final Tab mTab;
-        // The main WebChromeClient.
-        private final WebChromeClient mClient;
-
-        SubWindowChromeClient(Tab t, WebChromeClient client) {
-            mTab = t;
-            mClient = client;
-        }
-        @Override
-        public void onProgressChanged(WebView view, int newProgress) {
-            mClient.onProgressChanged(view, newProgress);
-        }
-        @Override
-        public boolean onCreateWindow(WebView view, boolean dialog,
-                boolean userGesture, android.os.Message resultMsg) {
-            return mClient.onCreateWindow(view, dialog, userGesture, resultMsg);
-        }
-        @Override
-        public void onCloseWindow(WebView window) {
-            if (Browser.DEBUG && window != mTab.mSubView) {
-                throw new AssertionError("Can't close the window");
-            }
-            mActivity.dismissSubWindow(mTab);
-        }
-    }
-    // Background WebChromeClient for focusing tabs
-    private class BackgroundChromeClient extends WebChromeClient {
-        @Override
-        public void onRequestFocus(WebView view) {
-            Tab t = getTabFromView(view);
-            if (t != getCurrentTab()) {
-                mActivity.switchToTab(getTabIndex(t));
-            }
-        }
-    }
-
-    // Extra saved information for displaying the tab in the picker.
-    public static class PickerData {
-        String  mUrl;
-        String  mTitle;
-        Bitmap  mFavicon;
-        float   mScale;
-        int     mScrollX;
-        int     mScrollY;
-    }
-
-    /**
-     * Private class for maintaining Tabs with a main WebView and a subwindow.
-     */
-    public class Tab {
-        // The Geolocation permissions prompt
-        private GeolocationPermissionsPrompt mGeolocationPermissionsPrompt;
-        private View mContainer;
-        // Main WebView
-        private WebView mMainView;
-        // Subwindow WebView
-        private WebView mSubView;
-        // Subwindow container
-        private View mSubViewContainer;
-        // Subwindow callback
-        private SubWindowClient mSubViewClient;
-        // Subwindow chrome callback
-        private SubWindowChromeClient mSubViewChromeClient;
-        // Saved bundle for when we are running low on memory. It contains the
-        // information needed to restore the WebView if the user goes back to
-        // the tab.
-        private Bundle mSavedState;
-        // Data used when displaying the tab in the picker.
-        private PickerData mPickerData;
-
-        // Parent Tab. This is the Tab that created this Tab, or null
-        // if the Tab was created by the UI
-        private Tab mParentTab;
-        // Tab that constructed by this Tab. This is used when this
-        // Tab is destroyed, it clears all mParentTab values in the 
-        // children.
-        private Vector<Tab> mChildTabs;
-
-        private Boolean mCloseOnExit;
-        // Application identifier used to find tabs that another application
-        // wants to reuse.
-        private String mAppId;
-        // Keep the original url around to avoid killing the old WebView if the
-        // url has not changed.
-        private String mOriginalUrl;
-
-        private ErrorConsoleView mErrorConsole;
-        // the lock icon type and previous lock icon type for the tab
-        private int mSavedLockIconType;
-        private int mSavedPrevLockIconType;
-
-        // Construct a new tab
-        private Tab(WebView w, boolean closeOnExit, String appId, String url, Context context) {
-            mCloseOnExit = closeOnExit;
-            mAppId = appId;
-            mOriginalUrl = url;
-            mSavedLockIconType = BrowserActivity.LOCK_ICON_UNSECURE;
-            mSavedPrevLockIconType = BrowserActivity.LOCK_ICON_UNSECURE;
-
-            // The tab consists of a container view, which contains the main
-            // WebView, as well as any other UI elements associated with the tab.
-            LayoutInflater factory = LayoutInflater.from(context);
-            mContainer = factory.inflate(R.layout.tab, null);
-
-            mGeolocationPermissionsPrompt =
-                (GeolocationPermissionsPrompt) mContainer.findViewById(
-                    R.id.geolocation_permissions_prompt);
-
-            setWebView(w);
-        }
-
-        /**
-         * Sets the WebView for this tab, correctly removing the old WebView
-         * from the container view.
-         */
-        public void setWebView(WebView w) {
-            if (mMainView == w) {
-                return;
-            }
-            // If the WebView is changing, the page will be reloaded, so any ongoing Geolocation
-            // permission requests are void.
-            mGeolocationPermissionsPrompt.hide();
-
-            // Just remove the old one.
-            FrameLayout wrapper =
-                    (FrameLayout) mContainer.findViewById(R.id.webview_wrapper);
-            wrapper.removeView(mMainView);
-            mMainView = w;
-        }
-
-        /**
-         * This method attaches both the WebView and any sub window to the
-         * given content view.
-         */
-        public void attachTabToContentView(ViewGroup content) {
-            if (mMainView == null) {
-                return;
-            }
-
-            // Attach the WebView to the container and then attach the
-            // container to the content view.
-            FrameLayout wrapper =
-                    (FrameLayout) mContainer.findViewById(R.id.webview_wrapper);
-            wrapper.addView(mMainView);
-            content.addView(mContainer, BrowserActivity.COVER_SCREEN_PARAMS);
-            attachSubWindow(content);
-        }
-
-        /**
-         * Remove the WebView and any sub window from the given content view.
-         */
-        public void removeTabFromContentView(ViewGroup content) {
-            if (mMainView == null) {
-                return;
-            }
-
-            // Remove the container from the content and then remove the
-            // WebView from the container. This will trigger a focus change
-            // needed by WebView.
-            FrameLayout wrapper =
-                    (FrameLayout) mContainer.findViewById(R.id.webview_wrapper);
-            wrapper.removeView(mMainView);
-            content.removeView(mContainer);
-            removeSubWindow(content);
-        }
-
-        /**
-         * Attach the sub window to the content view.
-         */
-        public void attachSubWindow(ViewGroup content) {
-            if (mSubView != null) {
-                content.addView(mSubViewContainer,
-                        BrowserActivity.COVER_SCREEN_PARAMS);
-            }
-        }
-
-        /**
-         * Remove the sub window from the content view.
-         */
-        public void removeSubWindow(ViewGroup content) {
-            if (mSubView != null) {
-                content.removeView(mSubViewContainer);
-            }
-        }
-
-        /**
-         * Return the top window of this tab; either the subwindow if it is not
-         * null or the main window.
-         * @return The top window of this tab.
-         */
-        public WebView getTopWindow() {
-            if (mSubView != null) {
-                return mSubView;
-            }
-            return mMainView;
-        }
-
-        /**
-         * Return the main window of this tab. Note: if a tab is freed in the
-         * background, this can return null. It is only guaranteed to be 
-         * non-null for the current tab.
-         * @return The main WebView of this tab.
-         */
-        public WebView getWebView() {
-            return mMainView;
-        }
-
-        /**
-         * @return The geolocation permissions prompt for this tab.
-         */
-        public GeolocationPermissionsPrompt getGeolocationPermissionsPrompt() {
-            return mGeolocationPermissionsPrompt;
-        }
-
-        /**
-         * Return the subwindow of this tab or null if there is no subwindow.
-         * @return The subwindow of this tab or null.
-         */
-        public WebView getSubWebView() {
-            return mSubView;
-        }
-
-        /**
-         * Get the url of this tab.  Valid after calling populatePickerData, but
-         * before calling wipePickerData, or if the webview has been destroyed.
-         * 
-         * @return The WebView's url or null.
-         */
-        public String getUrl() {
-            if (mPickerData != null) {
-                return mPickerData.mUrl;
-            }
-            return null;
-        }
-
-        /**
-         * Get the title of this tab.  Valid after calling populatePickerData, 
-         * but before calling wipePickerData, or if the webview has been 
-         * destroyed.  If the url has no title, use the url instead.
-         * 
-         * @return The WebView's title (or url) or null.
-         */
-        public String getTitle() {
-            if (mPickerData != null) {
-                return mPickerData.mTitle;
-            }
-            return null;
-        }
-
-        public Bitmap getFavicon() {
-            if (mPickerData != null) {
-                return mPickerData.mFavicon;
-            }
-            return null;
-        }
-
-        private void setParentTab(Tab parent) {
-            mParentTab = parent;
-            // This tab may have been freed due to low memory. If that is the
-            // case, the parent tab index is already saved. If we are changing
-            // that index (most likely due to removing the parent tab) we must
-            // update the parent tab index in the saved Bundle.
-            if (mSavedState != null) {
-                if (parent == null) {
-                    mSavedState.remove(PARENTTAB);
-                } else {
-                    mSavedState.putInt(PARENTTAB, getTabIndex(parent));
-                }
-            }
-        }
-        
-        /**
-         * When a Tab is created through the content of another Tab, then 
-         * we associate the Tabs. 
-         * @param child the Tab that was created from this Tab
-         */
-        public void addChildTab(Tab child) {
-            if (mChildTabs == null) {
-                mChildTabs = new Vector<Tab>();
-            }
-            mChildTabs.add(child);
-            child.setParentTab(this);
-        }
-        
-        private void removeFromTree() {
-            // detach the children
-            if (mChildTabs != null) {
-                for(Tab t : mChildTabs) {
-                    t.setParentTab(null);
-                }
-            }
-            
-            // Find myself in my parent list
-            if (mParentTab != null) {
-                mParentTab.mChildTabs.remove(this);
-            }
-        }
-        
-        /**
-         * If this Tab was created through another Tab, then this method
-         * returns that Tab.
-         * @return the Tab parent or null
-         */
-        public Tab getParentTab() {
-            return mParentTab;
-        }
-
-        /**
-         * Return whether this tab should be closed when it is backing out of
-         * the first page.
-         * @return TRUE if this tab should be closed when exit.
-         */
-        public boolean closeOnExit() {
-            return mCloseOnExit;
-        }
-
-        void setLockIconType(int type) {
-            mSavedLockIconType = type;
-        }
-
-        int getLockIconType() {
-            return mSavedLockIconType;
-        }
-
-        void setPrevLockIconType(int type) {
-            mSavedPrevLockIconType = type;
-        }
-
-        int getPrevLockIconType() {
-            return mSavedPrevLockIconType;
-        }
-    };
-
     // Directory to store thumbnails for each WebView.
     private final File mThumbnailDir;
 
@@ -464,9 +51,6 @@
      */
     TabControl(BrowserActivity activity) {
         mActivity = activity;
-        mInflateService =
-                ((LayoutInflater) activity.getSystemService(
-                        Context.LAYOUT_INFLATER_SERVICE));
         mThumbnailDir = activity.getDir("thumbnails", 0);
     }
 
@@ -488,29 +72,7 @@
         if (t == null) {
             return null;
         }
-        return t.mMainView;
-    }
-
-    /**
-     * Return the current tab's error console. Creates the console if createIfNEcessary
-     * is true and we haven't already created the console.
-     * @param createIfNecessary Flag to indicate if the console should be created if it has
-     *                          not been already.
-     * @return The current tab's error console, or null if one has not been created and
-     *         createIfNecessary is false.
-     */
-    ErrorConsoleView getCurrentErrorConsole(boolean createIfNecessary) {
-        Tab t = getTab(mCurrentTab);
-        if (t == null) {
-            return null;
-        }
-
-        if (createIfNecessary && t.mErrorConsole == null) {
-            t.mErrorConsole = new ErrorConsoleView(mActivity);
-            t.mErrorConsole.setWebView(t.mMainView);
-        }
-
-        return t.mErrorConsole;
+        return t.getWebView();
     }
 
     /**
@@ -523,7 +85,7 @@
         if (t == null) {
             return null;
         }
-        return t.mSubView != null ? t.mSubView : t.mMainView;
+        return t.getTopWindow();
     }
 
     /**
@@ -535,7 +97,7 @@
         if (t == null) {
             return null;
         }
-        return t.mSubView;
+        return t.getSubWebView();
     }
 
     /**
@@ -578,6 +140,10 @@
         return mTabs.indexOf(tab);
     }
 
+    boolean canCreateNewTab() {
+        return MAX_TABS != mTabs.size();
+    }
+
     /**
      * Create a new tab.
      * @return The newly createTab or null if we have reached the maximum
@@ -592,10 +158,10 @@
         final WebView w = createNewWebView();
 
         // Create a new tab and add it to the tab list
-        Tab t = new Tab(w, closeOnExit, appId, url, mActivity);
+        Tab t = new Tab(mActivity, w, closeOnExit, appId, url);
         mTabs.add(t);
         // Initially put the tab in the background.
-        putTabInBackground(t);
+        t.putInBackground();
         return t;
     }
 
@@ -616,86 +182,51 @@
         if (t == null) {
             return false;
         }
+
         // Only remove the tab if it is the current one.
         if (getCurrentTab() == t) {
-            putTabInBackground(t);
+            t.putInBackground();
+            mCurrentTab = -1;
         }
 
-        // Only destroy the WebView if it still exists.
-        if (t.mMainView != null) {
-            // Take down the sub window.
-            dismissSubWindow(t);
-            // Remove the WebView's settings from the BrowserSettings list of
-            // observers.
-            BrowserSettings.getInstance().deleteObserver(
-                    t.mMainView.getSettings());
-            WebView w = t.mMainView;
-            t.setWebView(null);
-            // Destroy the main view
-            w.destroy();
-        }
+        // destroy the tab
+        t.destroy();
         // clear it's references to parent and children
         t.removeFromTree();
-        
         // Remove it from our list of tabs.
         mTabs.remove(t);
 
         // The tab indices have shifted, update all the saved state so we point
         // to the correct index.
         for (Tab tab : mTabs) {
-            if (tab.mChildTabs != null) {
-                for (Tab child : tab.mChildTabs) {
+            Vector<Tab> children = tab.getChildTabs();
+            if (children != null) {
+                for (Tab child : children) {
                     child.setParentTab(tab);
                 }
             }
         }
 
-
         // This tab may have been pushed in to the background and then closed.
         // If the saved state contains a picture file, delete the file.
-        if (t.mSavedState != null) {
-            if (t.mSavedState.containsKey(CURRPICTURE)) {
-                new File(t.mSavedState.getString(CURRPICTURE)).delete();
+        Bundle savedState = t.getSavedState();
+        if (savedState != null) {
+            if (savedState.containsKey(Tab.CURRPICTURE)) {
+                new File(savedState.getString(Tab.CURRPICTURE)).delete();
             }
         }
 
         // Remove it from the queue of viewed tabs.
         mTabQueue.remove(t);
-        mCurrentTab = -1;
         return true;
     }
 
     /**
-     * Clear the back/forward list for all the current tabs.
-     */
-    void clearHistory() {
-        int size = getTabCount();
-        for (int i = 0; i < size; i++) {
-            Tab t = mTabs.get(i);
-            // TODO: if a tab is freed due to low memory, its history is not
-            // cleared here.
-            if (t.mMainView != null) {
-                t.mMainView.clearHistory();
-            }
-            if (t.mSubView != null) {
-                t.mSubView.clearHistory();
-            }
-        }
-    }
-
-    /**
      * Destroy all the tabs and subwindows
      */
     void destroy() {
-        BrowserSettings s = BrowserSettings.getInstance();
         for (Tab t : mTabs) {
-            if (t.mMainView != null) {
-                dismissSubWindow(t);
-                s.deleteObserver(t.mMainView.getSettings());
-                WebView w = t.mMainView;
-                t.setWebView(null);
-                w.destroy();
-            }
+            t.destroy();
         }
         mTabs.clear();
         mTabQueue.clear();
@@ -709,17 +240,6 @@
         return mTabs.size();
     }
 
-    // Used for saving and restoring each Tab
-    private static final String WEBVIEW = "webview";
-    private static final String NUMTABS = "numTabs";
-    private static final String CURRTAB = "currentTab";
-    private static final String CURRURL = "currentUrl";
-    private static final String CURRTITLE = "currentTitle";
-    private static final String CURRPICTURE = "currentPicture";
-    private static final String CLOSEONEXIT = "closeonexit";
-    private static final String PARENTTAB = "parentTab";
-    private static final String APPID = "appid";
-    private static final String ORIGINALURL = "originalUrl";
 
     /**
      * Save the state of all the Tabs.
@@ -727,13 +247,13 @@
      */
     void saveState(Bundle outState) {
         final int numTabs = getTabCount();
-        outState.putInt(NUMTABS, numTabs);
+        outState.putInt(Tab.NUMTABS, numTabs);
         final int index = getCurrentIndex();
-        outState.putInt(CURRTAB, (index >= 0 && index < numTabs) ? index : 0);
+        outState.putInt(Tab.CURRTAB, (index >= 0 && index < numTabs) ? index : 0);
         for (int i = 0; i < numTabs; i++) {
             final Tab t = getTab(i);
-            if (saveState(t)) {
-                outState.putBundle(WEBVIEW + i, t.mSavedState);
+            if (t.saveState()) {
+                outState.putBundle(Tab.WEBVIEW + i, t.getSavedState());
             }
         }
     }
@@ -746,33 +266,34 @@
      */
     boolean restoreState(Bundle inState) {
         final int numTabs = (inState == null)
-                ? -1 : inState.getInt(NUMTABS, -1);
+                ? -1 : inState.getInt(Tab.NUMTABS, -1);
         if (numTabs == -1) {
             return false;
         } else {
-            final int currentTab = inState.getInt(CURRTAB, -1);
+            final int currentTab = inState.getInt(Tab.CURRTAB, -1);
             for (int i = 0; i < numTabs; i++) {
                 if (i == currentTab) {
                     Tab t = createNewTab();
                     // Me must set the current tab before restoring the state
                     // so that all the client classes are set.
                     setCurrentTab(t);
-                    if (!restoreState(inState.getBundle(WEBVIEW + i), t)) {
+                    if (!t.restoreState(inState.getBundle(Tab.WEBVIEW + i))) {
                         Log.w(LOGTAG, "Fail in restoreState, load home page.");
-                        t.mMainView.loadUrl(BrowserSettings.getInstance()
+                        t.getWebView().loadUrl(BrowserSettings.getInstance()
                                 .getHomePage());
                     }
                 } else {
                     // Create a new tab and don't restore the state yet, add it
                     // to the tab list
-                    Tab t = new Tab(null, false, null, null, mActivity);
-                    t.mSavedState = inState.getBundle(WEBVIEW + i);
-                    if (t.mSavedState != null) {
-                        populatePickerDataFromSavedState(t);
+                    Tab t = new Tab(mActivity, null, false, null, null);
+                    Bundle state = inState.getBundle(Tab.WEBVIEW + i);
+                    if (state != null) {
+                        t.setSavedState(state);
+                        t.populatePickerDataFromSavedState();
                         // Need to maintain the app id and original url so we
                         // can possibly reuse this tab.
-                        t.mAppId = t.mSavedState.getString(APPID);
-                        t.mOriginalUrl = t.mSavedState.getString(ORIGINALURL);
+                        t.setAppId(state.getString(Tab.APPID));
+                        t.setOriginalUrl(state.getString(Tab.ORIGINALURL));
                     }
                     mTabs.add(t);
                     mTabQueue.add(t);
@@ -781,10 +302,10 @@
             // Rebuild the tree of tabs. Do this after all tabs have been
             // created/restored so that the parent tab exists.
             for (int i = 0; i < numTabs; i++) {
-                final Bundle b = inState.getBundle(WEBVIEW + i);
+                final Bundle b = inState.getBundle(Tab.WEBVIEW + i);
                 final Tab t = getTab(i);
                 if (b != null && t != null) {
-                    final int parentIndex = b.getInt(PARENTTAB, -1);
+                    final int parentIndex = b.getInt(Tab.PARENTTAB, -1);
                     if (parentIndex != -1) {
                         final Tab parent = getTab(parentIndex);
                         if (parent != null) {
@@ -808,9 +329,10 @@
         Tab t = getLeastUsedTab(getCurrentTab());
         if (t != null) {
             Log.w(LOGTAG, "Free a tab in the browser");
-            freeTab(t);
-            // force a gc
-            System.gc();
+            // store the WebView's state.
+            t.saveState();
+            // destroy the tab
+            t.destroy();
             return;
         }
 
@@ -820,8 +342,6 @@
         if (view != null) {
             view.freeMemory();
         }
-        // force a gc
-        System.gc();
     }
 
     private Tab getLeastUsedTab(Tab current) {
@@ -831,7 +351,7 @@
             return null;
         }
 
-        // Rip through the queue starting at the beginning and teardown the
+        // Rip through the queue starting at the beginning and tear down the
         // next available tab.
         Tab t = null;
         int i = 0;
@@ -842,69 +362,18 @@
         do {
             t = mTabQueue.get(i++);
         } while (i < queueSize
-                && ((t != null && t.mMainView == null)
-                    || t == current.mParentTab));
+                && ((t != null && t.getWebView() == null)
+                    || t == current.getParentTab()));
 
         // Don't do anything if the last remaining tab is the current one or if
         // the last tab has been freed already.
-        if (t == current || t.mMainView == null) {
+        if (t == current || t.getWebView() == null) {
             return null;
         }
 
         return t;
     }
 
-    private void freeTab(Tab t) {
-        // Store the WebView's state.
-        saveState(t);
-
-        // Tear down the tab.
-        dismissSubWindow(t);
-        // Remove the WebView's settings from the BrowserSettings list of
-        // observers.
-        BrowserSettings.getInstance().deleteObserver(t.mMainView.getSettings());
-        WebView w = t.mMainView;
-        t.setWebView(null);
-        w.destroy();
-    }
-
-    /**
-     * Create a new subwindow unless a subwindow already exists.
-     * @return True if a new subwindow was created. False if one already exists.
-     */
-    void createSubWindow() {
-        Tab t = getTab(mCurrentTab);
-        if (t != null && t.mSubView == null) {
-            final View v = mInflateService.inflate(R.layout.browser_subwindow, null);
-            final WebView w = (WebView) v.findViewById(R.id.webview);
-            w.setMapTrackballToArrowKeys(false); // use trackball directly
-            final SubWindowClient subClient =
-                    new SubWindowClient(mActivity.getWebViewClient());
-            final SubWindowChromeClient subChromeClient =
-                    new SubWindowChromeClient(t,
-                            mActivity.getWebChromeClient());
-            w.setWebViewClient(subClient);
-            w.setWebChromeClient(subChromeClient);
-            w.setDownloadListener(mActivity);
-            w.setOnCreateContextMenuListener(mActivity);
-            final BrowserSettings s = BrowserSettings.getInstance();
-            s.addObserver(w.getSettings()).update(s, null);
-            t.mSubView = w;
-            t.mSubViewClient = subClient;
-            t.mSubViewChromeClient = subChromeClient;
-            // FIXME: I really hate having to know the name of the view
-            // containing the webview.
-            t.mSubViewContainer = v.findViewById(R.id.subwindow_container);
-            final ImageButton cancel =
-                    (ImageButton) v.findViewById(R.id.subwindow_close);
-            cancel.setOnClickListener(new OnClickListener() {
-                    public void onClick(View v) {
-                        subChromeClient.onCloseWindow(w);
-                    }
-                });
-        }
-    }
-
     /**
      * Show the tab that contains the given WebView.
      * @param view The WebView used to find the tab.
@@ -913,7 +382,7 @@
         final int size = getTabCount();
         for (int i = 0; i < size; i++) {
             final Tab t = getTab(i);
-            if (t.mSubView == view || t.mMainView == view) {
+            if (t.getSubWebView() == view || t.getWebView() == view) {
                 return t;
             }
         }
@@ -931,22 +400,42 @@
         final int size = getTabCount();
         for (int i = 0; i < size; i++) {
             final Tab t = getTab(i);
-            if (id.equals(t.mAppId)) {
+            if (id.equals(t.getAppId())) {
                 return t;
             }
         }
         return null;
     }
 
+    /**
+     * Stop loading in all opened WebView including subWindows.
+     */
+    void stopAllLoading() {
+        final int size = getTabCount();
+        for (int i = 0; i < size; i++) {
+            final Tab t = getTab(i);
+            final WebView webview = t.getWebView();
+            if (webview != null) {
+                webview.stopLoading();
+            }
+            final WebView subview = t.getSubWebView();
+            if (subview != null) {
+                webview.stopLoading();
+            }
+        }
+    }
+
     // This method checks if a non-app tab (one created within the browser)
     // matches the given url.
     private boolean tabMatchesUrl(Tab t, String url) {
-        if (t.mAppId != null) {
+        if (t.getAppId() != null) {
             return false;
-        } else if (t.mMainView == null) {
+        }
+        WebView webview = t.getWebView();
+        if (webview == null) {
             return false;
-        } else if (url.equals(t.mMainView.getUrl()) ||
-                url.equals(t.mMainView.getOriginalUrl())) {
+        } else if (url.equals(webview.getUrl())
+                || url.equals(webview.getOriginalUrl())) {
             return true;
         }
         return false;
@@ -982,9 +471,9 @@
      * was deleted.
      */
     boolean recreateWebView(Tab t, String url) {
-        final WebView w = t.mMainView;
+        final WebView w = t.getWebView();
         if (w != null) {
-            if (url != null && url.equals(t.mOriginalUrl)) {
+            if (url != null && url.equals(t.getOriginalUrl())) {
                 // The original url matches the current url. Just go back to the
                 // first history item so we can load it faster than if we
                 // rebuilt the WebView.
@@ -995,11 +484,7 @@
                     return false;
                 }
             }
-            // Remove the settings object from the global settings and destroy
-            // the WebView.
-            BrowserSettings.getInstance().deleteObserver(
-                    t.mMainView.getSettings());
-            t.mMainView.destroy();
+            t.destroy();
         }
         // Create a new WebView. If this tab is the current tab, we need to put
         // back all the clients so force it to be the current tab.
@@ -1007,12 +492,11 @@
         if (getCurrentTab() == t) {
             setCurrentTab(t, true);
         }
-        // Clear the saved state except for the app id and close-on-exit
-        // values.
-        t.mSavedState = null;
-        t.mPickerData = null;
+        // Clear the saved state and picker data
+        t.setSavedState(null);
+        t.clearPickerData();
         // Save the new url in order to avoid deleting the WebView.
-        t.mOriginalUrl = url;
+        t.setOriginalUrl(url);
         return true;
     }
 
@@ -1027,6 +511,11 @@
         w.setMapTrackballToArrowKeys(false); // use trackball directly
         // Enable the built-in zoom
         w.getSettings().setBuiltInZoomControls(true);
+        // Attach DownloadManager so that downloads can start in an active or
+        // a non-active window. This can happen when going to a site that does
+        // a redirect after a period of time. The user could have switched to
+        // another tab while waiting for the download to start.
+        w.setDownloadListener(mActivity);
         // Add this WebView to the settings observer list and update the
         // settings
         final BrowserSettings s = BrowserSettings.getInstance();
@@ -1043,48 +532,20 @@
         return setCurrentTab(newTab, false);
     }
 
-    /*package*/ void pauseCurrentTab() {
+    void pauseCurrentTab() {
         Tab t = getCurrentTab();
         if (t != null) {
-            t.mMainView.onPause();
-            if (t.mSubView != null) {
-                t.mSubView.onPause();
-            }
+            t.pause();
         }
     }
 
-    /*package*/ void resumeCurrentTab() {
+    void resumeCurrentTab() {
         Tab t = getCurrentTab();
         if (t != null) {
-            t.mMainView.onResume();
-            if (t.mSubView != null) {
-                t.mSubView.onResume();
-            }
+            t.resume();
         }
     }
 
-    private void putViewInForeground(WebView v, WebViewClient vc,
-                                     WebChromeClient cc) {
-        v.setWebViewClient(vc);
-        v.setWebChromeClient(cc);
-        v.setOnCreateContextMenuListener(mActivity);
-        v.setDownloadListener(mActivity);
-        v.onResume();
-    }
-
-    private void putViewInBackground(WebView v) {
-        // Set an empty callback so that default actions are not triggered.
-        v.setWebViewClient(mEmptyClient);
-        v.setWebChromeClient(mBackgroundChromeClient);
-        v.setOnCreateContextMenuListener(null);
-        // Leave the DownloadManager attached so that downloads can start in
-        // a non-active window. This can happen when going to a site that does
-        // a redirect after a period of time. The user could have switched to
-        // another tab while waiting for the download to start.
-        v.setDownloadListener(mActivity);
-        v.onPause();
-    }
-
     /**
      * If force is true, this method skips the check for newTab == current.
      */
@@ -1094,10 +555,9 @@
             return true;
         }
         if (current != null) {
-            // Remove the current WebView and the container of the subwindow
-            putTabInBackground(current);
+            current.putInBackground();
+            mCurrentTab = -1;
         }
-
         if (newTab == null) {
             return false;
         }
@@ -1109,214 +569,22 @@
         }
         mTabQueue.add(newTab);
 
-        WebView mainView;
-
         // Display the new current tab
         mCurrentTab = mTabs.indexOf(newTab);
-        mainView = newTab.mMainView;
+        WebView mainView = newTab.getWebView();
         boolean needRestore = (mainView == null);
         if (needRestore) {
             // Same work as in createNewTab() except don't do new Tab()
             mainView = createNewWebView();
             newTab.setWebView(mainView);
         }
-        putViewInForeground(mainView, mActivity.getWebViewClient(),
-                            mActivity.getWebChromeClient());
-        // Add the subwindow if it exists
-        if (newTab.mSubViewContainer != null) {
-            putViewInForeground(newTab.mSubView, newTab.mSubViewClient,
-                                newTab.mSubViewChromeClient);
-        }
+        newTab.putInForeground();
         if (needRestore) {
             // Have to finish setCurrentTab work before calling restoreState
-            if (!restoreState(newTab.mSavedState, newTab)) {
+            if (!newTab.restoreState(newTab.getSavedState())) {
                 mainView.loadUrl(BrowserSettings.getInstance().getHomePage());
             }
         }
         return true;
     }
-
-    /*
-     * Put the tab in the background using all the empty/background clients.
-     */
-    private void putTabInBackground(Tab t) {
-        putViewInBackground(t.mMainView);
-        if (t.mSubView != null) {
-            putViewInBackground(t.mSubView);
-        }
-    }
-
-    /*
-     * Dismiss the subwindow for the given tab.
-     */
-    void dismissSubWindow(Tab t) {
-        if (t != null && t.mSubView != null) {
-            BrowserSettings.getInstance().deleteObserver(
-                    t.mSubView.getSettings());
-            t.mSubView.destroy();
-            t.mSubView = null;
-            t.mSubViewContainer = null;
-        }
-    }
-
-    /**
-     * Ensure that Tab t has data to display in the tab picker.
-     * @param  t   Tab to populate.
-     */
-    /* package */ void populatePickerData(Tab t) {
-        if (t == null) {
-            return;
-        }
-
-        // mMainView == null indicates that the tab has been freed.
-        if (t.mMainView == null) {
-            populatePickerDataFromSavedState(t);
-            return;
-        }
-
-        // FIXME: The only place we cared about subwindow was for 
-        // bookmarking (i.e. not when saving state). Was this deliberate?
-        final WebBackForwardList list = t.mMainView.copyBackForwardList();
-        final WebHistoryItem item =
-                list != null ? list.getCurrentItem() : null;
-        populatePickerData(t, item);
-    }
-
-    // Create the PickerData and populate it using the saved state of the tab.
-    private void populatePickerDataFromSavedState(Tab t) {
-        if (t.mSavedState == null) {
-            return;
-        }
-
-        final PickerData data = new PickerData();
-        final Bundle state = t.mSavedState;
-        data.mUrl = state.getString(CURRURL);
-        data.mTitle = state.getString(CURRTITLE);
-        // XXX: These keys are from WebView.savePicture so if they change, this
-        // will break.
-        data.mScale = state.getFloat("scale", 1.0f);
-        data.mScrollX = state.getInt("scrollX", 0);
-        data.mScrollY = state.getInt("scrollY", 0);
-
-        // Set the tab's picker data.
-        t.mPickerData = data;
-    }
-
-    // Populate the picker data using the given history item and the current
-    // top WebView.
-    private void populatePickerData(Tab t, WebHistoryItem item) {
-        final PickerData data = new PickerData();
-        if (item != null) {
-            data.mUrl = item.getUrl();
-            data.mTitle = item.getTitle();
-            data.mFavicon = item.getFavicon();
-            if (data.mTitle == null) {
-                data.mTitle = data.mUrl;
-            }
-        }
-        // We want to display the top window in the tab picker but use the url
-        // and title of the main window.
-        final WebView w = t.getTopWindow();
-        data.mScale = w.getScale();
-        data.mScrollX = w.getScrollX();
-        data.mScrollY = w.getScrollY();
-
-        t.mPickerData = data;
-    }
-    
-    /**
-     * Clean up the data for all tabs.
-     */
-    /* package */ void wipeAllPickerData() {
-        int size = getTabCount();
-        for (int i = 0; i < size; i++) {
-            final Tab t = getTab(i);
-            if (t != null && t.mSavedState == null) {
-                t.mPickerData = null;
-            }
-        }
-    }
-
-    /*
-     * Save the state for an individual tab.
-     */
-    private boolean saveState(Tab t) {
-        if (t != null) {
-            final WebView w = t.mMainView;
-            // If the WebView is null it means we ran low on memory and we
-            // already stored the saved state in mSavedState.
-            if (w == null) {
-                return true;
-            }
-            final Bundle b = new Bundle();
-            final WebBackForwardList list = w.saveState(b);
-            if (list != null) {
-                final File f = new File(mThumbnailDir, w.hashCode()
-                        + "_pic.save");
-                if (w.savePicture(b, f)) {
-                    b.putString(CURRPICTURE, f.getPath());
-                }
-            }
-
-            // Store some extra info for displaying the tab in the picker.
-            final WebHistoryItem item =
-                    list != null ? list.getCurrentItem() : null;
-            populatePickerData(t, item);
-
-            // XXX: WebView.savePicture stores the scale and scroll positions
-            // in the bundle so we don't have to do it here.
-            final PickerData data = t.mPickerData;
-            if (data.mUrl != null) {
-                b.putString(CURRURL, data.mUrl);
-            }
-            if (data.mTitle != null) {
-                b.putString(CURRTITLE, data.mTitle);
-            }
-            b.putBoolean(CLOSEONEXIT, t.mCloseOnExit);
-            if (t.mAppId != null) {
-                b.putString(APPID, t.mAppId);
-            }
-            if (t.mOriginalUrl != null) {
-                b.putString(ORIGINALURL, t.mOriginalUrl);
-            }
-
-            // Remember the parent tab so the relationship can be restored.
-            if (t.mParentTab != null) {
-                b.putInt(PARENTTAB, getTabIndex(t.mParentTab));
-            }
-
-            // Remember the saved state.
-            t.mSavedState = b;
-            return true;
-        }
-        return false;
-    }
-
-    /*
-     * Restore the state of the tab.
-     */
-    private boolean restoreState(Bundle b, Tab t) {
-        if (b == null) {
-            return false;
-        }
-        // Restore the internal state even if the WebView fails to restore.
-        // This will maintain the app id, original url and close-on-exit values.
-        t.mSavedState = null;
-        t.mPickerData = null;
-        t.mCloseOnExit = b.getBoolean(CLOSEONEXIT);
-        t.mAppId = b.getString(APPID);
-        t.mOriginalUrl = b.getString(ORIGINALURL);
-
-        final WebView w = t.mMainView;
-        final WebBackForwardList list = w.restoreState(b);
-        if (list == null) {
-            return false;
-        }
-        if (b.containsKey(CURRPICTURE)) {
-            final File f = new File(b.getString(CURRPICTURE));
-            w.restorePicture(b, f);
-            f.delete();
-        }
-        return true;
-    }
 }