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

Commit 8cd20ffc authored by Orhan Uysal's avatar Orhan Uysal Committed by Android (Google) Code Review
Browse files

Merge "Refactor Function into Predicate." into main

parents 7a4d10ef cb6d274d
Loading
Loading
Loading
Loading
+20 −20
Original line number Diff line number Diff line
@@ -57,7 +57,7 @@ import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.function.BooleanSupplier;
import java.util.function.Function;
import java.util.function.Predicate;

/**
 * Device state provider for foldable devices.
@@ -93,6 +93,7 @@ public final class FoldableDeviceStateProvider implements DeviceStateProvider,
    private final Sensor mHingeAngleSensor;
    private final DisplayManager mDisplayManager;
    private final Sensor mHallSensor;
    private static final Predicate<FoldableDeviceStateProvider> ALLOWED = p -> true;

    @Nullable
    @GuardedBy("mLock")
@@ -202,14 +203,12 @@ public final class FoldableDeviceStateProvider implements DeviceStateProvider,

    private void initialiseStateConditions(DeviceStateConfiguration configuration) {
        mStateConditions.put(configuration.mDeviceState.getIdentifier(), () ->
                configuration.mActiveStatePredicate.apply(this));
                configuration.mActiveStatePredicate.test(this));
    }

    private void initialiseStateAvailabilityConditions(DeviceStateConfiguration configuration) {
        if (configuration.mAvailabilityPredicate != null) {
            mStateAvailabilityConditions.put(configuration.mDeviceState.getIdentifier(), () ->
                    configuration.mAvailabilityPredicate.apply(this));
        }
                    configuration.mAvailabilityPredicate.test(this));
    }

    @Override
@@ -419,19 +418,20 @@ public final class FoldableDeviceStateProvider implements DeviceStateProvider,
     */
    public static class DeviceStateConfiguration {
        private final DeviceState mDeviceState;
        private final Function<FoldableDeviceStateProvider, Boolean> mActiveStatePredicate;
        private final Function<FoldableDeviceStateProvider, Boolean> mAvailabilityPredicate;
        private final Predicate<FoldableDeviceStateProvider> mActiveStatePredicate;
        private final Predicate<FoldableDeviceStateProvider> mAvailabilityPredicate;

        private DeviceStateConfiguration(
                DeviceState deviceState,
                Function<FoldableDeviceStateProvider, Boolean> predicate) {
            this(deviceState, predicate, null);
                @NonNull DeviceState deviceState,
                @NonNull Predicate<FoldableDeviceStateProvider> predicate) {
            this(deviceState, predicate, ALLOWED);
        }

        private DeviceStateConfiguration(
                DeviceState deviceState,
                Function<FoldableDeviceStateProvider, Boolean> activeStatePredicate,
                Function<FoldableDeviceStateProvider, Boolean> availabilityPredicate) {
                @NonNull DeviceState deviceState,
                @NonNull Predicate<FoldableDeviceStateProvider> activeStatePredicate,
                @NonNull Predicate<FoldableDeviceStateProvider> availabilityPredicate) {

            mDeviceState = deviceState;
            mActiveStatePredicate = activeStatePredicate;
            mAvailabilityPredicate = availabilityPredicate;
@@ -441,19 +441,19 @@ public final class FoldableDeviceStateProvider implements DeviceStateProvider,
                @IntRange(from = MINIMUM_DEVICE_STATE, to = MAXIMUM_DEVICE_STATE) int identifier,
                @NonNull String name,
                @DeviceState.DeviceStateFlags int flags,
                Function<FoldableDeviceStateProvider, Boolean> predicate
                @NonNull Predicate<FoldableDeviceStateProvider> activeStatePredicate
        ) {
            return new DeviceStateConfiguration(new DeviceState(identifier, name, flags),
                    predicate);
                    activeStatePredicate);
        }

        public static DeviceStateConfiguration createConfig(
                @IntRange(from = MINIMUM_DEVICE_STATE, to = MAXIMUM_DEVICE_STATE) int identifier,
                @NonNull String name,
                Function<FoldableDeviceStateProvider, Boolean> predicate
                @NonNull Predicate<FoldableDeviceStateProvider> activeStatePredicate
        ) {
            return new DeviceStateConfiguration(new DeviceState(identifier, name, /* flags= */ 0),
                    predicate);
                    activeStatePredicate);
        }

        /** Create a configuration with availability predicate **/
@@ -461,11 +461,11 @@ public final class FoldableDeviceStateProvider implements DeviceStateProvider,
                @IntRange(from = MINIMUM_DEVICE_STATE, to = MAXIMUM_DEVICE_STATE) int identifier,
                @NonNull String name,
                @DeviceState.DeviceStateFlags int flags,
                Function<FoldableDeviceStateProvider, Boolean> predicate,
                Function<FoldableDeviceStateProvider, Boolean> availabilityPredicate
                @NonNull Predicate<FoldableDeviceStateProvider> activeStatePredicate,
                @NonNull Predicate<FoldableDeviceStateProvider> availabilityPredicate
        ) {
            return new DeviceStateConfiguration(new DeviceState(identifier, name, flags),
                predicate, availabilityPredicate);
                    activeStatePredicate, availabilityPredicate);
        }

        /**
+7 −3
Original line number Diff line number Diff line
@@ -36,6 +36,8 @@ import com.android.server.policy.FoldableDeviceStateProvider.DeviceStateConfigur
import com.android.server.policy.feature.flags.FeatureFlags;
import com.android.server.policy.feature.flags.FeatureFlagsImpl;

import java.util.function.Predicate;

/**
 * Device state policy for a foldable device that supports tent mode: a mode when the device
 * keeps the outer display on until reaching a certain hinge angle threshold.
@@ -58,6 +60,8 @@ public class TentModeDeviceStatePolicy extends DeviceStatePolicy {
    private final DeviceStateProvider mProvider;

    private final boolean mIsDualDisplayBlockingEnabled;
    private static final Predicate<FoldableDeviceStateProvider> ALLOWED = p -> true;
    private static final Predicate<FoldableDeviceStateProvider> NOT_ALLOWED = p -> false;

    /**
     * Creates TentModeDeviceStatePolicy
@@ -102,17 +106,17 @@ public class TentModeDeviceStatePolicy extends DeviceStatePolicy {
                        }),
                createConfig(DEVICE_STATE_OPENED,
                        /* name= */ "OPENED",
                        /* activeStatePredicate= */ (provider) -> true),
                        /* activeStatePredicate= */ ALLOWED),
                createConfig(DEVICE_STATE_REAR_DISPLAY_STATE,
                        /* name= */ "REAR_DISPLAY_STATE",
                        /* flags= */ FLAG_EMULATED_ONLY,
                        /* activeStatePredicate= */ (provider) -> false),
                        /* activeStatePredicate= */ NOT_ALLOWED),
                createConfig(DEVICE_STATE_CONCURRENT_INNER_DEFAULT,
                        /* name= */ "CONCURRENT_INNER_DEFAULT",
                        /* flags= */ FLAG_EMULATED_ONLY | FLAG_CANCEL_WHEN_REQUESTER_NOT_ON_TOP
                                | FLAG_UNSUPPORTED_WHEN_THERMAL_STATUS_CRITICAL
                                | FLAG_UNSUPPORTED_WHEN_POWER_SAVE_MODE,
                        /* activeStatePredicate= */ (provider) -> false,
                        /* activeStatePredicate= */ NOT_ALLOWED,
                        /* availabilityPredicate= */
                        provider -> !mIsDualDisplayBlockingEnabled
                                || provider.hasNoConnectedExternalDisplay())