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;
-    }
 }
