Loading src/com/android/settings/applications/ManageApplications.java +17 −9 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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)); } Loading @@ -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: Loading tests/robotests/src/com/android/settings/applications/ManageApplicationsTest.java +24 −2 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; /** Loading @@ -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; Loading @@ -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); } } Loading
src/com/android/settings/applications/ManageApplications.java +17 −9 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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)); } Loading @@ -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: Loading
tests/robotests/src/com/android/settings/applications/ManageApplicationsTest.java +24 −2 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; /** Loading @@ -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; Loading @@ -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); } }