Bug 1948633 - part 4 - Use pageOrigin in samples and Fenix r=android-reviewers,tchoh
Differential Revision: https://phabricator.services.mozilla.com/D245954
This commit is contained in:
@@ -49,8 +49,6 @@ enum class Mode {
|
|||||||
/**
|
/**
|
||||||
* Wrapper containing the toolbar display state.
|
* Wrapper containing the toolbar display state.
|
||||||
*
|
*
|
||||||
* @property hint Text displayed in the toolbar when there's no URL to display
|
|
||||||
* (no tab or empty URL).
|
|
||||||
* @property browserActionsStart List of browser [Action]s to be displayed at the start of the
|
* @property browserActionsStart List of browser [Action]s to be displayed at the start of the
|
||||||
* toolbar, outside of the URL bounding box.
|
* toolbar, outside of the URL bounding box.
|
||||||
* These should be actions relevant to the browser as a whole.
|
* These should be actions relevant to the browser as a whole.
|
||||||
@@ -59,8 +57,8 @@ enum class Mode {
|
|||||||
* and the current webpage's details, inside of the URL bounding box.
|
* and the current webpage's details, inside of the URL bounding box.
|
||||||
* These should be actions relevant to specific webpages as opposed to [browserActionsStart].
|
* These should be actions relevant to specific webpages as opposed to [browserActionsStart].
|
||||||
* See [MDN docs](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/pageAction).
|
* See [MDN docs](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/pageAction).
|
||||||
* @param pageOrigin Details about the current website.
|
* @property pageOrigin Details about the current website.
|
||||||
* @param pageActions List of page [Action]s to be displayed to the right side of the URL of the
|
* @property pageActions List of page [Action]s to be displayed to the right side of the URL of the
|
||||||
* display toolbar. Also see:
|
* display toolbar. Also see:
|
||||||
* [MDN docs](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/pageAction)
|
* [MDN docs](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/pageAction)
|
||||||
* @property browserActions List of browser [Action]s to be displayed on the right side of the
|
* @property browserActions List of browser [Action]s to be displayed on the right side of the
|
||||||
@@ -70,7 +68,6 @@ enum class Mode {
|
|||||||
* If `null` a progress bar will not be displayed.
|
* If `null` a progress bar will not be displayed.
|
||||||
*/
|
*/
|
||||||
data class DisplayState(
|
data class DisplayState(
|
||||||
val hint: String = "",
|
|
||||||
val browserActionsStart: List<Action> = emptyList(),
|
val browserActionsStart: List<Action> = emptyList(),
|
||||||
val pageActionsStart: List<Action> = emptyList(),
|
val pageActionsStart: List<Action> = emptyList(),
|
||||||
val pageOrigin: PageOrigin = PageOrigin(
|
val pageOrigin: PageOrigin = PageOrigin(
|
||||||
|
|||||||
@@ -93,9 +93,6 @@ fun BrowserScreen(navController: NavController) {
|
|||||||
onTextEdit = { text ->
|
onTextEdit = { text ->
|
||||||
toolbarStore.dispatch(BrowserEditToolbarAction.UpdateEditText(text))
|
toolbarStore.dispatch(BrowserEditToolbarAction.UpdateEditText(text))
|
||||||
},
|
},
|
||||||
onDisplayToolbarClick = {
|
|
||||||
toolbarStore.dispatch(BrowserToolbarAction.ToggleEditMode(true))
|
|
||||||
},
|
|
||||||
)
|
)
|
||||||
|
|
||||||
Box {
|
Box {
|
||||||
|
|||||||
@@ -10,7 +10,9 @@ import androidx.core.content.ContextCompat
|
|||||||
import androidx.navigation.NavController
|
import androidx.navigation.NavController
|
||||||
import mozilla.components.compose.browser.toolbar.concept.Action.ActionButton
|
import mozilla.components.compose.browser.toolbar.concept.Action.ActionButton
|
||||||
import mozilla.components.compose.browser.toolbar.concept.Action.TabCounterAction
|
import mozilla.components.compose.browser.toolbar.concept.Action.TabCounterAction
|
||||||
|
import mozilla.components.compose.browser.toolbar.concept.PageOrigin
|
||||||
import mozilla.components.compose.browser.toolbar.store.BrowserToolbarAction
|
import mozilla.components.compose.browser.toolbar.store.BrowserToolbarAction
|
||||||
|
import mozilla.components.compose.browser.toolbar.store.BrowserToolbarAction.ToggleEditMode
|
||||||
import mozilla.components.compose.browser.toolbar.store.BrowserToolbarInteraction.BrowserToolbarEvent
|
import mozilla.components.compose.browser.toolbar.store.BrowserToolbarInteraction.BrowserToolbarEvent
|
||||||
import mozilla.components.compose.browser.toolbar.store.BrowserToolbarInteraction.BrowserToolbarMenu
|
import mozilla.components.compose.browser.toolbar.store.BrowserToolbarInteraction.BrowserToolbarMenu
|
||||||
import mozilla.components.compose.browser.toolbar.store.BrowserToolbarMenuItem.BrowserToolbarMenuButton
|
import mozilla.components.compose.browser.toolbar.store.BrowserToolbarMenuItem.BrowserToolbarMenuButton
|
||||||
@@ -25,9 +27,14 @@ import org.mozilla.samples.compose.browser.BrowserComposeActivity.Companion.ROUT
|
|||||||
import org.mozilla.samples.compose.browser.R
|
import org.mozilla.samples.compose.browser.R
|
||||||
import org.mozilla.samples.compose.browser.browser.DisplayBrowserActionsInteractions.TabCounterClicked
|
import org.mozilla.samples.compose.browser.browser.DisplayBrowserActionsInteractions.TabCounterClicked
|
||||||
import org.mozilla.samples.compose.browser.browser.DisplayPageActionsInteractions.RefreshClicked
|
import org.mozilla.samples.compose.browser.browser.DisplayPageActionsInteractions.RefreshClicked
|
||||||
|
import org.mozilla.samples.compose.browser.browser.DisplayPageOriginInteractions.PageOriginClicked
|
||||||
import org.mozilla.samples.compose.browser.browser.EditActionsInteractions.ClearClicked
|
import org.mozilla.samples.compose.browser.browser.EditActionsInteractions.ClearClicked
|
||||||
import mozilla.components.ui.icons.R as iconsR
|
import mozilla.components.ui.icons.R as iconsR
|
||||||
|
|
||||||
|
private sealed class DisplayPageOriginInteractions : BrowserToolbarEvent {
|
||||||
|
data object PageOriginClicked : DisplayPageOriginInteractions()
|
||||||
|
}
|
||||||
|
|
||||||
private sealed class DisplayPageActionsInteractions : BrowserToolbarEvent {
|
private sealed class DisplayPageActionsInteractions : BrowserToolbarEvent {
|
||||||
data object RefreshClicked : DisplayPageActionsInteractions()
|
data object RefreshClicked : DisplayPageActionsInteractions()
|
||||||
}
|
}
|
||||||
@@ -59,6 +66,10 @@ internal class BrowserToolbarMiddleware(
|
|||||||
next(buildInitialState())
|
next(buildInitialState())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
is PageOriginClicked -> {
|
||||||
|
next(ToggleEditMode(true))
|
||||||
|
}
|
||||||
|
|
||||||
is TabCounterClicked -> {
|
is TabCounterClicked -> {
|
||||||
dependencies.browserScreenStore.dispatch(BrowserScreenAction.ShowTabs)
|
dependencies.browserScreenStore.dispatch(BrowserScreenAction.ShowTabs)
|
||||||
}
|
}
|
||||||
@@ -76,7 +87,12 @@ internal class BrowserToolbarMiddleware(
|
|||||||
private fun buildInitialState() = BrowserToolbarAction.Init(
|
private fun buildInitialState() = BrowserToolbarAction.Init(
|
||||||
mode = Mode.DISPLAY,
|
mode = Mode.DISPLAY,
|
||||||
displayState = DisplayState(
|
displayState = DisplayState(
|
||||||
hint = "Search or enter address",
|
pageOrigin = PageOrigin(
|
||||||
|
hint = R.string.toolbar_search_hint,
|
||||||
|
title = null,
|
||||||
|
url = null,
|
||||||
|
onClick = PageOriginClicked,
|
||||||
|
),
|
||||||
pageActions = buildDisplayPageActions(),
|
pageActions = buildDisplayPageActions(),
|
||||||
browserActions = buildDisplayBrowserActions(),
|
browserActions = buildDisplayBrowserActions(),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -9,4 +9,5 @@
|
|||||||
<string name="menu_item_settings">Settings</string>
|
<string name="menu_item_settings">Settings</string>
|
||||||
<string name="menu_item_settings_description">Open browser settings</string>
|
<string name="menu_item_settings_description">Open browser settings</string>
|
||||||
<string name="clear_input_description">Clear input</string>
|
<string name="clear_input_description">Clear input</string>
|
||||||
|
<string name="toolbar_search_hint">Search or enter address</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -515,9 +515,6 @@ class ToolbarActivity : AppCompatActivity() {
|
|||||||
AcornTheme {
|
AcornTheme {
|
||||||
BrowserToolbar(
|
BrowserToolbar(
|
||||||
store = store,
|
store = store,
|
||||||
onDisplayToolbarClick = {
|
|
||||||
store.dispatch(BrowserToolbarAction.ToggleEditMode(editMode = true))
|
|
||||||
},
|
|
||||||
onTextEdit = { text ->
|
onTextEdit = { text ->
|
||||||
store.dispatch(BrowserEditToolbarAction.UpdateEditText(text = text))
|
store.dispatch(BrowserEditToolbarAction.UpdateEditText(text = text))
|
||||||
},
|
},
|
||||||
@@ -565,7 +562,6 @@ class ToolbarActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
BrowserToolbar(
|
BrowserToolbar(
|
||||||
store = store,
|
store = store,
|
||||||
onDisplayToolbarClick = {},
|
|
||||||
onTextEdit = {},
|
onTextEdit = {},
|
||||||
onTextCommit = {},
|
onTextCommit = {},
|
||||||
colors = BrowserToolbarDefaults.colors(),
|
colors = BrowserToolbarDefaults.colors(),
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import mozilla.components.compose.browser.toolbar.concept.Action
|
|||||||
import mozilla.components.compose.browser.toolbar.concept.Action.ActionButton
|
import mozilla.components.compose.browser.toolbar.concept.Action.ActionButton
|
||||||
import mozilla.components.compose.browser.toolbar.concept.Action.DropdownAction
|
import mozilla.components.compose.browser.toolbar.concept.Action.DropdownAction
|
||||||
import mozilla.components.compose.browser.toolbar.concept.Action.TabCounterAction
|
import mozilla.components.compose.browser.toolbar.concept.Action.TabCounterAction
|
||||||
|
import mozilla.components.compose.browser.toolbar.concept.PageOrigin
|
||||||
import mozilla.components.compose.browser.toolbar.store.BrowserDisplayToolbarAction
|
import mozilla.components.compose.browser.toolbar.store.BrowserDisplayToolbarAction
|
||||||
import mozilla.components.compose.browser.toolbar.store.BrowserDisplayToolbarAction.UpdateProgressBarConfig
|
import mozilla.components.compose.browser.toolbar.store.BrowserDisplayToolbarAction.UpdateProgressBarConfig
|
||||||
import mozilla.components.compose.browser.toolbar.store.BrowserToolbarAction
|
import mozilla.components.compose.browser.toolbar.store.BrowserToolbarAction
|
||||||
@@ -33,6 +34,8 @@ import mozilla.components.compose.browser.toolbar.store.ProgressBarGravity.Botto
|
|||||||
import mozilla.components.lib.state.Middleware
|
import mozilla.components.lib.state.Middleware
|
||||||
import mozilla.components.lib.state.MiddlewareContext
|
import mozilla.components.lib.state.MiddlewareContext
|
||||||
import org.mozilla.samples.toolbar.R
|
import org.mozilla.samples.toolbar.R
|
||||||
|
import org.mozilla.samples.toolbar.middleware.PageOriginInteractions.CopyOptionClicked
|
||||||
|
import org.mozilla.samples.toolbar.middleware.PageOriginInteractions.PageOriginClicked
|
||||||
import org.mozilla.samples.toolbar.middleware.SearchSelectorInteractions.BookmarksClicked
|
import org.mozilla.samples.toolbar.middleware.SearchSelectorInteractions.BookmarksClicked
|
||||||
import org.mozilla.samples.toolbar.middleware.SearchSelectorInteractions.HistoryClicked
|
import org.mozilla.samples.toolbar.middleware.SearchSelectorInteractions.HistoryClicked
|
||||||
import org.mozilla.samples.toolbar.middleware.SearchSelectorInteractions.SettingsClicked
|
import org.mozilla.samples.toolbar.middleware.SearchSelectorInteractions.SettingsClicked
|
||||||
@@ -59,6 +62,11 @@ private sealed class StartPageInteractions : BrowserToolbarEvent {
|
|||||||
data object SecurityIndicatorClicked : StartBrowserInteractions()
|
data object SecurityIndicatorClicked : StartBrowserInteractions()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private sealed class PageOriginInteractions : BrowserToolbarEvent {
|
||||||
|
data object PageOriginClicked : PageOriginInteractions()
|
||||||
|
data object CopyOptionClicked : PageOriginInteractions()
|
||||||
|
}
|
||||||
|
|
||||||
private sealed class TabCounterInteractions : BrowserToolbarEvent {
|
private sealed class TabCounterInteractions : BrowserToolbarEvent {
|
||||||
data object TabCounterClicked : TabCounterInteractions()
|
data object TabCounterClicked : TabCounterInteractions()
|
||||||
data object Add10TabsClicked : TabCounterInteractions()
|
data object Add10TabsClicked : TabCounterInteractions()
|
||||||
@@ -91,9 +99,9 @@ internal class BrowserToolbarMiddleware(
|
|||||||
BrowserToolbarAction.Init(
|
BrowserToolbarAction.Init(
|
||||||
mode = Mode.DISPLAY,
|
mode = Mode.DISPLAY,
|
||||||
displayState = DisplayState(
|
displayState = DisplayState(
|
||||||
hint = "Search or enter address",
|
|
||||||
browserActionsStart = buildStartBrowserActions(),
|
browserActionsStart = buildStartBrowserActions(),
|
||||||
pageActionsStart = buildStartPageActions(),
|
pageActionsStart = buildStartPageActions(),
|
||||||
|
pageOrigin = buildPageOrigin(),
|
||||||
pageActions = listOf(
|
pageActions = listOf(
|
||||||
ActionButton(
|
ActionButton(
|
||||||
icon = iconsR.drawable.mozac_ic_arrow_clockwise_24,
|
icon = iconsR.drawable.mozac_ic_arrow_clockwise_24,
|
||||||
@@ -122,6 +130,7 @@ internal class BrowserToolbarMiddleware(
|
|||||||
is SearchSelectorInteractions,
|
is SearchSelectorInteractions,
|
||||||
is StartBrowserInteractions,
|
is StartBrowserInteractions,
|
||||||
is StartPageInteractions,
|
is StartPageInteractions,
|
||||||
|
is PageOriginInteractions,
|
||||||
-> Toast.makeText(dependencies.context, action.javaClass.simpleName, Toast.LENGTH_SHORT).show()
|
-> Toast.makeText(dependencies.context, action.javaClass.simpleName, Toast.LENGTH_SHORT).show()
|
||||||
|
|
||||||
is TabCounterClicked -> {
|
is TabCounterClicked -> {
|
||||||
@@ -169,6 +178,23 @@ internal class BrowserToolbarMiddleware(
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
private fun buildPageOrigin() = PageOrigin(
|
||||||
|
hint = R.string.toolbar_search_hint,
|
||||||
|
title = null,
|
||||||
|
url = null,
|
||||||
|
onClick = PageOriginClicked,
|
||||||
|
onLongClick = BrowserToolbarMenu {
|
||||||
|
listOf(
|
||||||
|
BrowserToolbarMenuButton(
|
||||||
|
iconResource = iconsR.drawable.mozac_ic_copy_24,
|
||||||
|
text = R.string.copy_url_button,
|
||||||
|
contentDescription = R.string.copy_url_button_description,
|
||||||
|
onClick = CopyOptionClicked,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
private fun buildDisplayBrowserActions() = listOf(
|
private fun buildDisplayBrowserActions() = listOf(
|
||||||
TabCounterAction(
|
TabCounterAction(
|
||||||
count = currentTabsNumber,
|
count = currentTabsNumber,
|
||||||
|
|||||||
@@ -21,4 +21,7 @@
|
|||||||
<string name="page_action_clear_input_description">Clear input</string>
|
<string name="page_action_clear_input_description">Clear input</string>
|
||||||
<string name="browser_action_home_button_description">Stay home</string>
|
<string name="browser_action_home_button_description">Stay home</string>
|
||||||
<string name="browser_action_security_lock_description">Webpage security information</string>
|
<string name="browser_action_security_lock_description">Webpage security information</string>
|
||||||
|
<string name="toolbar_search_hint">Search or enter address</string>
|
||||||
|
<string name="copy_url_button">Copy</string>
|
||||||
|
<string name="copy_url_button_description">Copy the current url</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -152,7 +152,6 @@ class BrowserToolbarComposable(
|
|||||||
BrowserToolbar(
|
BrowserToolbar(
|
||||||
store = store,
|
store = store,
|
||||||
browserStore = context.components.core.store,
|
browserStore = context.components.core.store,
|
||||||
onDisplayToolbarClick = {},
|
|
||||||
onTextEdit = {},
|
onTextEdit = {},
|
||||||
onTextCommit = {},
|
onTextCommit = {},
|
||||||
target = Target.SelectedTab,
|
target = Target.SelectedTab,
|
||||||
|
|||||||
@@ -135,7 +135,6 @@ internal class HomeToolbarComposable(
|
|||||||
BrowserToolbar(
|
BrowserToolbar(
|
||||||
store = store,
|
store = store,
|
||||||
browserStore = context.components.core.store,
|
browserStore = context.components.core.store,
|
||||||
onDisplayToolbarClick = {},
|
|
||||||
onTextEdit = {},
|
onTextEdit = {},
|
||||||
onTextCommit = {},
|
onTextCommit = {},
|
||||||
target = Target.Tab("none"),
|
target = Target.Tab("none"),
|
||||||
|
|||||||
@@ -9,13 +9,16 @@ import androidx.compose.foundation.layout.Column
|
|||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.res.stringResource
|
|
||||||
import androidx.compose.ui.tooling.preview.PreviewLightDark
|
import androidx.compose.ui.tooling.preview.PreviewLightDark
|
||||||
import mozilla.components.compose.browser.toolbar.BrowserDisplayToolbar
|
import mozilla.components.compose.browser.toolbar.BrowserDisplayToolbar
|
||||||
import mozilla.components.compose.browser.toolbar.BrowserToolbarDefaults
|
import mozilla.components.compose.browser.toolbar.BrowserToolbarDefaults
|
||||||
|
import mozilla.components.compose.browser.toolbar.concept.PageOrigin
|
||||||
|
import mozilla.components.compose.browser.toolbar.store.BrowserToolbarInteraction.BrowserToolbarEvent
|
||||||
import org.mozilla.fenix.R
|
import org.mozilla.fenix.R
|
||||||
import org.mozilla.fenix.theme.FirefoxTheme
|
import org.mozilla.fenix.theme.FirefoxTheme
|
||||||
|
|
||||||
|
private data object URLCLicked : BrowserToolbarEvent
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Search bar.
|
* Search bar.
|
||||||
*
|
*
|
||||||
@@ -26,12 +29,19 @@ internal fun SearchBar(
|
|||||||
onClick: () -> Unit,
|
onClick: () -> Unit,
|
||||||
) {
|
) {
|
||||||
BrowserDisplayToolbar(
|
BrowserDisplayToolbar(
|
||||||
url = stringResource(R.string.search_hint),
|
pageOrigin = PageOrigin(
|
||||||
|
hint = R.string.search_hint,
|
||||||
|
title = null,
|
||||||
|
url = null,
|
||||||
|
onClick = URLCLicked,
|
||||||
|
),
|
||||||
colors = BrowserToolbarDefaults.colors().displayToolbarColors.copy(background = Color.Transparent),
|
colors = BrowserToolbarDefaults.colors().displayToolbarColors.copy(background = Color.Transparent),
|
||||||
progressBarConfig = null,
|
progressBarConfig = null,
|
||||||
textStyle = FirefoxTheme.typography.body1,
|
onInteraction = {
|
||||||
onUrlClicked = onClick,
|
if (it is URLCLicked) {
|
||||||
onInteraction = {},
|
onClick()
|
||||||
|
}
|
||||||
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user