[fenix] For https://github.com/mozilla-mobile/fenix/issues/19876 - Part 1: Refactor...
[gecko.git] / mobile / android / fenix / app / src / main / java / org / mozilla / fenix / components / toolbar / interactor / BrowserToolbarInteractor.kt
blob20881e20fe393c21301624f7ecdaf973b2e4ae2a
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 package org.mozilla.fenix.components.toolbar.interactor
7 import mozilla.components.ui.tabcounter.TabCounterMenu
8 import org.mozilla.fenix.components.toolbar.BrowserToolbarController
9 import org.mozilla.fenix.components.toolbar.BrowserToolbarMenuController
10 import org.mozilla.fenix.components.toolbar.ToolbarMenu
12 /**
13  * Interface for the browser toolbar interactor. This interface is implemented by objects that
14  * want to respond to user interaction on the browser toolbar.
15  */
16 interface BrowserToolbarInteractor {
17     fun onBrowserToolbarPaste(text: String)
18     fun onBrowserToolbarPasteAndGo(text: String)
19     fun onBrowserToolbarClicked()
20     fun onBrowserToolbarMenuItemTapped(item: ToolbarMenu.Item)
21     fun onTabCounterClicked()
22     fun onTabCounterMenuItemTapped(item: TabCounterMenu.Item)
23     fun onScrolled(offset: Int)
24     fun onReaderModePressed(enabled: Boolean)
27 /**
28  * The default implementation of [BrowserToolbarInteractor].
29  *
30  * @property browserToolbarController [BrowserToolbarController] to which user actions can be
31  * delegated for all interactions on the browser toolbar.
32  * @property menuController [BrowserToolbarMenuController] to which user actions can be delegated
33  * for all interactions on the the browser toolbar menu.
34  */
35 class DefaultBrowserToolbarInteractor(
36     private val browserToolbarController: BrowserToolbarController,
37     private val menuController: BrowserToolbarMenuController
38 ) : BrowserToolbarInteractor {
40     override fun onTabCounterClicked() {
41         browserToolbarController.handleTabCounterClick()
42     }
44     override fun onTabCounterMenuItemTapped(item: TabCounterMenu.Item) {
45         browserToolbarController.handleTabCounterItemInteraction(item)
46     }
48     override fun onBrowserToolbarPaste(text: String) {
49         browserToolbarController.handleToolbarPaste(text)
50     }
52     override fun onBrowserToolbarPasteAndGo(text: String) {
53         browserToolbarController.handleToolbarPasteAndGo(text)
54     }
56     override fun onBrowserToolbarClicked() {
57         browserToolbarController.handleToolbarClick()
58     }
60     override fun onBrowserToolbarMenuItemTapped(item: ToolbarMenu.Item) {
61         menuController.handleToolbarItemInteraction(item)
62     }
64     override fun onScrolled(offset: Int) {
65         browserToolbarController.handleScroll(offset)
66     }
68     override fun onReaderModePressed(enabled: Boolean) {
69         browserToolbarController.handleReaderModePressed(enabled)
70     }