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

Commit c9b5addb authored by Danny Burakov's avatar Danny Burakov Committed by Android (Google) Code Review
Browse files

Merge "[flexiglass] Force garbage collection after successful authentication." into main

parents 39a25720 0180d5bf
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext

/**
 * Hosts application business logic related to user authentication.
@@ -227,6 +228,10 @@ constructor(
            // Since authentication succeeded, we should refresh throttling to make sure that our
            // state is completely reflecting the upstream source of truth.
            refreshThrottling()

            // Force a garbage collection in an attempt to erase any credentials left in memory.
            // Do it after a 5-sec delay to avoid making the bouncer dismiss animation janky.
            initiateGarbageCollection(delayMs = 5000)
        }

        return if (authenticationResult.isSuccessful) {
@@ -310,6 +315,15 @@ constructor(
        }
    }

    private suspend fun initiateGarbageCollection(delayMs: Long) {
        withContext(backgroundDispatcher) {
            delay(delayMs)
            System.gc()
            System.runFinalization()
            System.gc()
        }
    }

    companion object {
        const val TAG = "AuthenticationInteractor"
    }