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

Commit 3b5a5f81 authored by Dave Mankoff's avatar Dave Mankoff Committed by Automerger Merge Worker
Browse files

Merge "Restart SystemUI on DeviceConfig changes." into tm-qpr-dev am: 889ad98d am: 9f415cdd

parents 55c9b221 9f415cdd
Loading
Loading
Loading
Loading
+1 −18
Original line number Diff line number Diff line
@@ -18,17 +18,15 @@ package com.android.systemui.flags

import android.content.Context
import android.os.Handler
import com.android.internal.statusbar.IStatusBarService
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.flags.FeatureFlagsDebug.ALL_FLAGS
import com.android.systemui.util.settings.SettingsUtilModule
import dagger.Binds
import dagger.Module
import dagger.Provides
import javax.inject.Named

@Module(includes = [
    FeatureFlagsDebugStartableModule::class,
    FlagsCommonModule::class,
    ServerFlagReaderModule::class,
    SettingsUtilModule::class,
])
@@ -43,20 +41,5 @@ abstract class FlagsModule {
        fun provideFlagManager(context: Context, @Main handler: Handler): FlagManager {
            return FlagManager(context, handler)
        }

        @JvmStatic
        @Provides
        @Named(ALL_FLAGS)
        fun providesAllFlags(): Map<Int, Flag<*>> = Flags.collectFlags()

        @JvmStatic
        @Provides
        fun providesRestarter(barService: IStatusBarService): Restarter {
            return object: Restarter {
                override fun restart() {
                    barService.restart()
                }
            }
        }
    }
}
+1 −15
Original line number Diff line number Diff line
@@ -16,29 +16,15 @@

package com.android.systemui.flags

import com.android.internal.statusbar.IStatusBarService
import dagger.Binds
import dagger.Module
import dagger.Provides

@Module(includes = [
    FeatureFlagsReleaseStartableModule::class,
    FlagsCommonModule::class,
    ServerFlagReaderModule::class
])
abstract class FlagsModule {
    @Binds
    abstract fun bindsFeatureFlagRelease(impl: FeatureFlagsRelease): FeatureFlags

    @Module
    companion object {
        @JvmStatic
        @Provides
        fun providesRestarter(barService: IStatusBarService): Restarter {
            return object: Restarter {
                override fun restart() {
                    barService.restart()
                }
            }
        }
    }
}
+26 −11
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static com.android.systemui.flags.FlagManager.ACTION_SET_FLAG;
import static com.android.systemui.flags.FlagManager.EXTRA_FLAGS;
import static com.android.systemui.flags.FlagManager.EXTRA_ID;
import static com.android.systemui.flags.FlagManager.EXTRA_VALUE;
import static com.android.systemui.flags.FlagsCommonModule.ALL_FLAGS;

import static java.util.Objects.requireNonNull;

@@ -70,9 +71,9 @@ import javax.inject.Named;
@SysUISingleton
public class FeatureFlagsDebug implements FeatureFlags {
    static final String TAG = "SysUIFlags";
    static final String ALL_FLAGS = "all_flags";

    private final FlagManager mFlagManager;
    private final Context mContext;
    private final SecureSettings mSecureSettings;
    private final Resources mResources;
    private final SystemPropertiesHelper mSystemProperties;
@@ -83,6 +84,14 @@ public class FeatureFlagsDebug implements FeatureFlags {
    private final Map<Integer, String> mStringFlagCache = new TreeMap<>();
    private final Restarter mRestarter;

    private final ServerFlagReader.ChangeListener mOnPropertiesChanged =
            new ServerFlagReader.ChangeListener() {
                @Override
                public void onChange() {
                    mRestarter.restart();
                }
            };

    @Inject
    public FeatureFlagsDebug(
            FlagManager flagManager,
@@ -93,23 +102,28 @@ public class FeatureFlagsDebug implements FeatureFlags {
            DeviceConfigProxy deviceConfigProxy,
            ServerFlagReader serverFlagReader,
            @Named(ALL_FLAGS) Map<Integer, Flag<?>> allFlags,
            Restarter barService) {
            Restarter restarter) {
        mFlagManager = flagManager;
        mContext = context;
        mSecureSettings = secureSettings;
        mResources = resources;
        mSystemProperties = systemProperties;
        mDeviceConfigProxy = deviceConfigProxy;
        mServerFlagReader = serverFlagReader;
        mAllFlags = allFlags;
        mRestarter = barService;
        mRestarter = restarter;
    }

    /** Call after construction to setup listeners. */
    void init() {
        IntentFilter filter = new IntentFilter();
        filter.addAction(ACTION_SET_FLAG);
        filter.addAction(ACTION_GET_FLAGS);
        flagManager.setOnSettingsChangedAction(this::restartSystemUI);
        flagManager.setClearCacheAction(this::removeFromCache);
        context.registerReceiver(mReceiver, filter, null, null,
        mFlagManager.setOnSettingsChangedAction(this::restartSystemUI);
        mFlagManager.setClearCacheAction(this::removeFromCache);
        mContext.registerReceiver(mReceiver, filter, null, null,
                Context.RECEIVER_EXPORTED_UNAUDITED);
        mServerFlagReader.listenForChanges(mAllFlags.values(), mOnPropertiesChanged);
    }

    @Override
@@ -273,6 +287,7 @@ public class FeatureFlagsDebug implements FeatureFlags {
    private void dispatchListenersAndMaybeRestart(int id, Consumer<Boolean> restartAction) {
        mFlagManager.dispatchListenersAndMaybeRestart(id, restartAction);
    }

    /** Works just like {@link #eraseFlag(int)} except that it doesn't restart SystemUI. */
    private void eraseInternal(int id) {
        // We can't actually "erase" things from sysprops, but we can set them to empty!
+2 −1
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@ constructor(
    dumpManager: DumpManager,
    private val commandRegistry: CommandRegistry,
    private val flagCommand: FlagCommand,
    featureFlags: FeatureFlags
    private val featureFlags: FeatureFlagsDebug
) : CoreStartable {

    init {
@@ -41,6 +41,7 @@ constructor(
    }

    override fun start() {
        featureFlags.init()
        commandRegistry.registerCommand(FlagCommand.FLAG_COMMAND) { flagCommand }
    }
}
+27 −3
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.systemui.flags;

import static com.android.systemui.flags.FlagsCommonModule.ALL_FLAGS;

import static java.util.Objects.requireNonNull;

import android.content.res.Resources;
@@ -34,6 +36,7 @@ import java.io.PrintWriter;
import java.util.Map;

import javax.inject.Inject;
import javax.inject.Named;

/**
 * Default implementation of the a Flag manager that returns default values for release builds
@@ -49,26 +52,47 @@ public class FeatureFlagsRelease implements FeatureFlags {
    private final SystemPropertiesHelper mSystemProperties;
    private final DeviceConfigProxy mDeviceConfigProxy;
    private final ServerFlagReader mServerFlagReader;
    private final Restarter mRestarter;
    private final Map<Integer, Flag<?>> mAllFlags;
    SparseBooleanArray mBooleanCache = new SparseBooleanArray();
    SparseArray<String> mStringCache = new SparseArray<>();

    private final ServerFlagReader.ChangeListener mOnPropertiesChanged =
            new ServerFlagReader.ChangeListener() {
                @Override
                public void onChange() {
                    mRestarter.restart();
                }
            };

    @Inject
    public FeatureFlagsRelease(
            @Main Resources resources,
            SystemPropertiesHelper systemProperties,
            DeviceConfigProxy deviceConfigProxy,
            ServerFlagReader serverFlagReader) {
            ServerFlagReader serverFlagReader,
            @Named(ALL_FLAGS) Map<Integer, Flag<?>> allFlags,
            Restarter restarter) {
        mResources = resources;
        mSystemProperties = systemProperties;
        mDeviceConfigProxy = deviceConfigProxy;
        mServerFlagReader = serverFlagReader;
        mAllFlags = allFlags;
        mRestarter = restarter;
    }

    /** Call after construction to setup listeners. */
    void init() {
        mServerFlagReader.listenForChanges(mAllFlags.values(), mOnPropertiesChanged);
    }

    @Override
    public void addListener(@NonNull Flag<?> flag, @NonNull Listener listener) {}
    public void addListener(@NonNull Flag<?> flag, @NonNull Listener listener) {
    }

    @Override
    public void removeListener(@NonNull Listener listener) {}
    public void removeListener(@NonNull Listener listener) {
    }

    @Override
    public boolean isEnabled(@NotNull UnreleasedFlag flag) {
Loading