From 5fe95989f9ffa1e42640b256f4c7b1f8a30bb29b Mon Sep 17 00:00:00 2001 From: arangelov Date: Fri, 17 Aug 2018 18:43:31 +0100 Subject: [PATCH] Autoadd quick setting every time we create a work profile. Before this CL, if we create a work profile for the second time, the work profile quick setting will not be added, because AutoAddTracker has already marked it as added. This CL fixes this by unmarking the tile as added when the work profile is removed. Test: Manual Bug: 77515080 Change-Id: I72f292c599e8033df13484965f7ed65049f965ff --- .../src/com/android/systemui/qs/AutoAddTracker.java | 6 ++++++ packages/SystemUI/src/com/android/systemui/qs/QSHost.java | 1 + .../SystemUI/src/com/android/systemui/qs/QSTileHost.java | 5 +++++ .../src/com/android/systemui/qs/tiles/WorkModeTile.java | 1 + .../android/systemui/statusbar/phone/AutoTileManager.java | 6 ++++-- 5 files changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.java b/packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.java index 2a2bc0923e1b6..dfd3f735dfaaf 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.java +++ b/packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.java @@ -72,6 +72,12 @@ public class AutoAddTracker { } } + public void setTileRemoved(String tile) { + if (mAutoAdded.remove(tile)) { + saveTiles(); + } + } + public void destroy() { mContext.getContentResolver().unregisterContentObserver(mObserver); } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSHost.java b/packages/SystemUI/src/com/android/systemui/qs/QSHost.java index 84524a62adfa9..84fa7004f3631 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSHost.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSHost.java @@ -32,6 +32,7 @@ public interface QSHost { void removeCallback(Callback callback); TileServices getTileServices(); void removeTile(String tileSpec); + void unmarkTileAsAutoAdded(String tileSpec); int indexOf(String tileSpec); diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java index bb69b7a17660d..86e69e34fb9ed 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java @@ -231,6 +231,11 @@ public class QSTileHost implements QSHost, Tunable, PluginListener { changeTileSpecs(tileSpecs-> tileSpecs.remove(spec)); } + @Override + public void unmarkTileAsAutoAdded(String spec) { + mAutoTiles.unmarkTileAsAutoAdded(spec); + } + public void addTile(String spec) { changeTileSpecs(tileSpecs-> tileSpecs.add(spec)); } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/WorkModeTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/WorkModeTile.java index 5bab3e8f39a46..3109deaf72391 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/WorkModeTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/WorkModeTile.java @@ -78,6 +78,7 @@ public class WorkModeTile extends QSTileImpl implements @Override public void onManagedProfileRemoved() { mHost.removeTile(getTileSpec()); + mHost.unmarkTileAsAutoAdded(getTileSpec()); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java index 446a1d4c3c7b9..ab58660f6ed62 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java @@ -96,6 +96,10 @@ public class AutoTileManager { Dependency.get(ColorDisplayController.class).setListener(null); } + public void unmarkTileAsAutoAdded(String tabSpec) { + mAutoTracker.setTileRemoved(tabSpec); + } + private final ManagedProfileController.Callback mProfileCallback = new ManagedProfileController.Callback() { @Override @@ -104,8 +108,6 @@ public class AutoTileManager { if (Dependency.get(ManagedProfileController.class).hasActiveProfile()) { mHost.addTile(WORK); mAutoTracker.setTileAdded(WORK); - mHandler.post(() -> Dependency.get(ManagedProfileController.class) - .removeCallback(mProfileCallback)); } }