Only show "reset app preference" actionbar menu in app info
Because it doesn't make sense to show it in other types of app list view. Change-Id: Ia4f84812a6f0acc434f770b026e5ed550714087a Fix: 36110694 Test: robotests
This commit is contained in:
@@ -625,7 +625,6 @@ public class ManageApplications extends InstrumentedPreferenceFragment
|
|||||||
if (mOptionsMenu == null) {
|
if (mOptionsMenu == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final Context context = getActivity();
|
|
||||||
mOptionsMenu.findItem(R.id.advanced).setVisible(false);
|
mOptionsMenu.findItem(R.id.advanced).setVisible(false);
|
||||||
|
|
||||||
mOptionsMenu.findItem(R.id.sort_order_alpha).setVisible(mListType == LIST_TYPE_STORAGE
|
mOptionsMenu.findItem(R.id.sort_order_alpha).setVisible(mListType == LIST_TYPE_STORAGE
|
||||||
@@ -637,6 +636,8 @@ public class ManageApplications extends InstrumentedPreferenceFragment
|
|||||||
&& mListType != LIST_TYPE_HIGH_POWER);
|
&& mListType != LIST_TYPE_HIGH_POWER);
|
||||||
mOptionsMenu.findItem(R.id.hide_system).setVisible(mShowSystem
|
mOptionsMenu.findItem(R.id.hide_system).setVisible(mShowSystem
|
||||||
&& mListType != LIST_TYPE_HIGH_POWER);
|
&& mListType != LIST_TYPE_HIGH_POWER);
|
||||||
|
|
||||||
|
mOptionsMenu.findItem(R.id.reset_app_preferences).setVisible(mListType == LIST_TYPE_MAIN);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -20,26 +20,33 @@ import android.app.Activity;
|
|||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
|
import android.view.Menu;
|
||||||
|
import android.view.MenuItem;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.android.settings.R;
|
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;
|
||||||
import com.android.settings.core.lifecycle.Lifecycle;
|
import com.android.settings.core.lifecycle.Lifecycle;
|
||||||
import com.android.settings.testutils.shadow.ShadowDynamicIndexableContentMonitor;
|
|
||||||
import com.android.settings.testutils.shadow.SettingsShadowResources;
|
import com.android.settings.testutils.shadow.SettingsShadowResources;
|
||||||
import com.android.settings.testutils.shadow.SettingsShadowResources.SettingsShadowTheme;
|
import com.android.settings.testutils.shadow.SettingsShadowResources.SettingsShadowTheme;
|
||||||
|
import com.android.settings.testutils.shadow.ShadowDynamicIndexableContentMonitor;
|
||||||
import com.android.settings.testutils.shadow.ShadowEventLogWriter;
|
import com.android.settings.testutils.shadow.ShadowEventLogWriter;
|
||||||
import com.android.settingslib.applications.ApplicationsState;
|
import com.android.settingslib.applications.ApplicationsState;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
|
import org.robolectric.fakes.RoboMenuItem;
|
||||||
import org.robolectric.util.ReflectionHelpers;
|
import org.robolectric.util.ReflectionHelpers;
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static org.mockito.Matchers.any;
|
import static org.mockito.Matchers.any;
|
||||||
|
import static org.mockito.Matchers.anyInt;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
@@ -59,16 +66,20 @@ import static org.mockito.Mockito.when;
|
|||||||
})
|
})
|
||||||
public class ManageApplicationsTest {
|
public class ManageApplicationsTest {
|
||||||
|
|
||||||
@Mock private ApplicationsState mState;
|
@Mock
|
||||||
@Mock private ApplicationsState.Session mSession;
|
private ApplicationsState mState;
|
||||||
|
@Mock
|
||||||
|
private ApplicationsState.Session mSession;
|
||||||
|
@Mock
|
||||||
|
private Menu mMenu;
|
||||||
|
private MenuItem mAppReset;
|
||||||
private Looper mBgLooper;
|
private Looper mBgLooper;
|
||||||
private ManageApplications mFragment;
|
private ManageApplications mFragment;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
|
mAppReset = new RoboMenuItem(R.id.reset_app_preferences);
|
||||||
ReflectionHelpers.setStaticField(ApplicationsState.class, "sInstance", mState);
|
ReflectionHelpers.setStaticField(ApplicationsState.class, "sInstance", mState);
|
||||||
when(mState.newSession(any())).thenReturn(mSession);
|
when(mState.newSession(any())).thenReturn(mSession);
|
||||||
mBgLooper = Looper.myLooper();
|
mBgLooper = Looper.myLooper();
|
||||||
@@ -94,10 +105,41 @@ public class ManageApplicationsTest {
|
|||||||
ManageApplications fragment = mock(ManageApplications.class);
|
ManageApplications fragment = mock(ManageApplications.class);
|
||||||
when(fragment.getActivity()).thenReturn(mock(Activity.class));
|
when(fragment.getActivity()).thenReturn(mock(Activity.class));
|
||||||
final ManageApplications.ApplicationsAdapter adapter =
|
final ManageApplications.ApplicationsAdapter adapter =
|
||||||
new ManageApplications.ApplicationsAdapter(mState, fragment, 0);
|
new ManageApplications.ApplicationsAdapter(mState, fragment, 0);
|
||||||
|
|
||||||
adapter.updateDisableView(view, info);
|
adapter.updateDisableView(view, info);
|
||||||
|
|
||||||
verify(view).setText(R.string.disabled);
|
verify(view).setText(R.string.disabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updateMenu_mainListType_showAppReset() {
|
||||||
|
setUpOptionMenus();
|
||||||
|
ReflectionHelpers.setField(mFragment, "mListType", ManageApplications.LIST_TYPE_MAIN);
|
||||||
|
ReflectionHelpers.setField(mFragment, "mOptionsMenu", mMenu);
|
||||||
|
|
||||||
|
mFragment.updateOptionsMenu();
|
||||||
|
assertThat(mMenu.findItem(R.id.reset_app_preferences).isVisible()).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updateMenu_batteryListType_hideAppReset() {
|
||||||
|
setUpOptionMenus();
|
||||||
|
ReflectionHelpers.setField(mFragment, "mListType", ManageApplications.LIST_TYPE_HIGH_POWER);
|
||||||
|
ReflectionHelpers.setField(mFragment, "mOptionsMenu", mMenu);
|
||||||
|
|
||||||
|
mFragment.updateOptionsMenu();
|
||||||
|
assertThat(mMenu.findItem(R.id.reset_app_preferences).isVisible()).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setUpOptionMenus() {
|
||||||
|
when(mMenu.findItem(anyInt())).thenAnswer(invocation -> {
|
||||||
|
final Object[] args = invocation.getArguments();
|
||||||
|
final int id = (int) args[0];
|
||||||
|
if (id == mAppReset.getItemId()) {
|
||||||
|
return mAppReset;
|
||||||
|
}
|
||||||
|
return new RoboMenuItem(id);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user