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

Commit 46d59213 authored by Matt Pape's avatar Matt Pape Committed by Android (Google) Code Review
Browse files

Merge "Update systemui components to DeviceConfig.onPropertiesChangedListener"

parents 7c3b87dc cb88879c
Loading
Loading
Loading
Loading
+18 −14
Original line number Diff line number Diff line
@@ -95,12 +95,14 @@ class PrivacyItemController @Inject constructor(

    private var indicatorsAvailable = isPermissionsHubEnabled()
    @VisibleForTesting
    internal val devicePropertyChangedListener =
            object : DeviceConfig.OnPropertyChangedListener {
        override fun onPropertyChanged(namespace: String, name: String, value: String?) {
            if (DeviceConfig.NAMESPACE_PRIVACY.equals(namespace) &&
                    SystemUiDeviceConfigFlags.PROPERTY_PERMISSIONS_HUB_ENABLED.equals(name)) {
                indicatorsAvailable = java.lang.Boolean.parseBoolean(value)
    internal val devicePropertiesChangedListener =
            object : DeviceConfig.OnPropertiesChangedListener {
        override fun onPropertiesChanged(properties: DeviceConfig.Properties) {
            if (DeviceConfig.NAMESPACE_PRIVACY.equals(properties.getNamespace()) &&
                    properties.getKeyset().contains(
                    SystemUiDeviceConfigFlags.PROPERTY_PERMISSIONS_HUB_ENABLED)) {
                indicatorsAvailable = properties.getBoolean(
                        SystemUiDeviceConfigFlags.PROPERTY_PERMISSIONS_HUB_ENABLED, false)
                messageHandler.removeMessages(MSG_UPDATE_LISTENING_STATE)
                messageHandler.sendEmptyMessage(MSG_UPDATE_LISTENING_STATE)
            }
@@ -130,8 +132,10 @@ class PrivacyItemController @Inject constructor(
        }

    init {
        DeviceConfig.addOnPropertyChangedListener(
                DeviceConfig.NAMESPACE_PRIVACY, context.mainExecutor, devicePropertyChangedListener)
        DeviceConfig.addOnPropertiesChangedListener(
                DeviceConfig.NAMESPACE_PRIVACY,
                context.mainExecutor,
                devicePropertiesChangedListener)
    }

    private fun unregisterReceiver() {
+10 −9
Original line number Diff line number Diff line
@@ -158,14 +158,15 @@ public class QuickStatusBarHeader extends RelativeLayout implements
    private boolean mHasTopCutout = false;
    private boolean mPrivacyChipLogged = false;

    private final DeviceConfig.OnPropertyChangedListener mPropertyListener =
            new DeviceConfig.OnPropertyChangedListener() {
    private final DeviceConfig.OnPropertiesChangedListener mPropertiesListener =
            new DeviceConfig.OnPropertiesChangedListener() {
                @Override
                public void onPropertyChanged(String namespace, String name, String value) {
                    if (DeviceConfig.NAMESPACE_PRIVACY.equals(namespace)
                            && SystemUiDeviceConfigFlags.PROPERTY_PERMISSIONS_HUB_ENABLED.equals(
                            name)) {
                        mPermissionsHubEnabled = Boolean.valueOf(value);
                public void onPropertiesChanged(DeviceConfig.Properties properties) {
                    if (DeviceConfig.NAMESPACE_PRIVACY.equals(properties.getNamespace())
                            && properties.getKeyset()
                            .contains(SystemUiDeviceConfigFlags.PROPERTY_PERMISSIONS_HUB_ENABLED)) {
                        mPermissionsHubEnabled = properties.getBoolean(
                                SystemUiDeviceConfigFlags.PROPERTY_PERMISSIONS_HUB_ENABLED, false);
                        StatusIconContainer iconContainer = findViewById(R.id.statusIcons);
                        iconContainer.setIgnoredSlots(getIgnoredIconSlots());
                    }
@@ -257,8 +258,8 @@ public class QuickStatusBarHeader extends RelativeLayout implements

        mPermissionsHubEnabled = PrivacyItemControllerKt.isPermissionsHubEnabled();
        // Change the ignored slots when DeviceConfig flag changes
        DeviceConfig.addOnPropertyChangedListener(DeviceConfig.NAMESPACE_PRIVACY,
                mContext.getMainExecutor(), mPropertyListener);
        DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_PRIVACY,
                mContext.getMainExecutor(), mPropertiesListener);

    }

+23 −2
Original line number Diff line number Diff line
@@ -48,12 +48,15 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentCaptor
import org.mockito.ArgumentMatchers.any
import org.mockito.ArgumentMatchers.anyBoolean
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.ArgumentMatchers.anyList
import org.mockito.ArgumentMatchers.anyString
import org.mockito.ArgumentMatchers.eq
import org.mockito.Captor
import org.mockito.Mock
import org.mockito.Mockito.atLeastOnce
import org.mockito.Mockito.doAnswer
import org.mockito.Mockito.doReturn
import org.mockito.Mockito.mock
import org.mockito.Mockito.never
@@ -281,13 +284,31 @@ class PrivacyItemControllerTest : SysuiTestCase() {

    @Test
    fun testNotListeningWhenIndicatorsDisabled() {
        privacyItemController.devicePropertyChangedListener.onPropertyChanged(
        val properties = getProperties(
                DeviceConfig.NAMESPACE_PRIVACY,
                SystemUiDeviceConfigFlags.PROPERTY_PERMISSIONS_HUB_ENABLED,
                "false")
                false)
        privacyItemController.devicePropertiesChangedListener.onPropertiesChanged(properties)
        privacyItemController.addCallback(callback)
        testableLooper.processAllMessages()
        verify(appOpsController, never()).addCallback(eq(PrivacyItemController.OPS),
                any(AppOpsController.Callback::class.java))
    }

    private fun getProperties(namespace: String, name: String, value: Boolean):
            DeviceConfig.Properties {
        val properties = mock<DeviceConfig.Properties>(DeviceConfig.Properties::class.java)
        doReturn(namespace).`when`(properties).getNamespace()
        doReturn(setOf(name)).`when`(properties).getKeyset()
        doAnswer {
            val key: String = it.getArgument(0)
            val defaultValue: Boolean = it.getArgument(1)
            if (name.equals(key, ignoreCase = true)) {
                value
            } else {
                defaultValue
            }
        }.`when`(properties).getBoolean(anyString(), anyBoolean())
        return properties
    }
}
 No newline at end of file