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

Commit 02e42be6 authored by Dave Mankoff's avatar Dave Mankoff
Browse files

Convert FeatureFlags to interface.

Rename FeatureFlagManager version to
FeatureFlagsDebug and FeatureFlagsRelease, implementing
the FeatureFlags interface.

Bug: 203548827
Test: manual
Change-Id: I4b78757a5e7ee3d5ee06f9124e2b8f670e611d4f
parent 15cd688e
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -20,16 +20,23 @@ import android.content.Context
import android.os.Handler
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.util.settings.SettingsUtilModule
import dagger.Binds
import dagger.Module
import dagger.Provides

@Module(includes = [
    SettingsUtilModule::class
])
object FlagsModule {
abstract class FlagsModule {
    @Binds
    abstract fun bindsFeatureFlagDebug(impl: FeatureFlagsDebug): FeatureFlags

    @Module
    companion object {
        @JvmStatic
        @Provides
        fun provideFlagManager(context: Context, @Main handler: Handler): FlagManager {
            return FlagManager(context, handler)
        }
    }
}
 No newline at end of file
+5 −1
Original line number Diff line number Diff line
@@ -16,7 +16,11 @@

package com.android.systemui.flags

import dagger.Binds
import dagger.Module

@Module
object FlagsModule
 No newline at end of file
abstract class FlagsModule {
    @Binds
    abstract fun bindsFeatureFlagRelease(impl: FeatureFlagsRelease): FeatureFlags
}
 No newline at end of file
+0 −9
Original line number Diff line number Diff line
@@ -38,10 +38,7 @@ import com.android.systemui.demomode.dagger.DemoModeModule;
import com.android.systemui.doze.dagger.DozeComponent;
import com.android.systemui.dreams.dagger.DreamModule;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.flags.FeatureFlagManager;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.FlagReader;
import com.android.systemui.flags.FlagWriter;
import com.android.systemui.flags.FlagsModule;
import com.android.systemui.fragments.FragmentService;
import com.android.systemui.log.dagger.LogModule;
@@ -161,12 +158,6 @@ public abstract class SystemUIModule {
        return state;
    }

    @Binds
    abstract FlagReader provideFlagReader(FeatureFlagManager impl);

    @Binds
    abstract FlagWriter provideFlagWriter(FeatureFlagManager impl);

    @BindsOptionalOf
    abstract CommandQueue optionalCommandQueue();

+18 −46
Original line number Diff line number Diff line
@@ -16,114 +16,86 @@

package com.android.systemui.flags;

import android.content.Context;
import android.util.FeatureFlagUtils;

import com.android.systemui.dagger.SysUISingleton;

import javax.inject.Inject;

/**
 * Class to manage simple DeviceConfig-based feature flags.
 *
 * See {@link Flags} for instructions on defining new flags.
 */
@SysUISingleton
public class FeatureFlags {
    private final FlagReader mFlagReader;

    @Inject
    public FeatureFlags(FlagReader flagReader) {
        mFlagReader = flagReader;
    }

    /**
     * @param flag The {@link BooleanFlag} of interest.
     * @return The value of the flag.
     */
    public boolean isEnabled(BooleanFlag flag) {
        return mFlagReader.isEnabled(flag);
    }

    public boolean isNewNotifPipelineRenderingEnabled() {
public interface FeatureFlags extends FlagReader {
    default boolean isNewNotifPipelineRenderingEnabled() {
        return isEnabled(Flags.NEW_NOTIFICATION_PIPELINE_RENDERING);
    }

    /** */
    public boolean useNewLockscreenAnimations() {
    default boolean useNewLockscreenAnimations() {
        return isEnabled(Flags.LOCKSCREEN_ANIMATIONS);
    }

    public boolean isPeopleTileEnabled() {
    default boolean isPeopleTileEnabled() {
        return isEnabled(Flags.PEOPLE_TILE);
    }

    public boolean isMonetEnabled() {
    default boolean isMonetEnabled() {
        return isEnabled(Flags.MONET);
    }

    public boolean isPMLiteEnabled() {
    default boolean isPMLiteEnabled() {
        return isEnabled(Flags.POWER_MENU_LITE);
    }

    public boolean isChargingRippleEnabled() {
    default boolean isChargingRippleEnabled() {
        return isEnabled(Flags.CHARGING_RIPPLE);
    }

    public boolean isOngoingCallStatusBarChipEnabled() {
    default boolean isOngoingCallStatusBarChipEnabled() {
        return isEnabled(Flags.ONGOING_CALL_STATUS_BAR_CHIP);
    }

    public boolean isOngoingCallInImmersiveEnabled() {
    default boolean isOngoingCallInImmersiveEnabled() {
        return isOngoingCallStatusBarChipEnabled() && isEnabled(Flags.ONGOING_CALL_IN_IMMERSIVE);
    }

    public boolean isOngoingCallInImmersiveChipTapEnabled() {
    default boolean isOngoingCallInImmersiveChipTapEnabled() {
        return isOngoingCallInImmersiveEnabled()
                && isEnabled(Flags.ONGOING_CALL_IN_IMMERSIVE_CHIP_TAP);
    }

    public boolean isSmartspaceEnabled() {
    default boolean isSmartspaceEnabled() {
        return isEnabled(Flags.SMARTSPACE);
    }

    public boolean isSmartspaceDedupingEnabled() {
    default boolean isSmartspaceDedupingEnabled() {
        return isSmartspaceEnabled() && isEnabled(Flags.SMARTSPACE_DEDUPING);
    }

    public boolean isNewKeyguardSwipeAnimationEnabled() {
    default boolean isNewKeyguardSwipeAnimationEnabled() {
        return isEnabled(Flags.NEW_UNLOCK_SWIPE_ANIMATION);
    }

    public boolean isKeyguardQsUserDetailsShortcutEnabled() {
    default boolean isKeyguardQsUserDetailsShortcutEnabled() {
        return isEnabled(Flags.QS_USER_DETAIL_SHORTCUT);
    }

    public boolean isSmartSpaceSharedElementTransitionEnabled() {
    default boolean isSmartSpaceSharedElementTransitionEnabled() {
        return isEnabled(Flags.SMARTSPACE_SHARED_ELEMENT_TRANSITION_ENABLED);
    }

    /** Whether or not to use the provider model behavior for the status bar icons */
    public boolean isCombinedStatusBarSignalIconsEnabled() {
    default boolean isCombinedStatusBarSignalIconsEnabled() {
        return isEnabled(Flags.COMBINED_STATUS_BAR_SIGNAL_ICONS);
    }

    /** System setting for provider model behavior */
    public boolean isProviderModelSettingEnabled(Context context) {
        return FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL);
    }

    /**
     * Use the new version of the user switcher
     */
    public boolean useNewUserSwitcher() {
    default boolean useNewUserSwitcher() {
        return isEnabled(Flags.NEW_USER_SWITCHER);
    }

    /**
     * Use the new single view QS headers
     */
    public boolean useCombinedQSHeaders() {
    default boolean useCombinedQSHeaders() {
        return isEnabled(Flags.COMBINED_QS_HEADERS);
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ import javax.inject.Inject;
 * To restore a flag back to its default, leave the `--ez value <0|1>` off of the command.
 */
@SysUISingleton
public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable {
public class FeatureFlagsDebug implements FeatureFlags, FlagWriter, Dumpable {
    private static final String TAG = "SysUIFlags";

    private final FlagManager mFlagManager;
@@ -69,7 +69,7 @@ public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable {
    private final Map<Integer, Boolean> mBooleanFlagCache = new HashMap<>();

    @Inject
    public FeatureFlagManager(
    public FeatureFlagsDebug(
            FlagManager flagManager,
            Context context,
            SecureSettings secureSettings,
Loading