diff --git a/src/com/android/settings/applications/ManageApplications.java b/src/com/android/settings/applications/ManageApplications.java index db72fceaebe..c916240ba56 100644 --- a/src/com/android/settings/applications/ManageApplications.java +++ b/src/com/android/settings/applications/ManageApplications.java @@ -31,6 +31,7 @@ import android.os.LocaleList; import android.os.UserHandle; import android.os.UserManager; import android.preference.PreferenceFrameLayout; +import android.support.annotation.VisibleForTesting; import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; @@ -52,6 +53,7 @@ import android.widget.ListView; import android.widget.SectionIndexer; import android.widget.Spinner; +import android.widget.TextView; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.AppHeader; import com.android.settings.R; @@ -1284,15 +1286,7 @@ public class ManageApplications extends InstrumentedPreferenceFragment holder.appIcon.setImageDrawable(entry.icon); } updateSummary(holder); - if ((entry.info.flags & ApplicationInfo.FLAG_INSTALLED) == 0) { - holder.disabled.setVisibility(View.VISIBLE); - holder.disabled.setText(R.string.not_installed); - } else if (!entry.info.enabled) { - holder.disabled.setVisibility(View.VISIBLE); - holder.disabled.setText(R.string.disabled); - } else { - holder.disabled.setVisibility(View.GONE); - } + updateDisableView(holder.disabled, entry.info); } convertView.setEnabled(isEnabled(position)); } @@ -1302,6 +1296,20 @@ public class ManageApplications extends InstrumentedPreferenceFragment return convertView; } + @VisibleForTesting + void updateDisableView(TextView view, ApplicationInfo info) { + if ((info.flags & ApplicationInfo.FLAG_INSTALLED) == 0) { + view.setVisibility(View.VISIBLE); + view.setText(R.string.not_installed); + } else if (!info.enabled || info.enabledSetting + == PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED) { + view.setVisibility(View.VISIBLE); + view.setText(R.string.disabled); + } else { + view.setVisibility(View.GONE); + } + } + private void updateSummary(AppViewHolder holder) { switch (mManageApplications.mListType) { case LIST_TYPE_NOTIFICATION: diff --git a/tests/robotests/src/com/android/settings/applications/ManageApplicationsTest.java b/tests/robotests/src/com/android/settings/applications/ManageApplicationsTest.java index 8729d8409eb..871b5a0316a 100644 --- a/tests/robotests/src/com/android/settings/applications/ManageApplicationsTest.java +++ b/tests/robotests/src/com/android/settings/applications/ManageApplicationsTest.java @@ -16,8 +16,12 @@ package com.android.settings.applications; +import android.app.Activity; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageManager; import android.os.Looper; -import android.os.UserManager; +import android.widget.TextView; +import com.android.settings.R; import com.android.settings.Settings; import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; @@ -36,6 +40,8 @@ import org.robolectric.annotation.Config; import org.robolectric.util.ReflectionHelpers; import static org.mockito.Matchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; /** @@ -55,7 +61,6 @@ public class ManageApplicationsTest { @Mock private ApplicationsState mState; @Mock private ApplicationsState.Session mSession; - @Mock private UserManager mUserManager; private Looper mBgLooper; private ManageApplications mFragment; @@ -78,4 +83,21 @@ public class ManageApplicationsTest { SettingsRobolectricTestRunner.startSettingsFragment( mFragment, Settings.ManageApplicationsActivity.class); } + + @Test + public void updateDisableView_appDisabledUntilUsed_shouldSetDisabled() { + final TextView view = mock(TextView.class); + final ApplicationInfo info = new ApplicationInfo(); + info.flags = ApplicationInfo.FLAG_INSTALLED; + info.enabled = true; + info.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED; + ManageApplications fragment = mock(ManageApplications.class); + when(fragment.getActivity()).thenReturn(mock(Activity.class)); + final ManageApplications.ApplicationsAdapter adapter = + new ManageApplications.ApplicationsAdapter(mState, fragment, 0); + + adapter.updateDisableView(view, info); + + verify(view).setText(R.string.disabled); + } }