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.UserHandle;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
import android.preference.PreferenceFrameLayout;
|
import android.preference.PreferenceFrameLayout;
|
||||||
|
import android.support.annotation.VisibleForTesting;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
@@ -52,6 +53,7 @@ import android.widget.ListView;
|
|||||||
import android.widget.SectionIndexer;
|
import android.widget.SectionIndexer;
|
||||||
import android.widget.Spinner;
|
import android.widget.Spinner;
|
||||||
|
|
||||||
|
import android.widget.TextView;
|
||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||||
import com.android.settings.AppHeader;
|
import com.android.settings.AppHeader;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
@@ -1284,15 +1286,7 @@ public class ManageApplications extends InstrumentedPreferenceFragment
|
|||||||
holder.appIcon.setImageDrawable(entry.icon);
|
holder.appIcon.setImageDrawable(entry.icon);
|
||||||
}
|
}
|
||||||
updateSummary(holder);
|
updateSummary(holder);
|
||||||
if ((entry.info.flags & ApplicationInfo.FLAG_INSTALLED) == 0) {
|
updateDisableView(holder.disabled, entry.info);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
convertView.setEnabled(isEnabled(position));
|
convertView.setEnabled(isEnabled(position));
|
||||||
}
|
}
|
||||||
@@ -1302,6 +1296,20 @@ public class ManageApplications extends InstrumentedPreferenceFragment
|
|||||||
return convertView;
|
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) {
|
private void updateSummary(AppViewHolder holder) {
|
||||||
switch (mManageApplications.mListType) {
|
switch (mManageApplications.mListType) {
|
||||||
case LIST_TYPE_NOTIFICATION:
|
case LIST_TYPE_NOTIFICATION:
|
||||||
|
@@ -16,8 +16,12 @@
|
|||||||
|
|
||||||
package com.android.settings.applications;
|
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.Looper;
|
||||||
import android.os.UserManager;
|
import android.widget.TextView;
|
||||||
|
import com.android.settings.R;
|
||||||
import com.android.settings.Settings;
|
import com.android.settings.Settings;
|
||||||
import com.android.settings.SettingsRobolectricTestRunner;
|
import com.android.settings.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
@@ -36,6 +40,8 @@ import org.robolectric.annotation.Config;
|
|||||||
import org.robolectric.util.ReflectionHelpers;
|
import org.robolectric.util.ReflectionHelpers;
|
||||||
|
|
||||||
import static org.mockito.Matchers.any;
|
import static org.mockito.Matchers.any;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -55,7 +61,6 @@ public class ManageApplicationsTest {
|
|||||||
|
|
||||||
@Mock private ApplicationsState mState;
|
@Mock private ApplicationsState mState;
|
||||||
@Mock private ApplicationsState.Session mSession;
|
@Mock private ApplicationsState.Session mSession;
|
||||||
@Mock private UserManager mUserManager;
|
|
||||||
|
|
||||||
private Looper mBgLooper;
|
private Looper mBgLooper;
|
||||||
private ManageApplications mFragment;
|
private ManageApplications mFragment;
|
||||||
@@ -78,4 +83,21 @@ public class ManageApplicationsTest {
|
|||||||
SettingsRobolectricTestRunner.startSettingsFragment(
|
SettingsRobolectricTestRunner.startSettingsFragment(
|
||||||
mFragment, Settings.ManageApplicationsActivity.class);
|
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