For #25980: Replace deprecated setHasOptionsMenu with MenuProvider.

pull/543/head
mcarare 2 years ago committed by mergify[bot]
parent 2b8b6a9aca
commit d9d01db7cc

@ -16,8 +16,10 @@ import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AlertDialog
import androidx.core.content.getSystemService
import androidx.core.view.MenuProvider
import androidx.core.view.isVisible
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavDirections
import androidx.navigation.fragment.findNavController
@ -61,7 +63,7 @@ import org.mozilla.fenix.utils.allowUndo
* The screen that displays the user's bookmark list in their Library.
*/
@Suppress("TooManyFunctions", "LargeClass")
class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHandler {
class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHandler, MenuProvider {
private lateinit var bookmarkStore: BookmarkFragmentStore
private lateinit var bookmarkView: BookmarkView
@ -134,6 +136,9 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHan
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
val accountManager = requireComponents.backgroundServices.accountManager
consumeFrom(bookmarkStore) {
bookmarkView.update(it)
@ -147,11 +152,6 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHan
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setHasOptionsMenu(true)
}
override fun onResume() {
super.onResume()
@ -176,7 +176,7 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHan
}
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
when (val mode = bookmarkStore.state.mode) {
is BookmarkFragmentState.Mode.Normal -> {
if (mode.showMenu) {
@ -205,7 +205,7 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHan
}
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
override fun onMenuItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.bookmark_search -> {
bookmarkInteractor.onSearch()
@ -251,7 +251,8 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHan
deleteMulti(bookmarkStore.state.mode.selectedItems)
true
}
else -> super.onOptionsItemSelected(item)
// other options are not handled by this menu provider
else -> false
}
}

@ -10,8 +10,10 @@ import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
import android.view.View.GONE
import androidx.core.view.MenuProvider
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.navigation.Navigation
import kotlinx.coroutines.Dispatchers.IO
@ -34,21 +36,18 @@ import org.mozilla.fenix.library.bookmarks.friendlyRootTitle
/**
* Menu to create a new bookmark folder.
*/
class AddBookmarkFolderFragment : Fragment(R.layout.fragment_edit_bookmark) {
class AddBookmarkFolderFragment : Fragment(R.layout.fragment_edit_bookmark), MenuProvider {
private var _binding: FragmentEditBookmarkBinding? = null
private val binding get() = _binding!!
private val sharedViewModel: BookmarksSharedViewModel by activityViewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setHasOptionsMenu(true)
}
/**
* Hides fields for bookmark items present in the shared layout file.
*/
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
_binding = FragmentEditBookmarkBinding.bind(view)
binding.bookmarkUrlLabel.visibility = GONE
@ -87,11 +86,11 @@ class AddBookmarkFolderFragment : Fragment(R.layout.fragment_edit_bookmark) {
binding.bookmarkNameEdit.hideKeyboard()
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.bookmarks_add_folder, menu)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
override fun onMenuItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.confirm_add_folder_button -> {
if (binding.bookmarkNameEdit.text.isNullOrBlank()) {
@ -116,7 +115,8 @@ class AddBookmarkFolderFragment : Fragment(R.layout.fragment_edit_bookmark) {
}
true
}
else -> super.onOptionsItemSelected(item)
// other options are not handled by this menu provider
else -> false
}
}

@ -17,8 +17,10 @@ import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar
import androidx.core.content.ContextCompat
import androidx.core.view.MenuProvider
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.navigation.Navigation
import androidx.navigation.fragment.findNavController
@ -53,7 +55,7 @@ import org.mozilla.fenix.library.bookmarks.friendlyRootTitle
/**
* Menu to edit the name, URL, and location of a bookmark item.
*/
class EditBookmarkFragment : Fragment(R.layout.fragment_edit_bookmark) {
class EditBookmarkFragment : Fragment(R.layout.fragment_edit_bookmark), MenuProvider {
private var _binding: FragmentEditBookmarkBinding? = null
private val binding get() = _binding!!
@ -63,13 +65,9 @@ class EditBookmarkFragment : Fragment(R.layout.fragment_edit_bookmark) {
private var bookmarkParent: BookmarkNode? = null
private var initialParentGuid: String? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setHasOptionsMenu(true)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
_binding = FragmentEditBookmarkBinding.bind(view)
@ -191,11 +189,11 @@ class EditBookmarkFragment : Fragment(R.layout.fragment_edit_bookmark) {
binding.progressBarBookmark.visibility = View.GONE
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.bookmarks_edit, menu)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
override fun onMenuItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.delete_bookmark_button -> {
displayDeleteBookmarkDialog()
@ -206,7 +204,8 @@ class EditBookmarkFragment : Fragment(R.layout.fragment_edit_bookmark) {
true
}
else -> super.onOptionsItemSelected(item)
// other options are not handled by this menu provider
else -> false
}
}

@ -11,8 +11,10 @@ import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import androidx.core.view.MenuProvider
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.navArgs
import kotlinx.coroutines.Dispatchers.IO
@ -29,24 +31,24 @@ import org.mozilla.fenix.ext.showToolbar
import org.mozilla.fenix.library.bookmarks.BookmarksSharedViewModel
import org.mozilla.fenix.library.bookmarks.DesktopFolders
class SelectBookmarkFolderFragment : Fragment() {
class SelectBookmarkFolderFragment : Fragment(), MenuProvider {
private var _binding: FragmentSelectBookmarkFolderBinding? = null
private val binding get() = _binding!!
private val sharedViewModel: BookmarksSharedViewModel by activityViewModels()
private var bookmarkNode: BookmarkNode? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setHasOptionsMenu(true)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
_binding = FragmentSelectBookmarkFolderBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
}
override fun onDestroyView() {
super.onDestroyView()
@ -72,14 +74,14 @@ class SelectBookmarkFolderFragment : Fragment() {
}
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
val args: SelectBookmarkFolderFragmentArgs by navArgs()
if (!args.allowCreatingNewFolder) {
inflater.inflate(R.menu.bookmarks_select_folder, menu)
}
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
override fun onMenuItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.add_folder_button -> {
viewLifecycleOwner.lifecycleScope.launch(Main) {
@ -91,7 +93,8 @@ class SelectBookmarkFolderFragment : Fragment() {
}
true
}
else -> super.onOptionsItemSelected(item)
// other options are not handled by this menu provider
else -> false
}
}
}

@ -14,6 +14,8 @@ import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import androidx.annotation.VisibleForTesting
import androidx.core.view.MenuProvider
import androidx.lifecycle.Lifecycle
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.MainScope
@ -38,7 +40,7 @@ import org.mozilla.fenix.library.LibraryPageFragment
import org.mozilla.fenix.utils.allowUndo
@SuppressWarnings("TooManyFunctions", "LargeClass")
class DownloadFragment : LibraryPageFragment<DownloadItem>(), UserInteractionHandler {
class DownloadFragment : LibraryPageFragment<DownloadItem>(), UserInteractionHandler, MenuProvider {
private lateinit var downloadStore: DownloadFragmentStore
private lateinit var downloadView: DownloadView
private lateinit var downloadInteractor: DownloadInteractor
@ -116,7 +118,6 @@ class DownloadFragment : LibraryPageFragment<DownloadItem>(), UserInteractionHan
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setHasOptionsMenu(true)
}
/**
@ -140,6 +141,8 @@ class DownloadFragment : LibraryPageFragment<DownloadItem>(), UserInteractionHan
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
consumeFrom(downloadStore) {
downloadView.update(it)
}
@ -150,7 +153,7 @@ class DownloadFragment : LibraryPageFragment<DownloadItem>(), UserInteractionHan
showToolbar(getString(R.string.library_downloads))
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
val menuRes = when (downloadStore.state.mode) {
is DownloadFragmentState.Mode.Normal -> R.menu.library_menu
is DownloadFragmentState.Mode.Editing -> R.menu.download_select_multi
@ -163,7 +166,7 @@ class DownloadFragment : LibraryPageFragment<DownloadItem>(), UserInteractionHan
}
}
override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
override fun onMenuItemSelected(item: MenuItem): Boolean = when (item.itemId) {
R.id.close_history -> {
close()
true
@ -181,7 +184,8 @@ class DownloadFragment : LibraryPageFragment<DownloadItem>(), UserInteractionHan
}
true
}
else -> super.onOptionsItemSelected(item)
// other options are not handled by this menu provider
else -> false
}
/**

@ -17,7 +17,9 @@ import android.view.View
import android.view.ViewGroup
import android.widget.RadioGroup
import androidx.appcompat.app.AlertDialog
import androidx.core.view.MenuProvider
import androidx.fragment.app.DialogFragment
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavDirections
import androidx.navigation.fragment.findNavController
@ -57,7 +59,7 @@ import org.mozilla.fenix.utils.allowUndo
import org.mozilla.fenix.GleanMetrics.History as GleanHistory
@SuppressWarnings("TooManyFunctions", "LargeClass")
class HistoryFragment : LibraryPageFragment<History>(), UserInteractionHandler {
class HistoryFragment : LibraryPageFragment<History>(), UserInteractionHandler, MenuProvider {
private lateinit var historyStore: HistoryFragmentStore
private lateinit var historyInteractor: HistoryInteractor
private lateinit var historyProvider: DefaultPagedHistoryProvider
@ -154,8 +156,6 @@ class HistoryFragment : LibraryPageFragment<History>(), UserInteractionHandler {
historyProvider = DefaultPagedHistoryProvider(requireComponents.core.historyStorage)
GleanHistory.opened.record(NoExtras())
setHasOptionsMenu(true)
}
private fun deleteSnackbar(
@ -186,6 +186,7 @@ class HistoryFragment : LibraryPageFragment<History>(), UserInteractionHandler {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
consumeFrom(historyStore) {
historyView.update(it)
@ -212,7 +213,7 @@ class HistoryFragment : LibraryPageFragment<History>(), UserInteractionHandler {
(activity as NavHostActivity).getSupportActionBarAndInflateIfNecessary().show()
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
if (historyStore.state.mode is HistoryFragmentState.Mode.Editing) {
inflater.inflate(R.menu.history_select_multi, menu)
menu.findItem(R.id.share_history_multi_select)?.isVisible = true
@ -229,7 +230,7 @@ class HistoryFragment : LibraryPageFragment<History>(), UserInteractionHandler {
}
}
override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
override fun onMenuItemSelected(item: MenuItem): Boolean = when (item.itemId) {
R.id.share_history_multi_select -> {
val selectedHistory = historyStore.state.mode.selectedItems
val shareTabs = mutableListOf<ShareData>()
@ -294,7 +295,8 @@ class HistoryFragment : LibraryPageFragment<History>(), UserInteractionHandler {
historyInteractor.onDeleteTimeRange()
true
}
else -> super.onOptionsItemSelected(item)
// other options are not handled by this menu provider
else -> false
}
private fun showTabTray() {

@ -16,7 +16,9 @@ import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AlertDialog
import androidx.core.view.MenuProvider
import androidx.fragment.app.DialogFragment
import androidx.lifecycle.Lifecycle
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import kotlinx.coroutines.CoroutineScope
@ -51,7 +53,7 @@ import org.mozilla.fenix.utils.allowUndo
*/
@SuppressWarnings("TooManyFunctions")
class HistoryMetadataGroupFragment :
LibraryPageFragment<History.Metadata>(), UserInteractionHandler {
LibraryPageFragment<History.Metadata>(), UserInteractionHandler, MenuProvider {
private lateinit var historyMetadataGroupStore: HistoryMetadataGroupFragmentStore
private lateinit var interactor: HistoryMetadataGroupInteractor
@ -67,11 +69,6 @@ class HistoryMetadataGroupFragment :
override val selectedItems: Set<History.Metadata>
get() = historyMetadataGroupStore.state.items.filter { it.selected }.toSet()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setHasOptionsMenu(true)
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
@ -121,6 +118,8 @@ class HistoryMetadataGroupFragment :
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
consumeFrom(historyMetadataGroupStore) { state ->
historyMetadataGroupView.update(state)
activity?.invalidateOptionsMenu()
@ -150,7 +149,7 @@ class HistoryMetadataGroupFragment :
override fun onBackPressed(): Boolean = interactor.onBackPressed(selectedItems)
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
if (selectedItems.isNotEmpty()) {
inflater.inflate(R.menu.history_select_multi, menu)
@ -164,7 +163,7 @@ class HistoryMetadataGroupFragment :
}
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
override fun onMenuItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.share_history_multi_select -> {
interactor.onShareMenuItem(selectedItems)
@ -199,7 +198,8 @@ class HistoryMetadataGroupFragment :
interactor.onDeleteAll()
true
}
else -> super.onOptionsItemSelected(item)
// other options are not handled by this menu provider
else -> false
}
}

@ -12,6 +12,8 @@ import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import androidx.core.view.MenuProvider
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
import kotlinx.coroutines.flow.collect
@ -35,7 +37,10 @@ import org.mozilla.fenix.ext.showToolbar
import org.mozilla.fenix.library.LibraryPageFragment
@Suppress("TooManyFunctions")
class RecentlyClosedFragment : LibraryPageFragment<RecoverableTab>(), UserInteractionHandler {
class RecentlyClosedFragment :
LibraryPageFragment<RecoverableTab>(),
UserInteractionHandler,
MenuProvider {
private lateinit var recentlyClosedFragmentStore: RecentlyClosedFragmentStore
private var _recentlyClosedFragmentView: RecentlyClosedFragmentView? = null
private val recentlyClosedFragmentView: RecentlyClosedFragmentView
@ -49,7 +54,7 @@ class RecentlyClosedFragment : LibraryPageFragment<RecoverableTab>(), UserIntera
showToolbar(getString(R.string.library_recently_closed_tabs))
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
if (recentlyClosedFragmentStore.state.selectedTabs.isNotEmpty()) {
inflater.inflate(R.menu.history_select_multi, menu)
menu.findItem(R.id.delete_history_multi_select)?.let { deleteItem ->
@ -61,7 +66,7 @@ class RecentlyClosedFragment : LibraryPageFragment<RecoverableTab>(), UserIntera
}
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
override fun onMenuItemSelected(item: MenuItem): Boolean {
val selectedTabs = recentlyClosedFragmentStore.state.selectedTabs
return when (item.itemId) {
@ -86,13 +91,13 @@ class RecentlyClosedFragment : LibraryPageFragment<RecoverableTab>(), UserIntera
recentlyClosedController.handleOpen(selectedTabs, BrowsingMode.Private)
true
}
else -> super.onOptionsItemSelected(item)
// other options are not handled by this menu provider
else -> false
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setHasOptionsMenu(true)
RecentlyClosedTabs.opened.record(NoExtras())
}
@ -144,6 +149,8 @@ class RecentlyClosedFragment : LibraryPageFragment<RecoverableTab>(), UserIntera
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
consumeFrom(recentlyClosedFragmentStore) { state ->
recentlyClosedFragmentView.update(state)
activity?.invalidateOptionsMenu()

@ -9,6 +9,8 @@ import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
import androidx.core.view.MenuProvider
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
@ -27,7 +29,7 @@ import org.mozilla.fenix.settings.address.view.AddressEditorView
/**
* Displays an address editor for adding and editing an address.
*/
class AddressEditorFragment : SecureFragment(R.layout.fragment_address_editor) {
class AddressEditorFragment : SecureFragment(R.layout.fragment_address_editor), MenuProvider {
private lateinit var addressEditorView: AddressEditorView
private lateinit var interactor: AddressEditorInteractor
@ -44,6 +46,7 @@ class AddressEditorFragment : SecureFragment(R.layout.fragment_address_editor) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
val storage = requireContext().components.core.autofillStorage
@ -56,7 +59,6 @@ class AddressEditorFragment : SecureFragment(R.layout.fragment_address_editor) {
)
val binding = FragmentAddressEditorBinding.bind(view)
setHasOptionsMenu(true)
val searchRegion = requireComponents.core.store.state.search.region
addressEditorView = AddressEditorView(binding, interactor, searchRegion, args.address)
@ -82,14 +84,14 @@ class AddressEditorFragment : SecureFragment(R.layout.fragment_address_editor) {
this.view?.hideKeyboard()
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.address_editor, menu)
this.menu = menu
menu.findItem(R.id.delete_address_button).isVisible = isEditing
}
override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
override fun onMenuItemSelected(item: MenuItem): Boolean = when (item.itemId) {
R.id.delete_address_button -> {
args.address?.let {
addressEditorView.showConfirmDeleteAddressDialog(requireContext(), it.guid)

@ -8,11 +8,14 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import android.view.inputmethod.EditorInfo
import androidx.appcompat.widget.SearchView
import androidx.core.view.MenuProvider
import androidx.fragment.app.Fragment
import androidx.lifecycle.Lifecycle
import mozilla.components.lib.state.ext.consumeFrom
import mozilla.components.support.ktx.android.view.hideKeyboard
import mozilla.components.support.locale.LocaleUseCases
@ -22,7 +25,7 @@ import org.mozilla.fenix.databinding.FragmentLocaleSettingsBinding
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.showToolbar
class LocaleSettingsFragment : Fragment() {
class LocaleSettingsFragment : Fragment(), MenuProvider {
private lateinit var localeSettingsStore: LocaleSettingsStore
private lateinit var interactor: LocaleSettingsInteractor
@ -33,7 +36,6 @@ class LocaleSettingsFragment : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setHasOptionsMenu(true)
}
override fun onCreateView(
@ -63,7 +65,7 @@ class LocaleSettingsFragment : Fragment() {
return view
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.languages_list, menu)
val searchItem = menu.findItem(R.id.search)
val searchView: SearchView = searchItem.actionView as SearchView
@ -85,6 +87,8 @@ class LocaleSettingsFragment : Fragment() {
)
}
override fun onMenuItemSelected(menuItem: MenuItem): Boolean = false
override fun onResume() {
super.onResume()
localeView.onResume()
@ -98,6 +102,8 @@ class LocaleSettingsFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
consumeFrom(localeSettingsStore) {
localeView.update(it)
}

@ -11,6 +11,8 @@ import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
import androidx.appcompat.app.AlertDialog
import androidx.core.view.MenuProvider
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
@ -34,7 +36,9 @@ import org.mozilla.fenix.settings.creditcards.view.CreditCardEditorView
/**
* Display a credit card editor for adding and editing a credit card.
*/
class CreditCardEditorFragment : SecureFragment(R.layout.fragment_credit_card_editor) {
class CreditCardEditorFragment :
SecureFragment(R.layout.fragment_credit_card_editor),
MenuProvider {
private lateinit var creditCardEditorState: CreditCardEditorState
private lateinit var creditCardEditorView: CreditCardEditorView
@ -55,7 +59,7 @@ class CreditCardEditorFragment : SecureFragment(R.layout.fragment_credit_card_ed
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setHasOptionsMenu(true)
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
val storage = requireContext().components.core.autofillStorage
interactor = DefaultCreditCardEditorInteractor(
@ -112,7 +116,7 @@ class CreditCardEditorFragment : SecureFragment(R.layout.fragment_credit_card_ed
super.onPause()
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.credit_card_editor, menu)
this.menu = menu
@ -120,7 +124,7 @@ class CreditCardEditorFragment : SecureFragment(R.layout.fragment_credit_card_ed
}
@Suppress("MagicNumber")
override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
override fun onMenuItemSelected(item: MenuItem): Boolean = when (item.itemId) {
R.id.delete_credit_card_button -> {
args.creditCard?.let { interactor.onDeleteCardButtonClicked(it.guid) }
true

@ -15,8 +15,10 @@ import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
import androidx.core.content.ContextCompat
import androidx.core.view.MenuProvider
import androidx.core.view.isVisible
import androidx.fragment.app.Fragment
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
import mozilla.components.lib.state.ext.consumeFrom
@ -40,7 +42,7 @@ import org.mozilla.fenix.settings.logins.interactor.AddLoginInteractor
* Displays the editable new login information for a single website
*/
@Suppress("TooManyFunctions", "NestedBlockDepth", "ForbiddenComment")
class AddLoginFragment : Fragment(R.layout.fragment_add_login) {
class AddLoginFragment : Fragment(R.layout.fragment_add_login), MenuProvider {
private lateinit var loginsFragmentStore: LoginsFragmentStore
private lateinit var interactor: AddLoginInteractor
@ -57,7 +59,7 @@ class AddLoginFragment : Fragment(R.layout.fragment_add_login) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setHasOptionsMenu(true)
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
_binding = FragmentAddLoginBinding.bind(view)
@ -332,7 +334,7 @@ class AddLoginFragment : Fragment(R.layout.fragment_add_login) {
activity?.invalidateOptionsMenu()
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.login_save, menu)
}
@ -356,7 +358,7 @@ class AddLoginFragment : Fragment(R.layout.fragment_add_login) {
showToolbar(getString(R.string.add_login))
}
override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
override fun onMenuItemSelected(item: MenuItem): Boolean = when (item.itemId) {
R.id.save_login_button -> {
view?.hideKeyboard()
interactor.onAddLogin(

@ -14,8 +14,10 @@ import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
import androidx.core.content.ContextCompat
import androidx.core.view.MenuProvider
import androidx.core.view.isVisible
import androidx.fragment.app.Fragment
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
@ -42,7 +44,7 @@ import org.mozilla.fenix.settings.logins.togglePasswordReveal
* Displays the editable saved login information for a single website
*/
@Suppress("TooManyFunctions", "NestedBlockDepth", "ForbiddenComment")
class EditLoginFragment : Fragment(R.layout.fragment_edit_login) {
class EditLoginFragment : Fragment(R.layout.fragment_edit_login), MenuProvider {
private val args by navArgs<EditLoginFragmentArgs>()
private lateinit var loginsFragmentStore: LoginsFragmentStore
@ -62,7 +64,7 @@ class EditLoginFragment : Fragment(R.layout.fragment_edit_login) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setHasOptionsMenu(true)
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
_binding = FragmentEditLoginBinding.bind(view)
@ -278,7 +280,7 @@ class EditLoginFragment : Fragment(R.layout.fragment_edit_login) {
activity?.invalidateOptionsMenu()
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.login_save, menu)
}
@ -299,7 +301,7 @@ class EditLoginFragment : Fragment(R.layout.fragment_edit_login) {
super.onPause()
}
override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
override fun onMenuItemSelected(item: MenuItem): Boolean = when (item.itemId) {
R.id.save_login_button -> {
view?.hideKeyboard()
interactor.onSaveLogin(

@ -15,6 +15,8 @@ import android.view.View
import android.view.ViewGroup
import androidx.annotation.StringRes
import androidx.appcompat.app.AlertDialog
import androidx.core.view.MenuProvider
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
@ -47,7 +49,7 @@ import org.mozilla.fenix.settings.logins.view.LoginDetailsBindingDelegate
* Displays saved login information for a single website.
*/
@Suppress("TooManyFunctions", "ForbiddenComment")
class LoginDetailFragment : SecureFragment(R.layout.fragment_login_detail) {
class LoginDetailFragment : SecureFragment(R.layout.fragment_login_detail), MenuProvider {
private val args by navArgs<LoginDetailFragmentArgs>()
private var login: SavedLogin? = null
@ -79,6 +81,7 @@ class LoginDetailFragment : SecureFragment(R.layout.fragment_login_detail) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
interactor = LoginDetailInteractor(
SavedLoginsStorageController(
@ -103,11 +106,6 @@ class LoginDetailFragment : SecureFragment(R.layout.fragment_login_detail) {
togglePasswordReveal(binding.passwordText, binding.revealPasswordButton)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setHasOptionsMenu(true)
}
/**
* As described in #10727, the User should re-auth if the fragment is paused and the user is not
* navigating to SavedLoginsFragment or EditLoginFragment
@ -157,12 +155,12 @@ class LoginDetailFragment : SecureFragment(R.layout.fragment_login_detail) {
)
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.login_options_menu, menu)
this.menu = menu
}
override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
override fun onMenuItemSelected(item: MenuItem): Boolean = when (item.itemId) {
R.id.delete_login_button -> {
displayDeleteLoginDialog()
true

@ -8,6 +8,7 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import android.view.inputmethod.EditorInfo
@ -16,6 +17,8 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.SearchView
import androidx.appcompat.widget.Toolbar
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.MenuProvider
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
import mozilla.components.concept.menu.MenuController
@ -42,7 +45,7 @@ import org.mozilla.fenix.settings.logins.interactor.SavedLoginsInteractor
import org.mozilla.fenix.settings.logins.view.SavedLoginsListView
@SuppressWarnings("TooManyFunctions")
class SavedLoginsFragment : SecureFragment() {
class SavedLoginsFragment : SecureFragment(), MenuProvider {
private lateinit var savedLoginsStore: LoginsFragmentStore
private lateinit var savedLoginsListView: SavedLoginsListView
private lateinit var savedLoginsInteractor: SavedLoginsInteractor
@ -108,7 +111,7 @@ class SavedLoginsFragment : SecureFragment() {
}
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.login_list, menu)
val searchItem = menu.findItem(R.id.search)
val searchView: SearchView = searchItem.actionView as SearchView
@ -134,6 +137,8 @@ class SavedLoginsFragment : SecureFragment() {
)
}
override fun onMenuItemSelected(menuItem: MenuItem): Boolean = false
/**
* If we pause this fragment, we want to pop users back to reauth
*/
@ -160,7 +165,7 @@ class SavedLoginsFragment : SecureFragment() {
) = (activity as HomeActivity).openToBrowserAndLoad(searchTermOrURL, newTab, from)
private fun initToolbar() {
setHasOptionsMenu(true)
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
showToolbar(getString(R.string.preferences_passwords_saved_logins))
(activity as HomeActivity).getSupportActionBarAndInflateIfNecessary()
.setDisplayShowTitleEnabled(false)

@ -18,7 +18,9 @@ import android.widget.CompoundButton
import android.widget.LinearLayout
import android.widget.RadioButton
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.MenuProvider
import androidx.fragment.app.Fragment
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
import kotlinx.coroutines.Dispatchers.IO
@ -45,7 +47,8 @@ import org.mozilla.fenix.settings.SupportUtils
@SuppressWarnings("LargeClass", "TooManyFunctions")
class AddSearchEngineFragment :
Fragment(R.layout.fragment_add_search_engine),
CompoundButton.OnCheckedChangeListener {
CompoundButton.OnCheckedChangeListener,
MenuProvider {
private var availableEngines: List<SearchEngine> = listOf()
private var selectedIndex: Int = -1
private val engineViews = mutableListOf<View>()
@ -56,7 +59,6 @@ class AddSearchEngineFragment :
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setHasOptionsMenu(true)
availableEngines = requireContext()
.components
@ -71,6 +73,8 @@ class AddSearchEngineFragment :
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
val layoutInflater = LayoutInflater.from(context)
val layoutParams = ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
@ -125,11 +129,11 @@ class AddSearchEngineFragment :
_binding = null
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.add_custom_searchengine_menu, menu)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
override fun onMenuItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.add_search_engine -> {
when (selectedIndex) {
@ -143,7 +147,8 @@ class AddSearchEngineFragment :
true
}
else -> super.onOptionsItemSelected(item)
// other options are not handled by this menu provider
else -> false
}
}

@ -9,7 +9,9 @@ import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
import androidx.core.view.MenuProvider
import androidx.fragment.app.Fragment
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
@ -32,7 +34,7 @@ import org.mozilla.fenix.settings.SupportUtils
/**
* Fragment to enter a custom search engine name and URL template.
*/
class EditCustomSearchEngineFragment : Fragment(R.layout.fragment_add_search_engine) {
class EditCustomSearchEngineFragment : Fragment(R.layout.fragment_add_search_engine), MenuProvider {
private val args by navArgs<EditCustomSearchEngineFragmentArgs>()
private lateinit var searchEngine: SearchEngine
@ -43,7 +45,6 @@ class EditCustomSearchEngineFragment : Fragment(R.layout.fragment_add_search_eng
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setHasOptionsMenu(true)
searchEngine = requireNotNull(
requireComponents.core.store.state.search.customSearchEngines.find { engine ->
@ -54,6 +55,7 @@ class EditCustomSearchEngineFragment : Fragment(R.layout.fragment_add_search_eng
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
val url = searchEngine.resultUrls[0]
@ -85,17 +87,18 @@ class EditCustomSearchEngineFragment : Fragment(R.layout.fragment_add_search_eng
_binding = null
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.edit_custom_searchengine_menu, menu)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
override fun onMenuItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.save_button -> {
saveCustomEngine()
true
}
else -> super.onOptionsItemSelected(item)
// other options are not handled by this menu provider
else -> false
}
}

@ -6,11 +6,12 @@
<ID>FunctionOnlyReturningConstant:MetricsUtils.kt$MetricsUtils$ @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) internal fun getHashingSalt(): String</ID>
<ID>FunctionOnlyReturningConstant:SupportUtils.kt$SupportUtils$fun getFirefoxAccountSumoUrl(): String</ID>
<ID>FunctionParameterNaming:FenixSnackbar.kt$FenixSnackbar.Companion$_view: View?</ID>
<ID>LongParameterList:BrowserToolbarController.kt$DefaultBrowserToolbarController$( private val store: BrowserStore, private val tabsUseCases: TabsUseCases, private val activity: HomeActivity, private val navController: NavController, private val readerModeController: ReaderModeController, private val engineView: EngineView, private val homeViewModel: HomeScreenViewModel, private val customTabSessionId: String?, private val browserAnimator: BrowserAnimator, private val onTabCounterClicked: () -&gt; Unit, private val onCloseTab: (SessionState) -&gt; Unit, )</ID>
<ID>LongParameterList:BrowserToolbarMenuController.kt$DefaultBrowserToolbarMenuController$( private val store: BrowserStore, private val activity: HomeActivity, private val navController: NavController, private val settings: Settings, private val readerModeController: ReaderModeController, private val sessionFeature: ViewBoundFeatureWrapper&lt;SessionFeature&gt;, private val findInPageLauncher: () -&gt; Unit, private val browserAnimator: BrowserAnimator, private val swipeRefresh: SwipeRefreshLayout, private val customTabSessionId: String?, private val openInFenixIntent: Intent, private val bookmarkTapped: (String, String) -&gt; Unit, private val scope: CoroutineScope, private val tabCollectionStorage: TabCollectionStorage, private val topSitesStorage: DefaultTopSitesStorage, private val pinnedSiteStorage: PinnedSiteStorage, private val browserStore: BrowserStore, )</ID>
<ID>LongParameterList:CrashContentIntegration.kt$CrashContentIntegration$( private val browserStore: BrowserStore, private val appStore: AppStore, private val toolbar: BrowserToolbar, private val isToolbarPlacedAtTop: Boolean, private val crashReporterView: CrashContentView, private val components: Components, private val settings: Settings, private val navController: NavController, private val sessionId: String?, )</ID>
<ID>LongParameterList:CustomTabsIntegration.kt$CustomTabsIntegration$( store: BrowserStore, useCases: CustomTabsUseCases, toolbar: BrowserToolbar, sessionId: String, activity: Activity, onItemTapped: (ToolbarMenu.Item) -&gt; Unit = {}, shouldReverseItems: Boolean, isPrivate: Boolean, )</ID>
<ID>LongParameterList:DeleteBrowsingDataController.kt$DefaultDeleteBrowsingDataController$( private val removeAllTabs: TabsUseCases.RemoveAllTabsUseCase, private val removeAllDownloads: DownloadsUseCases.RemoveAllDownloadsUseCase, private val historyStorage: HistoryStorage, private val permissionStorage: PermissionStorage, private val store: BrowserStore, private val iconsStorage: BrowserIcons, private val engine: Engine, private val coroutineContext: CoroutineContext = Dispatchers.Main, )</ID>
<ID>LongParameterList:BrowserToolbarController.kt$DefaultBrowserToolbarController$( private val store: BrowserStore, private val tabsUseCases: TabsUseCases, private val activity: HomeActivity, private val navController: NavController, private val readerModeController: ReaderModeController, private val engineView: EngineView, private val homeViewModel: HomeScreenViewModel, private val customTabSessionId: String?, private val browserAnimator: BrowserAnimator, private val onTabCounterClicked: () -&gt; Unit, private val onCloseTab: (SessionState) -&gt; Unit )</ID>
<ID>LongParameterList:BrowserToolbarMenuController.kt$DefaultBrowserToolbarMenuController$( private val store: BrowserStore, private val activity: HomeActivity, private val navController: NavController, private val settings: Settings, private val readerModeController: ReaderModeController, private val sessionFeature: ViewBoundFeatureWrapper&lt;SessionFeature&gt;, private val findInPageLauncher: () -&gt; Unit, private val browserAnimator: BrowserAnimator, private val swipeRefresh: SwipeRefreshLayout, private val customTabSessionId: String?, private val openInFenixIntent: Intent, private val bookmarkTapped: (String, String) -&gt; Unit, private val scope: CoroutineScope, private val tabCollectionStorage: TabCollectionStorage, private val topSitesStorage: DefaultTopSitesStorage, private val pinnedSiteStorage: PinnedSiteStorage, private val browserStore: BrowserStore )</ID>
<ID>LongParameterList:CrashContentIntegration.kt$CrashContentIntegration$( private val browserStore: BrowserStore, private val appStore: AppStore, private val toolbar: BrowserToolbar, private val isToolbarPlacedAtTop: Boolean, private val crashReporterView: CrashContentView, private val components: Components, private val settings: Settings, private val navController: NavController, private val sessionId: String? )</ID>
<ID>LongParameterList:CustomTabsIntegration.kt$CustomTabsIntegration$( store: BrowserStore, useCases: CustomTabsUseCases, toolbar: BrowserToolbar, sessionId: String, activity: Activity, onItemTapped: (ToolbarMenu.Item) -&gt; Unit = {}, shouldReverseItems: Boolean, isPrivate: Boolean )</ID>
<ID>LongParameterList:DeleteBrowsingDataController.kt$DefaultDeleteBrowsingDataController$( private val removeAllTabs: TabsUseCases.RemoveAllTabsUseCase, private val removeAllDownloads: DownloadsUseCases.RemoveAllDownloadsUseCase, private val historyStorage: HistoryStorage, private val permissionStorage: PermissionStorage, private val store: BrowserStore, private val iconsStorage: BrowserIcons, private val engine: Engine, private val coroutineContext: CoroutineContext = Dispatchers.Main )</ID>
<ID>LongParameterList:HistoryController.kt$DefaultHistoryController$( private val store: HistoryFragmentStore, private val navController: NavController, private val scope: CoroutineScope, private val openToBrowser: (item: History.Regular) -&gt; Unit, private val displayDeleteAll: () -&gt; Unit, private val invalidateOptionsMenu: () -&gt; Unit, private val deleteHistoryItems: (Set&lt;History&gt;) -&gt; Unit, private val syncHistory: suspend () -&gt; Unit, private val metrics: MetricController )</ID>
<ID>LongParameterList:QuickSettingsController.kt$DefaultQuickSettingsController$( private val context: Context, private val quickSettingsStore: QuickSettingsFragmentStore, private val browserStore: BrowserStore, private val ioScope: CoroutineScope, private val navController: NavController, @VisibleForTesting internal val sessionId: String, @VisibleForTesting internal var sitePermissions: SitePermissions?, private val settings: Settings, private val permissionStorage: PermissionStorage, private val reload: ReloadUrlUseCase, private val requestRuntimePermissions: OnNeedToRequestPermissions = { }, private val displayPermissions: () -&gt; Unit, private val engine: Engine = context.components.core.engine, )</ID>
<ID>LongParameterList:ShareController.kt$DefaultShareController$( private val context: Context, private val shareSubject: String?, private val shareData: List&lt;ShareData&gt;, private val sendTabUseCases: SendTabUseCases, private val snackbar: FenixSnackbar, private val navController: NavController, private val recentAppsStorage: RecentAppsStorage, private val viewLifecycleScope: CoroutineScope, private val dispatcher: CoroutineDispatcher = Dispatchers.IO, private val dismiss: (ShareController.Result) -&gt; Unit, )</ID>
<ID>LongParameterList:TabsTrayController.kt$DefaultTabsTrayController$( private val trayStore: TabsTrayStore, private val browserStore: BrowserStore, private val browsingModeManager: BrowsingModeManager, private val navController: NavController, private val navigateToHomeAndDeleteSession: (String) -&gt; Unit, private val profiler: Profiler?, private val navigationInteractor: NavigationInteractor, private val tabsUseCases: TabsUseCases, private val selectTabPosition: (Int, Boolean) -&gt; Unit, private val dismissTray: () -&gt; Unit, private val showUndoSnackbarForTab: (Boolean) -&gt; Unit, @VisibleForTesting internal val showCancelledDownloadWarning: (downloadCount: Int, tabId: String?, source: String?) -&gt; Unit, )</ID>
@ -46,7 +47,7 @@
<ID>UndocumentedPublicClass:AccountSettingsInteractor.kt$AccountSettingsUserActions</ID>
<ID>UndocumentedPublicClass:AccountUiView.kt$AccountUiView</ID>
<ID>UndocumentedPublicClass:ActivationPing.kt$ActivationPing</ID>
<ID>UndocumentedPublicClass:AddSearchEngineFragment.kt$AddSearchEngineFragment : FragmentOnCheckedChangeListener</ID>
<ID>UndocumentedPublicClass:AddSearchEngineFragment.kt$AddSearchEngineFragment : FragmentOnCheckedChangeListenerMenuProvider</ID>
<ID>UndocumentedPublicClass:AddonDetailsBindingDelegate.kt$AddonDetailsInteractor</ID>
<ID>UndocumentedPublicClass:AddonPermissionDetailsBindingDelegate.kt$AddonPermissionsDetailsInteractor</ID>
<ID>UndocumentedPublicClass:AdjustMetricsService.kt$AdjustMetricsService : MetricsService</ID>
@ -145,7 +146,7 @@
<ID>UndocumentedPublicClass:DownloadAdapter.kt$DownloadAdapter : AdapterSelectionHolder</ID>
<ID>UndocumentedPublicClass:DownloadController.kt$DefaultDownloadController : DownloadController</ID>
<ID>UndocumentedPublicClass:DownloadController.kt$DownloadController</ID>
<ID>UndocumentedPublicClass:DownloadFragment.kt$DownloadFragment : LibraryPageFragmentUserInteractionHandler</ID>
<ID>UndocumentedPublicClass:DownloadFragment.kt$DownloadFragment : LibraryPageFragmentUserInteractionHandlerMenuProvider</ID>
<ID>UndocumentedPublicClass:DownloadFragmentStore.kt$DownloadFragmentAction$AddItemForRemoval : DownloadFragmentAction</ID>
<ID>UndocumentedPublicClass:DownloadFragmentStore.kt$DownloadFragmentAction$AddPendingDeletionSet : DownloadFragmentAction</ID>
<ID>UndocumentedPublicClass:DownloadFragmentStore.kt$DownloadFragmentAction$EnterDeletionMode : DownloadFragmentAction</ID>
@ -180,7 +181,7 @@
<ID>UndocumentedPublicClass:GroupableRadioButton.kt$GroupableRadioButton</ID>
<ID>UndocumentedPublicClass:HistoryController.kt$DefaultHistoryController : HistoryController</ID>
<ID>UndocumentedPublicClass:HistoryController.kt$HistoryController</ID>
<ID>UndocumentedPublicClass:HistoryFragment.kt$HistoryFragment : LibraryPageFragmentUserInteractionHandler</ID>
<ID>UndocumentedPublicClass:HistoryFragment.kt$HistoryFragment : LibraryPageFragmentUserInteractionHandlerMenuProvider</ID>
<ID>UndocumentedPublicClass:HistoryFragmentStore.kt$HistoryFragmentAction$AddItemForRemoval : HistoryFragmentAction</ID>
<ID>UndocumentedPublicClass:HistoryFragmentStore.kt$HistoryFragmentAction$EnterDeletionMode : HistoryFragmentAction</ID>
<ID>UndocumentedPublicClass:HistoryFragmentStore.kt$HistoryFragmentAction$ExitDeletionMode : HistoryFragmentAction</ID>
@ -229,7 +230,7 @@
<ID>UndocumentedPublicClass:LocaleAdapter.kt$LocaleAdapter : Adapter</ID>
<ID>UndocumentedPublicClass:LocaleAdapter.kt$LocaleAdapter$ItemType</ID>
<ID>UndocumentedPublicClass:LocaleAdapter.kt$LocaleAdapter$LocaleDiffUtil : Callback</ID>
<ID>UndocumentedPublicClass:LocaleSettingsFragment.kt$LocaleSettingsFragment : Fragment</ID>
<ID>UndocumentedPublicClass:LocaleSettingsFragment.kt$LocaleSettingsFragment : FragmentMenuProvider</ID>
<ID>UndocumentedPublicClass:LocaleSettingsInteractor.kt$LocaleSettingsInteractor : LocaleSettingsViewInteractor</ID>
<ID>UndocumentedPublicClass:LocaleSettingsStore.kt$LocaleSettingsAction$Search : LocaleSettingsAction</ID>
<ID>UndocumentedPublicClass:LocaleSettingsStore.kt$LocaleSettingsAction$Select : LocaleSettingsAction</ID>
@ -309,7 +310,7 @@
<ID>UndocumentedPublicClass:RecentlyClosedAdapter.kt$RecentlyClosedAdapter : ListAdapterSelectionHolder</ID>
<ID>UndocumentedPublicClass:RecentlyClosedController.kt$DefaultRecentlyClosedController : RecentlyClosedController</ID>
<ID>UndocumentedPublicClass:RecentlyClosedController.kt$RecentlyClosedController</ID>
<ID>UndocumentedPublicClass:RecentlyClosedFragment.kt$RecentlyClosedFragment : LibraryPageFragmentUserInteractionHandler</ID>
<ID>UndocumentedPublicClass:RecentlyClosedFragment.kt$RecentlyClosedFragment : LibraryPageFragmentUserInteractionHandlerMenuProvider</ID>
<ID>UndocumentedPublicClass:RecentlyClosedFragmentStore.kt$RecentlyClosedFragmentAction$Change : RecentlyClosedFragmentAction</ID>
<ID>UndocumentedPublicClass:RecentlyClosedFragmentStore.kt$RecentlyClosedFragmentAction$Deselect : RecentlyClosedFragmentAction</ID>
<ID>UndocumentedPublicClass:RecentlyClosedFragmentStore.kt$RecentlyClosedFragmentAction$DeselectAll : RecentlyClosedFragmentAction</ID>
@ -319,7 +320,7 @@
<ID>UndocumentedPublicClass:SaveCollectionListAdapter.kt$CollectionViewHolder : ViewHolder</ID>
<ID>UndocumentedPublicClass:SaveCollectionListAdapter.kt$SaveCollectionListAdapter : Adapter</ID>
<ID>UndocumentedPublicClass:SavedLoginsAuthFragment.kt$SavedLoginsAuthFragment : PreferenceFragmentCompat</ID>
<ID>UndocumentedPublicClass:SavedLoginsFragment.kt$SavedLoginsFragment : SecureFragment</ID>
<ID>UndocumentedPublicClass:SavedLoginsFragment.kt$SavedLoginsFragment : SecureFragmentMenuProvider</ID>
<ID>UndocumentedPublicClass:SavedLoginsSettingFragment.kt$SavedLoginsSettingFragment : PreferenceFragmentCompat</ID>
<ID>UndocumentedPublicClass:SavedLoginsSortingStrategyMenu.kt$SavedLoginsSortingStrategyMenu</ID>
<ID>UndocumentedPublicClass:SavedLoginsSortingStrategyMenu.kt$SavedLoginsSortingStrategyMenu$Item</ID>
@ -338,7 +339,7 @@
<ID>UndocumentedPublicClass:SecretSettingsFragment.kt$SecretSettingsFragment : PreferenceFragmentCompat</ID>
<ID>UndocumentedPublicClass:SelectBookmarkFolderAdapter.kt$SelectBookmarkFolderAdapter : ListAdapter</ID>
<ID>UndocumentedPublicClass:SelectBookmarkFolderAdapter.kt$SelectBookmarkFolderAdapter$BookmarkFolderViewHolder : ViewHolder</ID>
<ID>UndocumentedPublicClass:SelectBookmarkFolderFragment.kt$SelectBookmarkFolderFragment : Fragment</ID>
<ID>UndocumentedPublicClass:SelectBookmarkFolderFragment.kt$SelectBookmarkFolderFragment : FragmentMenuProvider</ID>
<ID>UndocumentedPublicClass:SelectionMenu.kt$SelectionMenu</ID>
<ID>UndocumentedPublicClass:SelectionMenu.kt$SelectionMenu$Item</ID>
<ID>UndocumentedPublicClass:SelectionMenu.kt$SelectionMenu.Item$BookmarkTabs : Item</ID>

Loading…
Cancel
Save