diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 371a7ff..3771907 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -101,7 +101,7 @@
     <string name="history" msgid="2451240511251410032">"Verlauf"</string>
     <string name="menu_view_download" msgid="2124570321712995120">"Downloads"</string>
     <string name="copy_page_url" msgid="1188679152608889555">"Seiten-URL kopieren"</string>
-    <string name="share_page" msgid="593756995297268343">"Seitenlink teilen"</string>
+    <string name="share_page" msgid="593756995297268343">"Seite teilen"</string>
     <string name="menu_save_snapshot" msgid="6935080344031126139">"Für Offline-Lesen speichern"</string>
     <string name="saving_snapshot" msgid="1693789062351182809">"Wird gespeichert…"</string>
     <string name="snapshot_failed" msgid="4584580873565876033">"Speichern für Offline-Lesen fehlgeschlagen"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 851c977..359ef3b 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -306,7 +306,7 @@
     <string name="add_bookmark_short" msgid="3783984330998103735">"افزودن"</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>
+    <string name="search_settings_description" msgid="1422401062529014107">"نشانک‌ها و سابقه وب"</string>
     <string name="popup_window_attempt" msgid="31565781154067629">"به این سایت اجازه می‌دهید یک پنجره بازشو باز کند؟"</string>
     <string name="allow" msgid="1157313689171991335">"اجازه داده شود"</string>
     <string name="block" msgid="9172175889884707800">"مسدود کردن"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 30416ab..25f3c84 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -157,16 +157,16 @@
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Синхронизација"</string>
     <string name="pref_general_autofill_title" msgid="547881256865816858">"Аутоматско попуњавање"</string>
     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Аутоматско попуњавање обрасца"</string>
-    <string name="pref_autofill_enabled_summary" msgid="7659954073892471496">"Попуњавање веб образаца једним додиром"</string>
+    <string name="pref_autofill_enabled_summary" msgid="7659954073892471496">"Попуњавање веб-образаца једним додиром"</string>
     <string name="pref_autofill_profile_editor" msgid="8934844472922113166">"Текст за аутоматско попуњавање"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="4864447251676856190">"Подешавање текста за аутоматско попуњавање веб образаца"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="4864447251676856190">"Подешавање текста за аутоматско попуњавање веб-образаца"</string>
     <string name="pref_autologin_title" msgid="4421187193809267096">"Аутоматско Google пријављивање"</string>
     <string name="pref_autologin_progress" msgid="8333244467048833461">"Пријављивање на Google сајтове помоћу <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="autologin_bar_text" msgid="3684581827167173371">"Пријављивање као"</string>
     <string name="autologin_bar_login_text" msgid="3336615320510851879">"Пријави ме"</string>
     <string name="autologin_bar_hide_text" msgid="3629355974385859580">"Сакриј"</string>
     <string name="autologin_bar_error" msgid="7470001207395920811">"Пријављивање није могуће."</string>
-    <string name="autofill_profile_editor_heading" msgid="4798644544927738078">"Унесите текст који желите да користите за аутоматско попуњавање веб образаца."</string>
+    <string name="autofill_profile_editor_heading" msgid="4798644544927738078">"Унесите текст који желите да користите за аутоматско попуњавање веб-образаца."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Пуно име:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"Е-пошта:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Назив предузећа:"</string>
@@ -184,7 +184,7 @@
     <string name="autofill_profile_successful_save" msgid="5691459703493331983">"Текст за аутоматско попуњавање је сачуван."</string>
     <string name="autofill_profile_successful_delete" msgid="1790262652460723127">"Текст за аутоматско попуњавање је избрисан."</string>
     <string name="autofill_profile_editor_delete_profile" msgid="3098369314558164153">"Избриши"</string>
-    <string name="autofill_setup_dialog_message" msgid="7123905786076456503">"Прегледач може аутоматски да попуњава веб обрасце попут овог. Желите ли да подесите текст за аутоматско попуњавање?"</string>
+    <string name="autofill_setup_dialog_message" msgid="7123905786076456503">"Прегледач може аутоматски да попуњава веб-обрасце попут овог. Желите ли да подесите текст за аутоматско попуњавање?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="3288881675232206984">"Увек можете да подесите текст за аутоматско попуњавање на екрану Прегледач &gt; Подешавања &gt; Опште."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Онемогући аутоматско попуњавање"</string>
     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Приватност и безбедност"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index eb5d574..8988693 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -65,7 +65,7 @@
     <string name="delete_folder" msgid="2046483129024501116">"Ta bort mapp"</string>
     <string name="no_subfolders" msgid="3303645239686962674">"Inga undermappar."</string>
     <string name="add_to_bookmarks_menu_option" msgid="4449323955122214389">"Bokmärken"</string>
-    <string name="add_to_homescreen_menu_option" msgid="1461447829242963790">"Startsida"</string>
+    <string name="add_to_homescreen_menu_option" msgid="1461447829242963790">"Startskärm"</string>
     <string name="add_to_other_folder_menu_option" msgid="5947586525822134105">"Annan mapp"</string>
     <string name="name" msgid="5462672162695365387">"Etikett"</string>
     <string name="http" msgid="2163722670597250102">"http://"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index c866477..ea3fa9f 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -19,7 +19,7 @@
     <string name="application_name" msgid="1935869255545976415">" Kivinjari"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Chagua faili ya kupakia"</string>
     <string name="uploads_disabled" msgid="463761197575372994">"Upakiaji wa faili umelemazwa."</string>
-    <string name="new_tab" msgid="7971857320679510529">"Tabo mpya"</string>
+    <string name="new_tab" msgid="7971857320679510529">"Kichupo kipya"</string>
     <string name="new_incognito_tab" msgid="3606197964239039478">"Kichupo fiche kipya"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Alamisho"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Zilizotembelewa sana"</string>
@@ -78,10 +78,10 @@
     <string name="remove_bookmark" msgid="8407495852801410891">"Futa  alamisho"</string>
     <string name="remove_from_bookmarks" msgid="4374080666576982775">"Ondoa kutoka kwa alamisho"</string>
     <string name="remove_history_item" msgid="5021424935726728618">"Ondoa kwenye historia"</string>
-    <string name="set_as_homepage" msgid="4752937379414905560">"Weka uwe ukurasa wa mwanzo"</string>
+    <string name="set_as_homepage" msgid="4752937379414905560">"Weka uwe ukurasa wa kwanza"</string>
     <string name="bookmark_saved" msgid="2766434679871317557">"Imehifadhiwa kwa alamisho"</string>
     <string name="bookmark_not_saved" msgid="1077732557310662080">"Haikuweza kuhifadhi alamamisho."</string>
-    <string name="homepage_set" msgid="8768087280310966395">"Ukurasa wa mwanzo umewekwa."</string>
+    <string name="homepage_set" msgid="8768087280310966395">"Ukurasa wa kwanza umewekwa."</string>
     <string name="bookmark_needs_title" msgid="6245900436119218187">"Alamisho lazima iwe na jina."</string>
     <string name="bookmark_needs_url" msgid="7809876865972755158">"Alamisho lazima iwe na mahali."</string>
     <string name="bookmark_url_not_valid" msgid="4917440933384496211">"URL hii si halali."</string>
@@ -99,7 +99,7 @@
     <string name="shortcut_bookmark" msgid="3974876480401135895">"Alamisho"</string>
     <string name="shortcut_bookmark_title" msgid="7570786275916681296">"Chagua alamisho"</string>
     <string name="history" msgid="2451240511251410032">"Historia"</string>
-    <string name="menu_view_download" msgid="2124570321712995120">"Vipakuzi"</string>
+    <string name="menu_view_download" msgid="2124570321712995120">"Vipakuliwa"</string>
     <string name="copy_page_url" msgid="1188679152608889555">"Nakili URL ya ukurasa"</string>
     <string name="share_page" msgid="593756995297268343">"Shiriki ukurasa"</string>
     <string name="menu_save_snapshot" msgid="6935080344031126139">"Hifadhi kwa usomaji wa nje ya mtandao"</string>
@@ -139,8 +139,8 @@
     <item msgid="2484126708670016519">"Inapohitajika"</item>
     <item msgid="8547442717307793863">"Zima"</item>
   </string-array>
-    <string name="pref_content_open_in_background_summary" msgid="955411158407739504">"Fungua tabo vipya nyuma ya tabo ya sasa"</string>
-    <string name="pref_content_homepage" msgid="3324574611613105696">"Weka ukurasa wa mwanzo"</string>
+    <string name="pref_content_open_in_background_summary" msgid="955411158407739504">"Fungua vichupo vipya nyuma ya hiki cha sasa"</string>
+    <string name="pref_content_homepage" msgid="3324574611613105696">"Weka ukurasa wa kwanza"</string>
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Weka injini tafuti"</string>
     <string name="pref_content_search_engine_summary" msgid="304003941861818133">"Chagua injini tafuti"</string>
     <string name="pref_set_homepage_to" msgid="7838684355145561242">"Weka kwa"</string>
@@ -301,17 +301,17 @@
     <string name="clear_history" msgid="5998307092715979619">"Futa historia"</string>
     <string name="browser_history" msgid="2979476257919939232">"Kurasa zilizotembelewa hivi karibuni"</string>
     <string name="empty_history" msgid="7013369425484218985">"Hakuna historia ya kivinjari."</string>
-    <string name="go_home" msgid="109129207276086793">"Ukurasa wa mwanzo"</string>
+    <string name="go_home" msgid="109129207276086793">"Ukurasa wa kwanza"</string>
     <string name="add_new_bookmark" msgid="3158497555612337238">"Ongeza alamisho"</string>
     <string name="add_bookmark_short" msgid="3783984330998103735">"Ongeza"</string>
     <string name="search_hint" msgid="4647356319916631820">"Tafuta au chapisha URL"</string>
     <string name="search_button_text" msgid="5235226933877634410">"Nenda"</string>
-    <string name="search_settings_description" msgid="1422401062529014107">"Historia ya vialamisho na wavuti"</string>
+    <string name="search_settings_description" msgid="1422401062529014107">"Historia ya alamisho na wavuti"</string>
     <string name="popup_window_attempt" msgid="31565781154067629">"Ruhusu tovuti hii kufungua dirisha la kidukizo?"</string>
     <string name="allow" msgid="1157313689171991335">"Ruhusu"</string>
     <string name="block" msgid="9172175889884707800">"Zuia"</string>
     <string name="too_many_windows_dialog_title" msgid="5709782301477380438">"Kikomo cha kichupo kimefikiwa"</string>
-    <string name="too_many_windows_dialog_message" msgid="3644234634638290304">"Imeshindwa kufungua tabo mpya hadi ufunge moja."</string>
+    <string name="too_many_windows_dialog_message" msgid="3644234634638290304">"Imeshindwa kufungua kichupo kipya hadi ufunge mojawapo ya vile ulivyofungua."</string>
     <string name="too_many_subwindows_dialog_title" msgid="3805453941587725944">"Dirisha ibukizi tayari limefunguliwa"</string>
     <string name="too_many_subwindows_dialog_message" msgid="2164725447981195556">"Kidukizo moja tu inaweza kufunguliwa kwa wakati."</string>
     <string name="download_no_sdcard_dlg_title" product="nosdcard" msgid="56777245081568508">"Hifadhi ya USB haipatikani"</string>
@@ -320,8 +320,8 @@
     <string name="download_no_sdcard_dlg_msg" product="default" msgid="2616399456116301518">"Kadi ya SD inahitajika ili kupakua <xliff:g id="FILENAME">%s</xliff:g>"</string>
     <string name="download_sdcard_busy_dlg_title" product="nosdcard" msgid="8081445664689818973">"Hifadhi ya USB haipatikani"</string>
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"Kadi ya SD haipatikani"</string>
-    <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="8412543086906716875">"Hifadhi ya USB ina shughuli. Ili kuruhusu vipakuzi, gusa \"Zima hifadhi ya USB\" katika arifa."</string>
-    <string name="download_sdcard_busy_dlg_msg" product="default" msgid="2629425950473358591">"Kadi ya SD inashughuli. Kuruhusu vipakuzi, gusa \"Zima Hifadhi ya USB\" katika arifa."</string>
+    <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="8412543086906716875">"Hifadhi ya USB inatumika. Ili kuruhusu vipakuliwa, gusa \"Zima hifadhi ya USB\" katika arifa."</string>
+    <string name="download_sdcard_busy_dlg_msg" product="default" msgid="2629425950473358591">"Kadi ya SD inatumika. Kuruhusu vipakuliwa, gusa \"Zima Hifadhi ya USB\" katika arifa."</string>
     <string name="cannot_download" msgid="8150552478556798780">"Inaweza kupakua tu URLs za \"http\" au \"https\"."</string>
     <string name="download_pending" msgid="2599683668575349559">"Inaanza kupakua..."</string>
     <string name="search_the_web" msgid="6046130189241962337">"Tafuta wavuti"</string>
@@ -342,7 +342,7 @@
     <string name="geolocation_settings_page_title" msgid="1745477985097536528">"Futa ufikiaji mahali"</string>
     <string name="geolocation_settings_page_summary_allowed" msgid="9180251524290811398">"Tovuti hii kwa sasa inaweza kufikia mahali ulipo"</string>
     <string name="geolocation_settings_page_summary_not_allowed" msgid="7941769772784366199">"Tovuti hii kwa sasa haiwezi kufikia mahali ulipo"</string>
-    <string name="geolocation_settings_page_dialog_message" msgid="8772923416296868537">"Futa ufikivu wa eneo ya wavuti hii?"</string>
+    <string name="geolocation_settings_page_dialog_message" msgid="8772923416296868537">"Idhini ya kufikia eneo kwa wavuti hii ifutwe?"</string>
     <string name="geolocation_settings_page_dialog_ok_button" msgid="2113465477131017852">"Sawa"</string>
     <string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"Ghairi"</string>
     <string name="website_settings_clear_all" msgid="8739804325997655980">"Futa zote"</string>
@@ -357,10 +357,10 @@
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Chagua akaunti"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sawazisha kwa akaunti ya Google"</string>
     <string name="import_bookmarks_dialog_description" msgid="2362897194870789609">"Alamisho kwenye kifaa hiki bado haihusishwi na akaunti ya Google. Hifadhi alamisho hizi kwa kuziongeza kwa akaunti. Futa alamisho hizi ikiwa hautaki kuzilandanisha."</string>
-    <string name="import_bookmarks_dialog_select_add_account" msgid="7643058662272484895">"Ongeza alamisho iliyo kwenye kifaa hiki sasa na uanze kulandanisha na akaunti ya Google"</string>
-    <string name="import_bookmarks_dialog_delete_select_account" msgid="4333848003180415516">"Futa alamisho ilioko sasa kwa kifaa na anza kulandanisha na akaunti za Google"</string>
-    <string name="import_bookmarks_dialog_confirm_delete" msgid="2204771572755630570">"Futa alamisho zilizo katika kifaa hiki na anza kulandanisha na <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
-    <string name="import_bookmarks_dialog_confirm_add" msgid="8942794112340838111">"Ongeza alamisho zilizo kwenye kifaa hiki na anza kulandanisha  na <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>?."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="7643058662272484895">"Ongeza alamisho zilizo kwenye kifaa hiki na uanze kusawazisha na akaunti ya Google"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="4333848003180415516">"Futa alamisho zilizo kwenye kifaa hiki na uanze kusawazisha na akaunti za Google"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="2204771572755630570">"Je, alamisho zilizo katika kifaa hiki zifutwe na alamisho zianze kusawazishwa na <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>?"</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="8942794112340838111">"Alamisho zilizo kwenye kifaa hiki ziongezwe na zianze kusawazishwa na <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>?"</string>
     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Futa alamisho"</string>
     <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Ifuatayo"</string>
     <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Iliyotangulia"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 7003e28..7c00a79 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -306,7 +306,7 @@
     <string name="add_bookmark_short" msgid="3783984330998103735">"Додати"</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>
+    <string name="search_settings_description" msgid="1422401062529014107">"Закладки й історія пошуку"</string>
     <string name="popup_window_attempt" msgid="31565781154067629">"Дозволити цьому сайту відкрити спливаюче вікно?"</string>
     <string name="allow" msgid="1157313689171991335">"Дозвол."</string>
     <string name="block" msgid="9172175889884707800">"Блокув."</string>
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index b766fb9..3ba3182 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -423,9 +423,9 @@
                 .findViewById(R.id.subwindow_close);
         final WebView cancelSubView = subView;
         cancel.setOnClickListener(new OnClickListener() {
+            @Override
             public void onClick(View v) {
-                WebViewClassic.fromWebView(cancelSubView).getWebChromeClient().onCloseWindow(
-                        cancelSubView);
+                ((BrowserWebView) cancelSubView).getWebChromeClient().onCloseWindow(cancelSubView);
             }
         });
         tab.setSubWebView(subView);
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 4555c18..95afa71 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -155,13 +155,14 @@
     }
 
     public void startManagingSettings(WebSettings settings) {
-        WebSettingsClassic settingsClassic = (WebSettingsClassic) settings;
+
         if (mNeedsSharedSync) {
             syncSharedSettings();
         }
+
         synchronized (mManagedSettings) {
-            syncStaticSettings(settingsClassic);
-            syncSetting(settingsClassic);
+            syncStaticSettings(settings);
+            syncSetting(settings);
             mManagedSettings.add(new WeakReference<WebSettings>(settings));
         }
     }
@@ -251,22 +252,17 @@
     /**
      * Syncs all the settings that have a Preference UI
      */
-    private void syncSetting(WebSettingsClassic settings) {
+    private void syncSetting(WebSettings settings) {
         settings.setGeolocationEnabled(enableGeolocation());
         settings.setJavaScriptEnabled(enableJavascript());
         settings.setLightTouchEnabled(enableLightTouch());
         settings.setNavDump(enableNavDump());
-        settings.setHardwareAccelSkiaEnabled(isSkiaHardwareAccelerated());
-        settings.setShowVisualIndicator(enableVisualIndicator());
         settings.setDefaultTextEncodingName(getDefaultTextEncoding());
         settings.setDefaultZoom(getDefaultZoom());
         settings.setMinimumFontSize(getMinimumFontSize());
         settings.setMinimumLogicalFontSize(getMinimumFontSize());
-        settings.setForceUserScalable(forceEnableUserScalable());
         settings.setPluginState(getPluginState());
         settings.setTextZoom(getTextZoom());
-        settings.setDoubleTapZoom(getDoubleTapZoom());
-        settings.setAutoFillEnabled(isAutofillEnabled());
         settings.setLayoutAlgorithm(getLayoutAlgorithm());
         settings.setJavaScriptCanOpenWindowsAutomatically(!blockPopupWindows());
         settings.setLoadsImagesAutomatically(loadImages());
@@ -274,7 +270,6 @@
         settings.setSavePassword(rememberPasswords());
         settings.setSaveFormData(saveFormdata());
         settings.setUseWideViewPort(isWideViewport());
-        settings.setAutoFillProfile(getAutoFillProfile());
 
         String ua = mCustomUserAgents.get(settings);
         if (ua != null) {
@@ -283,30 +278,39 @@
             settings.setUserAgentString(USER_AGENTS[getUserAgent()]);
         }
 
+        if (!(settings instanceof WebSettingsClassic)) return;
+
+        WebSettingsClassic settingsClassic = (WebSettingsClassic) settings;
+        settingsClassic.setHardwareAccelSkiaEnabled(isSkiaHardwareAccelerated());
+        settingsClassic.setShowVisualIndicator(enableVisualIndicator());
+        settingsClassic.setForceUserScalable(forceEnableUserScalable());
+        settingsClassic.setDoubleTapZoom(getDoubleTapZoom());
+        settingsClassic.setAutoFillEnabled(isAutofillEnabled());
+        settingsClassic.setAutoFillProfile(getAutoFillProfile());
+
         boolean useInverted = useInvertedRendering();
-        settings.setProperty(WebViewProperties.gfxInvertedScreen,
+        settingsClassic.setProperty(WebViewProperties.gfxInvertedScreen,
                 useInverted ? "true" : "false");
         if (useInverted) {
-            settings.setProperty(WebViewProperties.gfxInvertedScreenContrast,
+          settingsClassic.setProperty(WebViewProperties.gfxInvertedScreenContrast,
                     Float.toString(getInvertedContrast()));
         }
 
         if (isDebugEnabled()) {
-            settings.setProperty(WebViewProperties.gfxEnableCpuUploadPath,
+          settingsClassic.setProperty(WebViewProperties.gfxEnableCpuUploadPath,
                     enableCpuUploadPath() ? "true" : "false");
         }
 
-        settings.setLinkPrefetchEnabled(mLinkPrefetchAllowed);
+        settingsClassic.setLinkPrefetchEnabled(mLinkPrefetchAllowed);
     }
 
     /**
      * Syncs all the settings that have no UI
      * These cannot change, so we only need to set them once per WebSettings
      */
-    private void syncStaticSettings(WebSettingsClassic settings) {
+    private void syncStaticSettings(WebSettings settings) {
         settings.setDefaultFontSize(16);
         settings.setDefaultFixedFontSize(13);
-        settings.setPageCacheCapacity(getPageCacheCapacity());
 
         // WebView inside Browser doesn't want initial focus to be set.
         settings.setNeedInitialFocus(false);
@@ -315,13 +319,6 @@
         // enable smooth transition for better performance during panning or
         // zooming
         settings.setEnableSmoothTransition(true);
-        // WebView should be preserving the memory as much as possible.
-        // However, apps like browser wish to turn on the performance mode which
-        // would require more memory.
-        // TODO: We need to dynamically allocate/deallocate temporary memory for
-        // apps which are trying to use minimal memory. Currently, double
-        // buffering is always turned on, which is unnecessary.
-        settings.setProperty(WebViewProperties.gfxUseMinimalMemory, "false");
         // disable content url access
         settings.setAllowContentAccess(false);
 
@@ -329,7 +326,6 @@
         settings.setAppCacheEnabled(true);
         settings.setDatabaseEnabled(true);
         settings.setDomStorageEnabled(true);
-        settings.setWorkersEnabled(true);  // This only affects V8.
 
         // HTML5 configuration parametersettings.
         settings.setAppCacheMaxSize(getWebStorageSizeManager().getAppCacheMaxSize());
@@ -339,6 +335,19 @@
         // origin policy for file access
         settings.setAllowUniversalAccessFromFileURLs(false);
         settings.setAllowFileAccessFromFileURLs(false);
+
+        if (!(settings instanceof WebSettingsClassic)) return;
+
+        WebSettingsClassic settingsClassic = (WebSettingsClassic) settings;
+        settingsClassic.setPageCacheCapacity(getPageCacheCapacity());
+        // WebView should be preserving the memory as much as possible.
+        // However, apps like browser wish to turn on the performance mode which
+        // would require more memory.
+        // TODO: We need to dynamically allocate/deallocate temporary memory for
+        // apps which are trying to use minimal memory. Currently, double
+        // buffering is always turned on, which is unnecessary.
+        settingsClassic.setProperty(WebViewProperties.gfxUseMinimalMemory, "false");
+        settingsClassic.setWorkersEnabled(true);  // This only affects V8.
     }
 
     private void syncSharedSettings() {
@@ -355,7 +364,7 @@
             Iterator<WeakReference<WebSettings>> iter = mManagedSettings.iterator();
             while (iter.hasNext()) {
                 WeakReference<WebSettings> ref = iter.next();
-                WebSettingsClassic settings = (WebSettingsClassic)ref.get();
+                WebSettings settings = ref.get();
                 if (settings == null) {
                     iter.remove();
                     continue;
diff --git a/src/com/android/browser/BrowserWebView.java b/src/com/android/browser/BrowserWebView.java
index 12d511f..99e0587 100644
--- a/src/com/android/browser/BrowserWebView.java
+++ b/src/com/android/browser/BrowserWebView.java
@@ -20,8 +20,12 @@
 import android.graphics.Canvas;
 import android.util.AttributeSet;
 import android.view.View;
+import android.webkit.WebChromeClient;
+import android.webkit.WebStorage;
+import android.webkit.WebStorageClassic;
 import android.webkit.WebView;
 import android.webkit.WebViewClassic;
+import android.webkit.WebViewClient;
 
 import java.util.Map;
 
@@ -37,6 +41,8 @@
     private boolean mBackgroundRemoved = false;
     private TitleBar mTitleBar;
     private OnScrollChangedListener mOnScrollChangedListener;
+    private WebChromeClient mWebChromeClient;
+    private WebViewClient mWebViewClient;
 
     /**
      * @param context
@@ -74,6 +80,31 @@
         super(context);
     }
 
+    public static boolean isClassic() {
+        // Using WebStorage for convenience of access in a static method.
+        return WebStorage.getInstance() instanceof WebStorageClassic;
+    }
+
+    @Override
+    public void setWebChromeClient(WebChromeClient client) {
+        mWebChromeClient = client;
+        super.setWebChromeClient(client);
+    }
+
+    public WebChromeClient getWebChromeClient() {
+      return mWebChromeClient;
+    }
+
+    @Override
+    public void setWebViewClient(WebViewClient client) {
+        mWebViewClient = client;
+        super.setWebViewClient(client);
+    }
+
+    public WebViewClient getWebViewClient() {
+      return mWebViewClient;
+    }
+
     public void setTitleBar(TitleBar title) {
         mTitleBar = title;
     }
@@ -87,6 +118,7 @@
     // From TitleBarDelegate
     @Override
     public void onSetEmbeddedTitleBar(final View title) {
+        // TODO: Remove this method; it is never invoked.
     }
 
     public boolean hasTitleBar() {
diff --git a/src/com/android/browser/ComboViewActivity.java b/src/com/android/browser/ComboViewActivity.java
index 2d382cb..91d574e 100644
--- a/src/com/android/browser/ComboViewActivity.java
+++ b/src/com/android/browser/ComboViewActivity.java
@@ -71,10 +71,14 @@
         mTabsAdapter = new TabsAdapter(this, mViewPager);
         mTabsAdapter.addTab(bar.newTab().setText(R.string.tab_bookmarks),
                 BrowserBookmarksPage.class, args);
-        mTabsAdapter.addTab(bar.newTab().setText(R.string.tab_history),
-                BrowserHistoryPage.class, args);
-        mTabsAdapter.addTab(bar.newTab().setText(R.string.tab_snapshots),
-                BrowserSnapshotPage.class, args);
+        if (BrowserWebView.isClassic()) {
+            // TODO: history page should be able to work in Classic mode, but there's some
+            // provider name conflict. (Snapshot would never work in that mode though).
+            mTabsAdapter.addTab(bar.newTab().setText(R.string.tab_history),
+                    BrowserHistoryPage.class, args);
+            mTabsAdapter.addTab(bar.newTab().setText(R.string.tab_snapshots),
+                    BrowserSnapshotPage.class, args);
+        }
 
         if (savedInstanceState != null) {
             bar.setSelectedNavigationItem(
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index caea83e..7b7fcd4 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -260,7 +260,7 @@
 
     @Override
     public void start(final Intent intent) {
-        WebViewClassic.setShouldMonitorWebCoreThread();
+        if (BrowserWebView.isClassic()) WebViewClassic.setShouldMonitorWebCoreThread();
         // mCrashRecoverHandler has any previously saved state.
         mCrashRecoveryHandler.startRecovery(intent);
     }
@@ -356,7 +356,7 @@
         }
         // Read JavaScript flags if it exists.
         String jsFlags = getSettings().getJsEngineFlags();
-        if (jsFlags.trim().length() != 0) {
+        if (jsFlags.trim().length() != 0 && BrowserWebView.isClassic()) {
             WebViewClassic.fromWebView(getCurrentWebView()).setJsFlags(jsFlags);
         }
         if (intent != null
@@ -1196,7 +1196,12 @@
                     long id = intent.getLongExtra(
                             ComboViewActivity.EXTRA_OPEN_SNAPSHOT, -1);
                     if (id >= 0) {
-                        createNewSnapshotTab(id, true);
+                        if (BrowserWebView.isClassic()) {
+                            createNewSnapshotTab(id, true);
+                        } else {
+                            Toast.makeText(mActivity, "Snapshot Tab requires WebViewClassic",
+                                Toast.LENGTH_LONG).show();
+                        }
                     }
                 }
                 break;
@@ -2257,7 +2262,9 @@
         }
 
         public SelectText(WebView webView) {
-            mWebView = WebViewClassic.fromWebView(webView);
+          if (BrowserWebView.isClassic()) {
+              mWebView = WebViewClassic.fromWebView(webView);
+          }
         }
 
     }
@@ -2545,7 +2552,7 @@
         // In case the user enters nothing.
         if (url != null && url.length() != 0 && tab != null && view != null) {
             url = UrlUtils.smartUrlFilter(url);
-            if (!WebViewClassic.fromWebView(view).getWebViewClient().
+            if (!((BrowserWebView) view).getWebViewClient().
                     shouldOverrideUrlLoading(view, url)) {
                 loadUrl(tab, url);
             }
@@ -2738,14 +2745,14 @@
                 }
                 break;
             case KeyEvent.KEYCODE_A:
-                if (ctrl) {
+                if (ctrl && BrowserWebView.isClassic()) {
                     WebViewClassic.fromWebView(webView).selectAll();
                     return true;
                 }
                 break;
 //          case KeyEvent.KEYCODE_B:    // menu
             case KeyEvent.KEYCODE_C:
-                if (ctrl) {
+                if (ctrl && BrowserWebView.isClassic()) {
                     WebViewClassic.fromWebView(webView).copySelection();
                     return true;
                 }
diff --git a/src/com/android/browser/IntentHandler.java b/src/com/android/browser/IntentHandler.java
index f0998a4..45520d6 100644
--- a/src/com/android/browser/IntentHandler.java
+++ b/src/com/android/browser/IntentHandler.java
@@ -172,7 +172,7 @@
                     }
                 }
             } else {
-                if (!urlData.isEmpty()
+                if (BrowserWebView.isClassic() && !urlData.isEmpty()
                         && urlData.mUrl.startsWith("about:debug")) {
                     if ("about:debug.dom".equals(urlData.mUrl)) {
                         current.getWebViewClassic().dumpDomTree(false);
diff --git a/src/com/android/browser/NetworkStateHandler.java b/src/com/android/browser/NetworkStateHandler.java
index 4480664..9201f0f 100644
--- a/src/com/android/browser/NetworkStateHandler.java
+++ b/src/com/android/browser/NetworkStateHandler.java
@@ -114,7 +114,7 @@
 
     private void sendNetworkType(String type, String subtype) {
         WebView w = mController.getCurrentWebView();
-        if (w != null) {
+        if (w != null && BrowserWebView.isClassic()) {
             WebViewClassic.fromWebView(w).setNetworkType(type, subtype);
         }
     }
diff --git a/src/com/android/browser/PageDialogsHandler.java b/src/com/android/browser/PageDialogsHandler.java
index 3ed1004..dba5289 100644
--- a/src/com/android/browser/PageDialogsHandler.java
+++ b/src/com/android/browser/PageDialogsHandler.java
@@ -27,7 +27,6 @@
 import android.webkit.HttpAuthHandler;
 import android.webkit.SslErrorHandler;
 import android.webkit.WebView;
-import android.webkit.WebViewClassic;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
@@ -298,7 +297,7 @@
                                 mSSLCertificateOnErrorHandler = null;
                                 mSSLCertificateOnErrorError = null;
 
-                                WebViewClassic.fromWebView(view).getWebViewClient().
+                                ((BrowserWebView) view).getWebViewClient().
                                         onReceivedSslError(view, handler, error);
                             }
                         })
@@ -326,7 +325,7 @@
                                 mSSLCertificateOnErrorHandler = null;
                                 mSSLCertificateOnErrorError = null;
 
-                                WebViewClassic.fromWebView(view).getWebViewClient().
+                                ((BrowserWebView) view).getWebViewClient().
                                         onReceivedSslError(view, handler, error);
                             }
                         })
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index b5000c2..e3a0333 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -1293,7 +1293,9 @@
             // does a redirect after a period of time. The user could have
             // switched to another tab while waiting for the download to start.
             mMainView.setDownloadListener(mDownloadListener);
-            getWebViewClassic().setWebBackForwardListClient(mWebBackForwardListClient);
+            if (BrowserWebView.isClassic()) {
+                getWebViewClassic().setWebBackForwardListClient(mWebBackForwardListClient);
+            }
             TabControl tc = mWebViewController.getTabControl();
             if (tc != null && tc.getOnThumbnailUpdatedListener() != null) {
                 mMainView.setPictureListener(this);
@@ -1535,6 +1537,9 @@
      * @return The main WebView of this tab.
      */
     WebViewClassic getWebViewClassic() {
+        if (!BrowserWebView.isClassic()) {
+            return null;
+        }
         return WebViewClassic.fromWebView(mMainView);
     }
 
diff --git a/src/com/android/browser/TitleBar.java b/src/com/android/browser/TitleBar.java
index 874296a..a0cc857 100644
--- a/src/com/android/browser/TitleBar.java
+++ b/src/com/android/browser/TitleBar.java
@@ -122,6 +122,7 @@
         boolean isFixed = !mUseQuickControls
                 && !mContext.getResources().getBoolean(R.bool.hide_title);
         isFixed |= mAccessibilityManager.isEnabled();
+        isFixed |= !BrowserWebView.isClassic();
         // If getParent() returns null, we are initializing
         ViewGroup parent = (ViewGroup)getParent();
         if (mIsFixedTitleBar == isFixed && parent != null) return;
diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java
index 3b8245a..df7a586 100644
--- a/src/com/android/browser/XLargeUi.java
+++ b/src/com/android/browser/XLargeUi.java
@@ -117,7 +117,7 @@
 
     void stopWebViewScrolling() {
         BrowserWebView web = (BrowserWebView) mUiController.getCurrentWebView();
-        if (web != null) {
+        if (web != null && BrowserWebView.isClassic()) {
             WebViewClassic.fromWebView(web).stopScroll();
         }
     }
diff --git a/src/com/android/browser/preferences/InvertedContrastPreview.java b/src/com/android/browser/preferences/InvertedContrastPreview.java
index ed6eadf..2b8ad47 100644
--- a/src/com/android/browser/preferences/InvertedContrastPreview.java
+++ b/src/com/android/browser/preferences/InvertedContrastPreview.java
@@ -23,6 +23,7 @@
 import android.webkit.WebViewClassic;
 
 import com.android.browser.BrowserSettings;
+import com.android.browser.BrowserWebView;
 import com.android.browser.WebViewProperties;
 
 public class InvertedContrastPreview extends WebViewPreview {
@@ -75,7 +76,7 @@
 
     @Override
     protected void updatePreview(boolean forceReload) {
-        if (mWebView == null) return;
+        if (mWebView == null || !BrowserWebView.isClassic()) return;
 
         WebSettingsClassic ws = WebViewClassic.fromWebView(mWebView).getSettings();
         BrowserSettings bs = BrowserSettings.getInstance();
