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

Commit 30b64fad authored by Jason Monk's avatar Jason Monk
Browse files

Remove Dependency.get usages from QSTileHost.

Test: existing tests
Change-Id: I348bdb1c7e14810a2864637d550a388e6f399f6d
parent 55fd968a
Loading
Loading
Loading
Loading
+16 −8
Original line number Original line Diff line number Diff line
@@ -20,6 +20,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.content.res.Resources;
import android.content.res.Resources;
import android.os.Handler;
import android.os.Handler;
import android.os.Looper;
import android.os.UserHandle;
import android.os.UserHandle;
import android.os.UserManager;
import android.os.UserManager;
import android.provider.Settings;
import android.provider.Settings;
@@ -69,6 +70,8 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory> {
    private final LinkedHashMap<String, QSTile> mTiles = new LinkedHashMap<>();
    private final LinkedHashMap<String, QSTile> mTiles = new LinkedHashMap<>();
    protected final ArrayList<String> mTileSpecs = new ArrayList<>();
    protected final ArrayList<String> mTileSpecs = new ArrayList<>();
    private final TileServices mServices;
    private final TileServices mServices;
    private final TunerService mTunerService;
    private final PluginManager mPluginManager;


    private final List<Callback> mCallbacks = new ArrayList<>();
    private final List<Callback> mCallbacks = new ArrayList<>();
    private final AutoTileManager mAutoTiles;
    private final AutoTileManager mAutoTiles;
@@ -81,21 +84,26 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory> {
    public QSTileHost(Context context,
    public QSTileHost(Context context,
            StatusBarIconController iconController,
            StatusBarIconController iconController,
            QSFactoryImpl defaultFactory,
            QSFactoryImpl defaultFactory,
            @Named(Dependency.MAIN_HANDLER_NAME) Handler mainHandler) {
            @Named(Dependency.MAIN_HANDLER_NAME) Handler mainHandler,
            @Named(Dependency.BG_LOOPER_NAME) Looper bgLooper,
            PluginManager pluginManager,
            TunerService tunerService) {
        mIconController = iconController;
        mIconController = iconController;
        mContext = context;
        mContext = context;
        mTunerService = tunerService;
        mPluginManager = pluginManager;


        mServices = new TileServices(this, Dependency.get(Dependency.BG_LOOPER));
        mServices = new TileServices(this, bgLooper);


        defaultFactory.setHost(this);
        defaultFactory.setHost(this);
        mQsFactories.add(defaultFactory);
        mQsFactories.add(defaultFactory);
        Dependency.get(PluginManager.class).addPluginListener(this, QSFactory.class, true);
        pluginManager.addPluginListener(this, QSFactory.class, true);


        mainHandler.post(() -> {
        mainHandler.post(() -> {
            // This is technically a hack to avoid circular dependency of
            // This is technically a hack to avoid circular dependency of
            // QSTileHost -> XXXTile -> QSTileHost. Posting ensures creation
            // QSTileHost -> XXXTile -> QSTileHost. Posting ensures creation
            // finishes before creating any tiles.
            // finishes before creating any tiles.
            Dependency.get(TunerService.class).addTunable(this, TILES_SETTING);
            tunerService.addTunable(this, TILES_SETTING);
        });
        });
        // AutoTileManager can modify mTiles so make sure mTiles has already been initialized.
        // AutoTileManager can modify mTiles so make sure mTiles has already been initialized.
        mAutoTiles = new AutoTileManager(context, this);
        mAutoTiles = new AutoTileManager(context, this);
@@ -108,16 +116,16 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory> {
    public void destroy() {
    public void destroy() {
        mTiles.values().forEach(tile -> tile.destroy());
        mTiles.values().forEach(tile -> tile.destroy());
        mAutoTiles.destroy();
        mAutoTiles.destroy();
        Dependency.get(TunerService.class).removeTunable(this);
        mTunerService.removeTunable(this);
        mServices.destroy();
        mServices.destroy();
        Dependency.get(PluginManager.class).removePluginListener(this);
        mPluginManager.removePluginListener(this);
    }
    }


    @Override
    @Override
    public void onPluginConnected(QSFactory plugin, Context pluginContext) {
    public void onPluginConnected(QSFactory plugin, Context pluginContext) {
        // Give plugins priority over creation so they can override if they wish.
        // Give plugins priority over creation so they can override if they wish.
        mQsFactories.add(0, plugin);
        mQsFactories.add(0, plugin);
        String value = Dependency.get(TunerService.class).getValue(TILES_SETTING);
        String value = mTunerService.getValue(TILES_SETTING);
        // Force remove and recreate of all tiles.
        // Force remove and recreate of all tiles.
        onTuningChanged(TILES_SETTING, "");
        onTuningChanged(TILES_SETTING, "");
        onTuningChanged(TILES_SETTING, value);
        onTuningChanged(TILES_SETTING, value);
@@ -127,7 +135,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory> {
    public void onPluginDisconnected(QSFactory plugin) {
    public void onPluginDisconnected(QSFactory plugin) {
        mQsFactories.remove(plugin);
        mQsFactories.remove(plugin);
        // Force remove and recreate of all tiles.
        // Force remove and recreate of all tiles.
        String value = Dependency.get(TunerService.class).getValue(TILES_SETTING);
        String value = mTunerService.getValue(TILES_SETTING);
        onTuningChanged(TILES_SETTING, "");
        onTuningChanged(TILES_SETTING, "");
        onTuningChanged(TILES_SETTING, value);
        onTuningChanged(TILES_SETTING, value);
    }
    }
+4 −1
Original line number Original line Diff line number Diff line
@@ -38,11 +38,13 @@ import com.android.systemui.R;
import com.android.systemui.SystemUIFactory;
import com.android.systemui.SystemUIFactory;
import com.android.systemui.SysuiBaseFragmentTest;
import com.android.systemui.SysuiBaseFragmentTest;
import com.android.systemui.qs.tileimpl.QSFactoryImpl;
import com.android.systemui.qs.tileimpl.QSFactoryImpl;
import com.android.systemui.shared.plugins.PluginManager;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.policy.Clock;
import com.android.systemui.statusbar.policy.Clock;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.tuner.TunerService;
import com.android.systemui.util.InjectionInflationController;
import com.android.systemui.util.InjectionInflationController;


import org.junit.Before;
import org.junit.Before;
@@ -89,7 +91,8 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
        mFragments.dispatchResume();
        mFragments.dispatchResume();
        processAllMessages();
        processAllMessages();
        QSTileHost host = new QSTileHost(mContext, mock(StatusBarIconController.class),
        QSTileHost host = new QSTileHost(mContext, mock(StatusBarIconController.class),
                mock(QSFactoryImpl.class), new Handler());
                mock(QSFactoryImpl.class), new Handler(), Looper.myLooper(),
                mock(PluginManager.class), mock(TunerService.class));
        qs.setHost(host);
        qs.setHost(host);


        qs.setListening(true);
        qs.setListening(true);
+6 −1
Original line number Original line Diff line number Diff line
@@ -32,8 +32,10 @@ import android.testing.TestableLooper.RunWithLooper;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.qs.QSTileHost;
import com.android.systemui.qs.QSTileHost;
import com.android.systemui.qs.tileimpl.QSFactoryImpl;
import com.android.systemui.qs.tileimpl.QSFactoryImpl;
import com.android.systemui.shared.plugins.PluginManager;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.policy.BluetoothController;
import com.android.systemui.statusbar.policy.BluetoothController;
import com.android.systemui.tuner.TunerService;


import org.junit.After;
import org.junit.After;
import org.junit.Before;
import org.junit.Before;
@@ -60,7 +62,10 @@ public class TileServicesTest extends SysuiTestCase {
        QSTileHost host = new QSTileHost(mContext,
        QSTileHost host = new QSTileHost(mContext,
                mock(StatusBarIconController.class),
                mock(StatusBarIconController.class),
                mock(QSFactoryImpl.class),
                mock(QSFactoryImpl.class),
                new Handler());
                new Handler(),
                Looper.myLooper(),
                mock(PluginManager.class),
                mock(TunerService.class));
        mTileService = new TestTileServices(host, Looper.getMainLooper());
        mTileService = new TestTileServices(host, Looper.getMainLooper());
    }
    }