Loading res/xml/apps.xml +1 −3 Original line number Diff line number Diff line Loading @@ -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"> <Preference android:key="aspect_ratio_apps" Loading src/com/android/settings/applications/AdvancedAppsPreferenceCategoryController.java 0 → 100644 +34 −0 Original line number Diff line number Diff line /* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.applications; import android.content.Context; import androidx.annotation.NonNull; import com.android.settings.widget.PreferenceCategoryController; /** * Preference category controller for Advanced category under Apps page */ public class AdvancedAppsPreferenceCategoryController extends PreferenceCategoryController { public AdvancedAppsPreferenceCategoryController(@NonNull Context context, @NonNull String preferenceKey) { super(context, preferenceKey); } } src/com/android/settings/applications/AppDashboardFragment.java +18 −0 Original line number Diff line number Diff line Loading @@ -20,9 +20,12 @@ import android.app.settings.SettingsEnums; import android.content.Context; import android.provider.SearchIndexableResource; import com.android.internal.annotations.VisibleForTesting; import com.android.settings.R; import com.android.settings.applications.appcompat.UserAspectRatioAppsPreferenceController; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.widget.PreferenceCategoryController; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.search.SearchIndexable; Loading @@ -35,11 +38,21 @@ import java.util.List; public class AppDashboardFragment extends DashboardFragment { private static final String TAG = "AppDashboardFragment"; private static final String ADVANCED_CATEGORY_KEY = "advanced_category"; private static final String ASPECT_RATIO_PREF_KEY = "aspect_ratio_apps"; private AppsPreferenceController mAppsPreferenceController; private static List<AbstractPreferenceController> buildPreferenceControllers(Context context) { final List<AbstractPreferenceController> 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; } Loading Loading @@ -75,6 +88,11 @@ public class AppDashboardFragment extends DashboardFragment { getSettingsLifecycle().addObserver(hibernatedAppsPreferenceController); } @VisibleForTesting PreferenceCategoryController getAdvancedAppsPreferenceCategoryController() { return use(AdvancedAppsPreferenceCategoryController.class); } @Override protected List<AbstractPreferenceController> createPreferenceControllers(Context context) { return buildPreferenceControllers(context); Loading tests/robotests/src/com/android/settings/applications/AppDashboardFragmentTest.java +31 −0 Original line number Diff line number Diff line Loading @@ -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 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; Loading @@ -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; Loading Loading @@ -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()); } } tests/unit/src/com/android/settings/applications/appcompat/UserAspectRatioManagerTest.java +0 −4 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.settings.applications.appcompat; import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_16_9; import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_4_3; import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_FULLSCREEN; import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_SPLIT_SCREEN; import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_UNSET; Loading Loading @@ -243,9 +242,6 @@ public class UserAspectRatioManagerTest { assertThat(mUtils.getUserMinAspectRatioEntry(USER_MIN_ASPECT_RATIO_SPLIT_SCREEN, mPackageName)).isEqualTo(ResourcesUtils.getResourcesString(mContext, "user_aspect_ratio_half_screen")); // R,string.user_aspect_ratio_4_3 assertThat(mUtils.getUserMinAspectRatioEntry(USER_MIN_ASPECT_RATIO_4_3, mPackageName)) .isEqualTo(ResourcesUtils.getResourcesString(mContext, "user_aspect_ratio_4_3")); assertThat(mUtils.getUserMinAspectRatioEntry(USER_MIN_ASPECT_RATIO_FULLSCREEN, mPackageName)).isEqualTo(ResourcesUtils.getResourcesString(mContext, "user_aspect_ratio_fullscreen")); Loading Loading
res/xml/apps.xml +1 −3 Original line number Diff line number Diff line Loading @@ -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"> <Preference android:key="aspect_ratio_apps" Loading
src/com/android/settings/applications/AdvancedAppsPreferenceCategoryController.java 0 → 100644 +34 −0 Original line number Diff line number Diff line /* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.applications; import android.content.Context; import androidx.annotation.NonNull; import com.android.settings.widget.PreferenceCategoryController; /** * Preference category controller for Advanced category under Apps page */ public class AdvancedAppsPreferenceCategoryController extends PreferenceCategoryController { public AdvancedAppsPreferenceCategoryController(@NonNull Context context, @NonNull String preferenceKey) { super(context, preferenceKey); } }
src/com/android/settings/applications/AppDashboardFragment.java +18 −0 Original line number Diff line number Diff line Loading @@ -20,9 +20,12 @@ import android.app.settings.SettingsEnums; import android.content.Context; import android.provider.SearchIndexableResource; import com.android.internal.annotations.VisibleForTesting; import com.android.settings.R; import com.android.settings.applications.appcompat.UserAspectRatioAppsPreferenceController; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.widget.PreferenceCategoryController; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.search.SearchIndexable; Loading @@ -35,11 +38,21 @@ import java.util.List; public class AppDashboardFragment extends DashboardFragment { private static final String TAG = "AppDashboardFragment"; private static final String ADVANCED_CATEGORY_KEY = "advanced_category"; private static final String ASPECT_RATIO_PREF_KEY = "aspect_ratio_apps"; private AppsPreferenceController mAppsPreferenceController; private static List<AbstractPreferenceController> buildPreferenceControllers(Context context) { final List<AbstractPreferenceController> 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; } Loading Loading @@ -75,6 +88,11 @@ public class AppDashboardFragment extends DashboardFragment { getSettingsLifecycle().addObserver(hibernatedAppsPreferenceController); } @VisibleForTesting PreferenceCategoryController getAdvancedAppsPreferenceCategoryController() { return use(AdvancedAppsPreferenceCategoryController.class); } @Override protected List<AbstractPreferenceController> createPreferenceControllers(Context context) { return buildPreferenceControllers(context); Loading
tests/robotests/src/com/android/settings/applications/AppDashboardFragmentTest.java +31 −0 Original line number Diff line number Diff line Loading @@ -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 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; Loading @@ -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; Loading Loading @@ -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()); } }
tests/unit/src/com/android/settings/applications/appcompat/UserAspectRatioManagerTest.java +0 −4 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.settings.applications.appcompat; import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_16_9; import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_4_3; import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_FULLSCREEN; import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_SPLIT_SCREEN; import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_UNSET; Loading Loading @@ -243,9 +242,6 @@ public class UserAspectRatioManagerTest { assertThat(mUtils.getUserMinAspectRatioEntry(USER_MIN_ASPECT_RATIO_SPLIT_SCREEN, mPackageName)).isEqualTo(ResourcesUtils.getResourcesString(mContext, "user_aspect_ratio_half_screen")); // R,string.user_aspect_ratio_4_3 assertThat(mUtils.getUserMinAspectRatioEntry(USER_MIN_ASPECT_RATIO_4_3, mPackageName)) .isEqualTo(ResourcesUtils.getResourcesString(mContext, "user_aspect_ratio_4_3")); assertThat(mUtils.getUserMinAspectRatioEntry(USER_MIN_ASPECT_RATIO_FULLSCREEN, mPackageName)).isEqualTo(ResourcesUtils.getResourcesString(mContext, "user_aspect_ratio_fullscreen")); Loading