WebView implementation Dev setting: Show the version number after name
Show the package version of each WebView implementation after their package name in the WebView Implementation Dev Setting. Showing a package version is useful for debugging purposes. Bug: 35621558 Test: run make RunSettingsRoboTests Test: Ensure package version is shown in titles of items in WebView Implementation Dev Setting. Change-Id: If195dd87aebeac1783600b7c9f376ff8e791c3be
This commit is contained in:
@@ -21,7 +21,9 @@ import static android.provider.Settings.ACTION_WEBVIEW_SETTINGS;
|
|||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
|
import android.content.pm.PackageItemInfo;
|
||||||
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageInfo;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.support.annotation.VisibleForTesting;
|
import android.support.annotation.VisibleForTesting;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
@@ -60,8 +62,8 @@ public class WebViewAppPicker extends DefaultAppPickerFragment {
|
|||||||
getWebViewUpdateServiceWrapper().getValidWebViewApplicationInfos(getContext());
|
getWebViewUpdateServiceWrapper().getValidWebViewApplicationInfos(getContext());
|
||||||
for (ApplicationInfo ai : pkgs) {
|
for (ApplicationInfo ai : pkgs) {
|
||||||
packageInfoList.add(createDefaultAppInfo(ai,
|
packageInfoList.add(createDefaultAppInfo(ai,
|
||||||
getDisabledReason(getWebViewUpdateServiceWrapper(),
|
getDisabledReason(getWebViewUpdateServiceWrapper(),
|
||||||
getContext(), ai.packageName)));
|
getContext(), ai.packageName)));
|
||||||
}
|
}
|
||||||
return packageInfoList;
|
return packageInfoList;
|
||||||
}
|
}
|
||||||
@@ -107,10 +109,26 @@ public class WebViewAppPicker extends DefaultAppPickerFragment {
|
|||||||
return MetricsEvent.WEBVIEW_IMPLEMENTATION;
|
return MetricsEvent.WEBVIEW_IMPLEMENTATION;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static class WebViewAppInfo extends DefaultAppInfo {
|
||||||
|
public WebViewAppInfo(PackageItemInfo packageItemInfo, String summary, boolean enabled) {
|
||||||
|
super(packageItemInfo, summary, enabled);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CharSequence loadLabel(PackageManager pm) {
|
||||||
|
String versionName = "";
|
||||||
|
try {
|
||||||
|
versionName = pm.getPackageInfo(packageItemInfo.packageName, 0).versionName;
|
||||||
|
} catch (PackageManager.NameNotFoundException e) {
|
||||||
|
}
|
||||||
|
return String.format("%s %s", super.loadLabel(pm), versionName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
DefaultAppInfo createDefaultAppInfo(
|
DefaultAppInfo createDefaultAppInfo(PackageItemInfo packageItemInfo, String disabledReason) {
|
||||||
ApplicationInfo applicationInfo, String disabledReason) {
|
return new WebViewAppInfo(packageItemInfo, disabledReason,
|
||||||
return new DefaultAppInfo(applicationInfo, disabledReason,
|
|
||||||
TextUtils.isEmpty(disabledReason) /* enabled */);
|
TextUtils.isEmpty(disabledReason) /* enabled */);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package com.android.settings.webview;
|
|||||||
import static android.provider.Settings.ACTION_WEBVIEW_SETTINGS;
|
import static android.provider.Settings.ACTION_WEBVIEW_SETTINGS;
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static org.mockito.Matchers.any;
|
import static org.mockito.Matchers.any;
|
||||||
|
import static org.mockito.Matchers.anyInt;
|
||||||
import static org.mockito.Matchers.eq;
|
import static org.mockito.Matchers.eq;
|
||||||
import static org.mockito.Mockito.doNothing;
|
import static org.mockito.Mockito.doNothing;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
@@ -33,9 +34,11 @@ import android.app.Activity;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
|
import android.content.pm.PackageInfo;
|
||||||
|
import android.content.pm.PackageItemInfo;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.content.pm.UserInfo;
|
import android.content.pm.UserInfo;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
import android.support.v7.preference.PreferenceManager;
|
|
||||||
|
|
||||||
import com.android.settings.SettingsRobolectricTestRunner;
|
import com.android.settings.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
@@ -325,4 +328,30 @@ public class WebViewAppPickerTest {
|
|||||||
assertThat(mPicker.getDisabledReason(wvusWrapper, mContext,
|
assertThat(mPicker.getDisabledReason(wvusWrapper, mContext,
|
||||||
DEFAULT_PACKAGE_NAME)).isEqualTo(EXPECTED_DISABLED_REASON);
|
DEFAULT_PACKAGE_NAME)).isEqualTo(EXPECTED_DISABLED_REASON);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ensure that the version name of a WebView package is displayed after its name in the
|
||||||
|
* preference title.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testWebViewVersionAddedAfterLabel() throws PackageManager.NameNotFoundException {
|
||||||
|
PackageItemInfo mockPackageItemInfo = mock(PackageItemInfo.class);
|
||||||
|
mockPackageItemInfo.packageName = DEFAULT_PACKAGE_NAME;
|
||||||
|
when(mockPackageItemInfo.loadLabel(any())).thenReturn("myPackage");
|
||||||
|
DefaultAppInfo webviewAppInfo = mPicker.createDefaultAppInfo(
|
||||||
|
mockPackageItemInfo, "" /* disabledReason */);
|
||||||
|
|
||||||
|
PackageInfo packageInfo = new PackageInfo();
|
||||||
|
packageInfo.versionName = "myVersionName";
|
||||||
|
PackageManager pm = mock(PackageManager.class);
|
||||||
|
when(pm.getPackageInfo(eq(DEFAULT_PACKAGE_NAME), anyInt())).thenReturn(packageInfo);
|
||||||
|
when(mPackageManager.getPackageManager()).thenReturn(pm);
|
||||||
|
|
||||||
|
RadioButtonPreference mockPreference = mock(RadioButtonPreference.class);
|
||||||
|
mPicker.configurePreferenceFromAppInfo(mockPreference,
|
||||||
|
DEFAULT_PACKAGE_NAME, webviewAppInfo, null, null);
|
||||||
|
|
||||||
|
verify(mockPreference, times(1)).setTitle(eq("myPackage myVersionName"));
|
||||||
|
verify(mockPreference, times(1)).setTitle(any());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user