Merge "Provide QSFactory" into rvc-dev

This commit is contained in:
John Li
2020-03-17 15:34:01 +00:00
committed by Android (Google) Code Review
10 changed files with 44 additions and 20 deletions

View File

@@ -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);

View File

@@ -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 -->

View File

@@ -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);

View File

@@ -28,6 +28,7 @@ public interface QSHost {
void forceCollapsePanels();
void openPanels();
Context getContext();
Context getUserContext();
QSLogger getQSLogger();
Collection<QSTile> getTiles();
void addCallback(Callback callback);

View File

@@ -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;
}

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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

View File

@@ -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) {

View File

@@ -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