Backed out changeset b2046b45aca1 (bug 1890838) for causing lint failures on nav_graph.xml CLOSED TREE

This commit is contained in:
acseh 2024-04-30 10:35:07 +03:00
parent 584084b993
commit 1218263560
17 changed files with 90 additions and 97 deletions

View file

@ -868,12 +868,11 @@ translations:
A string containing the name of the item the user tapped. These items A string containing the name of the item the user tapped. These items
include: include:
main_flow_toolbar, main_flow_browser, page_settings, global_settings, main_flow_toolbar, main_flow_browser, page_settings, global_settings,
global_lang_settings, global_site_settings, downloads, global_settings_from_preferences global_lang_settings, global_site_settings, downloads
type: string type: string
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1883968 - https://bugzilla.mozilla.org/show_bug.cgi?id=1883968
- https://bugzilla.mozilla.org/show_bug.cgi?id=1886851 - https://bugzilla.mozilla.org/show_bug.cgi?id=1886851
- https://bugzilla.mozilla.org/show_bug.cgi?id=1890838
data_reviews: data_reviews:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1883968#c6 - https://bugzilla.mozilla.org/show_bug.cgi?id=1883968#c6
- https://bugzilla.mozilla.org/show_bug.cgi?id=1886851#c8 - https://bugzilla.mozilla.org/show_bug.cgi?id=1886851#c8

View file

@ -233,7 +233,9 @@ class DefaultBrowserToolbarController(
override fun handleTranslationsButtonClick() { override fun handleTranslationsButtonClick() {
Translations.action.record(Translations.ActionExtra("main_flow_toolbar")) Translations.action.record(Translations.ActionExtra("main_flow_toolbar"))
val directions = val directions =
BrowserFragmentDirections.actionBrowserFragmentToTranslationsDialogFragment() BrowserFragmentDirections.actionBrowserFragmentToTranslationsDialogFragment(
sessionId = currentSession?.id,
)
navController.navigateSafe(R.id.browserFragment, directions) navController.navigateSafe(R.id.browserFragment, directions)
} }

View file

@ -424,7 +424,9 @@ class DefaultBrowserToolbarMenuController(
ToolbarMenu.Item.Translate -> { ToolbarMenu.Item.Translate -> {
Translations.action.record(Translations.ActionExtra("main_flow_browser")) Translations.action.record(Translations.ActionExtra("main_flow_browser"))
val directions = val directions =
BrowserFragmentDirections.actionBrowserFragmentToTranslationsDialogFragment() BrowserFragmentDirections.actionBrowserFragmentToTranslationsDialogFragment(
sessionId = currentSession?.id,
)
navController.navigateSafe(R.id.browserFragment, directions) navController.navigateSafe(R.id.browserFragment, directions)
} }
} }

View file

@ -47,7 +47,6 @@ import org.mozilla.fenix.GleanMetrics.Addons
import org.mozilla.fenix.GleanMetrics.CookieBanners import org.mozilla.fenix.GleanMetrics.CookieBanners
import org.mozilla.fenix.GleanMetrics.Events import org.mozilla.fenix.GleanMetrics.Events
import org.mozilla.fenix.GleanMetrics.TrackingProtection import org.mozilla.fenix.GleanMetrics.TrackingProtection
import org.mozilla.fenix.GleanMetrics.Translations
import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.components.accounts.FenixFxAEntryPoint import org.mozilla.fenix.components.accounts.FenixFxAEntryPoint
@ -316,11 +315,6 @@ class SettingsFragment : PreferenceFragmentCompat() {
SettingsFragmentDirections.actionSettingsFragmentToLocaleSettingsFragment() SettingsFragmentDirections.actionSettingsFragmentToLocaleSettingsFragment()
} }
resources.getString(R.string.pref_key_translation) -> {
Translations.action.record(Translations.ActionExtra("global_settings_from_preferences"))
SettingsFragmentDirections.actionSettingsFragmentToTranslationsSettingsFragment()
}
/* Privacy and security preferences */ /* Privacy and security preferences */
resources.getString(R.string.pref_key_private_browsing) -> { resources.getString(R.string.pref_key_private_browsing) -> {
SettingsFragmentDirections.actionSettingsFragmentToPrivateBrowsingFragment() SettingsFragmentDirections.actionSettingsFragmentToPrivateBrowsingFragment()
@ -515,9 +509,6 @@ class SettingsFragment : PreferenceFragmentCompat() {
findPreference<Preference>( findPreference<Preference>(
getPreferenceKey(R.string.pref_key_sync_debug), getPreferenceKey(R.string.pref_key_sync_debug),
)?.isVisible = showSecretDebugMenuThisSession )?.isVisible = showSecretDebugMenuThisSession
findPreference<Preference>(
getPreferenceKey(R.string.pref_key_translation),
)?.isVisible = FxNimbus.features.translations.value().globalSettingsEnabled
preferenceStartProfiler?.isVisible = showSecretDebugMenuThisSession && preferenceStartProfiler?.isVisible = showSecretDebugMenuThisSession &&
(requireContext().components.core.engine.profiler?.isProfilerActive() != null) (requireContext().components.core.engine.profiler?.isProfilerActive() != null)
} }

View file

@ -17,9 +17,11 @@ import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import mozilla.components.browser.state.action.TranslationsAction import mozilla.components.browser.state.action.TranslationsAction
import mozilla.components.browser.state.state.TranslationsBrowserState import mozilla.components.browser.state.selector.findTab
import mozilla.components.browser.state.store.BrowserStore import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.concept.engine.translate.TranslationPageSettingOperation
import mozilla.components.lib.state.ext.observeAsComposableState import mozilla.components.lib.state.ext.observeAsComposableState
import mozilla.components.support.base.feature.UserInteractionHandler import mozilla.components.support.base.feature.UserInteractionHandler
import org.mozilla.fenix.GleanMetrics.Translations import org.mozilla.fenix.GleanMetrics.Translations
@ -34,6 +36,7 @@ import org.mozilla.fenix.theme.FirefoxTheme
* A fragment displaying the Firefox Translation settings screen. * A fragment displaying the Firefox Translation settings screen.
*/ */
class TranslationSettingsFragment : Fragment(), UserInteractionHandler { class TranslationSettingsFragment : Fragment(), UserInteractionHandler {
private val args by navArgs<TranslationSettingsFragmentArgs>()
private val browserStore: BrowserStore by lazy { requireComponents.core.store } private val browserStore: BrowserStore by lazy { requireComponents.core.store }
override fun onResume() { override fun onResume() {
@ -81,19 +84,19 @@ class TranslationSettingsFragment : Fragment(), UserInteractionHandler {
/** /**
* Set the switch item values. * Set the switch item values.
* The first one is based on [TranslationsBrowserState.offerTranslation]. * The first one is based on [TranslationPageSettings.alwaysOfferPopup].
* The second one is [DownloadLanguageFileDialog] visibility. * The second one is [DownloadLanguageFileDialog] visibility.
* This pop-up will appear if the switch item is unchecked, the phone is in saving mode, and * This pop-up will appear if the switch item is unchecked, the phone is in saving mode, and
* doesn't have a WiFi connection. * doesn't have a WiFi connection.
*/ */
@Composable @Composable
private fun getTranslationSwitchItemList(): MutableList<TranslationSwitchItem> { private fun getTranslationSwitchItemList(): MutableList<TranslationSwitchItem> {
val offerToTranslate = browserStore.observeAsComposableState { state -> val pageSettingsState = browserStore.observeAsComposableState { state ->
state.translationEngine.offerTranslation state.findTab(args.sessionId)?.translationsState?.pageSettings
}.value }.value
val translationSwitchItems = mutableListOf<TranslationSwitchItem>() val translationSwitchItems = mutableListOf<TranslationSwitchItem>()
offerToTranslate?.let { pageSettingsState?.alwaysOfferPopup?.let {
translationSwitchItems.add( translationSwitchItems.add(
TranslationSwitchItem( TranslationSwitchItem(
type = TranslationSettingsScreenOption.OfferToTranslate( type = TranslationSettingsScreenOption.OfferToTranslate(
@ -104,8 +107,10 @@ class TranslationSettingsFragment : Fragment(), UserInteractionHandler {
isEnabled = true, isEnabled = true,
onStateChange = { _, checked -> onStateChange = { _, checked ->
browserStore.dispatch( browserStore.dispatch(
TranslationsAction.SetGlobalOfferTranslateSettingAction( TranslationsAction.UpdatePageSettingAction(
offerTranslation = checked, tabId = args.sessionId,
operation = TranslationPageSettingOperation.UPDATE_ALWAYS_OFFER_POPUP,
setting = checked,
), ),
) )
// Ensures persistence of value // Ensures persistence of value
@ -136,15 +141,12 @@ class TranslationSettingsFragment : Fragment(), UserInteractionHandler {
} }
override fun onBackPressed(): Boolean { override fun onBackPressed(): Boolean {
return if (findNavController().previousBackStackEntry?.destination?.id == R.id.browserFragment) { findNavController().navigate(
findNavController().navigate( TranslationSettingsFragmentDirections.actionTranslationSettingsFragmentToTranslationsDialogFragment(
TranslationSettingsFragmentDirections.actionTranslationSettingsFragmentToTranslationsDialogFragment( sessionId = args.sessionId,
translationsDialogAccessPoint = TranslationsDialogAccessPoint.TranslationsOptions, translationsDialogAccessPoint = TranslationsDialogAccessPoint.TranslationsOptions,
), ),
) )
true return true
} else {
false
}
} }
} }

View file

@ -171,7 +171,6 @@ internal fun TranslationsOptionsDialog(
context: Context, context: Context,
showGlobalSettings: Boolean, showGlobalSettings: Boolean,
translationPageSettings: TranslationPageSettings? = null, translationPageSettings: TranslationPageSettings? = null,
offerTranslation: Boolean? = null,
initialFrom: Language? = null, initialFrom: Language? = null,
onStateChange: (TranslationSettingsOption, Boolean) -> Unit, onStateChange: (TranslationSettingsOption, Boolean) -> Unit,
onBackClicked: () -> Unit, onBackClicked: () -> Unit,
@ -182,7 +181,6 @@ internal fun TranslationsOptionsDialog(
showGlobalSettings = showGlobalSettings, showGlobalSettings = showGlobalSettings,
translationOptionsList = getTranslationSwitchItemList( translationOptionsList = getTranslationSwitchItemList(
translationPageSettings = translationPageSettings, translationPageSettings = translationPageSettings,
offerTranslation = offerTranslation,
initialFrom = initialFrom, initialFrom = initialFrom,
context = context, context = context,
onStateChange = onStateChange, onStateChange = onStateChange,
@ -196,7 +194,6 @@ internal fun TranslationsOptionsDialog(
@Composable @Composable
private fun getTranslationSwitchItemList( private fun getTranslationSwitchItemList(
translationPageSettings: TranslationPageSettings? = null, translationPageSettings: TranslationPageSettings? = null,
offerTranslation: Boolean? = null,
initialFrom: Language? = null, initialFrom: Language? = null,
context: Context, context: Context,
onStateChange: (TranslationSettingsOption, Boolean) -> Unit, onStateChange: (TranslationSettingsOption, Boolean) -> Unit,
@ -204,11 +201,12 @@ private fun getTranslationSwitchItemList(
val translationSwitchItemList = mutableListOf<TranslationSwitchItem>() val translationSwitchItemList = mutableListOf<TranslationSwitchItem>()
translationPageSettings?.let { translationPageSettings?.let {
val alwaysOfferPopup = translationPageSettings.alwaysOfferPopup
val alwaysTranslateLanguage = translationPageSettings.alwaysTranslateLanguage val alwaysTranslateLanguage = translationPageSettings.alwaysTranslateLanguage
val neverTranslateLanguage = translationPageSettings.neverTranslateLanguage val neverTranslateLanguage = translationPageSettings.neverTranslateLanguage
val neverTranslateSite = translationPageSettings.neverTranslateSite val neverTranslateSite = translationPageSettings.neverTranslateSite
offerTranslation?.let { alwaysOfferPopup?.let {
translationSwitchItemList.add( translationSwitchItemList.add(
TranslationSwitchItem( TranslationSwitchItem(
type = TranslationPageSettingsOption.AlwaysOfferPopup(), type = TranslationPageSettingsOption.AlwaysOfferPopup(),

View file

@ -8,7 +8,7 @@ import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChangedBy import kotlinx.coroutines.flow.distinctUntilChangedBy
import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.mapNotNull
import mozilla.components.browser.state.selector.selectedTab import mozilla.components.browser.state.selector.findTab
import mozilla.components.browser.state.state.BrowserState import mozilla.components.browser.state.state.BrowserState
import mozilla.components.browser.state.state.TabSessionState import mozilla.components.browser.state.state.TabSessionState
import mozilla.components.browser.state.state.TranslationsBrowserState import mozilla.components.browser.state.state.TranslationsBrowserState
@ -29,6 +29,7 @@ import java.util.Locale
class TranslationsDialogBinding( class TranslationsDialogBinding(
browserStore: BrowserStore, browserStore: BrowserStore,
private val translationsDialogStore: TranslationsDialogStore, private val translationsDialogStore: TranslationsDialogStore,
private val sessionId: String,
private val getTranslatedPageTitle: (localizedFrom: String?, localizedTo: String?) -> String, private val getTranslatedPageTitle: (localizedFrom: String?, localizedTo: String?) -> String,
) : AbstractBinding<BrowserState>(browserStore) { ) : AbstractBinding<BrowserState>(browserStore) {
@ -41,7 +42,7 @@ class TranslationsDialogBinding(
} }
// Session level flows // Session level flows
val sessionFlow = flow.mapNotNull { state -> state.selectedTab } val sessionFlow = flow.mapNotNull { state -> state.findTab(sessionId) }
.distinctUntilChangedBy { .distinctUntilChangedBy {
it.translationsState it.translationsState
} }

View file

@ -28,7 +28,7 @@ import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs import androidx.navigation.fragment.navArgs
import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import mozilla.components.browser.state.selector.selectedTab import mozilla.components.browser.state.selector.findTab
import mozilla.components.browser.state.store.BrowserStore import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.concept.engine.translate.Language import mozilla.components.concept.engine.translate.Language
import mozilla.components.concept.engine.translate.TranslationError import mozilla.components.concept.engine.translate.TranslationError
@ -92,6 +92,7 @@ class TranslationsDialogFragment : BottomSheetDialogFragment() {
listOf( listOf(
TranslationsDialogMiddleware( TranslationsDialogMiddleware(
browserStore = browserStore, browserStore = browserStore,
sessionId = args.sessionId,
settings = requireContext().settings(), settings = requireContext().settings(),
), ),
), ),
@ -244,6 +245,7 @@ class TranslationsDialogFragment : BottomSheetDialogFragment() {
feature = TranslationsDialogBinding( feature = TranslationsDialogBinding(
browserStore = browserStore, browserStore = browserStore,
translationsDialogStore = translationsDialogStore, translationsDialogStore = translationsDialogStore,
sessionId = args.sessionId,
getTranslatedPageTitle = { localizedFrom, localizedTo -> getTranslatedPageTitle = { localizedFrom, localizedTo ->
requireContext().getString( requireContext().getString(
R.string.translations_bottom_sheet_title_translation_completed, R.string.translations_bottom_sheet_title_translation_completed,
@ -382,17 +384,12 @@ class TranslationsDialogFragment : BottomSheetDialogFragment() {
) { ) {
val pageSettingsState = val pageSettingsState =
browserStore.observeAsComposableState { state -> browserStore.observeAsComposableState { state ->
state.selectedTab?.translationsState?.pageSettings state.findTab(args.sessionId)?.translationsState?.pageSettings
}.value }.value
val offerTranslation = browserStore.observeAsComposableState { state ->
state.translationEngine.offerTranslation
}.value
TranslationsOptionsDialog( TranslationsOptionsDialog(
context = requireContext(), context = requireContext(),
translationPageSettings = pageSettingsState, translationPageSettings = pageSettingsState,
offerTranslation = offerTranslation,
showGlobalSettings = showGlobalSettings, showGlobalSettings = showGlobalSettings,
initialFrom = initialFrom, initialFrom = initialFrom,
onStateChange = { type, checked -> onStateChange = { type, checked ->
@ -411,7 +408,9 @@ class TranslationsDialogFragment : BottomSheetDialogFragment() {
Translations.action.record(Translations.ActionExtra("global_settings")) Translations.action.record(Translations.ActionExtra("global_settings"))
findNavController().navigate( findNavController().navigate(
TranslationsDialogFragmentDirections TranslationsDialogFragmentDirections
.actionTranslationsDialogFragmentToTranslationSettingsFragment(), .actionTranslationsDialogFragmentToTranslationSettingsFragment(
sessionId = args.sessionId,
),
) )
}, },
aboutTranslationClicked = { aboutTranslationClicked = {
@ -426,7 +425,7 @@ class TranslationsDialogFragment : BottomSheetDialogFragment() {
setFragmentResult( setFragmentResult(
TRANSLATION_IN_PROGRESS, TRANSLATION_IN_PROGRESS,
bundleOf( bundleOf(
SESSION_ID to browserStore.state.selectedTab?.id, SESSION_ID to args.sessionId,
), ),
) )
} }

View file

@ -5,12 +5,12 @@
package org.mozilla.fenix.translations package org.mozilla.fenix.translations
import mozilla.components.browser.state.action.TranslationsAction import mozilla.components.browser.state.action.TranslationsAction
import mozilla.components.browser.state.selector.selectedTab
import mozilla.components.browser.state.store.BrowserStore import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.concept.engine.translate.TranslationOperation import mozilla.components.concept.engine.translate.TranslationOperation
import mozilla.components.concept.engine.translate.TranslationPageSettingOperation import mozilla.components.concept.engine.translate.TranslationPageSettingOperation
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.fenix.ext.settings
import org.mozilla.fenix.utils.Settings import org.mozilla.fenix.utils.Settings
/** /**
@ -18,17 +18,16 @@ import org.mozilla.fenix.utils.Settings
*/ */
class TranslationsDialogMiddleware( class TranslationsDialogMiddleware(
private val browserStore: BrowserStore, private val browserStore: BrowserStore,
private val sessionId: String,
private val settings: Settings, private val settings: Settings,
) : Middleware<TranslationsDialogState, TranslationsDialogAction> { ) : Middleware<TranslationsDialogState, TranslationsDialogAction> {
@Suppress("LongMethod", "CyclomaticComplexMethod") @Suppress("LongMethod")
override fun invoke( override fun invoke(
context: MiddlewareContext<TranslationsDialogState, TranslationsDialogAction>, context: MiddlewareContext<TranslationsDialogState, TranslationsDialogAction>,
next: (TranslationsDialogAction) -> Unit, next: (TranslationsDialogAction) -> Unit,
action: TranslationsDialogAction, action: TranslationsDialogAction,
) { ) {
val sessionId = browserStore.state.selectedTab?.id ?: return
when (action) { when (action) {
is TranslationsDialogAction.InitTranslationsDialog -> { is TranslationsDialogAction.InitTranslationsDialog -> {
// If the languages are missing, we should attempt to fetch the supported languages. // If the languages are missing, we should attempt to fetch the supported languages.
@ -99,8 +98,10 @@ class TranslationsDialogMiddleware(
is TranslationPageSettingsOption.AlwaysOfferPopup -> { is TranslationPageSettingsOption.AlwaysOfferPopup -> {
// Ensures the translations engine has the correct value // Ensures the translations engine has the correct value
browserStore.dispatch( browserStore.dispatch(
TranslationsAction.SetGlobalOfferTranslateSettingAction( TranslationsAction.UpdatePageSettingAction(
offerTranslation = action.checkValue, tabId = sessionId,
operation = TranslationPageSettingOperation.UPDATE_ALWAYS_OFFER_POPUP,
setting = action.checkValue,
), ),
) )

View file

@ -319,7 +319,6 @@
app:destination="@id/reviewQualityCheckFragment" /> app:destination="@id/reviewQualityCheckFragment" />
<action <action
android:id="@+id/action_browserFragment_to_translationsDialogFragment" android:id="@+id/action_browserFragment_to_translationsDialogFragment"
app:destination="@id/translationsDialogFragment" />
app:destination="@id/translations_graph" /> app:destination="@id/translations_graph" />
<action <action
android:id="@+id/action_loginsListFragment" android:id="@+id/action_loginsListFragment"
@ -638,13 +637,6 @@
app:exitAnim="@anim/slide_out_left" app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left" app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right" /> app:popExitAnim="@anim/slide_out_right" />
<action
android:id="@+id/action_settingsFragment_to_translationsSettingsFragment"
app:destination="@id/translations_settings_graph"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right" />
<action <action
android:id="@+id/action_settingsFragment_to_addonsFragment" android:id="@+id/action_settingsFragment_to_addonsFragment"
app:destination="@id/addons_management_graph" app:destination="@id/addons_management_graph"
@ -1452,24 +1444,33 @@
</fragment> </fragment>
</navigation> </navigation>
<dialog
android:id="@+id/translationsDialogFragment"
android:name="org.mozilla.fenix.translations.TranslationsDialogFragment">
<argument
android:name="translationsDialogAccessPoint"
android:defaultValue="Translations"
app:argType="org.mozilla.fenix.translations.TranslationsDialogAccessPoint" />
<action
android:id="@+id/action_translationsDialogFragment_to_translationSettingsFragment"
app:destination="@id/translations_settings_graph" />
</dialog>
<navigation <navigation
android:id="@+id/translations_settings_graph" android:id="@+id/translations_graph"
app:startDestination="@id/translationSettingsFragment"> app:startDestination="@id/translationsDialogFragment">
<argument
android:name="sessionId"
app:argType="string"
app:nullable="true" />
<dialog
android:id="@+id/translationsDialogFragment"
android:name="org.mozilla.fenix.translations.TranslationsDialogFragment">
<argument
android:name="sessionId"
app:argType="string" />
<argument
android:name="translationsDialogAccessPoint"
android:defaultValue="Translations"
app:argType="org.mozilla.fenix.translations.TranslationsDialogAccessPoint" />
<action
android:id="@+id/action_translationsDialogFragment_to_translationSettingsFragment"
app:destination="@id/translationSettingsFragment" />
</dialog>
<fragment <fragment
android:id="@+id/translationSettingsFragment" android:id="@+id/translationSettingsFragment"
android:name="org.mozilla.fenix.translations.TranslationSettingsFragment"> android:name="org.mozilla.fenix.translations.TranslationSettingsFragment">
<argument
android:name="sessionId"
app:argType="string" />
<action <action
android:id="@+id/action_translationSettingsFragment_to_translationsDialogFragment" android:id="@+id/action_translationSettingsFragment_to_translationsDialogFragment"
app:destination="@id/translationsDialogFragment" app:destination="@id/translationsDialogFragment"

View file

@ -17,7 +17,6 @@
<string name="pref_key_accessibility_force_enable_zoom" translatable="false">pref_key_accessibility_force_enable_zoom</string> <string name="pref_key_accessibility_force_enable_zoom" translatable="false">pref_key_accessibility_force_enable_zoom</string>
<string name="pref_key_advanced" translatable="false">pref_key_advanced</string> <string name="pref_key_advanced" translatable="false">pref_key_advanced</string>
<string name="pref_key_language" translatable="false">pref_key_language</string> <string name="pref_key_language" translatable="false">pref_key_language</string>
<string name="pref_key_translation" translatable="false">pref_key_translation</string>
<string name="pref_key_data_choices" translatable="false">pref_key_data_choices</string> <string name="pref_key_data_choices" translatable="false">pref_key_data_choices</string>
<string name="pref_key_delete_browsing_data" translatable="false">pref_key_delete_browsing_data</string> <string name="pref_key_delete_browsing_data" translatable="false">pref_key_delete_browsing_data</string>
<string name="pref_key_delete_browsing_data_on_quit_preference" translatable="false">pref_key_delete_browsing_data_on_quit_preference</string> <string name="pref_key_delete_browsing_data_on_quit_preference" translatable="false">pref_key_delete_browsing_data_on_quit_preference</string>

View file

@ -553,8 +553,6 @@
<string name="preferences_account_sync_error">Reconnect to resume syncing</string> <string name="preferences_account_sync_error">Reconnect to resume syncing</string>
<!-- Preference for language --> <!-- Preference for language -->
<string name="preferences_language">Language</string> <string name="preferences_language">Language</string>
<!-- Preference for translation -->
<string name="preferences_translation">Translation</string>
<!-- Preference for data choices --> <!-- Preference for data choices -->
<string name="preferences_data_choices">Data choices</string> <string name="preferences_data_choices">Data choices</string>
<!-- Preference for data collection --> <!-- Preference for data collection -->

View file

@ -82,11 +82,6 @@
app:iconSpaceReserved="false" app:iconSpaceReserved="false"
android:title="@string/preferences_language" /> android:title="@string/preferences_language" />
<androidx.preference.Preference
android:key="@string/pref_key_translation"
app:iconSpaceReserved="false"
android:title="@string/preferences_translation" />
<org.mozilla.fenix.settings.DefaultBrowserPreference <org.mozilla.fenix.settings.DefaultBrowserPreference
android:key="@string/pref_key_make_default_browser" android:key="@string/pref_key_make_default_browser"
app:iconSpaceReserved="false" app:iconSpaceReserved="false"

View file

@ -454,7 +454,9 @@ class DefaultBrowserToolbarControllerTest {
verify { verify {
navController.navigate( navController.navigate(
BrowserFragmentDirections.actionBrowserFragmentToTranslationsDialogFragment(), BrowserFragmentDirections.actionBrowserFragmentToTranslationsDialogFragment(
sessionId = "1",
),
) )
} }

View file

@ -837,7 +837,9 @@ class DefaultBrowserToolbarMenuControllerTest {
verify { verify {
navController.navigate( navController.navigate(
directionsEq( directionsEq(
BrowserFragmentDirections.actionBrowserFragmentToTranslationsDialogFragment(), BrowserFragmentDirections.actionBrowserFragmentToTranslationsDialogFragment(
sessionId = selectedTab.id,
),
), ),
) )
} }

View file

@ -56,6 +56,7 @@ class TranslationsDialogBindingTest {
val binding = TranslationsDialogBinding( val binding = TranslationsDialogBinding(
browserStore = browserStore, browserStore = browserStore,
translationsDialogStore = translationsDialogStore, translationsDialogStore = translationsDialogStore,
sessionId = tabId,
getTranslatedPageTitle = { localizedFrom, localizedTo -> getTranslatedPageTitle = { localizedFrom, localizedTo ->
testContext.getString( testContext.getString(
R.string.translations_bottom_sheet_title_translation_completed, R.string.translations_bottom_sheet_title_translation_completed,
@ -137,6 +138,7 @@ class TranslationsDialogBindingTest {
val binding = TranslationsDialogBinding( val binding = TranslationsDialogBinding(
browserStore = browserStore, browserStore = browserStore,
translationsDialogStore = translationsDialogStore, translationsDialogStore = translationsDialogStore,
sessionId = tabId,
getTranslatedPageTitle = { localizedFrom, localizedTo -> getTranslatedPageTitle = { localizedFrom, localizedTo ->
testContext.getString( testContext.getString(
R.string.translations_bottom_sheet_title_translation_completed, R.string.translations_bottom_sheet_title_translation_completed,
@ -182,6 +184,7 @@ class TranslationsDialogBindingTest {
val binding = TranslationsDialogBinding( val binding = TranslationsDialogBinding(
browserStore = browserStore, browserStore = browserStore,
translationsDialogStore = translationsDialogStore, translationsDialogStore = translationsDialogStore,
sessionId = tabId,
getTranslatedPageTitle = { localizedFrom, localizedTo -> getTranslatedPageTitle = { localizedFrom, localizedTo ->
testContext.getString( testContext.getString(
R.string.translations_bottom_sheet_title_translation_completed, R.string.translations_bottom_sheet_title_translation_completed,
@ -228,6 +231,7 @@ class TranslationsDialogBindingTest {
val binding = TranslationsDialogBinding( val binding = TranslationsDialogBinding(
browserStore = browserStore, browserStore = browserStore,
translationsDialogStore = translationsDialogStore, translationsDialogStore = translationsDialogStore,
sessionId = tabId,
getTranslatedPageTitle = { localizedFrom, localizedTo -> getTranslatedPageTitle = { localizedFrom, localizedTo ->
testContext.getString( testContext.getString(
R.string.translations_bottom_sheet_title_translation_completed, R.string.translations_bottom_sheet_title_translation_completed,
@ -277,6 +281,7 @@ class TranslationsDialogBindingTest {
val binding = TranslationsDialogBinding( val binding = TranslationsDialogBinding(
browserStore = browserStore, browserStore = browserStore,
translationsDialogStore = translationsDialogStore, translationsDialogStore = translationsDialogStore,
sessionId = tabId,
getTranslatedPageTitle = { localizedFrom, localizedTo -> getTranslatedPageTitle = { localizedFrom, localizedTo ->
testContext.getString( testContext.getString(
R.string.translations_bottom_sheet_title_translation_completed, R.string.translations_bottom_sheet_title_translation_completed,
@ -316,6 +321,7 @@ class TranslationsDialogBindingTest {
val binding = TranslationsDialogBinding( val binding = TranslationsDialogBinding(
browserStore = browserStore, browserStore = browserStore,
translationsDialogStore = translationsDialogStore, translationsDialogStore = translationsDialogStore,
sessionId = tabId,
getTranslatedPageTitle = { localizedFrom, localizedTo -> getTranslatedPageTitle = { localizedFrom, localizedTo ->
testContext.getString( testContext.getString(
R.string.translations_bottom_sheet_title_translation_completed, R.string.translations_bottom_sheet_title_translation_completed,
@ -353,6 +359,7 @@ class TranslationsDialogBindingTest {
val binding = TranslationsDialogBinding( val binding = TranslationsDialogBinding(
browserStore = browserStore, browserStore = browserStore,
translationsDialogStore = translationsDialogStore, translationsDialogStore = translationsDialogStore,
sessionId = tabId,
getTranslatedPageTitle = { localizedFrom, localizedTo -> getTranslatedPageTitle = { localizedFrom, localizedTo ->
testContext.getString( testContext.getString(
R.string.translations_bottom_sheet_title_translation_completed, R.string.translations_bottom_sheet_title_translation_completed,
@ -403,6 +410,7 @@ class TranslationsDialogBindingTest {
val binding = TranslationsDialogBinding( val binding = TranslationsDialogBinding(
browserStore = browserStore, browserStore = browserStore,
translationsDialogStore = translationsDialogStore, translationsDialogStore = translationsDialogStore,
sessionId = tabId,
getTranslatedPageTitle = { localizedFrom, localizedTo -> getTranslatedPageTitle = { localizedFrom, localizedTo ->
testContext.getString( testContext.getString(
R.string.translations_bottom_sheet_title_translation_completed, R.string.translations_bottom_sheet_title_translation_completed,

View file

@ -4,12 +4,10 @@
package org.mozilla.fenix.translations package org.mozilla.fenix.translations
import io.mockk.spyk import io.mockk.mockk
import io.mockk.verify import io.mockk.verify
import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.runTest
import mozilla.components.browser.state.action.TranslationsAction import mozilla.components.browser.state.action.TranslationsAction
import mozilla.components.browser.state.state.BrowserState
import mozilla.components.browser.state.state.createTab
import mozilla.components.browser.state.store.BrowserStore import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.concept.engine.translate.Language import mozilla.components.concept.engine.translate.Language
import mozilla.components.concept.engine.translate.TranslationOperation import mozilla.components.concept.engine.translate.TranslationOperation
@ -26,17 +24,10 @@ import org.mozilla.fenix.utils.Settings
@RunWith(FenixRobolectricTestRunner::class) @RunWith(FenixRobolectricTestRunner::class)
class TranslationsDialogMiddlewareTest { class TranslationsDialogMiddlewareTest {
private val browserStore = spyk( private val browserStore = mockk<BrowserStore>(relaxed = true)
BrowserStore(
BrowserState(
tabs = listOf(createTab("https://www.mozilla.org", id = "tab1")),
selectedTabId = "tab1",
),
),
)
private val settings = Settings(testContext) private val settings = Settings(testContext)
private val translationsDialogMiddleware = private val translationsDialogMiddleware =
TranslationsDialogMiddleware(browserStore = browserStore, settings = settings) TranslationsDialogMiddleware(browserStore = browserStore, sessionId = "tab1", settings = settings)
@Test @Test
fun `GIVEN translationState WHEN FetchSupportedLanguages action is called THEN call OperationRequestedAction from BrowserStore`() = fun `GIVEN translationState WHEN FetchSupportedLanguages action is called THEN call OperationRequestedAction from BrowserStore`() =
@ -173,8 +164,10 @@ class TranslationsDialogMiddlewareTest {
verify { verify {
browserStore.dispatch( browserStore.dispatch(
TranslationsAction.SetGlobalOfferTranslateSettingAction( TranslationsAction.UpdatePageSettingAction(
offerTranslation = false, tabId = "tab1",
operation = TranslationPageSettingOperation.UPDATE_ALWAYS_OFFER_POPUP,
setting = false,
), ),
) )
} }