Merge "Provide QSFactory" into rvc-dev
This commit is contained in:
@@ -27,9 +27,11 @@ import com.android.systemui.car.CarDeviceProvisionedControllerImpl;
|
||||
import com.android.systemui.dagger.SystemUIRootComponent;
|
||||
import com.android.systemui.dock.DockManager;
|
||||
import com.android.systemui.dock.DockManagerImpl;
|
||||
import com.android.systemui.plugins.qs.QSFactory;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.power.EnhancedEstimates;
|
||||
import com.android.systemui.power.EnhancedEstimatesImpl;
|
||||
import com.android.systemui.qs.tileimpl.QSFactoryImpl;
|
||||
import com.android.systemui.recents.Recents;
|
||||
import com.android.systemui.recents.RecentsImplementation;
|
||||
import com.android.systemui.stackdivider.DividerModule;
|
||||
@@ -106,6 +108,10 @@ abstract class CarSystemUIModule {
|
||||
public abstract BatteryController provideBatteryController(
|
||||
BatteryControllerImpl controllerImpl);
|
||||
|
||||
@Binds
|
||||
@Singleton
|
||||
public abstract QSFactory provideQSFactory(QSFactoryImpl qsFactoryImpl);
|
||||
|
||||
@Binds
|
||||
abstract DockManager bindDockManager(DockManagerImpl dockManager);
|
||||
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
|
||||
<!-- Tiles native to System UI. Order should match "quick_settings_tiles_default" -->
|
||||
<string name="quick_settings_tiles_stock" translatable="false">
|
||||
wifi,cell,battery,dnd,flashlight,rotation,bt,airplane,location,hotspot,inversion,saver,dark,work,cast,night,screenrecord
|
||||
wifi,cell,battery,dnd,flashlight,rotation,bt,airplane,location,hotspot,inversion,saver,dark,work,cast,night,screenrecord,reverse
|
||||
</string>
|
||||
|
||||
<!-- The tiles to display in QuickSettings -->
|
||||
|
||||
@@ -26,9 +26,11 @@ import androidx.annotation.Nullable;
|
||||
import com.android.keyguard.KeyguardViewController;
|
||||
import com.android.systemui.dock.DockManager;
|
||||
import com.android.systemui.dock.DockManagerImpl;
|
||||
import com.android.systemui.plugins.qs.QSFactory;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.power.EnhancedEstimates;
|
||||
import com.android.systemui.power.EnhancedEstimatesImpl;
|
||||
import com.android.systemui.qs.tileimpl.QSFactoryImpl;
|
||||
import com.android.systemui.recents.Recents;
|
||||
import com.android.systemui.recents.RecentsImplementation;
|
||||
import com.android.systemui.stackdivider.DividerModule;
|
||||
@@ -84,6 +86,10 @@ public abstract class SystemUIDefaultModule {
|
||||
public abstract BatteryController provideBatteryController(
|
||||
BatteryControllerImpl controllerImpl);
|
||||
|
||||
@Binds
|
||||
@Singleton
|
||||
public abstract QSFactory provideQSFactory(QSFactoryImpl qsFactoryImpl);
|
||||
|
||||
@Binds
|
||||
abstract DockManager bindDockManager(DockManagerImpl dockManager);
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ public interface QSHost {
|
||||
void forceCollapsePanels();
|
||||
void openPanels();
|
||||
Context getContext();
|
||||
Context getUserContext();
|
||||
QSLogger getQSLogger();
|
||||
Collection<QSTile> getTiles();
|
||||
void addCallback(Callback callback);
|
||||
|
||||
@@ -45,7 +45,6 @@ import com.android.systemui.qs.external.CustomTile;
|
||||
import com.android.systemui.qs.external.TileLifecycleManager;
|
||||
import com.android.systemui.qs.external.TileServices;
|
||||
import com.android.systemui.qs.logging.QSLogger;
|
||||
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.StatusBar;
|
||||
@@ -98,7 +97,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
|
||||
@Inject
|
||||
public QSTileHost(Context context,
|
||||
StatusBarIconController iconController,
|
||||
QSFactoryImpl defaultFactory,
|
||||
QSFactory defaultFactory,
|
||||
@Main Handler mainHandler,
|
||||
@Background Looper bgLooper,
|
||||
PluginManager pluginManager,
|
||||
@@ -120,7 +119,6 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
|
||||
mServices = new TileServices(this, bgLooper, mBroadcastDispatcher);
|
||||
mStatusBarOptional = statusBarOptional;
|
||||
|
||||
defaultFactory.setHost(this);
|
||||
mQsFactories.add(defaultFactory);
|
||||
pluginManager.addPluginListener(this, QSFactory.class, true);
|
||||
mDumpManager.registerDumpable(TAG, this);
|
||||
@@ -211,10 +209,12 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
|
||||
return mContext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Context getUserContext() {
|
||||
return mUserContext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileServices getTileServices() {
|
||||
return mServices;
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
import com.android.systemui.Dependency;
|
||||
import com.android.systemui.plugins.ActivityStarter;
|
||||
import com.android.systemui.plugins.qs.QSTile.State;
|
||||
import com.android.systemui.qs.QSTileHost;
|
||||
import com.android.systemui.qs.QSHost;
|
||||
import com.android.systemui.qs.external.TileLifecycleManager.TileChangeListener;
|
||||
import com.android.systemui.qs.tileimpl.QSTileImpl;
|
||||
|
||||
@@ -79,7 +79,7 @@ public class CustomTile extends QSTileImpl<State> implements TileChangeListener
|
||||
private boolean mIsTokenGranted;
|
||||
private boolean mIsShowingDialog;
|
||||
|
||||
private CustomTile(QSTileHost host, String action, Context userContext) {
|
||||
private CustomTile(QSHost host, String action, Context userContext) {
|
||||
super(host);
|
||||
mWindowManager = WindowManagerGlobal.getWindowManagerService();
|
||||
mComponent = ComponentName.unflattenFromString(action);
|
||||
@@ -392,7 +392,7 @@ public class CustomTile extends QSTileImpl<State> implements TileChangeListener
|
||||
return ComponentName.unflattenFromString(action);
|
||||
}
|
||||
|
||||
public static CustomTile create(QSTileHost host, String spec, Context userContext) {
|
||||
public static CustomTile create(QSHost host, String spec, Context userContext) {
|
||||
if (spec == null || !spec.startsWith(PREFIX) || !spec.endsWith(")")) {
|
||||
throw new IllegalArgumentException("Bad custom tile spec: " + spec);
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ import com.android.systemui.plugins.qs.QSFactory;
|
||||
import com.android.systemui.plugins.qs.QSIconView;
|
||||
import com.android.systemui.plugins.qs.QSTile;
|
||||
import com.android.systemui.plugins.qs.QSTileView;
|
||||
import com.android.systemui.qs.QSTileHost;
|
||||
import com.android.systemui.qs.QSHost;
|
||||
import com.android.systemui.qs.external.CustomTile;
|
||||
import com.android.systemui.qs.tiles.AirplaneModeTile;
|
||||
import com.android.systemui.qs.tiles.BatterySaverTile;
|
||||
@@ -51,6 +51,8 @@ import javax.inject.Inject;
|
||||
import javax.inject.Provider;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import dagger.Lazy;
|
||||
|
||||
@Singleton
|
||||
public class QSFactoryImpl implements QSFactory {
|
||||
|
||||
@@ -77,10 +79,11 @@ public class QSFactoryImpl implements QSFactory {
|
||||
private final Provider<UiModeNightTile> mUiModeNightTileProvider;
|
||||
private final Provider<ScreenRecordTile> mScreenRecordTileProvider;
|
||||
|
||||
private QSTileHost mHost;
|
||||
private final Lazy<QSHost> mQsHostLazy;
|
||||
|
||||
@Inject
|
||||
public QSFactoryImpl(Provider<WifiTile> wifiTileProvider,
|
||||
public QSFactoryImpl(Lazy<QSHost> qsHostLazy,
|
||||
Provider<WifiTile> wifiTileProvider,
|
||||
Provider<BluetoothTile> bluetoothTileProvider,
|
||||
Provider<CellularTile> cellularTileProvider,
|
||||
Provider<DndTile> dndTileProvider,
|
||||
@@ -100,6 +103,7 @@ public class QSFactoryImpl implements QSFactory {
|
||||
Provider<GarbageMonitor.MemoryTile> memoryTileProvider,
|
||||
Provider<UiModeNightTile> uiModeNightTileProvider,
|
||||
Provider<ScreenRecordTile> screenRecordTileProvider) {
|
||||
mQsHostLazy = qsHostLazy;
|
||||
mWifiTileProvider = wifiTileProvider;
|
||||
mBluetoothTileProvider = bluetoothTileProvider;
|
||||
mCellularTileProvider = cellularTileProvider;
|
||||
@@ -122,10 +126,6 @@ public class QSFactoryImpl implements QSFactory {
|
||||
mScreenRecordTileProvider = screenRecordTileProvider;
|
||||
}
|
||||
|
||||
public void setHost(QSTileHost host) {
|
||||
mHost = host;
|
||||
}
|
||||
|
||||
public QSTile createTile(String tileSpec) {
|
||||
QSTileImpl tile = createTileInternal(tileSpec);
|
||||
if (tile != null) {
|
||||
@@ -179,7 +179,8 @@ public class QSFactoryImpl implements QSFactory {
|
||||
|
||||
// Custom tiles
|
||||
if (tileSpec.startsWith(CustomTile.PREFIX)) {
|
||||
return CustomTile.create(mHost, tileSpec, mHost.getUserContext());
|
||||
return CustomTile.create(mQsHostLazy.get(), tileSpec,
|
||||
mQsHostLazy.get().getUserContext());
|
||||
}
|
||||
|
||||
// Debug tiles.
|
||||
@@ -196,7 +197,7 @@ public class QSFactoryImpl implements QSFactory {
|
||||
|
||||
@Override
|
||||
public QSTileView createTileView(QSTile tile, boolean collapsedView) {
|
||||
Context context = new ContextThemeWrapper(mHost.getContext(), R.style.qs_theme);
|
||||
Context context = new ContextThemeWrapper(mQsHostLazy.get().getContext(), R.style.qs_theme);
|
||||
QSIconView icon = tile.createTileView(context);
|
||||
if (collapsedView) {
|
||||
return new QSTileBaseView(context, icon, collapsedView);
|
||||
|
||||
@@ -52,6 +52,16 @@ public interface BatteryController extends DemoMode, Dumpable,
|
||||
*/
|
||||
boolean isAodPowerSave();
|
||||
|
||||
/**
|
||||
* Returns {@code true} if reverse is supported.
|
||||
*/
|
||||
default boolean isReverseSupported() { return false; }
|
||||
|
||||
/**
|
||||
* Returns {@code true} if reverse is on.
|
||||
*/
|
||||
default boolean isReverseOn() { return false; }
|
||||
|
||||
/**
|
||||
* Set reverse state.
|
||||
* @param isReverse true if turn on reverse, false otherwise
|
||||
|
||||
@@ -86,7 +86,7 @@ public class QSTileHostTest extends SysuiTestCase {
|
||||
@Mock
|
||||
private StatusBarIconController mIconController;
|
||||
@Mock
|
||||
private QSFactoryImpl mDefaultFactory;
|
||||
private QSFactory mDefaultFactory;
|
||||
@Mock
|
||||
private PluginManager mPluginManager;
|
||||
@Mock
|
||||
@@ -295,7 +295,7 @@ public class QSTileHostTest extends SysuiTestCase {
|
||||
|
||||
private static class TestQSTileHost extends QSTileHost {
|
||||
TestQSTileHost(Context context, StatusBarIconController iconController,
|
||||
QSFactoryImpl defaultFactory, Handler mainHandler, Looper bgLooper,
|
||||
QSFactory defaultFactory, Handler mainHandler, Looper bgLooper,
|
||||
PluginManager pluginManager, TunerService tunerService,
|
||||
Provider<AutoTileManager> autoTiles, DumpManager dumpManager,
|
||||
BroadcastDispatcher broadcastDispatcher, StatusBar statusBar, QSLogger qsLogger) {
|
||||
|
||||
@@ -30,7 +30,7 @@ import android.view.IWindowManager
|
||||
import androidx.test.runner.AndroidJUnit4
|
||||
import com.android.systemui.SysuiTestCase
|
||||
import com.android.systemui.plugins.qs.QSTile
|
||||
import com.android.systemui.qs.QSTileHost
|
||||
import com.android.systemui.qs.QSHost
|
||||
import junit.framework.Assert.assertFalse
|
||||
import junit.framework.Assert.assertTrue
|
||||
import org.junit.Assert.assertEquals
|
||||
@@ -56,7 +56,7 @@ class CustomTileTest : SysuiTestCase() {
|
||||
val TILE_SPEC = CustomTile.toSpec(componentName)
|
||||
}
|
||||
|
||||
@Mock private lateinit var mTileHost: QSTileHost
|
||||
@Mock private lateinit var mTileHost: QSHost
|
||||
@Mock private lateinit var mTileService: IQSTileService
|
||||
@Mock private lateinit var mTileServices: TileServices
|
||||
@Mock private lateinit var mTileServiceManager: TileServiceManager
|
||||
|
||||
Reference in New Issue
Block a user