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

Commit a26641f5 authored by Jason Monk's avatar Jason Monk
Browse files

Remove Dependency.get usages from AutoTileManager

Test: existing tests
Change-Id: Iff4e5c90eef7aa0f4a1fcba5ea7eba0847725a70
parent 7ee09966
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -35,6 +35,8 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;

import javax.inject.Inject;

public class AutoAddTracker {

    private static final String[][] CONVERT_PREFS = {
@@ -48,6 +50,7 @@ public class AutoAddTracker {
    private final ArraySet<String> mAutoAdded;
    private final Context mContext;

    @Inject
    public AutoAddTracker(Context context) {
        mContext = context;
        mAutoAdded = new ArraySet<>(getAdded());
+7 −5
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ import java.util.function.Predicate;

import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Provider;
import javax.inject.Singleton;

/** Platform implementation of the quick settings tile host **/
@@ -74,7 +75,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory> {
    private final PluginManager mPluginManager;

    private final List<Callback> mCallbacks = new ArrayList<>();
    private final AutoTileManager mAutoTiles;
    private AutoTileManager mAutoTiles;
    private final StatusBarIconController mIconController;
    private final ArrayList<QSFactory> mQsFactories = new ArrayList<>();
    private int mCurrentUser;
@@ -87,7 +88,8 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory> {
            @Named(Dependency.MAIN_HANDLER_NAME) Handler mainHandler,
            @Named(Dependency.BG_LOOPER_NAME) Looper bgLooper,
            PluginManager pluginManager,
            TunerService tunerService) {
            TunerService tunerService,
            Provider<AutoTileManager> autoTiles) {
        mIconController = iconController;
        mContext = context;
        mTunerService = tunerService;
@@ -104,9 +106,9 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory> {
            // QSTileHost -> XXXTile -> QSTileHost. Posting ensures creation
            // finishes before creating any tiles.
            tunerService.addTunable(this, TILES_SETTING);
        });
            // AutoTileManager can modify mTiles so make sure mTiles has already been initialized.
        mAutoTiles = new AutoTileManager(context, this);
            mAutoTiles = autoTiles.get();
        });
    }

    public StatusBarIconController getIconController() {
@@ -264,7 +266,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory> {

    @Override
    public void unmarkTileAsAutoAdded(String spec) {
        mAutoTiles.unmarkTileAsAutoAdded(spec);
        if (mAutoTiles != null) mAutoTiles.unmarkTileAsAutoAdded(spec);
    }

    public void addTile(String spec) {
+31 −24
Original line number Diff line number Diff line
@@ -30,6 +30,9 @@ import com.android.systemui.statusbar.policy.DataSaverController.Listener;
import com.android.systemui.statusbar.policy.HotspotController;
import com.android.systemui.statusbar.policy.HotspotController.Callback;

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

/**
 * Manages which tiles should be automatically added to QS.
 */
@@ -44,24 +47,31 @@ public class AutoTileManager {
    private final QSTileHost mHost;
    private final Handler mHandler;
    private final AutoAddTracker mAutoTracker;

    public AutoTileManager(Context context, QSTileHost host) {
        this(context, new AutoAddTracker(context), host,
            new Handler(Dependency.get(Dependency.BG_LOOPER)));
    }

    @VisibleForTesting
    AutoTileManager(Context context, AutoAddTracker autoAddTracker, QSTileHost host,
            Handler handler) {
    private final HotspotController mHotspotController;
    private final DataSaverController mDataSaverController;
    private final ManagedProfileController mManagedProfileController;
    private final ColorDisplayController mColorDisplayController;

    @Inject
    public AutoTileManager(Context context, AutoAddTracker autoAddTracker, QSTileHost host,
            @Named(Dependency.BG_HANDLER_NAME) Handler handler,
            HotspotController hotspotController,
            DataSaverController dataSaverController,
            ManagedProfileController managedProfileController,
            ColorDisplayController colorDisplayController) {
        mAutoTracker = autoAddTracker;
        mContext = context;
        mHost = host;
        mHandler = handler;
        mHotspotController = hotspotController;
        mDataSaverController = dataSaverController;
        mManagedProfileController = managedProfileController;
        mColorDisplayController = colorDisplayController;
        if (!mAutoTracker.isAdded(HOTSPOT)) {
            Dependency.get(HotspotController.class).addCallback(mHotspotCallback);
            hotspotController.addCallback(mHotspotCallback);
        }
        if (!mAutoTracker.isAdded(SAVER)) {
            Dependency.get(DataSaverController.class).addCallback(mDataSaverListener);
            dataSaverController.addCallback(mDataSaverListener);
        }
        if (!mAutoTracker.isAdded(INVERSION)) {
            mColorsSetting = new SecureSetting(mContext, mHandler,
@@ -79,11 +89,11 @@ public class AutoTileManager {
            mColorsSetting.setListening(true);
        }
        if (!mAutoTracker.isAdded(WORK)) {
            Dependency.get(ManagedProfileController.class).addCallback(mProfileCallback);
            managedProfileController.addCallback(mProfileCallback);
        }
        if (!mAutoTracker.isAdded(NIGHT)
                && ColorDisplayManager.isNightDisplayAvailable(mContext)) {
            Dependency.get(ColorDisplayController.class).setListener(mColorDisplayCallback);
            colorDisplayController.setListener(mColorDisplayCallback);
        }
    }

@@ -92,11 +102,11 @@ public class AutoTileManager {
            mColorsSetting.setListening(false);
        }
        mAutoTracker.destroy();
        Dependency.get(HotspotController.class).removeCallback(mHotspotCallback);
        Dependency.get(DataSaverController.class).removeCallback(mDataSaverListener);
        Dependency.get(ManagedProfileController.class).removeCallback(mProfileCallback);
        mHotspotController.removeCallback(mHotspotCallback);
        mDataSaverController.removeCallback(mDataSaverListener);
        mManagedProfileController.removeCallback(mProfileCallback);
        if (ColorDisplayManager.isNightDisplayAvailable(mContext)) {
            Dependency.get(ColorDisplayController.class).setListener(null);
            mColorDisplayController.setListener(null);
        }
    }

@@ -109,7 +119,7 @@ public class AutoTileManager {
                @Override
                public void onManagedProfileChanged() {
                    if (mAutoTracker.isAdded(WORK)) return;
                    if (Dependency.get(ManagedProfileController.class).hasActiveProfile()) {
                    if (mManagedProfileController.hasActiveProfile()) {
                        mHost.addTile(WORK);
                        mAutoTracker.setTileAdded(WORK);
                    }
@@ -129,8 +139,7 @@ public class AutoTileManager {
            if (isDataSaving) {
                mHost.addTile(SAVER);
                mAutoTracker.setTileAdded(SAVER);
                mHandler.post(() -> Dependency.get(DataSaverController.class).removeCallback(
                        mDataSaverListener));
                mHandler.post(() -> mDataSaverController.removeCallback(mDataSaverListener));
            }
        }
    };
@@ -142,8 +151,7 @@ public class AutoTileManager {
            if (enabled) {
                mHost.addTile(HOTSPOT);
                mAutoTracker.setTileAdded(HOTSPOT);
                mHandler.post(() -> Dependency.get(HotspotController.class)
                        .removeCallback(mHotspotCallback));
                mHandler.post(() -> mHotspotController.removeCallback(mHotspotCallback));
            }
        }
    };
@@ -170,8 +178,7 @@ public class AutoTileManager {
            if (mAutoTracker.isAdded(NIGHT)) return;
            mHost.addTile(NIGHT);
            mAutoTracker.setTileAdded(NIGHT);
            mHandler.post(() -> Dependency.get(ColorDisplayController.class)
                    .setListener(null));
            mHandler.post(() -> mColorDisplayController.setListener(null));
        }
    };
}
+3 −1
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import com.android.systemui.SystemUIFactory;
import com.android.systemui.SysuiBaseFragmentTest;
import com.android.systemui.qs.tileimpl.QSFactoryImpl;
import com.android.systemui.shared.plugins.PluginManager;
import com.android.systemui.statusbar.phone.AutoTileManager;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.policy.Clock;
import com.android.systemui.statusbar.policy.ConfigurationController;
@@ -92,7 +93,8 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
        processAllMessages();
        QSTileHost host = new QSTileHost(mContext, mock(StatusBarIconController.class),
                mock(QSFactoryImpl.class), new Handler(), Looper.myLooper(),
                mock(PluginManager.class), mock(TunerService.class));
                mock(PluginManager.class), mock(TunerService.class),
                () -> mock(AutoTileManager.class));
        qs.setHost(host);

        qs.setListening(true);
+3 −1
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import com.android.systemui.SysuiTestCase;
import com.android.systemui.qs.QSTileHost;
import com.android.systemui.qs.tileimpl.QSFactoryImpl;
import com.android.systemui.shared.plugins.PluginManager;
import com.android.systemui.statusbar.phone.AutoTileManager;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.policy.BluetoothController;
import com.android.systemui.tuner.TunerService;
@@ -65,7 +66,8 @@ public class TileServicesTest extends SysuiTestCase {
                new Handler(),
                Looper.myLooper(),
                mock(PluginManager.class),
                mock(TunerService.class));
                mock(TunerService.class),
                () -> mock(AutoTileManager.class));
        mTileService = new TestTileServices(host, Looper.getMainLooper());
    }

Loading