diff --git a/res/xml/apps.xml b/res/xml/apps.xml index 85d187cbba3..c4313f645e4 100644 --- a/res/xml/apps.xml +++ b/res/xml/apps.xml @@ -111,9 +111,7 @@ android:key="advanced_category" android:title="@string/advanced_apps" android:order="21" - android:visibility="gone" - settings:searchable="false" - settings:controller="com.android.settings.widget.PreferenceCategoryController"> + settings:searchable="false"> buildPreferenceControllers(Context context) { final List controllers = new ArrayList<>(); controllers.add(new AppsPreferenceController(context)); + + final UserAspectRatioAppsPreferenceController aspectRatioAppsPreferenceController = + new UserAspectRatioAppsPreferenceController(context, ASPECT_RATIO_PREF_KEY); + final AdvancedAppsPreferenceCategoryController advancedCategoryController = + new AdvancedAppsPreferenceCategoryController(context, ADVANCED_CATEGORY_KEY); + advancedCategoryController.setChildren(List.of(aspectRatioAppsPreferenceController)); + controllers.add(advancedCategoryController); + return controllers; } @@ -75,6 +88,11 @@ public class AppDashboardFragment extends DashboardFragment { getSettingsLifecycle().addObserver(hibernatedAppsPreferenceController); } + @VisibleForTesting + PreferenceCategoryController getAdvancedAppsPreferenceCategoryController() { + return use(AdvancedAppsPreferenceCategoryController.class); + } + @Override protected List createPreferenceControllers(Context context) { return buildPreferenceControllers(context); diff --git a/tests/robotests/src/com/android/settings/applications/AppDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/applications/AppDashboardFragmentTest.java index 0eca43c66f6..51375162a0b 100644 --- a/tests/robotests/src/com/android/settings/applications/AppDashboardFragmentTest.java +++ b/tests/robotests/src/com/android/settings/applications/AppDashboardFragmentTest.java @@ -16,12 +16,24 @@ package com.android.settings.applications; +import static com.android.settings.core.BasePreferenceController.AVAILABLE; +import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE; + import static com.google.common.truth.Truth.assertThat; -import android.content.Context; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import android.content.Context; +import android.os.Bundle; + +import com.android.settings.applications.appcompat.UserAspectRatioAppsPreferenceController; import com.android.settings.testutils.XmlTestUtils; import com.android.settings.testutils.shadow.ShadowUserManager; +import com.android.settings.widget.PreferenceCategoryController; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.drawer.CategoryKey; @@ -31,6 +43,7 @@ import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; +import org.robolectric.shadows.androidx.fragment.FragmentController; import java.util.ArrayList; import java.util.List; @@ -66,4 +79,22 @@ public class AppDashboardFragmentTest { assertThat(preferenceScreenKeys).containsAtLeastElementsIn(preferenceKeys); } + + @Test + @Config(shadows = ShadowUserManager.class) + public void testAdvancedAppsCategory() { + AppDashboardFragment fragment = FragmentController.of(new AppDashboardFragment(), + new Bundle()).create().get(); + UserAspectRatioAppsPreferenceController controller = + mock(UserAspectRatioAppsPreferenceController.class); + final PreferenceCategoryController advancedController = + fragment.getAdvancedAppsPreferenceCategoryController(); + advancedController.setChildren(List.of(controller)); + + when(controller.getAvailabilityStatus()).thenReturn(AVAILABLE); + assertTrue(advancedController.isAvailable()); + + when(controller.getAvailabilityStatus()).thenReturn(CONDITIONALLY_UNAVAILABLE); + assertFalse(advancedController.isAvailable()); + } }