Add a new feature flag for the expand button in support lib.

- check the feature flag to determine whether to use the existing
progressive disclosure mixin or use the expand button in the support
library.
- add corresponding preference xml files that add the new preference
group attribute to use with the expand button in the support lib.

Bug: 63985174
Test: make RunSettingsRoboTests
Change-Id: Ida6eb6182a8066ad1413b7f6142512345fd914d0
This commit is contained in:
Doris Ling
2017-09-14 18:54:48 -07:00
parent fe18f8e876
commit 6f60cddc9e
14 changed files with 570 additions and 11 deletions

View File

@@ -2,8 +2,11 @@ package com.android.settings;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.mock;
import android.content.Context;
import com.android.settings.dashboard.ProgressiveDisclosureMixin;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.XmlTestUtils;
import com.android.settings.testutils.shadow.ShadowPowerManagerWrapper;
@@ -13,6 +16,7 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.util.ReflectionHelpers;
import java.util.ArrayList;
import java.util.List;
@@ -25,9 +29,9 @@ public class DisplaySettingsTest {
@Config(shadows = ShadowPowerManagerWrapper.class)
public void testPreferenceControllers_getPreferenceKeys_existInPreferenceScreen() {
final Context context = RuntimeEnvironment.application;
// PowerManager wrapper = mock(PowerManager.class);
// doReturn(wrapper).when(context).getSystemService(Context.POWER_SERVICE);
final DisplaySettings fragment = new DisplaySettings();
ReflectionHelpers.setField(fragment, "mProgressiveDisclosureMixin",
mock(ProgressiveDisclosureMixin.class));
final List<String> preferenceScreenKeys = XmlTestUtils.getKeysFromPreferenceXml(context,
fragment.getPreferenceScreenResId());
final List<String> preferenceKeys = new ArrayList<>();

View File

@@ -19,6 +19,8 @@ package com.android.settings.applications;
import android.content.Context;
import android.os.UserManager;
import com.android.settings.dashboard.ProgressiveDisclosureMixin;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
import com.android.settings.testutils.XmlTestUtils;
@@ -27,6 +29,7 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.util.ReflectionHelpers;
import java.util.List;
@@ -47,7 +50,10 @@ public class AppAndNotificationDashboardFragmentTest {
when(context.getSystemService(Context.USER_SERVICE)).thenReturn(manager);
final List<String> niks = AppAndNotificationDashboardFragment.SEARCH_INDEX_DATA_PROVIDER
.getNonIndexableKeys(context);
final int xmlId = (new AppAndNotificationDashboardFragment()).getPreferenceScreenResId();
AppAndNotificationDashboardFragment fragment = new AppAndNotificationDashboardFragment();
ReflectionHelpers.setField(fragment, "mProgressiveDisclosureMixin",
mock(ProgressiveDisclosureMixin.class));
final int xmlId = fragment.getPreferenceScreenResId();
final List<String> keys = XmlTestUtils.getKeysFromPreferenceXml(context, xmlId);

View File

@@ -26,7 +26,9 @@ import com.android.settings.R;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.SettingsShadowSystemProperties;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -39,6 +41,7 @@ import org.robolectric.util.ReflectionHelpers;
import java.util.List;
import static android.util.FeatureFlagUtils.FFLAG_PREFIX;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.nullable;
@@ -53,7 +56,8 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION,
shadows = {SettingsShadowSystemProperties.class})
public class ProgressiveDisclosureTest {
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
@@ -80,6 +84,25 @@ public class ProgressiveDisclosureTest {
mPreference.setKey("test");
}
@After
public void tearDown() {
SettingsShadowSystemProperties.clear();
}
@Test
public void systemPropertySetForNewAdvancedButtonFeature_verifyIsDisabled() {
SettingsShadowSystemProperties.set(
FFLAG_PREFIX + ProgressiveDisclosureMixin.FEATURE_FLAG_NEW_ADVANCE_BUTTON, "true");
assertThat(mMixin.isEnabled()).isFalse();
}
@Test
public void systemPropertyNotSet_verifyIsDisabled() {
SettingsShadowSystemProperties.set(
FFLAG_PREFIX + ProgressiveDisclosureMixin.FEATURE_FLAG_NEW_ADVANCE_BUTTON, "false");
assertThat(mMixin.isEnabled()).isTrue();
}
@Test
public void shouldNotCollapse_lessPreferenceThanLimit() {
when(mScreen.getPreferenceCount()).thenReturn(5);

View File

@@ -43,6 +43,7 @@ import android.view.textservice.TextServicesManager;
import com.android.settings.R;
import com.android.settings.TestConfig;
import com.android.settings.dashboard.ProgressiveDisclosureMixin;
import com.android.settings.dashboard.SummaryLoader;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.XmlTestUtils;
@@ -59,6 +60,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.util.ReflectionHelpers;
import java.util.ArrayList;
import java.util.List;
@@ -101,6 +103,9 @@ public class LanguageAndInputSettingsTest {
@Test
public void testGetPreferenceScreenResId() {
ProgressiveDisclosureMixin progessiveMixin = mock(ProgressiveDisclosureMixin.class);
when(progessiveMixin.isEnabled()).thenReturn(true);
ReflectionHelpers.setField(mFragment, "mProgressiveDisclosureMixin", progessiveMixin);
assertThat(mFragment.getPreferenceScreenResId()).isEqualTo(R.xml.language_and_input);
}
@@ -167,7 +172,10 @@ public class LanguageAndInputSettingsTest {
.getBoolean(com.android.internal.R.bool.config_supportSystemNavigationKeys);
final List<String> niks = LanguageAndInputSettings.SEARCH_INDEX_DATA_PROVIDER
.getNonIndexableKeys(context);
final int xmlId = (new LanguageAndInputSettings()).getPreferenceScreenResId();
LanguageAndInputSettings settings = new LanguageAndInputSettings();
ReflectionHelpers.setField(settings, "mProgressiveDisclosureMixin",
mock(ProgressiveDisclosureMixin.class));
final int xmlId = settings.getPreferenceScreenResId();
final List<String> keys = XmlTestUtils.getKeysFromPreferenceXml(context, xmlId);
@@ -178,6 +186,8 @@ public class LanguageAndInputSettingsTest {
public void testPreferenceControllers_getPreferenceKeys_existInPreferenceScreen() {
final Context context = RuntimeEnvironment.application;
final LanguageAndInputSettings fragment = new LanguageAndInputSettings();
ReflectionHelpers.setField(fragment, "mProgressiveDisclosureMixin",
mock(ProgressiveDisclosureMixin.class));
final List<String> preferenceScreenKeys = XmlTestUtils.getKeysFromPreferenceXml(context,
fragment.getPreferenceScreenResId());
final List<String> preferenceKeys = new ArrayList<>();

View File

@@ -21,6 +21,7 @@ import android.content.Context;
import android.media.AudioManager;
import android.os.UserManager;
import com.android.settings.R;
import com.android.settings.dashboard.ProgressiveDisclosureMixin;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
import com.android.settings.testutils.XmlTestUtils;
@@ -30,6 +31,7 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.util.ReflectionHelpers;
import java.util.List;
@@ -59,7 +61,10 @@ public class SoundSettingsTest {
final List<String> niks = SoundSettings.SEARCH_INDEX_DATA_PROVIDER
.getNonIndexableKeys(context);
final int xmlId = (new SoundSettings()).getPreferenceScreenResId();
SoundSettings settings = new SoundSettings();
ReflectionHelpers.setField(settings, "mProgressiveDisclosureMixin",
mock(ProgressiveDisclosureMixin.class));
final int xmlId = settings.getPreferenceScreenResId();
final List<String> keys = XmlTestUtils.getKeysFromPreferenceXml(context, xmlId);
keys.addAll(XmlTestUtils.getKeysFromPreferenceXml(context,
R.xml.zen_mode_settings));