Loading app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarView.kt +14 −8 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ import android.view.ViewGroup import android.widget.LinearLayout import android.widget.PopupWindow import androidx.annotation.LayoutRes import androidx.annotation.VisibleForTesting import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.core.content.ContextCompat import androidx.core.view.isVisible Loading @@ -29,6 +30,8 @@ import kotlinx.android.synthetic.main.component_browser_top_toolbar.* import kotlinx.android.synthetic.main.component_browser_top_toolbar.view.* import mozilla.components.browser.domains.autocomplete.ShippedDomainsProvider import mozilla.components.browser.session.Session import mozilla.components.browser.state.selector.selectedTab import mozilla.components.browser.state.store.BrowserStore import mozilla.components.browser.toolbar.BrowserToolbar import mozilla.components.browser.toolbar.behavior.BrowserToolbarBottomBehavior import mozilla.components.browser.toolbar.display.DisplayToolbar Loading Loading @@ -94,9 +97,6 @@ class BrowserToolbarView( view.context.resources.getDimensionPixelSize(R.dimen.context_menu_height), true ) val selectedSession = container.context.components.core.sessionManager.selectedSession popupWindow.elevation = view.context.resources.getDimension(R.dimen.mozac_browser_menu_elevation) Loading @@ -110,11 +110,7 @@ class BrowserToolbarView( customView.copy.setOnClickListener { popupWindow.dismiss() if (isCustomTabSession) { clipboard.text = customTabSession?.url } else { clipboard.text = selectedSession?.url } clipboard.text = getUrlForClipboard(it.context.components.core.store, customTabSession) FenixSnackbar.make( view = view, Loading Loading @@ -300,5 +296,15 @@ class BrowserToolbarView( companion object { private const val TOOLBAR_ELEVATION = 16 @VisibleForTesting internal fun getUrlForClipboard(store: BrowserStore, customTabSession: Session? = null): String? { return if (customTabSession != null) { customTabSession.url } else { val selectedTab = store.state.selectedTab selectedTab?.readerState?.activeUrl ?: selectedTab?.content?.url } } } } app/src/test/java/org/mozilla/fenix/components/toolbar/BrowserToolbarViewTest.kt 0 → 100644 +43 −0 Original line number Diff line number Diff line /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ package org.mozilla.fenix.components.toolbar import io.mockk.every import io.mockk.mockk import mozilla.components.browser.session.Session import mozilla.components.browser.state.state.BrowserState import mozilla.components.browser.state.state.ReaderState import mozilla.components.browser.state.state.createTab import mozilla.components.browser.state.store.BrowserStore import org.junit.Assert.assertEquals import org.junit.Test import org.junit.runner.RunWith import org.mozilla.fenix.components.toolbar.BrowserToolbarView.Companion.getUrlForClipboard import org.mozilla.fenix.helpers.FenixRobolectricTestRunner @RunWith(FenixRobolectricTestRunner::class) class BrowserToolbarViewTest { @Test fun getUrlForClipboard() { val customTabSession: Session = mockk() every { customTabSession.url } returns "https://mozilla.org" // Custom tab assertEquals("https://mozilla.org", getUrlForClipboard(mockk(), customTabSession)) // Regular tab val regularTab = createTab(url = "http://firefox.com") var store = BrowserStore(BrowserState(tabs = listOf(regularTab), selectedTabId = regularTab.id)) assertEquals(regularTab.content.url, getUrlForClipboard(store)) // Reader Tab val readerTab = createTab(url = "moz-extension://1234", readerState = ReaderState(active = true, activeUrl = "https://blog.mozilla.org/123") ) store = BrowserStore(BrowserState(tabs = listOf(readerTab), selectedTabId = readerTab.id)) assertEquals(readerTab.readerState.activeUrl, getUrlForClipboard(store)) } } Loading
app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarView.kt +14 −8 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ import android.view.ViewGroup import android.widget.LinearLayout import android.widget.PopupWindow import androidx.annotation.LayoutRes import androidx.annotation.VisibleForTesting import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.core.content.ContextCompat import androidx.core.view.isVisible Loading @@ -29,6 +30,8 @@ import kotlinx.android.synthetic.main.component_browser_top_toolbar.* import kotlinx.android.synthetic.main.component_browser_top_toolbar.view.* import mozilla.components.browser.domains.autocomplete.ShippedDomainsProvider import mozilla.components.browser.session.Session import mozilla.components.browser.state.selector.selectedTab import mozilla.components.browser.state.store.BrowserStore import mozilla.components.browser.toolbar.BrowserToolbar import mozilla.components.browser.toolbar.behavior.BrowserToolbarBottomBehavior import mozilla.components.browser.toolbar.display.DisplayToolbar Loading Loading @@ -94,9 +97,6 @@ class BrowserToolbarView( view.context.resources.getDimensionPixelSize(R.dimen.context_menu_height), true ) val selectedSession = container.context.components.core.sessionManager.selectedSession popupWindow.elevation = view.context.resources.getDimension(R.dimen.mozac_browser_menu_elevation) Loading @@ -110,11 +110,7 @@ class BrowserToolbarView( customView.copy.setOnClickListener { popupWindow.dismiss() if (isCustomTabSession) { clipboard.text = customTabSession?.url } else { clipboard.text = selectedSession?.url } clipboard.text = getUrlForClipboard(it.context.components.core.store, customTabSession) FenixSnackbar.make( view = view, Loading Loading @@ -300,5 +296,15 @@ class BrowserToolbarView( companion object { private const val TOOLBAR_ELEVATION = 16 @VisibleForTesting internal fun getUrlForClipboard(store: BrowserStore, customTabSession: Session? = null): String? { return if (customTabSession != null) { customTabSession.url } else { val selectedTab = store.state.selectedTab selectedTab?.readerState?.activeUrl ?: selectedTab?.content?.url } } } }
app/src/test/java/org/mozilla/fenix/components/toolbar/BrowserToolbarViewTest.kt 0 → 100644 +43 −0 Original line number Diff line number Diff line /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ package org.mozilla.fenix.components.toolbar import io.mockk.every import io.mockk.mockk import mozilla.components.browser.session.Session import mozilla.components.browser.state.state.BrowserState import mozilla.components.browser.state.state.ReaderState import mozilla.components.browser.state.state.createTab import mozilla.components.browser.state.store.BrowserStore import org.junit.Assert.assertEquals import org.junit.Test import org.junit.runner.RunWith import org.mozilla.fenix.components.toolbar.BrowserToolbarView.Companion.getUrlForClipboard import org.mozilla.fenix.helpers.FenixRobolectricTestRunner @RunWith(FenixRobolectricTestRunner::class) class BrowserToolbarViewTest { @Test fun getUrlForClipboard() { val customTabSession: Session = mockk() every { customTabSession.url } returns "https://mozilla.org" // Custom tab assertEquals("https://mozilla.org", getUrlForClipboard(mockk(), customTabSession)) // Regular tab val regularTab = createTab(url = "http://firefox.com") var store = BrowserStore(BrowserState(tabs = listOf(regularTab), selectedTabId = regularTab.id)) assertEquals(regularTab.content.url, getUrlForClipboard(store)) // Reader Tab val readerTab = createTab(url = "moz-extension://1234", readerState = ReaderState(active = true, activeUrl = "https://blog.mozilla.org/123") ) store = BrowserStore(BrowserState(tabs = listOf(readerTab), selectedTabId = readerTab.id)) assertEquals(readerTab.readerState.activeUrl, getUrlForClipboard(store)) } }