Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 913c2b95 authored by Anton Potapov's avatar Anton Potapov Committed by Automerger Merge Worker
Browse files

Merge "Add memorizing work tile position when it's restored to use it when...

Merge "Add memorizing work tile position when it's restored to use it when adding the tile" into tm-qpr-dev am: b9e2d49c am: 8cb26343

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21073183



Change-Id: I4b67c110fde958c6f68d604394d175b0ca72d6c6
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents f092b235 8cb26343
Loading
Loading
Loading
Loading
+22 −15
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ import java.util.concurrent.Executor
import javax.inject.Inject

private const val TAG = "AutoAddTracker"
private const val DELIMITER = ","

/**
 * Class to track tiles that have been auto-added
@@ -67,7 +68,7 @@ class AutoAddTracker @VisibleForTesting constructor(

    @GuardedBy("autoAdded")
    private val autoAdded = ArraySet<String>()
    private var restoredTiles: Set<String>? = null
    private var restoredTiles: Map<String, AutoTile>? = null

    override val currentUserId: Int
        get() = userId
@@ -98,25 +99,26 @@ class AutoAddTracker @VisibleForTesting constructor(
        when (intent.getStringExtra(Intent.EXTRA_SETTING_NAME)) {
            Settings.Secure.QS_TILES -> {
                restoredTiles = intent.getStringExtra(Intent.EXTRA_SETTING_NEW_VALUE)
                        ?.split(",")
                        ?.toSet()
                        ?.split(DELIMITER)
                        ?.mapIndexed(::AutoTile)
                        ?.associateBy(AutoTile::tileType)
                        ?: run {
                            Log.w(TAG, "Null restored tiles for user $userId")
                            emptySet()
                            emptyMap()
                        }
            }
            Settings.Secure.QS_AUTO_ADDED_TILES -> {
                restoredTiles?.let { tiles ->
                restoredTiles?.let { restoredTiles ->
                    val restoredAutoAdded = intent
                            .getStringExtra(Intent.EXTRA_SETTING_NEW_VALUE)
                            ?.split(",")
                            ?.split(DELIMITER)
                            ?: emptyList()
                    val autoAddedBeforeRestore = intent
                            .getStringExtra(Intent.EXTRA_SETTING_PREVIOUS_VALUE)
                            ?.split(",")
                            ?.split(DELIMITER)
                            ?: emptyList()

                    val tilesToRemove = restoredAutoAdded.filter { it !in tiles }
                    val tilesToRemove = restoredAutoAdded.filter { it !in restoredTiles }
                    if (tilesToRemove.isNotEmpty()) {
                        qsHost.removeTiles(tilesToRemove)
                    }
@@ -180,6 +182,9 @@ class AutoAddTracker @VisibleForTesting constructor(
        registerBroadcastReceiver()
    }

    fun getRestoredTilePosition(tile: String): Int =
        restoredTiles?.get(tile)?.index ?: QSTileHost.POSITION_AT_END

    /**
     * Returns `true` if the tile has been auto-added before
     */
@@ -222,7 +227,7 @@ class AutoAddTracker @VisibleForTesting constructor(
    }

    private fun getTilesFromListLocked(): String {
        return TextUtils.join(",", autoAdded)
        return TextUtils.join(DELIMITER, autoAdded)
    }

    private fun saveTiles(tiles: String) {
@@ -245,7 +250,7 @@ class AutoAddTracker @VisibleForTesting constructor(

    private fun getAdded(): Collection<String> {
        val current = secureSettings.getStringForUser(Settings.Secure.QS_AUTO_ADDED_TILES, userId)
        return current?.split(",") ?: emptySet()
        return current?.split(DELIMITER) ?: emptySet()
    }

    override fun dump(pw: PrintWriter, args: Array<out String>) {
@@ -281,4 +286,6 @@ class AutoAddTracker @VisibleForTesting constructor(
            )
        }
    }

    private data class AutoTile(val index: Int, val tileType: String)
}
 No newline at end of file
+2 −1
Original line number Diff line number Diff line
@@ -279,7 +279,8 @@ public class AutoTileManager implements UserAwareController {
                public void onManagedProfileChanged() {
                    if (mManagedProfileController.hasActiveProfile()) {
                        if (mAutoTracker.isAdded(WORK)) return;
                        mHost.addTile(WORK);
                        final int position = mAutoTracker.getRestoredTilePosition(WORK);
                        mHost.addTile(WORK, position);
                        mAutoTracker.setTileAdded(WORK);
                    } else {
                        if (!mAutoTracker.isAdded(WORK)) return;
+24 −0
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ import java.util.concurrent.Executor;
@SmallTest
public class AutoAddTrackerTest extends SysuiTestCase {

    private static final int END_POSITION = -1;
    private static final int USER = 0;

    @Mock
@@ -141,6 +142,29 @@ public class AutoAddTrackerTest extends SysuiTestCase {
        assertTrue(mAutoTracker.isAdded(SAVER));
    }

    @Test
    public void testRestoredTilePositionPreserved() {
        verify(mBroadcastDispatcher).registerReceiver(
                mBroadcastReceiverArgumentCaptor.capture(), any(), any(), any(), anyInt(), any());
        String restoredTiles = "saver,internet,work,cast";
        Intent restoreTilesIntent = makeRestoreIntent(Secure.QS_TILES, null, restoredTiles);

        mBroadcastReceiverArgumentCaptor.getValue().onReceive(mContext, restoreTilesIntent);

        assertEquals(2, mAutoTracker.getRestoredTilePosition("work"));
    }

    @Test
    public void testNoRestoredTileReturnsEndPosition() {
        verify(mBroadcastDispatcher).registerReceiver(
                mBroadcastReceiverArgumentCaptor.capture(), any(), any(), any(), anyInt(), any());
        Intent restoreTilesIntent = makeRestoreIntent(Secure.QS_TILES, null, null);

        mBroadcastReceiverArgumentCaptor.getValue().onReceive(mContext, restoreTilesIntent);

        assertEquals(END_POSITION, mAutoTracker.getRestoredTilePosition("work"));
    }

    @Test
    public void testBroadcastReceiverRegistered() {
        verify(mBroadcastDispatcher).registerReceiver(
+2 −1
Original line number Diff line number Diff line
@@ -510,6 +510,7 @@ public class AutoTileManagerTest extends SysuiTestCase {
    @Test
    public void managedProfileAdded_tileAdded() {
        when(mAutoAddTracker.isAdded(eq("work"))).thenReturn(false);
        when(mAutoAddTracker.getRestoredTilePosition(eq("work"))).thenReturn(2);
        mAutoTileManager = createAutoTileManager(mContext);
        Mockito.doAnswer((Answer<Object>) invocation -> {
            mManagedProfileCallback = invocation.getArgument(0);
@@ -520,7 +521,7 @@ public class AutoTileManagerTest extends SysuiTestCase {

        mManagedProfileCallback.onManagedProfileChanged();

        verify(mQsTileHost, times(1)).addTile(eq("work"));
        verify(mQsTileHost, times(1)).addTile(eq("work"), eq(2));
        verify(mAutoAddTracker, times(1)).setTileAdded(eq("work"));
    }