Commit e3aa149c authored by Maurya Talisetti's avatar Maurya Talisetti
Browse files

Closes #3033: Close toolbar menu on app exit

Currently, on exiting the app, the toolbar menu (if already open), remains open after reopening the app. This fix ensures that the menu gets closed on app exit.
parent 76e810f9
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -557,6 +557,10 @@ class BrowserToolbar @JvmOverloads constructor(
        return false
    }

    override fun onStop() {
        displayToolbar.onStop()
    }

    override fun setSearchTerms(searchTerms: String) {
        this.searchTerms = searchTerms
    }
+4 −0
Original line number Diff line number Diff line
@@ -573,6 +573,10 @@ internal class DisplayToolbar(
        }
    }

    fun onStop() {
        menuView.dismissMenu()
    }

    /**
     * Layout the tracking protection views if they are visible and returns where the [siteSecurityIconView]
     * must be layout (left and right) coordinates.
+6 −1
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ import android.util.TypedValue
import android.view.View
import android.widget.FrameLayout
import androidx.annotation.ColorInt
import androidx.annotation.VisibleForTesting
import androidx.appcompat.widget.AppCompatImageView
import androidx.core.content.ContextCompat
import androidx.core.view.setPadding
@@ -25,7 +26,7 @@ internal class MenuButton(
    private val parent: View
) : FrameLayout(context) {

    private var menu: BrowserMenu? = null
    @VisibleForTesting internal var menu: BrowserMenu? = null

    private val menuIcon = AppCompatImageView(context).apply {
        setPadding(resources.getDimensionPixelSize(R.dimen.mozac_browser_toolbar_menu_padding))
@@ -96,6 +97,10 @@ internal class MenuButton(
        }
    }

    fun dismissMenu() {
        menu?.dismiss()
    }

    fun setColorFilter(@ColorInt color: Int) {
        menuIcon.setColorFilter(color)
    }
+12 −0
Original line number Diff line number Diff line
@@ -1092,6 +1092,18 @@ class DisplayToolbarTest {
        assertNull(toolbar.displayToolbar.siteSecurityIconView.background)
    }

    @Test
    fun `Backgrounding the app dismisses menu if already open`() {
        val toolbar = mock(BrowserToolbar::class.java)
        val displayToolbar = DisplayToolbar(testContext, toolbar)
        val menuView = extractMenuView(displayToolbar)

        menuView.menu = mock()
        displayToolbar.onStop()

        verify(menuView.menu)?.dismiss()
    }

    companion object {
        private fun extractUrlView(displayToolbar: DisplayToolbar): TextView =
            extractView(displayToolbar) {
+9 −0
Original line number Diff line number Diff line
@@ -126,6 +126,15 @@ class MenuButtonTest {
        verify(context).getDrawable(R.drawable.mozac_menu_indicator)
    }

    @Test
    fun `menu can be dismissed`() {
        menuButton.menu = menu

        menuButton.dismissMenu()

        verify(menuButton.menu)?.dismiss()
    }

    private fun extractIcon() =
        menuButton.iterator().asSequence().find { it is AppCompatImageView } as AppCompatImageView

Loading