Merge "Add WebView provider setting to developer settings."

This commit is contained in:
Gustav Sennton
2015-12-14 14:33:55 +00:00
committed by Android (Google) Code Review
2 changed files with 57 additions and 0 deletions

View File

@@ -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">

View File

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