1
0
Fork 0

Copione merged onto master
continuous-integration/drone/push Build is failing Details

master
blallo 2020-07-28 00:00:37 +02:00
commit 6f7690e4a8
12 changed files with 230 additions and 151 deletions

View File

@ -17,7 +17,7 @@ object FeatureFlags {
/**
* Allows edit of saved logins.
*/
val loginsEdit = Config.channel.isNightlyOrDebug
const val loginsEdit = true
/**
* Enable tab sync feature

View File

@ -17,6 +17,7 @@ import kotlinx.coroutines.launch
import mozilla.appservices.places.BookmarkRoot
import mozilla.components.browser.session.Session
import mozilla.components.browser.session.SessionManager
import mozilla.components.concept.engine.EngineSession.LoadUrlFlags
import mozilla.components.concept.engine.EngineView
import mozilla.components.concept.engine.prompt.ShareData
import mozilla.components.feature.session.SessionFeature
@ -177,7 +178,15 @@ class DefaultBrowserToolbarController(
sessionUseCases.goForward.invoke(currentSession)
}
}
ToolbarMenu.Item.Reload -> sessionUseCases.reload.invoke(currentSession)
is ToolbarMenu.Item.Reload -> {
val flags = if (item.bypassCache) {
LoadUrlFlags.select(LoadUrlFlags.BYPASS_CACHE)
} else {
LoadUrlFlags.none()
}
sessionUseCases.reload.invoke(currentSession, flags = flags)
}
ToolbarMenu.Item.Stop -> sessionUseCases.stopLoading.invoke(currentSession)
ToolbarMenu.Item.Settings -> browserAnimator.captureEngineViewAndDrawStatically {
val directions = BrowserFragmentDirections.actionBrowserFragmentToSettingsFragment()
@ -340,7 +349,7 @@ class DefaultBrowserToolbarController(
val eventItem = when (item) {
ToolbarMenu.Item.Back -> Event.BrowserMenuItemTapped.Item.BACK
is ToolbarMenu.Item.Forward -> Event.BrowserMenuItemTapped.Item.FORWARD
ToolbarMenu.Item.Reload -> Event.BrowserMenuItemTapped.Item.RELOAD
is ToolbarMenu.Item.Reload -> Event.BrowserMenuItemTapped.Item.RELOAD
ToolbarMenu.Item.Stop -> Event.BrowserMenuItemTapped.Item.STOP
ToolbarMenu.Item.Settings -> Event.BrowserMenuItemTapped.Item.SETTINGS
is ToolbarMenu.Item.RequestDesktop ->

View File

@ -4,6 +4,7 @@
package org.mozilla.fenix.components.toolbar
import android.view.HapticFeedbackConstants
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@ -156,6 +157,7 @@ class BrowserToolbarView(
customTabSession?.id,
shouldReverseItems = toolbarPosition == ToolbarPosition.TOP,
onItemTapped = {
it.performHapticIfNeeded(view)
interactor.onBrowserToolbarMenuItemTapped(it)
}
)
@ -164,7 +166,10 @@ class BrowserToolbarView(
context = this,
hasAccountProblem = components.backgroundServices.accountManager.accountNeedsReauth(),
shouldReverseItems = toolbarPosition == ToolbarPosition.TOP,
onItemTapped = { interactor.onBrowserToolbarMenuItemTapped(it) },
onItemTapped = {
it.performHapticIfNeeded(view)
interactor.onBrowserToolbarMenuItemTapped(it)
},
lifecycleOwner = lifecycleOwner,
sessionManager = sessionManager,
store = components.core.store,
@ -244,4 +249,12 @@ class BrowserToolbarView(
companion object {
private const val TOOLBAR_ELEVATION = 16
}
private fun ToolbarMenu.Item.performHapticIfNeeded(view: View) {
(this as? ToolbarMenu.Item.Reload)?.also { reload ->
if (reload.bypassCache) {
view.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS)
}
}
}
}

View File

@ -98,12 +98,13 @@ class DefaultToolbarMenu(
secondaryImageResource = mozilla.components.ui.icons.R.drawable.mozac_ic_stop,
secondaryContentDescription = context.getString(R.string.browser_menu_stop),
secondaryImageTintResource = primaryTextColor(),
disableInSecondaryState = false
disableInSecondaryState = false,
longClickListener = { onItemTapped.invoke(ToolbarMenu.Item.Reload(bypassCache = true)) }
) {
if (session?.loading == true) {
onItemTapped.invoke(ToolbarMenu.Item.Stop)
} else {
onItemTapped.invoke(ToolbarMenu.Item.Reload)
onItemTapped.invoke(ToolbarMenu.Item.Reload(bypassCache = false))
}
}

View File

@ -15,7 +15,7 @@ interface ToolbarMenu {
object Share : Item()
object Back : Item()
data class Forward(val viewHistory: Boolean) : Item()
object Reload : Item()
data class Reload(val bypassCache: Boolean) : Item()
object Stop : Item()
object OpenInFenix : Item()
object SaveToCollection : Item()

View File

@ -91,12 +91,13 @@ class CustomTabToolbarMenu(
secondaryImageResource = mozilla.components.ui.icons.R.drawable.mozac_ic_stop,
secondaryContentDescription = context.getString(R.string.browser_menu_stop),
secondaryImageTintResource = primaryTextColor(),
disableInSecondaryState = false
disableInSecondaryState = false,
longClickListener = { onItemTapped.invoke(ToolbarMenu.Item.Reload(bypassCache = true)) }
) {
if (session?.loading == true) {
onItemTapped.invoke(ToolbarMenu.Item.Stop)
} else {
onItemTapped.invoke(ToolbarMenu.Item.Reload)
onItemTapped.invoke(ToolbarMenu.Item.Reload(bypassCache = false))
}
}

View File

@ -73,6 +73,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
accountUiView = AccountUiView(
fragment = this,
scope = lifecycleScope,
accountManager = requireComponents.backgroundServices.accountManager,
httpClient = requireComponents.core.client,
updateFxASyncOverrideMenu = ::updateFxASyncOverrideMenu
@ -137,6 +138,11 @@ class SettingsFragment : PreferenceFragmentCompat() {
creatingFragment = false
}
override fun onDestroyView() {
super.onDestroyView()
accountUiView.cancel()
}
private fun update(shouldUpdateAccountUIState: Boolean) {
val trackingProtectionPreference =
requirePreference<Preference>(R.string.pref_key_tracking_protection_settings)

View File

@ -7,10 +7,12 @@ package org.mozilla.fenix.settings.account
import android.content.Context
import androidx.appcompat.content.res.AppCompatResources
import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory
import androidx.lifecycle.lifecycleScope
import androidx.preference.Preference
import androidx.preference.PreferenceCategory
import androidx.preference.PreferenceFragmentCompat
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.cancel
import kotlinx.coroutines.launch
import mozilla.components.concept.fetch.Client
import mozilla.components.concept.sync.Profile
@ -21,12 +23,12 @@ import org.mozilla.fenix.settings.requirePreference
class AccountUiView(
fragment: PreferenceFragmentCompat,
private val scope: CoroutineScope,
private val accountManager: FxaAccountManager,
private val httpClient: Client,
private val updateFxASyncOverrideMenu: () -> Unit
) {
private val lifecycleScope = fragment.viewLifecycleOwner.lifecycleScope
private val preferenceSignIn =
fragment.requirePreference<Preference>(R.string.pref_key_sign_in)
private val preferenceFirefoxAccount =
@ -36,6 +38,8 @@ class AccountUiView(
private val accountPreferenceCategory =
fragment.requirePreference<PreferenceCategory>(R.string.pref_key_account_category)
private var avatarJob: Job? = null
/**
* Updates the UI to reflect current account state.
* Possible conditions are logged-in without problems, logged-out, and logged-in but needs to re-authenticate.
@ -49,15 +53,16 @@ class AccountUiView(
if (account != null && !accountManager.accountNeedsReauth()) {
preferenceSignIn.isVisible = false
profile?.avatar?.url?.let { avatarUrl ->
lifecycleScope.launch {
val roundedDrawable = toRoundedDrawable(avatarUrl, context)
preferenceFirefoxAccount.icon =
roundedDrawable ?: AppCompatResources.getDrawable(
context,
R.drawable.ic_account
)
avatarJob?.cancel()
val avatarUrl = profile?.avatar?.url
if (avatarUrl != null) {
avatarJob = scope.launch {
val roundedAvatarDrawable = toRoundedDrawable(avatarUrl, context)
preferenceFirefoxAccount.icon = roundedAvatarDrawable ?: genericAvatar(context)
}
} else {
avatarJob = null
preferenceFirefoxAccount.icon = genericAvatar(context)
}
preferenceSignIn.onPreferenceClickListener = null
@ -88,6 +93,19 @@ class AccountUiView(
}
}
/**
* Cancel any running coroutine jobs for loading account images.
*/
fun cancel() {
scope.cancel()
}
/**
* Returns generic avatar for accounts.
*/
private fun genericAvatar(context: Context) =
AppCompatResources.getDrawable(context, R.drawable.ic_account)
/**
* Gets a rounded drawable from a URL if possible, else null.
*/

View File

@ -41,7 +41,8 @@ import org.mozilla.fenix.settings.SupportUtils
import java.util.Locale
@SuppressWarnings("LargeClass", "TooManyFunctions")
class AddSearchEngineFragment : Fragment(), CompoundButton.OnCheckedChangeListener {
class AddSearchEngineFragment : Fragment(R.layout.fragment_add_search_engine),
CompoundButton.OnCheckedChangeListener {
private var availableEngines: List<SearchEngine> = listOf()
private var selectedIndex: Int = -1
private val engineViews = mutableListOf<View>()
@ -62,14 +63,6 @@ class AddSearchEngineFragment : Fragment(), CompoundButton.OnCheckedChangeListen
selectedIndex = if (availableEngines.isEmpty()) CUSTOM_INDEX else FIRST_INDEX
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_add_search_engine, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val layoutInflater = LayoutInflater.from(context)

View File

@ -19,6 +19,7 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:listitem="@layout/fragment_site_permissions_exceptions_item"
tools:visibility="visible" />
<com.google.android.material.button.MaterialButton
@ -43,7 +44,6 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:visibility="visible" />
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -38,10 +38,10 @@
app:destination="@id/turnOnSyncFragment" />
<action
android:id="@+id/action_global_settings_addonsManagementFragment"
app:destination="@id/addonsManagementFragment" />
app:destination="@id/addons_management_graph" />
<action
android:id="@+id/action_global_searchEngineFragment"
app:destination="@id/searchEngineFragment" />
app:destination="@id/search_engine_graph" />
<action
android:id="@+id/action_global_accessibilityFragment"
app:destination="@id/accessibilityFragment" />
@ -80,7 +80,7 @@
app:destination="@id/bookmarkEditFragment" />
<action
android:id="@+id/action_global_addonsManagementFragment"
app:destination="@id/addonsManagementFragment" />
app:destination="@id/addons_management_graph" />
<action
android:id="@+id/action_global_trackingProtectionFragment"
app:destination="@id/trackingProtectionFragment" />
@ -165,42 +165,6 @@
app:argType="org.mozilla.fenix.settings.PhoneFeature" />
</fragment>
<fragment
android:id="@+id/sitePermissionsExceptionsFragment"
android:name="org.mozilla.fenix.settings.sitepermissions.SitePermissionsExceptionsFragment"
android:label="@string/preference_exceptions"
tools:layout="@layout/fragment_site_permissions_exceptions">
<action
android:id="@+id/action_site_permissions_to_exceptions_to_site_permissions_details"
app:destination="@id/sitePermissionsDetailsExceptionsFragment"
app:popUpTo="@+id/sitePermissionsExceptionsFragment" />
</fragment>
<fragment
android:id="@+id/sitePermissionsDetailsExceptionsFragment"
android:name="org.mozilla.fenix.settings.sitepermissions.SitePermissionsDetailsExceptionsFragment"
tools:layout="@xml/site_permissions_details_exceptions_preferences">
<action
android:id="@+id/action_site_permissions_to_exceptions_to_manage_phone_feature"
app:destination="@id/sitePermissionsManageExceptionsPhoneFeatureFragment"
app:popUpTo="@+id/sitePermissionsDetailsExceptionsFragment" />
<argument
android:name="sitePermissions"
app:argType="mozilla.components.feature.sitepermissions.SitePermissions" />
</fragment>
<fragment
android:id="@+id/sitePermissionsManageExceptionsPhoneFeatureFragment"
android:name="org.mozilla.fenix.settings.sitepermissions.SitePermissionsManageExceptionsPhoneFeatureFragment"
tools:layout="@layout/fragment_manage_site_permissions_feature_phone">
<argument
android:name="phoneFeature"
app:argType="org.mozilla.fenix.settings.PhoneFeature" />
<argument
android:name="sitePermissions"
app:argType="mozilla.components.feature.sitepermissions.SitePermissions" />
</fragment>
<fragment
android:id="@+id/browserFragment"
android:name="org.mozilla.fenix.browser.BrowserFragment"
@ -459,7 +423,7 @@
app:popExitAnim="@anim/slide_out_right" />
<action
android:id="@+id/action_settingsFragment_to_searchEngineFragment"
app:destination="@id/searchEngineFragment"
app:destination="@id/search_engine_graph"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
@ -536,7 +500,7 @@
app:popExitAnim="@anim/slide_out_right" />
<action
android:id="@+id/action_settingsFragment_to_addonsFragment"
app:destination="@id/addonsManagementFragment"
app:destination="@id/addons_management_graph"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
@ -560,7 +524,7 @@
app:popUpTo="@id/sitePermissionsFragment" />
<action
android:id="@+id/action_site_permissions_to_exceptions"
app:destination="@id/sitePermissionsExceptionsFragment"
app:destination="@id/site_permissions_exceptions_graph"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
@ -580,17 +544,6 @@
android:id="@+id/action_accountSettingsFragment_to_signOutFragment"
app:destination="@id/signOutFragment" />
</fragment>
<fragment
android:id="@+id/searchEngineFragment"
android:name="org.mozilla.fenix.settings.search.SearchEngineFragment"
android:label="@string/preferences_search">
<action
android:id="@+id/action_searchEngineFragment_to_addSearchEngineFragment"
app:destination="@+id/addSearchEngineFragment" />
<action
android:id="@+id/action_searchEngineFragment_to_editCustomSearchEngineFragment"
app:destination="@+id/editCustomSearchEngineFragment" />
</fragment>
<fragment
android:id="@+id/turnOnSyncFragment"
@ -782,16 +735,6 @@
<fragment
android:id="@+id/addNewDeviceFragment"
android:name="org.mozilla.fenix.share.AddNewDeviceFragment" />
<fragment
android:id="@+id/addSearchEngineFragment"
android:name="org.mozilla.fenix.settings.search.AddSearchEngineFragment" />
<fragment
android:id="@+id/editCustomSearchEngineFragment"
android:name="org.mozilla.fenix.settings.search.EditCustomSearchEngineFragment">
<argument
android:name="searchEngineIdentifier"
app:argType="string" />
</fragment>
<fragment
android:id="@+id/localeSettingsFragment"
android:name="org.mozilla.fenix.settings.advanced.LocaleSettingsFragment" />
@ -799,63 +742,6 @@
android:id="@+id/saveLoginSettingFragment"
android:name="org.mozilla.fenix.settings.logins.fragment.SavedLoginsSettingFragment"
android:label="SaveLoginSettingFragment" />
<fragment
android:id="@+id/addonsManagementFragment"
android:name="org.mozilla.fenix.addons.AddonsManagementFragment">
<action
android:id="@+id/action_addonsManagementFragment_to_addonDetailsFragment"
app:destination="@id/addonDetailsFragment" />
<action
android:id="@+id/action_addonsManagementFragment_to_installedAddonDetails"
app:destination="@id/installedAddonDetailsFragment" />
<action
android:id="@+id/action_addonsManagementFragment_to_notYetSupportedAddonFragment"
app:destination="@id/notYetSupportedAddonFragment" />
</fragment>
<fragment
android:id="@+id/addonDetailsFragment"
android:name="org.mozilla.fenix.addons.AddonDetailsFragment">
<argument
android:name="addon"
app:argType="mozilla.components.feature.addons.Addon" />
</fragment>
<fragment
android:id="@+id/installedAddonDetailsFragment"
android:name="org.mozilla.fenix.addons.InstalledAddonDetailsFragment">
<action
android:id="@+id/action_installedAddonFragment_to_addonInternalSettingsFragment"
app:destination="@id/addonInternalSettingsFragment" />
<action
android:id="@+id/action_installedAddonFragment_to_addonDetailsFragment"
app:destination="@id/addonDetailsFragment" />
<action
android:id="@+id/action_installedAddonFragment_to_addonPermissionsDetailsFragment"
app:destination="@id/addonPermissionsDetailFragment" />
<argument
android:name="addon"
app:argType="mozilla.components.feature.addons.Addon" />
</fragment>
<fragment
android:id="@+id/notYetSupportedAddonFragment"
android:name="org.mozilla.fenix.addons.NotYetSupportedAddonFragment">
<argument
android:name="addons"
app:argType="mozilla.components.feature.addons.Addon[]" />
</fragment>
<fragment
android:id="@+id/addonInternalSettingsFragment"
android:name="org.mozilla.fenix.addons.AddonInternalSettingsFragment">
<argument
android:name="addon"
app:argType="mozilla.components.feature.addons.Addon" />
</fragment>
<fragment
android:id="@+id/addonPermissionsDetailFragment"
android:name="org.mozilla.fenix.addons.AddonPermissionsDetailsFragment">
<argument
android:name="addon"
app:argType="mozilla.components.feature.addons.Addon" />
</fragment>
<fragment
android:id="@+id/webExtensionActionPopupFragment"
android:name="org.mozilla.fenix.addons.WebExtensionActionPopupFragment">
@ -870,4 +756,137 @@
<dialog
android:id="@+id/tabHistoryDialogFragment"
android:name="org.mozilla.fenix.tabhistory.TabHistoryDialogFragment" />
<navigation android:id="@+id/site_permissions_exceptions_graph"
app:startDestination="@id/sitePermissionsExceptionsFragment">
<fragment
android:id="@+id/sitePermissionsExceptionsFragment"
android:name="org.mozilla.fenix.settings.sitepermissions.SitePermissionsExceptionsFragment"
android:label="@string/preference_exceptions"
tools:layout="@layout/fragment_site_permissions_exceptions">
<action
android:id="@+id/action_site_permissions_to_exceptions_to_site_permissions_details"
app:destination="@id/sitePermissionsDetailsExceptionsFragment"
app:popUpTo="@+id/sitePermissionsExceptionsFragment" />
</fragment>
<fragment
android:id="@+id/sitePermissionsManageExceptionsPhoneFeatureFragment"
android:name="org.mozilla.fenix.settings.sitepermissions.SitePermissionsManageExceptionsPhoneFeatureFragment"
tools:layout="@layout/fragment_manage_site_permissions_feature_phone">
<argument
android:name="phoneFeature"
app:argType="org.mozilla.fenix.settings.PhoneFeature" />
<argument
android:name="sitePermissions"
app:argType="mozilla.components.feature.sitepermissions.SitePermissions" />
</fragment>
<fragment
android:id="@+id/sitePermissionsDetailsExceptionsFragment"
android:name="org.mozilla.fenix.settings.sitepermissions.SitePermissionsDetailsExceptionsFragment">
<action
android:id="@+id/action_site_permissions_to_exceptions_to_manage_phone_feature"
app:destination="@id/sitePermissionsManageExceptionsPhoneFeatureFragment"
app:popUpTo="@+id/sitePermissionsDetailsExceptionsFragment" />
<argument
android:name="sitePermissions"
app:argType="mozilla.components.feature.sitepermissions.SitePermissions" />
</fragment>
</navigation>
<navigation android:id="@+id/addons_management_graph"
app:startDestination="@id/addonsManagementFragment">
<fragment
android:id="@+id/addonsManagementFragment"
android:name="org.mozilla.fenix.addons.AddonsManagementFragment"
tools:layout="@layout/fragment_add_ons_management">
<action
android:id="@+id/action_addonsManagementFragment_to_addonDetailsFragment"
app:destination="@id/addonDetailsFragment" />
<action
android:id="@+id/action_addonsManagementFragment_to_installedAddonDetails"
app:destination="@id/installedAddonDetailsFragment" />
<action
android:id="@+id/action_addonsManagementFragment_to_notYetSupportedAddonFragment"
app:destination="@id/notYetSupportedAddonFragment" />
</fragment>
<fragment
android:id="@+id/installedAddonDetailsFragment"
android:name="org.mozilla.fenix.addons.InstalledAddonDetailsFragment"
tools:layout="@layout/fragment_installed_add_on_details">
<action
android:id="@+id/action_installedAddonFragment_to_addonInternalSettingsFragment"
app:destination="@id/addonInternalSettingsFragment" />
<action
android:id="@+id/action_installedAddonFragment_to_addonDetailsFragment"
app:destination="@id/addonDetailsFragment" />
<action
android:id="@+id/action_installedAddonFragment_to_addonPermissionsDetailsFragment"
app:destination="@id/addonPermissionsDetailFragment" />
<argument
android:name="addon"
app:argType="mozilla.components.feature.addons.Addon" />
</fragment>
<fragment
android:id="@+id/notYetSupportedAddonFragment"
android:name="org.mozilla.fenix.addons.NotYetSupportedAddonFragment"
tools:layout="@layout/fragment_not_yet_supported_addons">
<argument
android:name="addons"
app:argType="mozilla.components.feature.addons.Addon[]" />
</fragment>
<fragment
android:id="@+id/addonPermissionsDetailFragment"
android:name="org.mozilla.fenix.addons.AddonPermissionsDetailsFragment"
tools:layout="@layout/fragment_add_on_permissions">
<argument
android:name="addon"
app:argType="mozilla.components.feature.addons.Addon" />
</fragment>
<fragment
android:id="@+id/addonInternalSettingsFragment"
android:name="org.mozilla.fenix.addons.AddonInternalSettingsFragment"
tools:layout="@layout/fragment_add_on_internal_settings">
<argument
android:name="addon"
app:argType="mozilla.components.feature.addons.Addon" />
</fragment>
<fragment
android:id="@+id/addonDetailsFragment"
android:name="org.mozilla.fenix.addons.AddonDetailsFragment"
tools:layout="@layout/fragment_add_on_details">
<argument
android:name="addon"
app:argType="mozilla.components.feature.addons.Addon" />
</fragment>
</navigation>
<navigation android:id="@+id/search_engine_graph"
app:startDestination="@id/searchEngineFragment">
<fragment
android:id="@+id/searchEngineFragment"
android:name="org.mozilla.fenix.settings.search.SearchEngineFragment"
android:label="@string/preferences_search">
<action
android:id="@+id/action_searchEngineFragment_to_addSearchEngineFragment"
app:destination="@+id/addSearchEngineFragment" />
<action
android:id="@+id/action_searchEngineFragment_to_editCustomSearchEngineFragment"
app:destination="@+id/editCustomSearchEngineFragment" />
</fragment>
<fragment
android:id="@+id/addSearchEngineFragment"
android:name="org.mozilla.fenix.settings.search.AddSearchEngineFragment"
tools:layout="@layout/fragment_add_search_engine" />
<fragment
android:id="@+id/editCustomSearchEngineFragment"
android:name="org.mozilla.fenix.settings.search.EditCustomSearchEngineFragment"
tools:layout="@layout/fragment_add_search_engine">
<argument
android:name="searchEngineIdentifier"
app:argType="string" />
</fragment>
</navigation>
</navigation>

View File

@ -30,6 +30,7 @@ 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 mozilla.components.concept.engine.EngineSession
import mozilla.components.concept.engine.EngineView
import mozilla.components.concept.engine.prompt.ShareData
import mozilla.components.feature.search.SearchUseCases
@ -235,7 +236,7 @@ class DefaultBrowserToolbarControllerTest {
@Test
fun handleToolbarReloadPress() = runBlockingTest {
val item = ToolbarMenu.Item.Reload
val item = ToolbarMenu.Item.Reload(false)
every { activity.components.useCases.sessionUseCases } returns sessionUseCases
@ -246,6 +247,24 @@ class DefaultBrowserToolbarControllerTest {
verify { sessionUseCases.reload(currentSession) }
}
@Test
fun handleToolbarReloadLongPress() = runBlockingTest {
val item = ToolbarMenu.Item.Reload(true)
every { activity.components.useCases.sessionUseCases } returns sessionUseCases
val controller = createController(scope = this)
controller.handleToolbarItemInteraction(item)
verify { metrics.track(Event.BrowserMenuItemTapped(Event.BrowserMenuItemTapped.Item.RELOAD)) }
verify {
sessionUseCases.reload(
currentSession,
EngineSession.LoadUrlFlags.select(EngineSession.LoadUrlFlags.BYPASS_CACHE)
)
}
}
@Test
fun handleToolbarStopPress() = runBlockingTest {
val item = ToolbarMenu.Item.Stop