Fix issue with app info summary for diasbled app.
- also check the component enable state to determine whether an app is really enabled or not. Change-Id: I8075ec9253b9136c58fc206e10b10f77b1efe6c2 Fix: 35673125 Test: make RunSettingsRoboTests
This commit is contained in:
@@ -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:
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user