diff --git a/src/com/android/settings/webview/WebViewAppListAdapter.java b/src/com/android/settings/webview/WebViewAppListAdapter.java index 85dbf7c302a..4c36a475ccc 100644 --- a/src/com/android/settings/webview/WebViewAppListAdapter.java +++ b/src/com/android/settings/webview/WebViewAppListAdapter.java @@ -16,8 +16,10 @@ package com.android.settings.webview; import android.content.Context; import android.content.pm.ApplicationInfo; +import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.RemoteException; +import android.graphics.Color; import android.support.annotation.VisibleForTesting; import android.view.LayoutInflater; import android.view.View; @@ -36,6 +38,7 @@ import java.util.List; */ class WebViewAppListAdapter extends ArrayAdapter { private final LayoutInflater mInflater; + private final String mCurrentWebViewPackageName; public WebViewAppListAdapter(Context context, WebViewUpdateServiceWrapper webviewUpdateServiceWrapper) { @@ -53,6 +56,10 @@ class WebViewAppListAdapter extends ArrayAdapter { packageInfoList.add(info); } addAll(packageInfoList); + + PackageInfo currentWebViewPackage = webviewUpdateServiceWrapper.getCurrentWebViewPackage(); + mCurrentWebViewPackageName = + currentWebViewPackage == null ? null : currentWebViewPackage.packageName; } @Override @@ -80,6 +87,11 @@ class WebViewAppListAdapter extends ArrayAdapter { holder.disabled.setVisibility(View.GONE); // Only allow a package to be chosen if it is enabled and installed for all users. convertView.setEnabled(isEnabled(position)); + if (info.info.packageName.equals(mCurrentWebViewPackageName)) { + convertView.setBackgroundColor(Color.GRAY); + } else { + convertView.setBackgroundColor(Color.WHITE); + } return convertView; } diff --git a/src/com/android/settings/webview/WebViewAppPreferenceController.java b/src/com/android/settings/webview/WebViewAppPreferenceController.java index eb5467a3428..cfb358ed85f 100644 --- a/src/com/android/settings/webview/WebViewAppPreferenceController.java +++ b/src/com/android/settings/webview/WebViewAppPreferenceController.java @@ -73,9 +73,10 @@ public class WebViewAppPreferenceController extends PreferenceController { * Handle the return-value from the WebViewAppPicker Activity. */ public void onActivityResult(int resultCode, Intent data) { - if (resultCode == Activity.RESULT_OK) { - updateState(null); - } + // Update the preference summary no matter whether we succeeded to change the webview + // implementation correctly - we might have changed implementation to one the user did not + // choose. + updateState(null); } private String getCurrentWebViewPackageLabel(Context context) { diff --git a/tests/robotests/src/com/android/settings/webview/WebViewAppPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/webview/WebViewAppPreferenceControllerTest.java index c16bd1f472f..e0a32a4c3fd 100644 --- a/tests/robotests/src/com/android/settings/webview/WebViewAppPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/webview/WebViewAppPreferenceControllerTest.java @@ -70,7 +70,7 @@ public class WebViewAppPreferenceControllerTest { verify(controller, times(1)).updateState(any()); } - @Test public void testOnActivityResultWithFailureDoesNothing() { + @Test public void testOnActivityResultWithFailure() { WebViewUpdateServiceWrapper wvusWrapper = mock(WebViewUpdateServiceWrapper.class); WebViewAppPreferenceController controller = @@ -78,6 +78,6 @@ public class WebViewAppPreferenceControllerTest { controller.displayPreference(mPreferenceScreen); // Makes sure Preference is non-null controller.onActivityResult(Activity.RESULT_CANCELED, new Intent(DEFAULT_PACKAGE_NAME)); - verify(controller, never()).updateState(any()); + verify(controller, times(1)).updateState(any()); } }