diff --git a/res/values/strings.xml b/res/values/strings.xml index 1e19d281251..6f99c32a047 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -3987,6 +3987,11 @@ Show App Not Responding dialog for background apps + + Use Experimental WebView + + Apps will use the newest (beta) WebView + Data usage diff --git a/res/xml/development_prefs.xml b/res/xml/development_prefs.xml index 6fbbbf4ce02..72b73bbb00a 100644 --- a/res/xml/development_prefs.xml +++ b/res/xml/development_prefs.xml @@ -234,6 +234,11 @@ android:title="@string/show_all_anrs" android:summary="@string/show_all_anrs_summary"/> + + diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java index 4dfe700d65a..d5401951a2b 100644 --- a/src/com/android/settings/DevelopmentSettings.java +++ b/src/com/android/settings/DevelopmentSettings.java @@ -57,6 +57,7 @@ import android.preference.PreferenceScreen; import android.provider.Settings; import android.text.TextUtils; import android.util.Log; +import android.webkit.WebViewFactory; import android.view.Gravity; import android.view.HardwareRenderer; import android.view.IWindowManager; @@ -130,6 +131,8 @@ public class DevelopmentSettings extends PreferenceFragment private static final String SHOW_ALL_ANRS_KEY = "show_all_anrs"; + private static final String WEBVIEW_EXPERIMENTAL_KEY = "experimental_webview"; + private static final String TAG_CONFIRM_ENFORCE = "confirm_enforce"; private static final String PACKAGE_MIME_TYPE = "application/vnd.android.package-archive"; @@ -183,6 +186,7 @@ public class DevelopmentSettings extends PreferenceFragment private ListPreference mAppProcessLimit; private CheckBoxPreference mShowAllANRs; + private CheckBoxPreference mExperimentalWebView; private final ArrayList mAllPrefs = new ArrayList(); private final ArrayList mResetCbPrefs @@ -275,6 +279,15 @@ public class DevelopmentSettings extends PreferenceFragment mAllPrefs.add(mShowAllANRs); mResetCbPrefs.add(mShowAllANRs); + if (WebViewFactory.isExperimentalWebViewAvailable()) { + mExperimentalWebView = findAndInitCheckboxPref(WEBVIEW_EXPERIMENTAL_KEY); + } else { + Preference experimentalWebView = findPreference(WEBVIEW_EXPERIMENTAL_KEY); + if (experimentalWebView != null) { + getPreferenceScreen().removePreference(experimentalWebView); + } + } + Preference hdcpChecking = findPreference(HDCP_CHECKING_KEY); if (hdcpChecking != null) { mAllPrefs.add(hdcpChecking); @@ -431,6 +444,7 @@ public class DevelopmentSettings extends PreferenceFragment updateImmediatelyDestroyActivitiesOptions(); updateAppProcessLimitOptions(); updateShowAllANRsOptions(); + updateExperimentalWebViewOptions(); updateVerifyAppsOverUsbOptions(); updateBugreportOptions(); } @@ -957,6 +971,21 @@ public class DevelopmentSettings extends PreferenceFragment getActivity().getContentResolver(), Settings.Secure.ANR_SHOW_BACKGROUND, 0) != 0); } + private void writeExperimentalWebViewOptions() { + if (mExperimentalWebView != null) { + SystemProperties.set(WebViewFactory.WEBVIEW_EXPERIMENTAL_PROPERTY, + mExperimentalWebView.isChecked() ? "true" : null); + pokeSystemProperties(); + } + } + + private void updateExperimentalWebViewOptions() { + if (mExperimentalWebView != null) { + updateCheckBox(mExperimentalWebView, SystemProperties.getBoolean( + WebViewFactory.WEBVIEW_EXPERIMENTAL_PROPERTY, false)); + } + } + @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (buttonView == mEnabledSwitch) { @@ -1071,6 +1100,8 @@ public class DevelopmentSettings extends PreferenceFragment writeImmediatelyDestroyActivitiesOptions(); } else if (preference == mShowAllANRs) { writeShowAllANRsOptions(); + } else if (preference == mExperimentalWebView) { + writeExperimentalWebViewOptions(); } else if (preference == mForceHardwareUi) { writeHardwareUiOptions(); } else if (preference == mForceMsaa) {