Merge "Show current WebView package as selected in Dev Setting."

This commit is contained in:
TreeHugger Robot
2017-01-25 19:10:35 +00:00
committed by Android (Google) Code Review
3 changed files with 18 additions and 5 deletions

View File

@@ -16,8 +16,10 @@ package com.android.settings.webview;
import android.content.Context; import android.content.Context;
import android.content.pm.ApplicationInfo; import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.os.RemoteException; import android.os.RemoteException;
import android.graphics.Color;
import android.support.annotation.VisibleForTesting; import android.support.annotation.VisibleForTesting;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@@ -36,6 +38,7 @@ import java.util.List;
*/ */
class WebViewAppListAdapter extends ArrayAdapter<WebViewApplicationInfo> { class WebViewAppListAdapter extends ArrayAdapter<WebViewApplicationInfo> {
private final LayoutInflater mInflater; private final LayoutInflater mInflater;
private final String mCurrentWebViewPackageName;
public WebViewAppListAdapter(Context context, public WebViewAppListAdapter(Context context,
WebViewUpdateServiceWrapper webviewUpdateServiceWrapper) { WebViewUpdateServiceWrapper webviewUpdateServiceWrapper) {
@@ -53,6 +56,10 @@ class WebViewAppListAdapter extends ArrayAdapter<WebViewApplicationInfo> {
packageInfoList.add(info); packageInfoList.add(info);
} }
addAll(packageInfoList); addAll(packageInfoList);
PackageInfo currentWebViewPackage = webviewUpdateServiceWrapper.getCurrentWebViewPackage();
mCurrentWebViewPackageName =
currentWebViewPackage == null ? null : currentWebViewPackage.packageName;
} }
@Override @Override
@@ -80,6 +87,11 @@ class WebViewAppListAdapter extends ArrayAdapter<WebViewApplicationInfo> {
holder.disabled.setVisibility(View.GONE); holder.disabled.setVisibility(View.GONE);
// Only allow a package to be chosen if it is enabled and installed for all users. // Only allow a package to be chosen if it is enabled and installed for all users.
convertView.setEnabled(isEnabled(position)); convertView.setEnabled(isEnabled(position));
if (info.info.packageName.equals(mCurrentWebViewPackageName)) {
convertView.setBackgroundColor(Color.GRAY);
} else {
convertView.setBackgroundColor(Color.WHITE);
}
return convertView; return convertView;
} }

View File

@@ -73,9 +73,10 @@ public class WebViewAppPreferenceController extends PreferenceController {
* Handle the return-value from the WebViewAppPicker Activity. * Handle the return-value from the WebViewAppPicker Activity.
*/ */
public void onActivityResult(int resultCode, Intent data) { public void onActivityResult(int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) { // Update the preference summary no matter whether we succeeded to change the webview
updateState(null); // implementation correctly - we might have changed implementation to one the user did not
} // choose.
updateState(null);
} }
private String getCurrentWebViewPackageLabel(Context context) { private String getCurrentWebViewPackageLabel(Context context) {

View File

@@ -70,7 +70,7 @@ public class WebViewAppPreferenceControllerTest {
verify(controller, times(1)).updateState(any()); verify(controller, times(1)).updateState(any());
} }
@Test public void testOnActivityResultWithFailureDoesNothing() { @Test public void testOnActivityResultWithFailure() {
WebViewUpdateServiceWrapper wvusWrapper = mock(WebViewUpdateServiceWrapper.class); WebViewUpdateServiceWrapper wvusWrapper = mock(WebViewUpdateServiceWrapper.class);
WebViewAppPreferenceController controller = WebViewAppPreferenceController controller =
@@ -78,6 +78,6 @@ public class WebViewAppPreferenceControllerTest {
controller.displayPreference(mPreferenceScreen); // Makes sure Preference is non-null controller.displayPreference(mPreferenceScreen); // Makes sure Preference is non-null
controller.onActivityResult(Activity.RESULT_CANCELED, new Intent(DEFAULT_PACKAGE_NAME)); controller.onActivityResult(Activity.RESULT_CANCELED, new Intent(DEFAULT_PACKAGE_NAME));
verify(controller, never()).updateState(any()); verify(controller, times(1)).updateState(any());
} }
} }