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

Commit 55f00e7b authored by Jay Aliomer's avatar Jay Aliomer
Browse files

Remove flag plugin with flag manager with DI

Test: FeatureFlagsTest
Bug: 196602427
Change-Id: I43961a091f0f10ebd1a168f40703f0067d9f8a18
parent 56244e07
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -15,15 +15,19 @@
 */

package com.android.systemui.flags;
import android.util.ArraySet;

import com.android.systemui.dagger.SysUISingleton;

import javax.inject.Inject;

/**
 * Concrete implementation of the a Flag manager that returns default values for debug builds
 */
@SysUISingleton
public class FeatureFlagManager {
public class FeatureFlagManager implements FlagReader, FlagWriter {
    @Inject
    public FeatureFlagManager() {}

    public boolean isEnabled(int key, boolean defaultValue) {
        return isEnabled(Integer.toString(key), defaultValue);
    }
@@ -40,4 +44,9 @@ public class FeatureFlagManager {
    public void setEnabled(String key, boolean value) {
        // TODO
    }

    public void addListener(Listener run) {}

    public void removeListener(Listener run) {}

}
+9 −0
Original line number Diff line number Diff line
@@ -39,7 +39,10 @@ import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.demomode.dagger.DemoModeModule;
import com.android.systemui.doze.dagger.DozeComponent;
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.fragments.FragmentService;
import com.android.systemui.log.dagger.LogModule;
import com.android.systemui.model.SysUiState;
@@ -151,6 +154,12 @@ public abstract class SystemUIModule {
        return state;
    }

    @Binds
    abstract FlagReader provideFlagReader(FeatureFlagManager impl);

    @Binds
    abstract FlagWriter provideFlagWriter(FeatureFlagManager impl);

    @BindsOptionalOf
    abstract CommandQueue optionalCommandQueue();

+9 −7
Original line number Diff line number Diff line
@@ -18,19 +18,21 @@ package com.android.systemui.flags;

import com.android.systemui.dagger.SysUISingleton;

import javax.inject.Inject;

/**
 * Default implementation of the a Flag manager that returns default values for release builds
 */
@SysUISingleton
public class FeatureFlagManager {
    public boolean getBoolean(int key, boolean defaultValue) {
public class FeatureFlagManager implements FlagReader, FlagWriter {
    @Inject
    public FeatureFlagManager() {}
    public boolean isEnabled(String key, boolean defaultValue) {
        return defaultValue;
    }
    public void setBoolean(int key, boolean value) {}
    public boolean getBoolean(String key, boolean defaultValue) {
    public boolean isEnabled(int key, boolean defaultValue) {
        return defaultValue;
    }
    public void setBoolean(String key, boolean value) {}
    public void addFlagChangedListener(Runnable run) {}
    public void removeFlagUpdatedListener(Runnable run) {}
    public void setEnabled(String key, boolean value) {}
    public void setEnabled(int key, boolean value) {}
}
+9 −47
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package com.android.systemui.flags;

import android.content.Context;
import android.content.res.Resources;
import android.util.SparseArray;

@@ -29,9 +28,6 @@ import com.android.systemui.R;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.plugins.FlagReaderPlugin;
import com.android.systemui.plugins.PluginListener;
import com.android.systemui.shared.plugins.PluginManager;
import com.android.systemui.util.wrapper.BuildInfo;

import java.io.FileDescriptor;
@@ -65,70 +61,36 @@ import javax.inject.Inject;
public class FeatureFlagReader implements Dumpable {
    private final Resources mResources;
    private final boolean mAreFlagsOverrideable;
    private final PluginManager mPluginManager;
    private final SystemPropertiesHelper mSystemPropertiesHelper;
    private final SparseArray<CachedFlag> mCachedFlags = new SparseArray<>();

    private FlagReaderPlugin mPlugin = new FlagReaderPlugin(){};
    private FlagReader mFlagReader;

    @Inject
    public FeatureFlagReader(
            @Main Resources resources,
            BuildInfo build,
            DumpManager dumpManager,
            PluginManager pluginManager,
            SystemPropertiesHelper systemPropertiesHelper) {
            SystemPropertiesHelper systemPropertiesHelper,
            FlagReader reader) {
        mResources = resources;
        mPluginManager = pluginManager;
        mFlagReader = reader;
        mSystemPropertiesHelper = systemPropertiesHelper;
        mAreFlagsOverrideable =
                build.isDebuggable() && mResources.getBoolean(R.bool.are_flags_overrideable);

        dumpManager.registerDumpable("FeatureFlags", this);
        mPluginManager.addPluginListener(mPluginListener, FlagReaderPlugin.class);
    }

    private final PluginListener<FlagReaderPlugin> mPluginListener =
            new PluginListener<FlagReaderPlugin>() {
                public void onPluginConnected(FlagReaderPlugin plugin, Context context) {
                    mPlugin = plugin;
                }

                public void onPluginDisconnected(FlagReaderPlugin plugin) {
                    mPlugin = new FlagReaderPlugin() {};
    }
            };

    boolean isEnabled(BooleanFlag flag) {
        return mPlugin.isEnabled(flag.getId(), flag.getDefault());
    }

    String getValue(StringFlag flag) {
        return mPlugin.getValue(flag.getId(), flag.getDefault());
    }

    int getValue(IntFlag flag) {
        return mPlugin.getValue(flag.getId(), flag.getDefault());
    }

    long getValue(LongFlag flag) {
        return mPlugin.getValue(flag.getId(), flag.getDefault());
    }

    float getValue(FloatFlag flag) {
        return mPlugin.getValue(flag.getId(), flag.getDefault());
    }

    double getValue(DoubleFlag flag) {
        return mPlugin.getValue(flag.getId(), flag.getDefault());
        return mFlagReader.isEnabled(flag.getId(), flag.getDefault());
    }

    void addListener(FlagReaderPlugin.Listener listener) {
        mPlugin.addListener(listener);
    void addListener(FlagReader.Listener listener) {
        mFlagReader.addListener(listener);
    }

    void removeListener(FlagReaderPlugin.Listener listener) {
        mPlugin.removeListener(listener);
    void removeListener(FlagReader.Listener listener) {
        mFlagReader.removeListener(listener);
    }

    /**
+1 −39
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ import android.util.FeatureFlagUtils;
import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.R;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.plugins.FlagReaderPlugin;

import java.util.ArrayList;
import java.util.HashMap;
@@ -51,7 +50,7 @@ public class FeatureFlags {
        flagReader.addListener(mListener);
    }

    private final FlagReaderPlugin.Listener mListener = id -> {
    private final FlagReader.Listener mListener = id -> {
        if (mListeners.containsKey(id) && mFlagMap.containsKey(id)) {
            mListeners.get(id).forEach(listener -> listener.onFlagChanged(mFlagMap.get(id)));
        }
@@ -70,45 +69,8 @@ public class FeatureFlags {
        return mFlagReader.isEnabled(flag);
    }

    /**
     * @param flag The {@link StringFlag} of interest.
     * @return The value of the flag.
     */
    public String getValue(StringFlag flag) {
        return mFlagReader.getValue(flag);
    }

    /**
     * @param flag The {@link IntFlag} of interest.
     * @return The value of the flag.
     */
    public int getValue(IntFlag flag) {
        return mFlagReader.getValue(flag);
    }

    /**
     * @param flag The {@link LongFlag} of interest.
     * @return The value of the flag.
     */
    public long getValue(LongFlag flag) {
        return mFlagReader.getValue(flag);
    }

    /**
     * @param flag The {@link FloatFlag} of interest.
     * @return The value of the flag.
     */
    public float getValue(FloatFlag flag) {
        return mFlagReader.getValue(flag);
    }

    /**
     * @param flag The {@link DoubleFlag} of interest.
     * @return The value of the flag.
     */
    public double getValue(DoubleFlag flag) {
        return mFlagReader.getValue(flag);
    }

    /** Add a listener for a specific flag. */
    public void addFlagListener(Flag<?> flag, Listener listener) {
Loading