Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aed31bb8 authored by Graciela Wissen Putri's avatar Graciela Wissen Putri Committed by Automerger Merge Worker
Browse files

Follow config overlay's order of aspect ratio options am: a0f573a3

parents 61c27c75 a0f573a3
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -28,7 +28,8 @@
        settings:searchable="false"/>

    <com.android.settingslib.widget.ActionButtonsPreference
        android:key="header_view" />
        android:key="header_view"
        android:order="-999"/>

    <com.android.settings.applications.appcompat.RadioWithImagePreference
        android:key="app_default_pref"
+3 −1
Original line number Diff line number Diff line
@@ -66,7 +66,8 @@ public class UserAspectRatioDetails extends AppInfoBase implements
    private static final String TAG = UserAspectRatioDetails.class.getSimpleName();

    private static final String KEY_HEADER_SUMMARY = "app_aspect_ratio_summary";
    private static final String KEY_HEADER_BUTTONS = "header_view";
    @VisibleForTesting
    static final String KEY_HEADER_BUTTONS = "header_view";

    private static final String KEY_PREF_HALF_SCREEN = "half_screen_pref";
    private static final String KEY_PREF_DISPLAY_SIZE = "display_size_pref";
@@ -237,6 +238,7 @@ public class UserAspectRatioDetails extends AppInfoBase implements
            return;
        }
        pref.setTitle(mUserAspectRatioManager.getAccessibleEntry(aspectRatio, mPackageName));
        pref.setOrder(getAspectRatioManager().getUserMinAspectRatioOrder(aspectRatio));
        pref.setOnClickListener(this);
        mKeyToAspectRatioMap.put(key, aspectRatio);
        mAspectRatioPreferences.add(pref);
+14 −1
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ import android.os.RemoteException;
import android.os.UserHandle;
import android.provider.DeviceConfig;
import android.util.ArrayMap;
import android.util.SparseIntArray;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -76,6 +77,7 @@ public class UserAspectRatioManager {
    /** Apps that have launcher entry defined in manifest */
    private final Map<Integer, String> mUserAspectRatioMap;
    private final Map<Integer, CharSequence> mUserAspectRatioA11yMap;
    private final SparseIntArray mUserAspectRatioOrder;

    public UserAspectRatioManager(@NonNull Context context) {
        this(context, AppGlobals.getPackageManager());
@@ -86,6 +88,7 @@ public class UserAspectRatioManager {
        mContext = context;
        mIPm = pm;
        mUserAspectRatioA11yMap = new ArrayMap<>();
        mUserAspectRatioOrder = new SparseIntArray();
        mUserAspectRatioMap = getUserMinAspectRatioMapping();
    }

@@ -152,6 +155,14 @@ public class UserAspectRatioManager {
        return getUserMinAspectRatioEntry(aspectRatio, packageName, userId);
    }

    /**
     * @return the order of the aspect ratio option corresponding to
     * config_userAspectRatioOverrideValues
     */
    int getUserMinAspectRatioOrder(@PackageManager.UserMinAspectRatio int option) {
        return mUserAspectRatioOrder.get(option);
    }

    /**
     * Whether user aspect ratio option is specified in
     * {@link R.array.config_userAspectRatioOverrideValues}
@@ -224,7 +235,6 @@ public class UserAspectRatioManager {
                && isFullscreenCompatChangeEnabled(pkgName, userId);
    }

    @VisibleForTesting
    boolean isFullscreenCompatChangeEnabled(String pkgName, int userId) {
        return CompatChanges.isChangeEnabled(
                OVERRIDE_ANY_ORIENTATION_TO_USER, pkgName, UserHandle.of(userId));
@@ -281,6 +291,7 @@ public class UserAspectRatioManager {
                        mUserAspectRatioA11yMap.put(aspectRatioVal, accessibleSequence);
                    }
                    userMinAspectRatioMap.put(aspectRatioVal, aspectRatioString);
                    mUserAspectRatioOrder.put(aspectRatioVal, i);
            }
        }
        if (!userMinAspectRatioMap.containsKey(USER_MIN_ASPECT_RATIO_UNSET)) {
@@ -290,6 +301,8 @@ public class UserAspectRatioManager {
        if (mIsUserMinAspectRatioAppDefaultFlagEnabled) {
            userMinAspectRatioMap.put(USER_MIN_ASPECT_RATIO_APP_DEFAULT,
                    userMinAspectRatioMap.get(USER_MIN_ASPECT_RATIO_UNSET));
            mUserAspectRatioOrder.put(USER_MIN_ASPECT_RATIO_APP_DEFAULT,
                    mUserAspectRatioOrder.get(USER_MIN_ASPECT_RATIO_UNSET));
            if (mUserAspectRatioA11yMap.containsKey(USER_MIN_ASPECT_RATIO_UNSET)) {
                mUserAspectRatioA11yMap.put(USER_MIN_ASPECT_RATIO_APP_DEFAULT,
                        mUserAspectRatioA11yMap.get(USER_MIN_ASPECT_RATIO_UNSET));
+6 −3
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ import com.android.settingslib.spaprivileged.template.app.AppListItem
import com.android.settingslib.spaprivileged.template.app.AppListItemModel
import com.android.settingslib.spaprivileged.template.app.AppListPage
import com.google.common.annotations.VisibleForTesting
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
@@ -130,8 +131,10 @@ data class UserAspectRatioAppListItemModel(
    val canDisplay: Boolean,
) : AppRecord

class UserAspectRatioAppListModel(private val context: Context)
    : AppListModel<UserAspectRatioAppListItemModel> {
class UserAspectRatioAppListModel(
    private val context: Context,
    private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO
) : AppListModel<UserAspectRatioAppListItemModel> {

    private val packageManager = context.packageManager
    private val userAspectRatioManager = UserAspectRatioManager(context)
@@ -203,7 +206,7 @@ class UserAspectRatioAppListModel(private val context: Context)
            flow {
                emit(userAspectRatioManager.getUserMinAspectRatioEntry(record.userOverride,
                    record.app.packageName, record.app.userId))
            }.flowOn(Dispatchers.IO)
            }.flowOn(ioDispatcher)
        }.collectAsStateWithLifecycle(initialValue = stringResource(R.string.summary_placeholder))
        return { summary }
    }
+28 −0
Original line number Diff line number Diff line
@@ -16,16 +16,19 @@

package com.android.settings.applications.appcompat;

import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_3_2;
import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_APP_DEFAULT;
import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_FULLSCREEN;
import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_UNSET;

import static com.android.settings.applications.AppInfoBase.ARG_PACKAGE_NAME;
import static com.android.settings.applications.appcompat.UserAspectRatioDetails.KEY_HEADER_BUTTONS;
import static com.android.settings.applications.appcompat.UserAspectRatioDetails.KEY_PREF_3_2;
import static com.android.settings.applications.appcompat.UserAspectRatioDetails.KEY_PREF_DEFAULT;
import static com.android.settings.applications.appcompat.UserAspectRatioDetails.KEY_PREF_FULLSCREEN;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
@@ -98,6 +101,31 @@ public class UserAspectRatioDetailsTest {
        mMetricsFeatureProvider = featureFactory.metricsFeatureProvider;
    }

    @Test
    public void testOrderOfOptionsFollowsConfig() {
        doReturn(true).when(mUserAspectRatioManager)
                .hasAspectRatioOption(anyInt(), anyString());
        doReturn(0).when(mUserAspectRatioManager)
                .getUserMinAspectRatioOrder(USER_MIN_ASPECT_RATIO_3_2);
        doReturn(1).when(mUserAspectRatioManager)
                .getUserMinAspectRatioOrder(USER_MIN_ASPECT_RATIO_FULLSCREEN);
        doReturn(2).when(mUserAspectRatioManager)
                .getUserMinAspectRatioOrder(USER_MIN_ASPECT_RATIO_UNSET);
        rule.getScenario().onActivity(a -> doReturn(a).when(mFragment).getActivity());
        final Bundle args = new Bundle();
        args.putString(ARG_PACKAGE_NAME, anyString());
        mFragment.setArguments(args);
        mFragment.onCreate(Bundle.EMPTY);

        final int topOfList = mFragment.findPreference(KEY_HEADER_BUTTONS).getOrder();

        assertTrue(topOfList < mFragment.findPreference(KEY_PREF_3_2).getOrder());
        assertTrue(mFragment.findPreference(KEY_PREF_3_2).getOrder()
                < mFragment.findPreference(KEY_PREF_FULLSCREEN).getOrder());
        assertTrue(mFragment.findPreference(KEY_PREF_FULLSCREEN).getOrder()
                < mFragment.findPreference(KEY_PREF_DEFAULT).getOrder());
    }

    @Test
    public void onRadioButtonClicked_prefChange_shouldStopActivity() throws RemoteException {
        doReturn(USER_MIN_ASPECT_RATIO_UNSET).when(mFragment)
Loading