Switch QS tile creation to use injection

This will make it easy to remove dependency usages from tiles.

Test: existing tests
Change-Id: I943f3098c4e7cf2feaa6ebe190f3ddec557c3850
This commit is contained in:
Jason Monk
2018-12-26 15:43:06 -05:00
parent 978ce92aa6
commit 5d57720036
27 changed files with 196 additions and 43 deletions

View File

@@ -22,6 +22,8 @@ import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.VolumeDialogController;
import com.android.systemui.power.PowerNotificationWarnings;
import com.android.systemui.power.PowerUI;
import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.QSTileHost;
import com.android.systemui.statusbar.NotificationRemoteInputManager;
import com.android.systemui.statusbar.phone.DarkIconDispatcherImpl;
import com.android.systemui.statusbar.phone.ManagedProfileController;
@@ -224,4 +226,9 @@ public abstract class DependencyBinder {
*/
@Binds
public abstract PowerUI.WarningsUI provideWarningsUi(PowerNotificationWarnings controllerImpl);
/**
*/
@Binds
public abstract QSHost provideQsHost(QSTileHost controllerImpl);
}

View File

@@ -34,7 +34,6 @@ import com.android.systemui.fragments.FragmentService;
import com.android.systemui.keyguard.DismissCallbackRegistry;
import com.android.systemui.power.EnhancedEstimates;
import com.android.systemui.power.EnhancedEstimatesImpl;
import com.android.systemui.qs.QSTileHost;
import com.android.systemui.statusbar.KeyguardIndicationController;
import com.android.systemui.statusbar.NotificationListener;
import com.android.systemui.statusbar.NotificationLockscreenUserManager;
@@ -52,7 +51,6 @@ import com.android.systemui.statusbar.phone.NotificationIconAreaController;
import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.phone.ScrimState;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.util.InjectionInflationController;
@@ -145,11 +143,6 @@ public class SystemUIFactory {
return new KeyguardIndicationController(context, indicationArea, lockIcon);
}
public QSTileHost createQSTileHost(Context context, StatusBar statusBar,
StatusBarIconController iconController) {
return new QSTileHost(context, statusBar, iconController);
}
public VolumeDialogComponent createVolumeDialogComponent(SystemUI systemUi, Context context) {
return new VolumeDialogComponent(systemUi, context);
}

View File

@@ -79,15 +79,18 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
private final RemoteInputQuickSettingsDisabler mRemoteInputQuickSettingsDisabler;
private final InjectionInflationController mInjectionInflater;
private final QSTileHost mHost;
@Inject
public QSFragment(RemoteInputQuickSettingsDisabler remoteInputQsDisabler,
InjectionInflationController injectionInflater,
Context context) {
Context context,
QSTileHost qsTileHost) {
mRemoteInputQuickSettingsDisabler = remoteInputQsDisabler;
mInjectionInflater = injectionInflater;
SysUiServiceProvider.getComponent(context, CommandQueue.class)
.observe(getLifecycle(), this);
mHost = qsTileHost;
}
@Override
@@ -122,6 +125,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
mQSPanel.getTileLayout().restoreInstanceState(savedInstanceState);
}
}
setHost(mHost);
}
@Override

View File

@@ -30,6 +30,7 @@ import android.util.Log;
import com.android.systemui.Dependency;
import com.android.systemui.R;
import com.android.systemui.SysUiServiceProvider;
import com.android.systemui.plugins.PluginListener;
import com.android.systemui.plugins.qs.QSFactory;
import com.android.systemui.plugins.qs.QSTile;
@@ -52,7 +53,12 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.function.Predicate;
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;
/** Platform implementation of the quick settings tile host **/
@Singleton
public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory> {
private static final String TAG = "QSTileHost";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
@@ -60,7 +66,6 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory> {
public static final String TILES_SETTING = Secure.QS_TILES;
private final Context mContext;
private final StatusBar mStatusBar;
private final LinkedHashMap<String, QSTile> mTiles = new LinkedHashMap<>();
protected final ArrayList<String> mTileSpecs = new ArrayList<>();
private final TileServices mServices;
@@ -70,19 +75,28 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory> {
private final StatusBarIconController mIconController;
private final ArrayList<QSFactory> mQsFactories = new ArrayList<>();
private int mCurrentUser;
private StatusBar mStatusBar;
public QSTileHost(Context context, StatusBar statusBar,
StatusBarIconController iconController) {
@Inject
public QSTileHost(Context context,
StatusBarIconController iconController,
QSFactoryImpl defaultFactory,
@Named(Dependency.MAIN_HANDLER_NAME) Handler mainHandler) {
mIconController = iconController;
mContext = context;
mStatusBar = statusBar;
mServices = new TileServices(this, Dependency.get(Dependency.BG_LOOPER));
mQsFactories.add(new QSFactoryImpl(this));
defaultFactory.setHost(this);
mQsFactories.add(defaultFactory);
Dependency.get(PluginManager.class).addPluginListener(this, QSFactory.class, true);
Dependency.get(TunerService.class).addTunable(this, TILES_SETTING);
mainHandler.post(() -> {
// This is technically a hack to avoid circular dependency of
// QSTileHost -> XXXTile -> QSTileHost. Posting ensures creation
// finishes before creating any tiles.
Dependency.get(TunerService.class).addTunable(this, TILES_SETTING);
});
// AutoTileManager can modify mTiles so make sure mTiles has already been initialized.
mAutoTiles = new AutoTileManager(context, this);
}
@@ -140,16 +154,25 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory> {
@Override
public void collapsePanels() {
if (mStatusBar == null) {
mStatusBar = SysUiServiceProvider.getComponent(mContext, StatusBar.class);
}
mStatusBar.postAnimateCollapsePanels();
}
@Override
public void forceCollapsePanels() {
if (mStatusBar == null) {
mStatusBar = SysUiServiceProvider.getComponent(mContext, StatusBar.class);
}
mStatusBar.postAnimateForceCollapsePanels();
}
@Override
public void openPanels() {
if (mStatusBar == null) {
mStatusBar = SysUiServiceProvider.getComponent(mContext, StatusBar.class);
}
mStatusBar.postAnimateOpenPanels();
}

View File

@@ -47,12 +47,79 @@ import com.android.systemui.qs.tiles.WifiTile;
import com.android.systemui.qs.tiles.WorkModeTile;
import com.android.systemui.util.leak.GarbageMonitor;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.inject.Singleton;
@Singleton
public class QSFactoryImpl implements QSFactory {
private static final String TAG = "QSFactory";
private final QSTileHost mHost;
public QSFactoryImpl(QSTileHost host) {
private final Provider<WifiTile> mWifiTileProvider;
private final Provider<BluetoothTile> mBluetoothTileProvider;
private final Provider<CellularTile> mCellularTileProvider;
private final Provider<DndTile> mDndTileProvider;
private final Provider<ColorInversionTile> mColorInversionTileProvider;
private final Provider<AirplaneModeTile> mAirplaneModeTileProvider;
private final Provider<WorkModeTile> mWorkModeTileProvider;
private final Provider<RotationLockTile> mRotationLockTileProvider;
private final Provider<FlashlightTile> mFlashlightTileProvider;
private final Provider<LocationTile> mLocationTileProvider;
private final Provider<CastTile> mCastTileProvider;
private final Provider<HotspotTile> mHotspotTileProvider;
private final Provider<UserTile> mUserTileProvider;
private final Provider<BatterySaverTile> mBatterySaverTileProvider;
private final Provider<DataSaverTile> mDataSaverTileProvider;
private final Provider<NightDisplayTile> mNightDisplayTileProvider;
private final Provider<NfcTile> mNfcTileProvider;
private final Provider<SensorPrivacyTile> mSensorPrivacyTileProvider;
private final Provider<GarbageMonitor.MemoryTile> mMemoryTileProvider;
private QSTileHost mHost;
@Inject
public QSFactoryImpl(Provider<WifiTile> wifiTileProvider,
Provider<BluetoothTile> bluetoothTileProvider,
Provider<CellularTile> cellularTileProvider,
Provider<DndTile> dndTileProvider,
Provider<ColorInversionTile> colorInversionTileProvider,
Provider<AirplaneModeTile> airplaneModeTileProvider,
Provider<WorkModeTile> workModeTileProvider,
Provider<RotationLockTile> rotationLockTileProvider,
Provider<FlashlightTile> flashlightTileProvider,
Provider<LocationTile> locationTileProvider,
Provider<CastTile> castTileProvider,
Provider<HotspotTile> hotspotTileProvider,
Provider<UserTile> userTileProvider,
Provider<BatterySaverTile> batterySaverTileProvider,
Provider<DataSaverTile> dataSaverTileProvider,
Provider<NightDisplayTile> nightDisplayTileProvider,
Provider<NfcTile> nfcTileProvider,
Provider<SensorPrivacyTile> sensorPrivacyTileProvider,
Provider<GarbageMonitor.MemoryTile> memoryTileProvider) {
mWifiTileProvider = wifiTileProvider;
mBluetoothTileProvider = bluetoothTileProvider;
mCellularTileProvider = cellularTileProvider;
mDndTileProvider = dndTileProvider;
mColorInversionTileProvider = colorInversionTileProvider;
mAirplaneModeTileProvider = airplaneModeTileProvider;
mWorkModeTileProvider = workModeTileProvider;
mRotationLockTileProvider = rotationLockTileProvider;
mFlashlightTileProvider = flashlightTileProvider;
mLocationTileProvider = locationTileProvider;
mCastTileProvider = castTileProvider;
mHotspotTileProvider = hotspotTileProvider;
mUserTileProvider = userTileProvider;
mBatterySaverTileProvider = batterySaverTileProvider;
mDataSaverTileProvider = dataSaverTileProvider;
mNightDisplayTileProvider = nightDisplayTileProvider;
mNfcTileProvider = nfcTileProvider;
mSensorPrivacyTileProvider = sensorPrivacyTileProvider;
mMemoryTileProvider = memoryTileProvider;
}
public void setHost(QSTileHost host) {
mHost = host;
}
@@ -68,41 +135,41 @@ public class QSFactoryImpl implements QSFactory {
// Stock tiles.
switch (tileSpec) {
case "wifi":
return new WifiTile(mHost);
return mWifiTileProvider.get();
case "bt":
return new BluetoothTile(mHost);
return mBluetoothTileProvider.get();
case "cell":
return new CellularTile(mHost);
return mCellularTileProvider.get();
case "dnd":
return new DndTile(mHost);
return mDndTileProvider.get();
case "inversion":
return new ColorInversionTile(mHost);
return mColorInversionTileProvider.get();
case "airplane":
return new AirplaneModeTile(mHost);
return mAirplaneModeTileProvider.get();
case "work":
return new WorkModeTile(mHost);
return mWorkModeTileProvider.get();
case "rotation":
return new RotationLockTile(mHost);
return mRotationLockTileProvider.get();
case "flashlight":
return new FlashlightTile(mHost);
return mFlashlightTileProvider.get();
case "location":
return new LocationTile(mHost);
return mLocationTileProvider.get();
case "cast":
return new CastTile(mHost);
return mCastTileProvider.get();
case "hotspot":
return new HotspotTile(mHost);
return mHotspotTileProvider.get();
case "user":
return new UserTile(mHost);
return mUserTileProvider.get();
case "battery":
return new BatterySaverTile(mHost);
return mBatterySaverTileProvider.get();
case "saver":
return new DataSaverTile(mHost);
return mDataSaverTileProvider.get();
case "night":
return new NightDisplayTile(mHost);
return mNightDisplayTileProvider.get();
case "nfc":
return new NfcTile(mHost);
return mNfcTileProvider.get();
case "sensorprivacy":
return new SensorPrivacyTile(mHost);
return mSensorPrivacyTileProvider.get();
}
// Intent tiles.
@@ -112,7 +179,7 @@ public class QSFactoryImpl implements QSFactory {
// Debug tiles.
if (Build.IS_DEBUGGABLE) {
if (tileSpec.equals(GarbageMonitor.MemoryTile.TILE_SPEC)) {
return new GarbageMonitor.MemoryTile(mHost);
return mMemoryTileProvider.get();
}
}

View File

@@ -40,6 +40,8 @@ import com.android.systemui.qs.GlobalSetting;
import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import javax.inject.Inject;
/** Quick settings tile: Airplane mode **/
public class AirplaneModeTile extends QSTileImpl<BooleanState> {
private final Icon mIcon =
@@ -48,6 +50,7 @@ public class AirplaneModeTile extends QSTileImpl<BooleanState> {
private boolean mListening;
@Inject
public AirplaneModeTile(QSHost host) {
super(host);

View File

@@ -30,6 +30,8 @@ import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.statusbar.policy.BatteryController;
import javax.inject.Inject;
public class BatterySaverTile extends QSTileImpl<BooleanState> implements
BatteryController.BatteryStateChangeCallback {
@@ -40,6 +42,7 @@ public class BatterySaverTile extends QSTileImpl<BooleanState> implements
private boolean mCharging;
private boolean mPluggedIn;
@Inject
public BatterySaverTile(QSHost host) {
super(host);
mBatteryController = Dependency.get(BatteryController.class);

View File

@@ -51,6 +51,8 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.inject.Inject;
/** Quick settings tile: Bluetooth **/
public class BluetoothTile extends QSTileImpl<BooleanState> {
private static final Intent BLUETOOTH_SETTINGS = new Intent(Settings.ACTION_BLUETOOTH_SETTINGS);
@@ -59,6 +61,7 @@ public class BluetoothTile extends QSTileImpl<BooleanState> {
private final BluetoothDetailAdapter mDetailAdapter;
private final ActivityStarter mActivityStarter;
@Inject
public BluetoothTile(QSHost host) {
super(host);
mController = Dependency.get(BluetoothController.class);

View File

@@ -51,6 +51,8 @@ import com.android.systemui.statusbar.policy.NetworkController;
import java.util.LinkedHashMap;
import java.util.Set;
import javax.inject.Inject;
/** Quick settings tile: Cast **/
public class CastTile extends QSTileImpl<BooleanState> {
private static final Intent CAST_SETTINGS =
@@ -65,6 +67,7 @@ public class CastTile extends QSTileImpl<BooleanState> {
private Dialog mDialog;
private boolean mWifiConnected;
@Inject
public CastTile(QSHost host) {
super(host);
mController = Dependency.get(CastController.class);

View File

@@ -51,6 +51,8 @@ import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.NetworkController.IconState;
import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
import javax.inject.Inject;
/** Quick settings tile: Cellular **/
public class CellularTile extends QSTileImpl<SignalState> {
private static final String ENABLE_SETTINGS_DATA_PLAN = "enable.settings.data.plan";
@@ -63,6 +65,7 @@ public class CellularTile extends QSTileImpl<SignalState> {
private final ActivityStarter mActivityStarter;
private final KeyguardMonitor mKeyguardMonitor;
@Inject
public CellularTile(QSHost host) {
super(host);
mController = Dependency.get(NetworkController.class);

View File

@@ -30,6 +30,8 @@ import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.SecureSetting;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import javax.inject.Inject;
/** Quick settings tile: Invert colors **/
public class ColorInversionTile extends QSTileImpl<BooleanState> {
@@ -38,6 +40,7 @@ public class ColorInversionTile extends QSTileImpl<BooleanState> {
private boolean mListening;
@Inject
public ColorInversionTile(QSHost host) {
super(host);

View File

@@ -30,11 +30,14 @@ import com.android.systemui.statusbar.phone.SystemUIDialog;
import com.android.systemui.statusbar.policy.DataSaverController;
import com.android.systemui.statusbar.policy.NetworkController;
import javax.inject.Inject;
public class DataSaverTile extends QSTileImpl<BooleanState> implements
DataSaverController.Listener{
private final DataSaverController mDataSaverController;
@Inject
public DataSaverTile(QSHost host) {
super(host);
mDataSaverController = Dependency.get(NetworkController.class).getDataSaverController();

View File

@@ -62,6 +62,8 @@ import com.android.systemui.statusbar.phone.SystemUIDialog;
import com.android.systemui.statusbar.policy.ZenModeController;
import com.android.systemui.volume.ZenModePanel;
import javax.inject.Inject;
/** Quick settings tile: Do not disturb **/
public class DndTile extends QSTileImpl<BooleanState> {
@@ -81,6 +83,7 @@ public class DndTile extends QSTileImpl<BooleanState> {
private boolean mShowingDetail;
private boolean mReceiverRegistered;
@Inject
public DndTile(QSHost host) {
super(host);
mController = Dependency.get(ZenModeController.class);

View File

@@ -30,6 +30,8 @@ import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.statusbar.policy.FlashlightController;
import javax.inject.Inject;
/** Quick settings tile: Control flashlight **/
public class FlashlightTile extends QSTileImpl<BooleanState> implements
FlashlightController.FlashlightListener {
@@ -37,6 +39,7 @@ public class FlashlightTile extends QSTileImpl<BooleanState> implements
private final Icon mIcon = ResourceIcon.get(R.drawable.ic_signal_flashlight);
private final FlashlightController mFlashlightController;
@Inject
public FlashlightTile(QSHost host) {
super(host);
mFlashlightController = Dependency.get(FlashlightController.class);

View File

@@ -34,6 +34,8 @@ import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.statusbar.policy.DataSaverController;
import com.android.systemui.statusbar.policy.HotspotController;
import javax.inject.Inject;
/** Quick settings tile: Hotspot **/
public class HotspotTile extends QSTileImpl<AirplaneBooleanState> {
private static final Intent TETHER_SETTINGS = new Intent().setComponent(new ComponentName(
@@ -48,6 +50,7 @@ public class HotspotTile extends QSTileImpl<AirplaneBooleanState> {
private final GlobalSetting mAirplaneMode;
private boolean mListening;
@Inject
public HotspotTile(QSHost host) {
super(host);
mHotspotController = Dependency.get(HotspotController.class);

View File

@@ -34,6 +34,8 @@ import com.android.systemui.statusbar.policy.KeyguardMonitor;
import com.android.systemui.statusbar.policy.LocationController;
import com.android.systemui.statusbar.policy.LocationController.LocationChangeCallback;
import javax.inject.Inject;
/** Quick settings tile: Location **/
public class LocationTile extends QSTileImpl<BooleanState> {
@@ -43,6 +45,7 @@ public class LocationTile extends QSTileImpl<BooleanState> {
private final KeyguardMonitor mKeyguard;
private final Callback mCallback = new Callback();
@Inject
public LocationTile(QSHost host) {
super(host);
mController = Dependency.get(LocationController.class);

View File

@@ -33,6 +33,8 @@ import com.android.systemui.plugins.qs.QSTile.BooleanState;
import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import javax.inject.Inject;
/** Quick settings tile: Enable/Disable NFC **/
public class NfcTile extends QSTileImpl<BooleanState> {
@@ -40,6 +42,7 @@ public class NfcTile extends QSTileImpl<BooleanState> {
private boolean mListening;
@Inject
public NfcTile(QSHost host) {
super(host);
}

View File

@@ -44,6 +44,8 @@ import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.TimeZone;
import javax.inject.Inject;
public class NightDisplayTile extends QSTileImpl<BooleanState>
implements ColorDisplayController.Callback {
@@ -58,6 +60,7 @@ public class NightDisplayTile extends QSTileImpl<BooleanState>
private ColorDisplayController mController;
private boolean mIsListening;
@Inject
public NightDisplayTile(QSHost host) {
super(host);
mController = new ColorDisplayController(mContext, ActivityManager.getCurrentUser());

View File

@@ -32,12 +32,15 @@ import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.statusbar.policy.RotationLockController;
import com.android.systemui.statusbar.policy.RotationLockController.RotationLockControllerCallback;
import javax.inject.Inject;
/** Quick settings tile: Rotation **/
public class RotationLockTile extends QSTileImpl<BooleanState> {
private final Icon mIcon = ResourceIcon.get(R.drawable.ic_qs_auto_rotate);
private final RotationLockController mController;
@Inject
public RotationLockTile(QSHost host) {
super(host);
mController = Dependency.get(RotationLockController.class);

View File

@@ -31,6 +31,8 @@ import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.statusbar.policy.KeyguardMonitor;
import javax.inject.Inject;
/** Quick settings tile: SensorPrivacy mode **/
public class SensorPrivacyTile extends QSTileImpl<BooleanState> implements
SensorPrivacyManager.OnSensorPrivacyChangedListener {
@@ -40,6 +42,7 @@ public class SensorPrivacyTile extends QSTileImpl<BooleanState> implements
private final KeyguardMonitor mKeyguard;
private final SensorPrivacyManager mSensorPrivacyManager;
@Inject
public SensorPrivacyTile(QSHost host) {
super(host);

View File

@@ -31,12 +31,15 @@ import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.statusbar.policy.UserInfoController;
import com.android.systemui.statusbar.policy.UserSwitcherController;
import javax.inject.Inject;
public class UserTile extends QSTileImpl<State> implements UserInfoController.OnUserInfoChangedListener {
private final UserSwitcherController mUserSwitcherController;
private final UserInfoController mUserInfoController;
private Pair<String, Drawable> mLastUpdate;
@Inject
public UserTile(QSHost host) {
super(host);
mUserSwitcherController = Dependency.get(UserSwitcherController.class);

View File

@@ -51,6 +51,8 @@ import com.android.systemui.statusbar.policy.WifiIcons;
import java.util.List;
import javax.inject.Inject;
/** Quick settings tile: Wifi **/
public class WifiTile extends QSTileImpl<SignalState> {
private static final Intent WIFI_SETTINGS = new Intent(Settings.ACTION_WIFI_SETTINGS);
@@ -64,6 +66,7 @@ public class WifiTile extends QSTileImpl<SignalState> {
private final ActivityStarter mActivityStarter;
private boolean mExpectDisabled;
@Inject
public WifiTile(QSHost host) {
super(host);
mController = Dependency.get(NetworkController.class);

View File

@@ -29,6 +29,8 @@ import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.statusbar.phone.ManagedProfileController;
import javax.inject.Inject;
/** Quick settings tile: Work profile on/off */
public class WorkModeTile extends QSTileImpl<BooleanState> implements
ManagedProfileController.Callback {
@@ -36,6 +38,7 @@ public class WorkModeTile extends QSTileImpl<BooleanState> implements
private final ManagedProfileController mProfileController;
@Inject
public WorkModeTile(QSHost host) {
super(host);
mProfileController = Dependency.get(ManagedProfileController.class);

View File

@@ -160,7 +160,6 @@ import com.android.systemui.plugins.qs.QS;
import com.android.systemui.plugins.statusbar.NotificationSwipeActionHelper.SnoozeOption;
import com.android.systemui.qs.QSFragment;
import com.android.systemui.qs.QSPanel;
import com.android.systemui.qs.QSTileHost;
import com.android.systemui.recents.Recents;
import com.android.systemui.recents.ScreenPinningRequest;
import com.android.systemui.shared.system.WindowManagerWrapper;
@@ -940,8 +939,6 @@ public class StatusBar extends SystemUI implements DemoMode,
.withPlugin(QS.class)
.withDefault(this::createDefaultQSFragment)
.build());
final QSTileHost qsh = SystemUIFactory.getInstance().createQSTileHost(mContext, this,
mIconController);
mBrightnessMirrorController = new BrightnessMirrorController(mStatusBarWindow,
(visible) -> {
mBrightnessMirrorVisible = visible;
@@ -950,7 +947,6 @@ public class StatusBar extends SystemUI implements DemoMode,
fragmentHostManager.addTagListener(QS.TAG, (tag, f) -> {
QS qs = (QS) f;
if (qs instanceof QSFragment) {
((QSFragment) qs).setHost(qsh);
mQSPanel = ((QSFragment) qs).getQsPanel();
mQSPanel.setBrightnessMirror(mBrightnessMirrorController);
}

View File

@@ -346,6 +346,7 @@ public class GarbageMonitor {
private final GarbageMonitor gm;
private ProcessMemInfo pmi;
@Inject
public MemoryTile(QSHost host) {
super(host);
gm = SystemUIFactory.getInstance().getRootComponent().createGarbageMonitor();

View File

@@ -21,6 +21,7 @@ import static org.mockito.Mockito.mock;
import android.app.Fragment;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.support.test.filters.SmallTest;
import android.testing.AndroidTestingRunner;
@@ -36,6 +37,7 @@ import com.android.systemui.Dependency;
import com.android.systemui.R;
import com.android.systemui.SystemUIFactory;
import com.android.systemui.SysuiBaseFragmentTest;
import com.android.systemui.qs.tileimpl.QSFactoryImpl;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.policy.Clock;
import com.android.systemui.statusbar.policy.ConfigurationController;
@@ -86,7 +88,8 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
QSFragment qs = (QSFragment) mFragment;
mFragments.dispatchResume();
processAllMessages();
QSTileHost host = new QSTileHost(mContext, null, mock(StatusBarIconController.class));
QSTileHost host = new QSTileHost(mContext, mock(StatusBarIconController.class),
mock(QSFactoryImpl.class), new Handler());
qs.setHost(host);
qs.setListening(true);
@@ -128,6 +131,7 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
return new QSFragment(
new RemoteInputQuickSettingsDisabler(context, mock(ConfigurationController.class)),
new InjectionInflationController(SystemUIFactory.getInstance().getRootComponent()),
context);
context,
mock(QSTileHost.class));
}
}

View File

@@ -21,6 +21,7 @@ import static junit.framework.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import android.content.ComponentName;
import android.os.Handler;
import android.os.Looper;
import android.service.quicksettings.Tile;
import android.test.suitebuilder.annotation.SmallTest;
@@ -30,6 +31,7 @@ import android.testing.TestableLooper.RunWithLooper;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.qs.QSTileHost;
import com.android.systemui.qs.tileimpl.QSFactoryImpl;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.policy.BluetoothController;
@@ -55,8 +57,10 @@ public class TileServicesTest extends SysuiTestCase {
public void setUp() throws Exception {
mDependency.injectMockDependency(BluetoothController.class);
mManagers = new ArrayList<>();
QSTileHost host = new QSTileHost(mContext, null,
mock(StatusBarIconController.class));
QSTileHost host = new QSTileHost(mContext,
mock(StatusBarIconController.class),
mock(QSFactoryImpl.class),
new Handler());
mTileService = new TestTileServices(host, Looper.getMainLooper());
}