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

Commit 03360131 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Remove Dependency.get usages from AutoTileManager"

parents e1aae406 a26641f5
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