Verified Commit 6415ced7 authored by sarah541's avatar sarah541 Committed by Pier Angelo Vendrame
Browse files

Improve search term performance on the toolbar

parent 8f82a9bd
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -75,7 +75,8 @@ class BrowserToolbar @JvmOverloads constructor(
    defStyleAttr: Int = 0
) : ViewGroup(context, attrs, defStyleAttr), Toolbar {
    private var state: State = State.DISPLAY
    private var searchTerms: String = ""
    @VisibleForTesting
    internal var searchTerms: String = ""
    private var urlCommitListener: ((String) -> Boolean)? = null

    /**
@@ -219,11 +220,11 @@ class BrowserToolbar @JvmOverloads constructor(
    }

    override fun setSearchTerms(searchTerms: String) {
        this.searchTerms = searchTerms.take(MAX_URI_LENGTH)

        if (state == State.EDIT) {
            edit.editSuggestion(searchTerms)
            edit.editSuggestion(this.searchTerms)
        }

        this.searchTerms = searchTerms
    }

    override fun displayProgress(progress: Int) {
+32 −0
Original line number Diff line number Diff line
@@ -152,6 +152,38 @@ class BrowserToolbarTest {
        assertEquals("c".repeat(MAX_URI_LENGTH - 1), capturedValues[2])
    }

    @Test
    fun `searchTerms is truncated in case it is greater than MAX_URI_LENGTH`() {
        val toolbar = BrowserToolbar(testContext)
        toolbar.edit = spy(toolbar.edit)
        toolbar.editMode()

        toolbar.setSearchTerms("a".repeat(MAX_URI_LENGTH + 1))

        // Value was too long and should've been truncated
        assertEquals(toolbar.searchTerms.length, MAX_URI_LENGTH)
        verify(toolbar.edit).editSuggestion("a".repeat(MAX_URI_LENGTH))
    }

    @Test
    fun `searchTerms is not truncated in case it is equal or less than MAX_URI_LENGTH`() {
        val toolbar = BrowserToolbar(testContext)
        toolbar.edit = spy(toolbar.edit)
        toolbar.editMode()

        toolbar.setSearchTerms("b".repeat(MAX_URI_LENGTH))

        // Value should be the same as before
        assertEquals(toolbar.searchTerms.length, MAX_URI_LENGTH)
        verify(toolbar.edit).editSuggestion("b".repeat(MAX_URI_LENGTH))

        toolbar.setSearchTerms("c".repeat(MAX_URI_LENGTH - 1))

        // Value should be the same as before
        assertEquals(toolbar.searchTerms.length, MAX_URI_LENGTH - 1)
        verify(toolbar.edit).editSuggestion("c".repeat(MAX_URI_LENGTH - 1))
    }

    @Test
    fun `last URL will be forwarded to edit toolbar when switching mode`() {
        val toolbar = BrowserToolbar(testContext)