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

Commit c37e0e46 authored by Jay Aliomer's avatar Jay Aliomer Committed by Android (Google) Code Review
Browse files

Merge "Remove flag plugin with flag manager with DI"

parents 96b12a26 55f00e7b
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