Loading packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.java +3 −0 Original line number Diff line number Diff line Loading @@ -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 = { Loading @@ -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()); Loading packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java +7 −5 Original line number Diff line number Diff line Loading @@ -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 **/ Loading @@ -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; Loading @@ -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; Loading @@ -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() { Loading Loading @@ -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) { Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java +31 −24 Original line number Diff line number Diff line Loading @@ -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. */ Loading @@ -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, Loading @@ -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); } } Loading @@ -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); } } Loading @@ -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); } Loading @@ -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)); } } }; Loading @@ -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)); } } }; Loading @@ -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)); } }; } packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java +3 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading packages/SystemUI/tests/src/com/android/systemui/qs/external/TileServicesTest.java +3 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading
packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.java +3 −0 Original line number Diff line number Diff line Loading @@ -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 = { Loading @@ -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()); Loading
packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java +7 −5 Original line number Diff line number Diff line Loading @@ -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 **/ Loading @@ -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; Loading @@ -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; Loading @@ -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() { Loading Loading @@ -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) { Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java +31 −24 Original line number Diff line number Diff line Loading @@ -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. */ Loading @@ -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, Loading @@ -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); } } Loading @@ -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); } } Loading @@ -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); } Loading @@ -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)); } } }; Loading @@ -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)); } } }; Loading @@ -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)); } }; }
packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java +3 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading
packages/SystemUI/tests/src/com/android/systemui/qs/external/TileServicesTest.java +3 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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