am c7e71159: Merge "Missing translation for Save Bookmark in Browser"

* commit 'c7e711599ced508057cf96f4a120a8ed8f8636a3':
  Missing translation for Save Bookmark in Browser
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();