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

Commit 08d4b0cb authored by t-m-w's avatar t-m-w Committed by Bruno Martins
Browse files

Revert "SystemUI: React to PrivacyConfig changes properly"

This reverts commit 1d95bc31.

Reason for revert: Resolved by AOSP change
"Refactor weakly referenced callback keep rules"

Change-Id: Idcc9c8779fee516832566733cdf75c1b1c5e9120
parent 149335ff
Loading
Loading
Loading
Loading
+20 −8
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import com.android.systemui.util.annotations.WeaklyReferencedCallback
import com.android.systemui.util.concurrency.DelayableExecutor
import com.android.systemui.util.withIncreasedIndent
import java.io.PrintWriter
import java.lang.ref.WeakReference
import javax.inject.Inject

@SysUISingleton
@@ -50,7 +51,7 @@ class PrivacyConfig @Inject constructor(
        private const val DEFAULT_MEDIA_PROJECTION = true
    }

    private val callbacks = mutableListOf<Callback>()
    private val callbacks = mutableListOf<WeakReference<Callback>>()

    var micCameraAvailable = isMicCameraEnabled()
        private set
@@ -65,19 +66,19 @@ class PrivacyConfig @Inject constructor(
                    // Running on the ui executor so can iterate on callbacks
                    if (properties.keyset.contains(MIC_CAMERA)) {
                        micCameraAvailable = properties.getBoolean(MIC_CAMERA, DEFAULT_MIC_CAMERA)
                        callbacks.forEach { it.onFlagMicCameraChanged(micCameraAvailable) }
                        callbacks.forEach { it.get()?.onFlagMicCameraChanged(micCameraAvailable) }
                    }

                    if (properties.keyset.contains(LOCATION)) {
                        locationAvailable = properties.getBoolean(LOCATION, DEFAULT_LOCATION)
                        callbacks.forEach { it.onFlagLocationChanged(locationAvailable) }
                        callbacks.forEach { it.get()?.onFlagLocationChanged(locationAvailable) }
                    }

                    if (properties.keyset.contains(MEDIA_PROJECTION)) {
                        mediaProjectionAvailable =
                                properties.getBoolean(MEDIA_PROJECTION, DEFAULT_MEDIA_PROJECTION)
                        callbacks.forEach {
                            it.onFlagMediaProjectionChanged(mediaProjectionAvailable)
                            it.get()?.onFlagMediaProjectionChanged(mediaProjectionAvailable)
                        }
                    }
                }
@@ -107,14 +108,23 @@ class PrivacyConfig @Inject constructor(
    }

    fun addCallback(callback: Callback) {
        addCallback(WeakReference(callback))
    }

    fun removeCallback(callback: Callback) {
        removeCallback(WeakReference(callback))
    }

    private fun addCallback(callback: WeakReference<Callback>) {
        uiExecutor.execute {
            callbacks.add(callback)
        }
    }

    fun removeCallback(callback: Callback) {
    private fun removeCallback(callback: WeakReference<Callback>) {
        uiExecutor.execute {
            callbacks.remove(callback)
            // Removes also if the callback is null
            callbacks.removeIf { it.get()?.equals(callback.get()) ?: true }
        }
    }

@@ -127,7 +137,9 @@ class PrivacyConfig @Inject constructor(
            ipw.println("mediaProjectionAvailable: $mediaProjectionAvailable")
            ipw.println("Callbacks:")
            ipw.withIncreasedIndent {
                callbacks.forEach { ipw.println(it) }
                callbacks.forEach { callback ->
                    callback.get()?.let { ipw.println(it) }
                }
            }
        }
        ipw.flush()