Merge "Add WebView provider setting to developer settings."
This commit is contained in:
committed by
Android (Google) Code Review
commit
a48f16fe01
@@ -79,6 +79,12 @@
|
||||
android:summary="@string/picture_color_mode_desc"
|
||||
android:persistent="false" />
|
||||
|
||||
<ListPreference
|
||||
android:key="select_webview_provider"
|
||||
android:title="@string/select_webview_provider_title"
|
||||
android:dialogTitle="@string/select_webview_provider_dialog_title"
|
||||
android:summary="%s" />
|
||||
|
||||
<PreferenceCategory android:key="debug_debugging_category"
|
||||
android:title="@string/debug_debugging_category">
|
||||
|
||||
|
@@ -72,6 +72,8 @@ import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.accessibility.AccessibilityManager;
|
||||
import android.webkit.IWebViewUpdateService;
|
||||
import android.webkit.WebViewProviderInfo;
|
||||
import android.widget.Switch;
|
||||
import android.widget.TextView;
|
||||
|
||||
@@ -110,6 +112,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
|
||||
private static final String ENABLE_TERMINAL = "enable_terminal";
|
||||
private static final String KEEP_SCREEN_ON = "keep_screen_on";
|
||||
private static final String BT_HCI_SNOOP_LOG = "bt_hci_snoop_log";
|
||||
private static final String WEBVIEW_PROVIDER_KEY = "select_webview_provider";
|
||||
private static final String ENABLE_OEM_UNLOCK = "oem_unlock_enable";
|
||||
private static final String HDCP_CHECKING_KEY = "hdcp_checking";
|
||||
private static final String HDCP_CHECKING_PROPERTY = "persist.sys.hdcp_checking";
|
||||
@@ -253,6 +256,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
|
||||
private ListPreference mAnimatorDurationScale;
|
||||
private ListPreference mOverlayDisplayDevices;
|
||||
private ListPreference mOpenGLTraces;
|
||||
private ListPreference mWebViewProvider;
|
||||
|
||||
private ListPreference mSimulateColorSpace;
|
||||
|
||||
@@ -389,6 +393,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
|
||||
mMobileDataAlwaysOn = findAndInitSwitchPref(MOBILE_DATA_ALWAYS_ON);
|
||||
mLogdSize = addListPreference(SELECT_LOGD_SIZE_KEY);
|
||||
mUsbConfiguration = addListPreference(USB_CONFIGURATION_KEY);
|
||||
mWebViewProvider = addListPreference(WEBVIEW_PROVIDER_KEY);
|
||||
|
||||
mWindowAnimationScale = addListPreference(WINDOW_ANIMATION_SCALE_KEY);
|
||||
mTransitionAnimationScale = addListPreference(TRANSITION_ANIMATION_SCALE_KEY);
|
||||
@@ -461,6 +466,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
|
||||
removePreference(KEY_COLOR_MODE);
|
||||
mColorModePreference = null;
|
||||
}
|
||||
updateWebViewProviderOptions();
|
||||
}
|
||||
|
||||
private ListPreference addListPreference(String prefKey) {
|
||||
@@ -669,6 +675,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
|
||||
updateSimulateColorSpace();
|
||||
updateUSBAudioOptions();
|
||||
updateForceResizableOptions();
|
||||
updateWebViewProviderOptions();
|
||||
}
|
||||
|
||||
private void resetDangerousOptions() {
|
||||
@@ -697,6 +704,35 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
|
||||
pokeSystemProperties();
|
||||
}
|
||||
|
||||
private void updateWebViewProviderOptions() {
|
||||
IWebViewUpdateService webViewUpdateService =
|
||||
IWebViewUpdateService.Stub.asInterface(ServiceManager.getService("webviewupdate"));
|
||||
try {
|
||||
WebViewProviderInfo[] providers = webViewUpdateService.getValidWebViewPackages();
|
||||
String[] options = new String[providers.length];
|
||||
String[] values = new String[providers.length];
|
||||
for(int n = 0; n < providers.length; n++) {
|
||||
options[n] = providers[n].description;
|
||||
values[n] = providers[n].packageName;
|
||||
}
|
||||
mWebViewProvider.setEntries(options);
|
||||
mWebViewProvider.setEntryValues(values);
|
||||
|
||||
String value = webViewUpdateService.getCurrentWebViewPackageName();
|
||||
if (value == null) {
|
||||
value = "";
|
||||
}
|
||||
|
||||
for (int i = 0; i < values.length; i++) {
|
||||
if (value.contentEquals(values[i])) {
|
||||
mWebViewProvider.setValueIndex(i);
|
||||
return;
|
||||
}
|
||||
}
|
||||
} catch(RemoteException e) {
|
||||
}
|
||||
}
|
||||
|
||||
private void updateHdcpValues() {
|
||||
ListPreference hdcpChecking = (ListPreference) findPreference(HDCP_CHECKING_KEY);
|
||||
if (hdcpChecking != null) {
|
||||
@@ -736,6 +772,18 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
|
||||
mBtHciSnoopLog.isChecked() ? 1 : 0);
|
||||
}
|
||||
|
||||
private void writeWebViewProviderOptions(Object newValue) {
|
||||
IWebViewUpdateService webViewUpdateService =
|
||||
IWebViewUpdateService.Stub.asInterface(ServiceManager.getService("webviewupdate"));
|
||||
|
||||
try {
|
||||
webViewUpdateService.changeProviderAndSetting(
|
||||
newValue == null ? "" : newValue.toString());
|
||||
updateWebViewProviderOptions();
|
||||
} catch(RemoteException e) {
|
||||
}
|
||||
}
|
||||
|
||||
private void writeDebuggerOptions() {
|
||||
try {
|
||||
ActivityManagerNative.getDefault().setDebugApp(
|
||||
@@ -1754,6 +1802,9 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
|
||||
updateHdcpValues();
|
||||
pokeSystemProperties();
|
||||
return true;
|
||||
} else if (preference == mWebViewProvider) {
|
||||
writeWebViewProviderOptions(newValue);
|
||||
return true;
|
||||
} else if (preference == mLogdSize) {
|
||||
writeLogdSizeOption(newValue);
|
||||
return true;
|
||||
|
Reference in New Issue
Block a user