mirror of
https://github.com/fork-maintainers/iceraven-browser
synced 2024-11-11 13:11:01 +00:00
For #4155: Adds tests for browser toolbar popup menu
This commit is contained in:
parent
fdd2b59fb8
commit
52fd327bc0
@ -46,7 +46,6 @@ class BrowserToolbarView(
|
|||||||
val toolbarIntegration: ToolbarIntegration
|
val toolbarIntegration: ToolbarIntegration
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
|
||||||
view.setOnUrlLongClickListener {
|
view.setOnUrlLongClickListener {
|
||||||
val popup = PopupMenu(view.context, view)
|
val popup = PopupMenu(view.context, view)
|
||||||
popup.menuInflater.inflate(R.menu.browser_toolbar_popup_menu, popup.menu)
|
popup.menuInflater.inflate(R.menu.browser_toolbar_popup_menu, popup.menu)
|
||||||
|
@ -872,12 +872,4 @@
|
|||||||
<string name="add_to_homescreen_cancel">Cancel</string>
|
<string name="add_to_homescreen_cancel">Cancel</string>
|
||||||
<!-- Add button text for the Add to Homescreen dialog -->
|
<!-- Add button text for the Add to Homescreen dialog -->
|
||||||
<string name="add_to_homescreen_add">Add</string>
|
<string name="add_to_homescreen_add">Add</string>
|
||||||
|
|
||||||
<!-- Browser long press popup menu -->
|
|
||||||
<!-- Copy the current url -->
|
|
||||||
<string name="browser_toolbar_long_press_popup_copy">Copy</string>
|
|
||||||
<!-- Paste & go the text in the clipboard. '&' is replaced with the ampersand symbol: & -->
|
|
||||||
<string name="browser_toolbar_long_press_popup_paste_and_go">Paste & Go</string>
|
|
||||||
<!-- Paste the text in the clipboard -->
|
|
||||||
<string name="browser_toolbar_long_press_popup_paste">Paste</string>
|
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
<item name="android:colorAccent">@color/primary_text_normal_theme</item>
|
<item name="android:colorAccent">@color/primary_text_normal_theme</item>
|
||||||
<item name="android:textColorPrimary">@color/primary_text_normal_theme</item>
|
<item name="android:textColorPrimary">@color/primary_text_normal_theme</item>
|
||||||
<item name="android:textColorSecondary">@color/secondary_text_normal_theme</item>
|
<item name="android:textColorSecondary">@color/secondary_text_normal_theme</item>
|
||||||
|
<item name="android:popupMenuStyle">@style/PopupMenu</item>
|
||||||
<item name="alertDialogStyle">@style/DialogStyleNormal</item>
|
<item name="alertDialogStyle">@style/DialogStyleNormal</item>
|
||||||
<item name="alertDialogTheme">@style/DialogStyleNormal</item>
|
<item name="alertDialogTheme">@style/DialogStyleNormal</item>
|
||||||
|
|
||||||
@ -98,6 +99,7 @@
|
|||||||
<item name="android:colorControlActivated">@color/accent_high_contrast_private_theme</item>
|
<item name="android:colorControlActivated">@color/accent_high_contrast_private_theme</item>
|
||||||
<item name="android:textColorPrimary">@color/primary_text_private_theme</item>
|
<item name="android:textColorPrimary">@color/primary_text_private_theme</item>
|
||||||
<item name="android:textColorSecondary">@color/secondary_text_private_theme</item>
|
<item name="android:textColorSecondary">@color/secondary_text_private_theme</item>
|
||||||
|
<item name="android:popupMenuStyle">@style/PopupMenu</item>
|
||||||
<item name="alertDialogStyle">@style/DialogStyleDark</item>
|
<item name="alertDialogStyle">@style/DialogStyleDark</item>
|
||||||
<item name="alertDialogTheme">@style/DialogStyleDark</item>
|
<item name="alertDialogTheme">@style/DialogStyleDark</item>
|
||||||
|
|
||||||
@ -136,7 +138,6 @@
|
|||||||
<item name="privateBrowsingButtonBackground">@color/primary_text_private_theme</item>
|
<item name="privateBrowsingButtonBackground">@color/primary_text_private_theme</item>
|
||||||
<item name="privateBrowsingButtonAccent">@color/above_private_theme</item>
|
<item name="privateBrowsingButtonAccent">@color/above_private_theme</item>
|
||||||
<item name="shieldLottieFile">@raw/shield_json_dark</item>
|
<item name="shieldLottieFile">@raw/shield_json_dark</item>
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="Mozac.Browser.Menu" parent="" tools:ignore="UnusedResources">
|
<style name="Mozac.Browser.Menu" parent="" tools:ignore="UnusedResources">
|
||||||
@ -300,6 +301,11 @@
|
|||||||
<item name="android:background">@drawable/onboarding_card_background_dark</item>
|
<item name="android:background">@drawable/onboarding_card_background_dark</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<style name="PopupMenu" parent="@android:style/Widget.PopupMenu">
|
||||||
|
<item name="android:dropDownHorizontalOffset">16dp</item>
|
||||||
|
<item name="android:popupBackground">@drawable/rounded_all_corners</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="CreateCollectionDialogStyle" parent="DialogStyleBase"/>
|
<style name="CreateCollectionDialogStyle" parent="DialogStyleBase"/>
|
||||||
<style name="FirefoxAccountsDialogStyle" parent="DialogStyleBase">
|
<style name="FirefoxAccountsDialogStyle" parent="DialogStyleBase">
|
||||||
<item name="android:windowBackground">@drawable/scrim_background</item>
|
<item name="android:windowBackground">@drawable/scrim_background</item>
|
||||||
|
@ -7,6 +7,7 @@ import io.mockk.just
|
|||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import io.mockk.verify
|
import io.mockk.verify
|
||||||
import mozilla.components.browser.session.Session
|
import mozilla.components.browser.session.Session
|
||||||
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
import org.mozilla.fenix.browser.readermode.ReaderModeController
|
import org.mozilla.fenix.browser.readermode.ReaderModeController
|
||||||
@ -18,20 +19,46 @@ import org.mozilla.fenix.quickactionsheet.QuickActionSheetController
|
|||||||
|
|
||||||
class BrowserInteractorTest {
|
class BrowserInteractorTest {
|
||||||
|
|
||||||
@Test
|
val metrics: MetricController = mockk()
|
||||||
fun onBrowserToolbarClicked() {
|
|
||||||
val context: Context = mockk()
|
val context: Context = mockk()
|
||||||
|
val browserStore: BrowserFragmentStore = mockk(relaxed = true)
|
||||||
val browserToolbarController: BrowserToolbarController = mockk(relaxed = true)
|
val browserToolbarController: BrowserToolbarController = mockk(relaxed = true)
|
||||||
|
val quickActionSheetController: QuickActionSheetController = mockk(relaxed = true)
|
||||||
|
val readerModeController: ReaderModeController = mockk(relaxed = true)
|
||||||
|
val session: Session = mockk()
|
||||||
|
|
||||||
val interactor = BrowserInteractor(
|
val interactor = BrowserInteractor(
|
||||||
context,
|
context,
|
||||||
mockk(),
|
browserStore,
|
||||||
browserToolbarController,
|
browserToolbarController,
|
||||||
mockk(),
|
quickActionSheetController,
|
||||||
mockk(),
|
readerModeController,
|
||||||
mockk()
|
session
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@Before
|
||||||
|
fun setup() {
|
||||||
|
every { context.metrics } returns metrics
|
||||||
|
every { context.components.core.sessionManager.selectedSession } returns session
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun onBrowserToolbarPaste() {
|
||||||
|
val pastedText = "Mozilla"
|
||||||
|
interactor.onBrowserToolbarPaste(pastedText)
|
||||||
|
verify { browserToolbarController.handleToolbarPaste(pastedText) }
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun onBrowserToolbarPasteAndGo() {
|
||||||
|
val pastedText = "Mozilla"
|
||||||
|
|
||||||
|
interactor.onBrowserToolbarPasteAndGo(pastedText)
|
||||||
|
verify { browserToolbarController.handleToolbarPasteAndGo(pastedText) }
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun onBrowserToolbarClicked() {
|
||||||
interactor.onBrowserToolbarClicked()
|
interactor.onBrowserToolbarClicked()
|
||||||
|
|
||||||
verify { browserToolbarController.handleToolbarClick() }
|
verify { browserToolbarController.handleToolbarClick() }
|
||||||
@ -39,19 +66,8 @@ class BrowserInteractorTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun onBrowserToolbarMenuItemTapped() {
|
fun onBrowserToolbarMenuItemTapped() {
|
||||||
val context: Context = mockk()
|
|
||||||
val browserToolbarController: BrowserToolbarController = mockk(relaxed = true)
|
|
||||||
val item: ToolbarMenu.Item = mockk()
|
val item: ToolbarMenu.Item = mockk()
|
||||||
|
|
||||||
val interactor = BrowserInteractor(
|
|
||||||
context,
|
|
||||||
mockk(),
|
|
||||||
browserToolbarController,
|
|
||||||
mockk(),
|
|
||||||
mockk(),
|
|
||||||
mockk()
|
|
||||||
)
|
|
||||||
|
|
||||||
interactor.onBrowserToolbarMenuItemTapped(item)
|
interactor.onBrowserToolbarMenuItemTapped(item)
|
||||||
|
|
||||||
verify { browserToolbarController.handleToolbarItemInteraction(item) }
|
verify { browserToolbarController.handleToolbarItemInteraction(item) }
|
||||||
@ -59,18 +75,6 @@ class BrowserInteractorTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun onQuickActionSheetOpened() {
|
fun onQuickActionSheetOpened() {
|
||||||
val context: Context = mockk()
|
|
||||||
val metrics: MetricController = mockk()
|
|
||||||
val interactor = BrowserInteractor(
|
|
||||||
context,
|
|
||||||
mockk(),
|
|
||||||
mockk(),
|
|
||||||
mockk(),
|
|
||||||
mockk(),
|
|
||||||
mockk()
|
|
||||||
)
|
|
||||||
|
|
||||||
every { context.metrics } returns metrics
|
|
||||||
every { metrics.track(Event.QuickActionSheetOpened) } just Runs
|
every { metrics.track(Event.QuickActionSheetOpened) } just Runs
|
||||||
|
|
||||||
interactor.onQuickActionSheetOpened()
|
interactor.onQuickActionSheetOpened()
|
||||||
@ -80,18 +84,6 @@ class BrowserInteractorTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun onQuickActionSheetClosed() {
|
fun onQuickActionSheetClosed() {
|
||||||
val context: Context = mockk()
|
|
||||||
val metrics: MetricController = mockk()
|
|
||||||
val interactor = BrowserInteractor(
|
|
||||||
context,
|
|
||||||
mockk(),
|
|
||||||
mockk(),
|
|
||||||
mockk(),
|
|
||||||
mockk(),
|
|
||||||
mockk()
|
|
||||||
)
|
|
||||||
|
|
||||||
every { context.metrics } returns metrics
|
|
||||||
every { metrics.track(Event.QuickActionSheetClosed) } just Runs
|
every { metrics.track(Event.QuickActionSheetClosed) } just Runs
|
||||||
|
|
||||||
interactor.onQuickActionSheetClosed()
|
interactor.onQuickActionSheetClosed()
|
||||||
@ -101,19 +93,6 @@ class BrowserInteractorTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun onQuickActionSheetSharePressed() {
|
fun onQuickActionSheetSharePressed() {
|
||||||
val context: Context = mockk()
|
|
||||||
val session: Session = mockk()
|
|
||||||
val quickActionSheetController: QuickActionSheetController = mockk(relaxed = true)
|
|
||||||
|
|
||||||
val interactor = BrowserInteractor(
|
|
||||||
context,
|
|
||||||
mockk(),
|
|
||||||
mockk(),
|
|
||||||
quickActionSheetController,
|
|
||||||
mockk(),
|
|
||||||
session
|
|
||||||
)
|
|
||||||
|
|
||||||
interactor.onQuickActionSheetSharePressed()
|
interactor.onQuickActionSheetSharePressed()
|
||||||
|
|
||||||
verify { quickActionSheetController.handleShare() }
|
verify { quickActionSheetController.handleShare() }
|
||||||
@ -121,20 +100,6 @@ class BrowserInteractorTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun onQuickActionSheetDownloadPressed() {
|
fun onQuickActionSheetDownloadPressed() {
|
||||||
val context: Context = mockk()
|
|
||||||
val metrics: MetricController = mockk()
|
|
||||||
val quickActionSheetController: QuickActionSheetController = mockk(relaxed = true)
|
|
||||||
|
|
||||||
val interactor = BrowserInteractor(
|
|
||||||
context,
|
|
||||||
mockk(),
|
|
||||||
mockk(),
|
|
||||||
quickActionSheetController,
|
|
||||||
mockk(),
|
|
||||||
mockk()
|
|
||||||
)
|
|
||||||
|
|
||||||
every { context.metrics } returns metrics
|
|
||||||
every { metrics.track(Event.QuickActionSheetDownloadTapped) } just Runs
|
every { metrics.track(Event.QuickActionSheetDownloadTapped) } just Runs
|
||||||
|
|
||||||
interactor.onQuickActionSheetDownloadPressed()
|
interactor.onQuickActionSheetDownloadPressed()
|
||||||
@ -144,19 +109,6 @@ class BrowserInteractorTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun onQuickActionSheetBookmarkPressed() {
|
fun onQuickActionSheetBookmarkPressed() {
|
||||||
val context: Context = mockk()
|
|
||||||
val session: Session = mockk()
|
|
||||||
val quickActionSheetController: QuickActionSheetController = mockk(relaxed = true)
|
|
||||||
|
|
||||||
val interactor = BrowserInteractor(
|
|
||||||
context,
|
|
||||||
mockk(),
|
|
||||||
mockk(),
|
|
||||||
quickActionSheetController,
|
|
||||||
mockk(),
|
|
||||||
session
|
|
||||||
)
|
|
||||||
|
|
||||||
interactor.onQuickActionSheetBookmarkPressed()
|
interactor.onQuickActionSheetBookmarkPressed()
|
||||||
|
|
||||||
verify { quickActionSheetController.handleBookmark() }
|
verify { quickActionSheetController.handleBookmark() }
|
||||||
@ -164,22 +116,6 @@ class BrowserInteractorTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun onQuickActionSheetReadPressed() {
|
fun onQuickActionSheetReadPressed() {
|
||||||
val context: Context = mockk()
|
|
||||||
val metrics: MetricController = mockk()
|
|
||||||
val session: Session = mockk()
|
|
||||||
val readerModeController: ReaderModeController = mockk(relaxed = true)
|
|
||||||
val browserStore: BrowserFragmentStore = mockk(relaxed = true)
|
|
||||||
val interactor = BrowserInteractor(
|
|
||||||
context,
|
|
||||||
browserStore,
|
|
||||||
mockk(),
|
|
||||||
mockk(),
|
|
||||||
readerModeController,
|
|
||||||
session
|
|
||||||
)
|
|
||||||
|
|
||||||
every { context.metrics } returns metrics
|
|
||||||
every { context.components.core.sessionManager.selectedSession } returns session
|
|
||||||
every { session.readerMode } returns false
|
every { session.readerMode } returns false
|
||||||
every { metrics.track(Event.QuickActionSheetOpened) } just Runs
|
every { metrics.track(Event.QuickActionSheetOpened) } just Runs
|
||||||
|
|
||||||
@ -191,23 +127,6 @@ class BrowserInteractorTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun onQuickActionSheetReadPressedWithActiveReaderMode() {
|
fun onQuickActionSheetReadPressedWithActiveReaderMode() {
|
||||||
val context: Context = mockk()
|
|
||||||
val metrics: MetricController = mockk()
|
|
||||||
val session: Session = mockk()
|
|
||||||
val readerModeController: ReaderModeController = mockk(relaxed = true)
|
|
||||||
val browserStore: BrowserFragmentStore = mockk(relaxed = true)
|
|
||||||
|
|
||||||
val interactor = BrowserInteractor(
|
|
||||||
context,
|
|
||||||
browserStore,
|
|
||||||
mockk(),
|
|
||||||
mockk(),
|
|
||||||
readerModeController,
|
|
||||||
session
|
|
||||||
)
|
|
||||||
|
|
||||||
every { context.metrics } returns metrics
|
|
||||||
every { context.components.core.sessionManager.selectedSession } returns session
|
|
||||||
every { session.readerMode } returns true
|
every { session.readerMode } returns true
|
||||||
every { metrics.track(Event.QuickActionSheetClosed) } just Runs
|
every { metrics.track(Event.QuickActionSheetClosed) } just Runs
|
||||||
|
|
||||||
@ -219,19 +138,6 @@ class BrowserInteractorTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun onQuickActionSheetOpenLinkPressed() {
|
fun onQuickActionSheetOpenLinkPressed() {
|
||||||
val context: Context = mockk()
|
|
||||||
val session: Session = mockk()
|
|
||||||
val quickActionSheetController: QuickActionSheetController = mockk(relaxed = true)
|
|
||||||
|
|
||||||
val interactor = BrowserInteractor(
|
|
||||||
context,
|
|
||||||
mockk(),
|
|
||||||
mockk(),
|
|
||||||
quickActionSheetController,
|
|
||||||
mockk(),
|
|
||||||
session
|
|
||||||
)
|
|
||||||
|
|
||||||
interactor.onQuickActionSheetOpenLinkPressed()
|
interactor.onQuickActionSheetOpenLinkPressed()
|
||||||
|
|
||||||
verify { quickActionSheetController.handleOpenLink() }
|
verify { quickActionSheetController.handleOpenLink() }
|
||||||
@ -239,22 +145,8 @@ class BrowserInteractorTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun onQuickActionSheetAppearancePressed() {
|
fun onQuickActionSheetAppearancePressed() {
|
||||||
val context: Context = mockk()
|
|
||||||
val metrics: MetricController = mockk()
|
|
||||||
val readerModeController: ReaderModeController = mockk(relaxed = true)
|
|
||||||
|
|
||||||
every { context.metrics } returns metrics
|
|
||||||
every { metrics.track(Event.ReaderModeAppearanceOpened) } just Runs
|
every { metrics.track(Event.ReaderModeAppearanceOpened) } just Runs
|
||||||
|
|
||||||
val interactor = BrowserInteractor(
|
|
||||||
context,
|
|
||||||
mockk(),
|
|
||||||
mockk(),
|
|
||||||
mockk(),
|
|
||||||
readerModeController,
|
|
||||||
mockk()
|
|
||||||
)
|
|
||||||
|
|
||||||
interactor.onQuickActionSheetAppearancePressed()
|
interactor.onQuickActionSheetAppearancePressed()
|
||||||
|
|
||||||
verify {
|
verify {
|
||||||
|
@ -13,6 +13,7 @@ import io.mockk.just
|
|||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import io.mockk.mockkStatic
|
import io.mockk.mockkStatic
|
||||||
import io.mockk.verify
|
import io.mockk.verify
|
||||||
|
import io.mockk.verifyOrder
|
||||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||||
import kotlinx.coroutines.ObsoleteCoroutinesApi
|
import kotlinx.coroutines.ObsoleteCoroutinesApi
|
||||||
import mozilla.components.browser.session.Session
|
import mozilla.components.browser.session.Session
|
||||||
@ -87,6 +88,35 @@ class DefaultBrowserToolbarControllerTest {
|
|||||||
every { context.components.core.sessionManager.selectedSession } returns currentSession
|
every { context.components.core.sessionManager.selectedSession } returns currentSession
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun handleBrowserToolbarPaste() {
|
||||||
|
every { currentSession.id } returns "1"
|
||||||
|
|
||||||
|
val pastedText = "Mozilla"
|
||||||
|
controller.handleToolbarPaste(pastedText)
|
||||||
|
|
||||||
|
verify {
|
||||||
|
navController.nav(
|
||||||
|
R.id.browserFragment,
|
||||||
|
BrowserFragmentDirections.actionBrowserFragmentToSearchFragment(
|
||||||
|
sessionId = currentSession.id,
|
||||||
|
pastedText = pastedText
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun handleBrowserToolbarPasteAndGo() {
|
||||||
|
val pastedText = "Mozilla"
|
||||||
|
|
||||||
|
controller.handleToolbarPasteAndGo(pastedText)
|
||||||
|
verifyOrder {
|
||||||
|
currentSession.searchTerms = ""
|
||||||
|
sessionUseCases.loadUrl(pastedText)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun handleToolbarClick() {
|
fun handleToolbarClick() {
|
||||||
every { currentSession.id } returns "1"
|
every { currentSession.id } returns "1"
|
||||||
|
Loading…
Reference in New Issue
Block a user