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

Commit 9ccb1b53 authored by Dave Mankoff's avatar Dave Mankoff
Browse files

Fix ContrastDialog not displaying.

Need to call `#setView` before `AlertDialog#onCreate`. The prior
version of this class (before being converted to a Delegate) never
called `super#onCreate` at all.

Flag: NA
Fixes: 315973464
Test: manually run and viewed dialog
Change-Id: Id52063b5d40a1c949a7a0a5e1c3088549ce409e9
parent 933f3ee9
Loading
Loading
Loading
Loading
+14 −11
Original line number Diff line number Diff line
@@ -35,7 +35,9 @@ import java.util.concurrent.Executor
import javax.inject.Inject

/** Dialog to select contrast options */
class ContrastDialogDelegate @Inject constructor(
class ContrastDialogDelegate
@Inject
constructor(
    private val sysuiDialogFactory: SystemUIDialog.Factory,
    @Main private val mainExecutor: Executor,
    private val uiModeManager: UiModeManager,
@@ -43,15 +45,12 @@ class ContrastDialogDelegate @Inject constructor(
    private val secureSettings: SecureSettings,
) : SystemUIDialog.Delegate, UiModeManager.ContrastChangeListener {

    override fun createDialog(): SystemUIDialog {
        return sysuiDialogFactory.create(this)
    }

    @VisibleForTesting lateinit var contrastButtons: Map<Int, FrameLayout>
    lateinit var dialogView: View
    @VisibleForTesting var initialContrast: Float = fromContrastLevel(CONTRAST_LEVEL_STANDARD)

    override fun onCreate(dialog: SystemUIDialog, savedInstanceState: Bundle?) {
    override fun createDialog(): SystemUIDialog {
        val dialog = sysuiDialogFactory.create(this)
        dialogView = dialog.layoutInflater.inflate(R.layout.contrast_dialog, null)
        with(dialog) {
            setView(dialogView)
@@ -67,12 +66,16 @@ class ContrastDialogDelegate @Inject constructor(
            }
            setPositiveButton(com.android.settingslib.R.string.done) { _, _ -> dialog.dismiss() }
        }

        return dialog
    }

    override fun onCreate(dialog: SystemUIDialog, savedInstanceState: Bundle?) {
        contrastButtons =
            mapOf(
                CONTRAST_LEVEL_STANDARD to dialogView.requireViewById(
                    R.id.contrast_button_standard),
                CONTRAST_LEVEL_MEDIUM to dialogView.requireViewById(R.id.contrast_button_medium),
                CONTRAST_LEVEL_HIGH to dialogView.requireViewById(R.id.contrast_button_high)
                CONTRAST_LEVEL_STANDARD to dialog.requireViewById(R.id.contrast_button_standard),
                CONTRAST_LEVEL_MEDIUM to dialog.requireViewById(R.id.contrast_button_medium),
                CONTRAST_LEVEL_HIGH to dialog.requireViewById(R.id.contrast_button_high)
            )

        contrastButtons.forEach { (contrastLevel, contrastButton) ->
+17 −7
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.provider.Settings
import android.testing.AndroidTestingRunner
import android.testing.TestableLooper.RunWithLooper
import android.view.LayoutInflater
import android.view.View
import android.widget.FrameLayout
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
@@ -39,6 +40,8 @@ import com.android.systemui.util.time.FakeSystemClock
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentCaptor
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.Mock
import org.mockito.Mockito.eq
import org.mockito.Mockito.verify
@@ -80,6 +83,13 @@ class ContrastDialogDelegateTest : SysuiTestCase() {
                mockUserTracker,
                mockSecureSettings
            )

        mContrastDialogDelegate.createDialog()
        val viewCaptor = ArgumentCaptor.forClass(View::class.java)
        verify(sysuiDialog).setView(viewCaptor.capture())
        whenever(sysuiDialog.requireViewById(anyInt()) as View?).then {
            viewCaptor.value.requireViewById(it.getArgument(0))
        }
    }

    @Test