Copione merged onto master
continuous-integration/drone/push Build is failing
Details
continuous-integration/drone/push Build is failing
Details
commit
6f7690e4a8
|
@ -17,7 +17,7 @@ object FeatureFlags {
|
|||
/**
|
||||
* Allows edit of saved logins.
|
||||
*/
|
||||
val loginsEdit = Config.channel.isNightlyOrDebug
|
||||
const val loginsEdit = true
|
||||
|
||||
/**
|
||||
* Enable tab sync feature
|
||||
|
|
|
@ -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 ->
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue