For #6832 - Fix various fragment not attached to a context crashes
parent
6457a02a82
commit
c4e83367f6
|
@ -94,7 +94,7 @@ class AddonDetailsFragment : Fragment(R.layout.fragment_add_on_details) {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showUpdaterDialog(addon: Addon) {
|
private fun showUpdaterDialog(addon: Addon) {
|
||||||
lifecycleScope.launch(IO) {
|
viewLifecycleOwner.lifecycleScope.launch(IO) {
|
||||||
val updateAttempt = updateAttemptStorage.findUpdateAttemptBy(addon.id)
|
val updateAttempt = updateAttemptStorage.findUpdateAttemptBy(addon.id)
|
||||||
updateAttempt?.let {
|
updateAttempt?.let {
|
||||||
withContext(Main) {
|
withContext(Main) {
|
||||||
|
|
|
@ -98,10 +98,10 @@ class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management),
|
||||||
private fun bindRecyclerView(view: View) {
|
private fun bindRecyclerView(view: View) {
|
||||||
val recyclerView = view.add_ons_list
|
val recyclerView = view.add_ons_list
|
||||||
recyclerView.layoutManager = LinearLayoutManager(requireContext())
|
recyclerView.layoutManager = LinearLayoutManager(requireContext())
|
||||||
lifecycleScope.launch(IO) {
|
viewLifecycleOwner.lifecycleScope.launch(IO) {
|
||||||
try {
|
try {
|
||||||
val addons = requireContext().components.addonManager.getAddons()
|
val addons = requireContext().components.addonManager.getAddons()
|
||||||
lifecycleScope.launch(Dispatchers.Main) {
|
viewLifecycleOwner.lifecycleScope.launch(Dispatchers.Main) {
|
||||||
runIfFragmentIsAttached {
|
runIfFragmentIsAttached {
|
||||||
val adapter = AddonsManagerAdapter(
|
val adapter = AddonsManagerAdapter(
|
||||||
requireContext().components.addonCollectionProvider,
|
requireContext().components.addonCollectionProvider,
|
||||||
|
@ -117,9 +117,12 @@ class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (e: AddonManagerException) {
|
} catch (e: AddonManagerException) {
|
||||||
lifecycleScope.launch(Dispatchers.Main) {
|
viewLifecycleOwner.lifecycleScope.launch(Dispatchers.Main) {
|
||||||
runIfFragmentIsAttached {
|
runIfFragmentIsAttached {
|
||||||
showSnackBar(view, getString(R.string.mozac_feature_addons_failed_to_query_add_ons))
|
showSnackBar(
|
||||||
|
view,
|
||||||
|
getString(R.string.mozac_feature_addons_failed_to_query_add_ons)
|
||||||
|
)
|
||||||
isInstallationInProgress = false
|
isInstallationInProgress = false
|
||||||
view.add_ons_progress_bar.isVisible = false
|
view.add_ons_progress_bar.isVisible = false
|
||||||
view.add_ons_empty_message.isVisible = true
|
view.add_ons_empty_message.isVisible = true
|
||||||
|
@ -220,7 +223,10 @@ class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management),
|
||||||
val rootView = activity?.getRootView() ?: view
|
val rootView = activity?.getRootView() ?: view
|
||||||
showSnackBar(
|
showSnackBar(
|
||||||
rootView,
|
rootView,
|
||||||
getString(R.string.mozac_feature_addons_failed_to_install, addon.translatedName)
|
getString(
|
||||||
|
R.string.mozac_feature_addons_failed_to_install,
|
||||||
|
addon.translatedName
|
||||||
|
)
|
||||||
)
|
)
|
||||||
addonProgressOverlay?.visibility = View.GONE
|
addonProgressOverlay?.visibility = View.GONE
|
||||||
isInstallationInProgress = false
|
isInstallationInProgress = false
|
||||||
|
|
|
@ -89,7 +89,6 @@ import org.mozilla.fenix.ext.requireComponents
|
||||||
import org.mozilla.fenix.ext.sessionsOfType
|
import org.mozilla.fenix.ext.sessionsOfType
|
||||||
import org.mozilla.fenix.ext.settings
|
import org.mozilla.fenix.ext.settings
|
||||||
import org.mozilla.fenix.home.SharedViewModel
|
import org.mozilla.fenix.home.SharedViewModel
|
||||||
import org.mozilla.fenix.settings.SupportUtils
|
|
||||||
import org.mozilla.fenix.theme.ThemeManager
|
import org.mozilla.fenix.theme.ThemeManager
|
||||||
import org.mozilla.fenix.wifi.SitePermissionsWifiIntegration
|
import org.mozilla.fenix.wifi.SitePermissionsWifiIntegration
|
||||||
import java.lang.ref.WeakReference
|
import java.lang.ref.WeakReference
|
||||||
|
@ -186,7 +185,6 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
|
||||||
|
|
||||||
return getSessionById()?.also { session ->
|
return getSessionById()?.also { session ->
|
||||||
val browserToolbarController = DefaultBrowserToolbarController(
|
val browserToolbarController = DefaultBrowserToolbarController(
|
||||||
store = browserFragmentStore,
|
|
||||||
activity = requireActivity(),
|
activity = requireActivity(),
|
||||||
navController = findNavController(),
|
navController = findNavController(),
|
||||||
readerModeController = DefaultReaderModeController(
|
readerModeController = DefaultReaderModeController(
|
||||||
|
@ -194,24 +192,17 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
|
||||||
(activity as HomeActivity).browsingModeManager.mode.isPrivate,
|
(activity as HomeActivity).browsingModeManager.mode.isPrivate,
|
||||||
view.readerViewControlsBar
|
view.readerViewControlsBar
|
||||||
),
|
),
|
||||||
browsingModeManager = (activity as HomeActivity).browsingModeManager,
|
|
||||||
sessionManager = requireComponents.core.sessionManager,
|
sessionManager = requireComponents.core.sessionManager,
|
||||||
findInPageLauncher = { findInPageIntegration.withFeature { it.launch() } },
|
findInPageLauncher = { findInPageIntegration.withFeature { it.launch() } },
|
||||||
engineView = engineView,
|
engineView = engineView,
|
||||||
swipeRefresh = swipeRefresh,
|
swipeRefresh = swipeRefresh,
|
||||||
browserAnimator = browserAnimator,
|
browserAnimator = browserAnimator,
|
||||||
customTabSession = customTabSessionId?.let { sessionManager.findSessionById(it) },
|
customTabSession = customTabSessionId?.let { sessionManager.findSessionById(it) },
|
||||||
getSupportUrl = {
|
|
||||||
SupportUtils.getSumoURLForTopic(
|
|
||||||
context,
|
|
||||||
SupportUtils.SumoTopic.HELP
|
|
||||||
)
|
|
||||||
},
|
|
||||||
openInFenixIntent = Intent(context, IntentReceiverActivity::class.java).apply {
|
openInFenixIntent = Intent(context, IntentReceiverActivity::class.java).apply {
|
||||||
action = Intent.ACTION_VIEW
|
action = Intent.ACTION_VIEW
|
||||||
},
|
},
|
||||||
bookmarkTapped = { lifecycleScope.launch { bookmarkTapped(it) } },
|
bookmarkTapped = { viewLifecycleOwner.lifecycleScope.launch { bookmarkTapped(it) } },
|
||||||
scope = lifecycleScope,
|
scope = viewLifecycleOwner.lifecycleScope,
|
||||||
tabCollectionStorage = requireComponents.core.tabCollectionStorage,
|
tabCollectionStorage = requireComponents.core.tabCollectionStorage,
|
||||||
topSiteStorage = requireComponents.core.topSiteStorage,
|
topSiteStorage = requireComponents.core.topSiteStorage,
|
||||||
sharedViewModel = sharedViewModel
|
sharedViewModel = sharedViewModel
|
||||||
|
@ -226,7 +217,7 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
|
||||||
shouldUseBottomToolbar = context.settings().shouldUseBottomToolbar,
|
shouldUseBottomToolbar = context.settings().shouldUseBottomToolbar,
|
||||||
interactor = browserInteractor,
|
interactor = browserInteractor,
|
||||||
customTabSession = customTabSessionId?.let { sessionManager.findSessionById(it) },
|
customTabSession = customTabSessionId?.let { sessionManager.findSessionById(it) },
|
||||||
lifecycleOwner = this.viewLifecycleOwner
|
lifecycleOwner = viewLifecycleOwner
|
||||||
)
|
)
|
||||||
|
|
||||||
toolbarIntegration.set(
|
toolbarIntegration.set(
|
||||||
|
@ -725,7 +716,7 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
|
||||||
*/
|
*/
|
||||||
private fun showQuickSettingsDialog() {
|
private fun showQuickSettingsDialog() {
|
||||||
val session = getSessionById() ?: return
|
val session = getSessionById() ?: return
|
||||||
lifecycleScope.launch(Main) {
|
viewLifecycleOwner.lifecycleScope.launch(Main) {
|
||||||
val sitePermissions: SitePermissions? = withContext(IO) {
|
val sitePermissions: SitePermissions? = withContext(IO) {
|
||||||
session.url.toUri().host?.let { host ->
|
session.url.toUri().host?.let { host ->
|
||||||
val storage = requireContext().components.core.permissionStorage
|
val storage = requireContext().components.core.permissionStorage
|
||||||
|
|
|
@ -12,7 +12,6 @@ import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import mozilla.components.browser.session.SessionManager
|
import mozilla.components.browser.session.SessionManager
|
||||||
import mozilla.components.feature.tab.collections.TabCollection
|
import mozilla.components.feature.tab.collections.TabCollection
|
||||||
import mozilla.components.feature.tabs.TabsUseCases
|
|
||||||
import org.mozilla.fenix.components.Analytics
|
import org.mozilla.fenix.components.Analytics
|
||||||
import org.mozilla.fenix.components.TabCollectionStorage
|
import org.mozilla.fenix.components.TabCollectionStorage
|
||||||
import org.mozilla.fenix.components.metrics.Event
|
import org.mozilla.fenix.components.metrics.Event
|
||||||
|
@ -64,9 +63,8 @@ class DefaultCollectionCreationController(
|
||||||
private val dismiss: () -> Unit,
|
private val dismiss: () -> Unit,
|
||||||
private val analytics: Analytics,
|
private val analytics: Analytics,
|
||||||
private val tabCollectionStorage: TabCollectionStorage,
|
private val tabCollectionStorage: TabCollectionStorage,
|
||||||
private val tabsUseCases: TabsUseCases,
|
|
||||||
private val sessionManager: SessionManager,
|
private val sessionManager: SessionManager,
|
||||||
private val lifecycleScope: CoroutineScope
|
private val viewLifecycleScope: CoroutineScope
|
||||||
) : CollectionCreationController {
|
) : CollectionCreationController {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
@ -78,7 +76,7 @@ class DefaultCollectionCreationController(
|
||||||
dismiss()
|
dismiss()
|
||||||
|
|
||||||
val sessionBundle = tabs.toList().toSessionBundle(sessionManager)
|
val sessionBundle = tabs.toList().toSessionBundle(sessionManager)
|
||||||
lifecycleScope.launch(Dispatchers.IO) {
|
viewLifecycleScope.launch(Dispatchers.IO) {
|
||||||
tabCollectionStorage.createCollection(name, sessionBundle)
|
tabCollectionStorage.createCollection(name, sessionBundle)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,7 +87,7 @@ class DefaultCollectionCreationController(
|
||||||
|
|
||||||
override fun renameCollection(collection: TabCollection, name: String) {
|
override fun renameCollection(collection: TabCollection, name: String) {
|
||||||
dismiss()
|
dismiss()
|
||||||
lifecycleScope.launch(Dispatchers.IO) {
|
viewLifecycleScope.launch(Dispatchers.IO) {
|
||||||
tabCollectionStorage.renameCollection(collection, name)
|
tabCollectionStorage.renameCollection(collection, name)
|
||||||
analytics.metrics.track(Event.CollectionRenamed)
|
analytics.metrics.track(Event.CollectionRenamed)
|
||||||
}
|
}
|
||||||
|
@ -114,7 +112,7 @@ class DefaultCollectionCreationController(
|
||||||
override fun selectCollection(collection: TabCollection, tabs: List<Tab>) {
|
override fun selectCollection(collection: TabCollection, tabs: List<Tab>) {
|
||||||
dismiss()
|
dismiss()
|
||||||
val sessionBundle = tabs.toList().toSessionBundle(sessionManager)
|
val sessionBundle = tabs.toList().toSessionBundle(sessionManager)
|
||||||
lifecycleScope.launch(Dispatchers.IO) {
|
viewLifecycleScope.launch(Dispatchers.IO) {
|
||||||
tabCollectionStorage
|
tabCollectionStorage
|
||||||
.addTabsToCollection(collection, sessionBundle)
|
.addTabsToCollection(collection, sessionBundle)
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,7 +77,6 @@ class CollectionCreationFragment : DialogFragment() {
|
||||||
::dismiss,
|
::dismiss,
|
||||||
requireComponents.analytics,
|
requireComponents.analytics,
|
||||||
requireComponents.core.tabCollectionStorage,
|
requireComponents.core.tabCollectionStorage,
|
||||||
requireComponents.useCases.tabsUseCases,
|
|
||||||
requireComponents.core.sessionManager,
|
requireComponents.core.sessionManager,
|
||||||
viewLifecycleOwner.lifecycleScope
|
viewLifecycleOwner.lifecycleScope
|
||||||
)
|
)
|
||||||
|
|
|
@ -29,7 +29,6 @@ import org.mozilla.fenix.browser.BrowserAnimator
|
||||||
import org.mozilla.fenix.browser.BrowserAnimator.Companion.getToolbarNavOptions
|
import org.mozilla.fenix.browser.BrowserAnimator.Companion.getToolbarNavOptions
|
||||||
import org.mozilla.fenix.browser.BrowserFragment
|
import org.mozilla.fenix.browser.BrowserFragment
|
||||||
import org.mozilla.fenix.browser.BrowserFragmentDirections
|
import org.mozilla.fenix.browser.BrowserFragmentDirections
|
||||||
import org.mozilla.fenix.browser.browsingmode.BrowsingModeManager
|
|
||||||
import org.mozilla.fenix.browser.readermode.ReaderModeController
|
import org.mozilla.fenix.browser.readermode.ReaderModeController
|
||||||
import org.mozilla.fenix.collections.SaveCollectionStep
|
import org.mozilla.fenix.collections.SaveCollectionStep
|
||||||
import org.mozilla.fenix.components.FenixSnackbar
|
import org.mozilla.fenix.components.FenixSnackbar
|
||||||
|
@ -59,18 +58,15 @@ interface BrowserToolbarController {
|
||||||
|
|
||||||
@Suppress("LargeClass")
|
@Suppress("LargeClass")
|
||||||
class DefaultBrowserToolbarController(
|
class DefaultBrowserToolbarController(
|
||||||
private val store: BrowserFragmentStore,
|
|
||||||
private val activity: Activity,
|
private val activity: Activity,
|
||||||
private val navController: NavController,
|
private val navController: NavController,
|
||||||
private val readerModeController: ReaderModeController,
|
private val readerModeController: ReaderModeController,
|
||||||
private val browsingModeManager: BrowsingModeManager,
|
|
||||||
private val sessionManager: SessionManager,
|
private val sessionManager: SessionManager,
|
||||||
private val findInPageLauncher: () -> Unit,
|
private val findInPageLauncher: () -> Unit,
|
||||||
private val engineView: EngineView,
|
private val engineView: EngineView,
|
||||||
private val browserAnimator: BrowserAnimator,
|
private val browserAnimator: BrowserAnimator,
|
||||||
private val swipeRefresh: SwipeRefreshLayout,
|
private val swipeRefresh: SwipeRefreshLayout,
|
||||||
private val customTabSession: Session?,
|
private val customTabSession: Session?,
|
||||||
private val getSupportUrl: () -> String,
|
|
||||||
private val openInFenixIntent: Intent,
|
private val openInFenixIntent: Intent,
|
||||||
private val bookmarkTapped: (Session) -> Unit,
|
private val bookmarkTapped: (Session) -> Unit,
|
||||||
private val scope: CoroutineScope,
|
private val scope: CoroutineScope,
|
||||||
|
|
|
@ -214,7 +214,7 @@ class HomeFragment : Fragment() {
|
||||||
fragmentStore = homeFragmentStore,
|
fragmentStore = homeFragmentStore,
|
||||||
navController = findNavController(),
|
navController = findNavController(),
|
||||||
browsingModeManager = browsingModeManager,
|
browsingModeManager = browsingModeManager,
|
||||||
lifecycleScope = viewLifecycleOwner.lifecycleScope,
|
viewLifecycleScope = viewLifecycleOwner.lifecycleScope,
|
||||||
closeTab = ::closeTab,
|
closeTab = ::closeTab,
|
||||||
closeAllTabs = ::closeAllTabs,
|
closeAllTabs = ::closeAllTabs,
|
||||||
getListOfTabs = ::getListOfTabs,
|
getListOfTabs = ::getListOfTabs,
|
||||||
|
@ -688,7 +688,7 @@ class HomeFragment : Fragment() {
|
||||||
HomeMenu.Item.Quit -> activity?.let { activity ->
|
HomeMenu.Item.Quit -> activity?.let { activity ->
|
||||||
deleteAndQuit(
|
deleteAndQuit(
|
||||||
activity,
|
activity,
|
||||||
lifecycleScope,
|
viewLifecycleOwner.lifecycleScope,
|
||||||
view?.let { view -> FenixSnackbar.make(
|
view?.let { view -> FenixSnackbar.make(
|
||||||
view = view,
|
view = view,
|
||||||
isDisplayedWithBrowserToolbar = false
|
isDisplayedWithBrowserToolbar = false
|
||||||
|
@ -827,7 +827,7 @@ class HomeFragment : Fragment() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun scrollToTheTop() {
|
private fun scrollToTheTop() {
|
||||||
lifecycleScope.launch(Main) {
|
viewLifecycleOwner.lifecycleScope.launch(Main) {
|
||||||
delay(ANIM_SCROLL_DELAY)
|
delay(ANIM_SCROLL_DELAY)
|
||||||
sessionControlView!!.view.smoothScrollToPosition(0)
|
sessionControlView!!.view.smoothScrollToPosition(0)
|
||||||
}
|
}
|
||||||
|
|
|
@ -175,7 +175,7 @@ class DefaultSessionControlController(
|
||||||
private val fragmentStore: HomeFragmentStore,
|
private val fragmentStore: HomeFragmentStore,
|
||||||
private val navController: NavController,
|
private val navController: NavController,
|
||||||
private val browsingModeManager: BrowsingModeManager,
|
private val browsingModeManager: BrowsingModeManager,
|
||||||
private val lifecycleScope: CoroutineScope,
|
private val viewLifecycleScope: CoroutineScope,
|
||||||
private val closeTab: (sessionId: String) -> Unit,
|
private val closeTab: (sessionId: String) -> Unit,
|
||||||
private val closeAllTabs: (isPrivateMode: Boolean) -> Unit,
|
private val closeAllTabs: (isPrivateMode: Boolean) -> Unit,
|
||||||
private val getListOfTabs: () -> List<Tab>,
|
private val getListOfTabs: () -> List<Tab>,
|
||||||
|
@ -255,7 +255,7 @@ class DefaultSessionControlController(
|
||||||
override fun handleCollectionRemoveTab(collection: TabCollection, tab: ComponentTab) {
|
override fun handleCollectionRemoveTab(collection: TabCollection, tab: ComponentTab) {
|
||||||
metrics.track(Event.CollectionTabRemoved)
|
metrics.track(Event.CollectionTabRemoved)
|
||||||
|
|
||||||
lifecycleScope.launch(Dispatchers.IO) {
|
viewLifecycleScope.launch(Dispatchers.IO) {
|
||||||
tabCollectionStorage.removeTabFromCollection(collection, tab)
|
tabCollectionStorage.removeTabFromCollection(collection, tab)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -304,7 +304,7 @@ class DefaultSessionControlController(
|
||||||
metrics.track(Event.PocketTopSiteRemoved)
|
metrics.track(Event.PocketTopSiteRemoved)
|
||||||
}
|
}
|
||||||
|
|
||||||
lifecycleScope.launch(Dispatchers.IO) {
|
viewLifecycleScope.launch(Dispatchers.IO) {
|
||||||
topSiteStorage.removeTopSite(topSite)
|
topSiteStorage.removeTopSite(topSite)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -291,7 +291,7 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHan
|
||||||
else -> throw IllegalStateException("Illegal event type in onDeleteSome")
|
else -> throw IllegalStateException("Illegal event type in onDeleteSome")
|
||||||
}
|
}
|
||||||
|
|
||||||
lifecycleScope.allowUndo(
|
viewLifecycleOwner.lifecycleScope.allowUndo(
|
||||||
view!!, message,
|
view!!, message,
|
||||||
getString(R.string.bookmark_undo_deletion), {
|
getString(R.string.bookmark_undo_deletion), {
|
||||||
pendingBookmarksToDelete.removeAll(selected)
|
pendingBookmarksToDelete.removeAll(selected)
|
||||||
|
|
|
@ -57,7 +57,7 @@ class AddBookmarkFolderFragment : Fragment(R.layout.fragment_edit_bookmark) {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
showToolbar(getString(R.string.bookmark_add_folder_fragment_label))
|
showToolbar(getString(R.string.bookmark_add_folder_fragment_label))
|
||||||
|
|
||||||
lifecycleScope.launch(Main) {
|
viewLifecycleOwner.lifecycleScope.launch(Main) {
|
||||||
sharedViewModel.selectedFolder = withContext(IO) {
|
sharedViewModel.selectedFolder = withContext(IO) {
|
||||||
sharedViewModel.selectedFolder
|
sharedViewModel.selectedFolder
|
||||||
?: requireComponents.core.bookmarksStorage.getTree(BookmarkRoot.Mobile.id)
|
?: requireComponents.core.bookmarksStorage.getTree(BookmarkRoot.Mobile.id)
|
||||||
|
@ -95,7 +95,7 @@ class AddBookmarkFolderFragment : Fragment(R.layout.fragment_edit_bookmark) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
this.view?.hideKeyboard()
|
this.view?.hideKeyboard()
|
||||||
lifecycleScope.launch(IO) {
|
viewLifecycleOwner.lifecycleScope.launch(IO) {
|
||||||
val newGuid = requireComponents.core.bookmarksStorage.addFolder(
|
val newGuid = requireComponents.core.bookmarksStorage.addFolder(
|
||||||
sharedViewModel.selectedFolder!!.guid, bookmarkNameEdit.text.toString(), null
|
sharedViewModel.selectedFolder!!.guid, bookmarkNameEdit.text.toString(), null
|
||||||
)
|
)
|
||||||
|
|
|
@ -65,7 +65,7 @@ class EditBookmarkFragment : Fragment(R.layout.fragment_edit_bookmark) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
initToolbar()
|
initToolbar()
|
||||||
|
|
||||||
lifecycleScope.launch(Main) {
|
viewLifecycleOwner.lifecycleScope.launch(Main) {
|
||||||
val context = requireContext()
|
val context = requireContext()
|
||||||
|
|
||||||
withContext(IO) {
|
withContext(IO) {
|
||||||
|
@ -155,7 +155,7 @@ class EditBookmarkFragment : Fragment(R.layout.fragment_edit_bookmark) {
|
||||||
dialog.cancel()
|
dialog.cancel()
|
||||||
}
|
}
|
||||||
setPositiveButton(R.string.tab_collection_dialog_positive) { dialog: DialogInterface, _ ->
|
setPositiveButton(R.string.tab_collection_dialog_positive) { dialog: DialogInterface, _ ->
|
||||||
lifecycleScope.launch(IO) {
|
viewLifecycleOwner.lifecycleScope.launch(IO) {
|
||||||
requireComponents.core.bookmarksStorage.deleteNode(args.guidToEdit)
|
requireComponents.core.bookmarksStorage.deleteNode(args.guidToEdit)
|
||||||
requireComponents.analytics.metrics.track(Event.RemoveBookmark)
|
requireComponents.analytics.metrics.track(Event.RemoveBookmark)
|
||||||
|
|
||||||
|
@ -194,7 +194,7 @@ class EditBookmarkFragment : Fragment(R.layout.fragment_edit_bookmark) {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateBookmarkNode(title: String?, url: String?) {
|
private fun updateBookmarkNode(title: String?, url: String?) {
|
||||||
lifecycleScope.launch(IO) {
|
viewLifecycleOwner.lifecycleScope.launch(IO) {
|
||||||
try {
|
try {
|
||||||
requireComponents.let { components ->
|
requireComponents.let { components ->
|
||||||
if (title != bookmarkNode?.title || url != bookmarkNode?.url) {
|
if (title != bookmarkNode?.title || url != bookmarkNode?.url) {
|
||||||
|
|
|
@ -50,7 +50,7 @@ class SelectBookmarkFolderFragment : Fragment() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
showToolbar(getString(R.string.bookmark_select_folder_fragment_label))
|
showToolbar(getString(R.string.bookmark_select_folder_fragment_label))
|
||||||
|
|
||||||
lifecycleScope.launch(Main) {
|
viewLifecycleOwner.lifecycleScope.launch(Main) {
|
||||||
bookmarkNode = withContext(IO) {
|
bookmarkNode = withContext(IO) {
|
||||||
val context = requireContext()
|
val context = requireContext()
|
||||||
context.components.core.bookmarksStorage
|
context.components.core.bookmarksStorage
|
||||||
|
@ -74,7 +74,7 @@ class SelectBookmarkFolderFragment : Fragment() {
|
||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||||
return when (item.itemId) {
|
return when (item.itemId) {
|
||||||
R.id.add_folder_button -> {
|
R.id.add_folder_button -> {
|
||||||
lifecycleScope.launch(Main) {
|
viewLifecycleOwner.lifecycleScope.launch(Main) {
|
||||||
nav(
|
nav(
|
||||||
R.id.bookmarkSelectFolderFragment,
|
R.id.bookmarkSelectFolderFragment,
|
||||||
SelectBookmarkFolderFragmentDirections
|
SelectBookmarkFolderFragmentDirections
|
||||||
|
|
|
@ -106,7 +106,7 @@ class HistoryFragment : LibraryPageFragment<HistoryItem>(), UserInteractionHandl
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun deleteHistoryItems(items: Set<HistoryItem>) {
|
private fun deleteHistoryItems(items: Set<HistoryItem>) {
|
||||||
lifecycleScope.launch {
|
viewLifecycleOwner.lifecycleScope.launch {
|
||||||
context?.components?.run {
|
context?.components?.run {
|
||||||
for (item in items) {
|
for (item in items) {
|
||||||
analytics.metrics.track(Event.HistoryItemRemoved)
|
analytics.metrics.track(Event.HistoryItemRemoved)
|
||||||
|
@ -155,7 +155,7 @@ class HistoryFragment : LibraryPageFragment<HistoryItem>(), UserInteractionHandl
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
R.id.delete_history_multi_select -> {
|
R.id.delete_history_multi_select -> {
|
||||||
lifecycleScope.launch(Main) {
|
viewLifecycleOwner.lifecycleScope.launch(Main) {
|
||||||
deleteSelectedHistory(historyStore.state.mode.selectedItems, requireComponents)
|
deleteSelectedHistory(historyStore.state.mode.selectedItems, requireComponents)
|
||||||
viewModel.invalidate()
|
viewModel.invalidate()
|
||||||
historyStore.dispatch(HistoryFragmentAction.ExitDeletionMode)
|
historyStore.dispatch(HistoryFragmentAction.ExitDeletionMode)
|
||||||
|
@ -216,7 +216,7 @@ class HistoryFragment : LibraryPageFragment<HistoryItem>(), UserInteractionHandl
|
||||||
}
|
}
|
||||||
setPositiveButton(R.string.delete_browsing_data_prompt_allow) { dialog: DialogInterface, _ ->
|
setPositiveButton(R.string.delete_browsing_data_prompt_allow) { dialog: DialogInterface, _ ->
|
||||||
historyStore.dispatch(HistoryFragmentAction.EnterDeletionMode)
|
historyStore.dispatch(HistoryFragmentAction.EnterDeletionMode)
|
||||||
lifecycleScope.launch {
|
viewLifecycleOwner.lifecycleScope.launch {
|
||||||
requireComponents.analytics.metrics.track(Event.HistoryAllItemsRemoved)
|
requireComponents.analytics.metrics.track(Event.HistoryAllItemsRemoved)
|
||||||
requireComponents.core.historyStorage.deleteEverything()
|
requireComponents.core.historyStorage.deleteEverything()
|
||||||
launch(Main) {
|
launch(Main) {
|
||||||
|
|
|
@ -47,7 +47,7 @@ class DefaultSearchController(
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
private val store: SearchFragmentStore,
|
private val store: SearchFragmentStore,
|
||||||
private val navController: NavController,
|
private val navController: NavController,
|
||||||
private val lifecycleScope: CoroutineScope,
|
private val viewLifecycleScope: CoroutineScope,
|
||||||
private val clearToolbarFocus: () -> Unit
|
private val clearToolbarFocus: () -> Unit
|
||||||
) : SearchController {
|
) : SearchController {
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ class DefaultSearchController(
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun handleEditingCancelled() {
|
override fun handleEditingCancelled() {
|
||||||
lifecycleScope.launch {
|
viewLifecycleScope.launch {
|
||||||
clearToolbarFocus()
|
clearToolbarFocus()
|
||||||
// Delay a short amount so the keyboard begins animating away. This makes exit animation
|
// Delay a short amount so the keyboard begins animating away. This makes exit animation
|
||||||
// much smoother instead of having two separate parts (keyboard hides THEN animation)
|
// much smoother instead of having two separate parts (keyboard hides THEN animation)
|
||||||
|
|
|
@ -109,7 +109,7 @@ class SearchFragment : Fragment(), UserInteractionHandler {
|
||||||
context = activity as HomeActivity,
|
context = activity as HomeActivity,
|
||||||
store = searchStore,
|
store = searchStore,
|
||||||
navController = findNavController(),
|
navController = findNavController(),
|
||||||
lifecycleScope = viewLifecycleOwner.lifecycleScope,
|
viewLifecycleScope = viewLifecycleOwner.lifecycleScope,
|
||||||
clearToolbarFocus = ::clearToolbarFocus
|
clearToolbarFocus = ::clearToolbarFocus
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,7 @@ class LoginsFragment : PreferenceFragmentCompat(), AccountObserver {
|
||||||
|
|
||||||
override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {
|
override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {
|
||||||
Log.d(LOG_TAG, "onAuthenticationSucceeded")
|
Log.d(LOG_TAG, "onAuthenticationSucceeded")
|
||||||
lifecycleScope.launch(Main) {
|
viewLifecycleOwner.lifecycleScope.launch(Main) {
|
||||||
// Workaround for likely biometric library bug
|
// Workaround for likely biometric library bug
|
||||||
// https://github.com/mozilla-mobile/fenix/issues/8438
|
// https://github.com/mozilla-mobile/fenix/issues/8438
|
||||||
delay(SHORT_DELAY_MS)
|
delay(SHORT_DELAY_MS)
|
||||||
|
|
|
@ -51,7 +51,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
||||||
private val accountObserver = object : AccountObserver {
|
private val accountObserver = object : AccountObserver {
|
||||||
private fun updateAccountUi(profile: Profile? = null) {
|
private fun updateAccountUi(profile: Profile? = null) {
|
||||||
val context = context ?: return
|
val context = context ?: return
|
||||||
lifecycleScope.launch {
|
viewLifecycleOwner.lifecycleScope.launch {
|
||||||
updateAccountUIState(
|
updateAccountUIState(
|
||||||
context = context,
|
context = context,
|
||||||
profile = profile
|
profile = profile
|
||||||
|
@ -125,7 +125,8 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
||||||
// update it here if we're not going through the `onCreate->onStart->onResume` lifecycle chain.
|
// update it here if we're not going through the `onCreate->onStart->onResume` lifecycle chain.
|
||||||
update(shouldUpdateAccountUIState = !creatingFragment)
|
update(shouldUpdateAccountUIState = !creatingFragment)
|
||||||
|
|
||||||
view!!.findViewById<RecyclerView>(R.id.recycler_view)?.hideInitialScrollBar(lifecycleScope)
|
view!!.findViewById<RecyclerView>(R.id.recycler_view)
|
||||||
|
?.hideInitialScrollBar(viewLifecycleOwner.lifecycleScope)
|
||||||
|
|
||||||
// Consider finish of `onResume` to be the point at which we consider this fragment as 'created'.
|
// Consider finish of `onResume` to be the point at which we consider this fragment as 'created'.
|
||||||
creatingFragment = false
|
creatingFragment = false
|
||||||
|
@ -376,10 +377,14 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
||||||
preferenceSignIn?.isVisible = false
|
preferenceSignIn?.isVisible = false
|
||||||
|
|
||||||
profile?.avatar?.url?.let { avatarUrl ->
|
profile?.avatar?.url?.let { avatarUrl ->
|
||||||
lifecycleScope.launch(Main) {
|
viewLifecycleOwner.lifecycleScope.launch(Main) {
|
||||||
val roundedDrawable = avatarUrl.toRoundedDrawable(context, requireComponents.core.client)
|
val roundedDrawable =
|
||||||
|
avatarUrl.toRoundedDrawable(context, requireComponents.core.client)
|
||||||
preferenceFirefoxAccount?.icon =
|
preferenceFirefoxAccount?.icon =
|
||||||
roundedDrawable ?: AppCompatResources.getDrawable(context, R.drawable.ic_account)
|
roundedDrawable ?: AppCompatResources.getDrawable(
|
||||||
|
context,
|
||||||
|
R.drawable.ic_account
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
preferenceSignIn?.onPreferenceClickListener = null
|
preferenceSignIn?.onPreferenceClickListener = null
|
||||||
|
@ -420,7 +425,8 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
||||||
settings.overrideSyncTokenServer.isNotEmpty() ||
|
settings.overrideSyncTokenServer.isNotEmpty() ||
|
||||||
settings.showSecretDebugMenuThisSession
|
settings.showSecretDebugMenuThisSession
|
||||||
// Only enable changes to these prefs when the user isn't connected to an account.
|
// Only enable changes to these prefs when the user isn't connected to an account.
|
||||||
val enabled = requireComponents.backgroundServices.accountManager.authenticatedAccount() == null
|
val enabled =
|
||||||
|
requireComponents.backgroundServices.accountManager.authenticatedAccount() == null
|
||||||
preferenceFxAOverride?.apply {
|
preferenceFxAOverride?.apply {
|
||||||
isVisible = show
|
isVisible = show
|
||||||
isEnabled = enabled
|
isEnabled = enabled
|
||||||
|
|
|
@ -55,13 +55,13 @@ class AccountSettingsFragment : PreferenceFragmentCompat() {
|
||||||
// Navigate away from this fragment when we encounter auth problems or logout events.
|
// Navigate away from this fragment when we encounter auth problems or logout events.
|
||||||
private val accountStateObserver = object : AccountObserver {
|
private val accountStateObserver = object : AccountObserver {
|
||||||
override fun onAuthenticationProblems() {
|
override fun onAuthenticationProblems() {
|
||||||
lifecycleScope.launch {
|
viewLifecycleOwner.lifecycleScope.launch {
|
||||||
findNavController().popBackStack()
|
findNavController().popBackStack()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onLoggedOut() {
|
override fun onLoggedOut() {
|
||||||
lifecycleScope.launch {
|
viewLifecycleOwner.lifecycleScope.launch {
|
||||||
findNavController().popBackStack()
|
findNavController().popBackStack()
|
||||||
|
|
||||||
// Remove the device name when we log out.
|
// Remove the device name when we log out.
|
||||||
|
@ -266,7 +266,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun syncNow() {
|
private fun syncNow() {
|
||||||
lifecycleScope.launch {
|
viewLifecycleOwner.lifecycleScope.launch {
|
||||||
requireComponents.analytics.metrics.track(Event.SyncAccountSyncNow)
|
requireComponents.analytics.metrics.track(Event.SyncAccountSyncNow)
|
||||||
// Trigger a sync.
|
// Trigger a sync.
|
||||||
requireComponents.backgroundServices.accountManager.syncNowAsync(SyncReason.User)
|
requireComponents.backgroundServices.accountManager.syncNowAsync(SyncReason.User)
|
||||||
|
@ -285,7 +285,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat() {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
// This may fail, and we'll have a disparity in the UI until `updateDeviceName` is called.
|
// This may fail, and we'll have a disparity in the UI until `updateDeviceName` is called.
|
||||||
lifecycleScope.launch(Main) {
|
viewLifecycleOwner.lifecycleScope.launch(Main) {
|
||||||
context?.let {
|
context?.let {
|
||||||
accountManager.authenticatedAccount()
|
accountManager.authenticatedAccount()
|
||||||
?.deviceConstellation()
|
?.deviceConstellation()
|
||||||
|
@ -336,7 +336,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat() {
|
||||||
|
|
||||||
private val syncStatusObserver = object : SyncStatusObserver {
|
private val syncStatusObserver = object : SyncStatusObserver {
|
||||||
override fun onStarted() {
|
override fun onStarted() {
|
||||||
lifecycleScope.launch {
|
viewLifecycleOwner.lifecycleScope.launch {
|
||||||
val pref = findPreference<Preference>(getPreferenceKey(R.string.pref_key_sync_now))
|
val pref = findPreference<Preference>(getPreferenceKey(R.string.pref_key_sync_now))
|
||||||
view?.announceForAccessibility(getString(R.string.sync_syncing_in_progress))
|
view?.announceForAccessibility(getString(R.string.sync_syncing_in_progress))
|
||||||
pref?.title = getString(R.string.sync_syncing_in_progress)
|
pref?.title = getString(R.string.sync_syncing_in_progress)
|
||||||
|
@ -347,7 +347,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat() {
|
||||||
|
|
||||||
// Sync stopped successfully.
|
// Sync stopped successfully.
|
||||||
override fun onIdle() {
|
override fun onIdle() {
|
||||||
lifecycleScope.launch {
|
viewLifecycleOwner.lifecycleScope.launch {
|
||||||
val pref = findPreference<Preference>(getPreferenceKey(R.string.pref_key_sync_now))
|
val pref = findPreference<Preference>(getPreferenceKey(R.string.pref_key_sync_now))
|
||||||
pref?.let {
|
pref?.let {
|
||||||
pref.title = getString(R.string.preferences_sync_now)
|
pref.title = getString(R.string.preferences_sync_now)
|
||||||
|
@ -364,7 +364,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat() {
|
||||||
|
|
||||||
// Sync stopped after encountering a problem.
|
// Sync stopped after encountering a problem.
|
||||||
override fun onError(error: Exception?) {
|
override fun onError(error: Exception?) {
|
||||||
lifecycleScope.launch {
|
viewLifecycleOwner.lifecycleScope.launch {
|
||||||
val pref = findPreference<Preference>(getPreferenceKey(R.string.pref_key_sync_now))
|
val pref = findPreference<Preference>(getPreferenceKey(R.string.pref_key_sync_now))
|
||||||
pref?.let {
|
pref?.let {
|
||||||
pref.title = getString(R.string.preferences_sync_now)
|
pref.title = getString(R.string.preferences_sync_now)
|
||||||
|
|
|
@ -61,7 +61,7 @@ class SignOutFragment : BottomSheetDialogFragment() {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
view.signOutDisconnect.setOnClickListener {
|
view.signOutDisconnect.setOnClickListener {
|
||||||
lifecycleScope.launch {
|
viewLifecycleOwner.lifecycleScope.launch {
|
||||||
requireComponents
|
requireComponents
|
||||||
.backgroundServices.accountAbnormalities.userRequestedLogout()
|
.backgroundServices.accountAbnormalities.userRequestedLogout()
|
||||||
accountManager.logoutAsync().await()
|
accountManager.logoutAsync().await()
|
||||||
|
|
|
@ -96,7 +96,7 @@ class SavedLoginSiteInfoFragment : Fragment(R.layout.fragment_saved_login_site_i
|
||||||
|
|
||||||
private fun deleteLogin() {
|
private fun deleteLogin() {
|
||||||
var deleteLoginJob: Deferred<Boolean>? = null
|
var deleteLoginJob: Deferred<Boolean>? = null
|
||||||
val deleteJob = lifecycleScope.launch(IO) {
|
val deleteJob = viewLifecycleOwner.lifecycleScope.launch(IO) {
|
||||||
deleteLoginJob = async {
|
deleteLoginJob = async {
|
||||||
requireContext().components.core.passwordsStorage.delete(args.savedLoginItem.id)
|
requireContext().components.core.passwordsStorage.delete(args.savedLoginItem.id)
|
||||||
}
|
}
|
||||||
|
|
|
@ -136,7 +136,7 @@ class SavedLoginsFragment : Fragment() {
|
||||||
|
|
||||||
private fun loadAndMapLogins() {
|
private fun loadAndMapLogins() {
|
||||||
var deferredLogins: Deferred<List<Login>>? = null
|
var deferredLogins: Deferred<List<Login>>? = null
|
||||||
val fetchLoginsJob = lifecycleScope.launch(IO) {
|
val fetchLoginsJob = viewLifecycleOwner.lifecycleScope.launch(IO) {
|
||||||
deferredLogins = async {
|
deferredLogins = async {
|
||||||
requireContext().components.core.passwordsStorage.list()
|
requireContext().components.core.passwordsStorage.list()
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,7 +75,7 @@ class QuickSettingsSheetDialogFragment : AppCompatDialogFragment() {
|
||||||
quickSettingsController = DefaultQuickSettingsController(
|
quickSettingsController = DefaultQuickSettingsController(
|
||||||
context = context,
|
context = context,
|
||||||
quickSettingsStore = quickSettingsStore,
|
quickSettingsStore = quickSettingsStore,
|
||||||
coroutineScope = lifecycleScope,
|
coroutineScope = viewLifecycleOwner.lifecycleScope,
|
||||||
navController = findNavController(),
|
navController = findNavController(),
|
||||||
session = context.components.core.sessionManager.findSessionById(args.sessionId),
|
session = context.components.core.sessionManager.findSessionById(args.sessionId),
|
||||||
sitePermissions = args.sitePermissions,
|
sitePermissions = args.sitePermissions,
|
||||||
|
|
|
@ -44,7 +44,7 @@ class SitePermissionsDetailsExceptionsFragment : PreferenceFragmentCompat() {
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
showToolbar(sitePermissions.origin)
|
showToolbar(sitePermissions.origin)
|
||||||
lifecycleScope.launch(IO) {
|
viewLifecycleOwner.lifecycleScope.launch(IO) {
|
||||||
val context = requireContext()
|
val context = requireContext()
|
||||||
sitePermissions =
|
sitePermissions =
|
||||||
requireNotNull(context.components.core.permissionStorage.findSitePermissionsBy(sitePermissions.origin))
|
requireNotNull(context.components.core.permissionStorage.findSitePermissionsBy(sitePermissions.origin))
|
||||||
|
@ -96,7 +96,7 @@ class SitePermissionsDetailsExceptionsFragment : PreferenceFragmentCompat() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun clearSitePermissions() {
|
private fun clearSitePermissions() {
|
||||||
lifecycleScope.launch(IO) {
|
viewLifecycleOwner.lifecycleScope.launch(IO) {
|
||||||
requireContext().components.core.permissionStorage.deleteSitePermissions(sitePermissions)
|
requireContext().components.core.permissionStorage.deleteSitePermissions(sitePermissions)
|
||||||
withContext(Main) {
|
withContext(Main) {
|
||||||
requireView().findNavController().popBackStack()
|
requireView().findNavController().popBackStack()
|
||||||
|
|
|
@ -108,7 +108,7 @@ class SitePermissionsExceptionsFragment :
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun deleteAllSitePermissions() {
|
private fun deleteAllSitePermissions() {
|
||||||
lifecycleScope.launch(IO) {
|
viewLifecycleOwner.lifecycleScope.launch(IO) {
|
||||||
requireContext().components.core.permissionStorage.deleteAllSitePermissions()
|
requireContext().components.core.permissionStorage.deleteAllSitePermissions()
|
||||||
launch(Main) {
|
launch(Main) {
|
||||||
showEmptyListMessage()
|
showEmptyListMessage()
|
||||||
|
|
|
@ -163,7 +163,7 @@ class SitePermissionsManageExceptionsPhoneFeatureFragment : Fragment() {
|
||||||
PhoneFeature.AUTOPLAY_AUDIBLE -> sitePermissions.copy(autoplayAudible = status)
|
PhoneFeature.AUTOPLAY_AUDIBLE -> sitePermissions.copy(autoplayAudible = status)
|
||||||
PhoneFeature.AUTOPLAY_INAUDIBLE -> sitePermissions.copy(autoplayInaudible = status)
|
PhoneFeature.AUTOPLAY_INAUDIBLE -> sitePermissions.copy(autoplayInaudible = status)
|
||||||
}
|
}
|
||||||
lifecycleScope.launch(IO) {
|
viewLifecycleOwner.lifecycleScope.launch(IO) {
|
||||||
requireComponents.core.permissionStorage.updateSitePermissions(updatedSitePermissions)
|
requireComponents.core.permissionStorage.updateSitePermissions(updatedSitePermissions)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,7 +68,7 @@ class DefaultShareController(
|
||||||
private val snackbar: FenixSnackbar,
|
private val snackbar: FenixSnackbar,
|
||||||
private val navController: NavController,
|
private val navController: NavController,
|
||||||
private val recentAppsStorage: RecentAppsStorage,
|
private val recentAppsStorage: RecentAppsStorage,
|
||||||
private val lifecycleScope: CoroutineScope,
|
private val viewLifecycleScope: CoroutineScope,
|
||||||
private val dismiss: (ShareController.Result) -> Unit
|
private val dismiss: (ShareController.Result) -> Unit
|
||||||
) : ShareController {
|
) : ShareController {
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ class DefaultShareController(
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun handleShareToApp(app: AppShareOption) {
|
override fun handleShareToApp(app: AppShareOption) {
|
||||||
lifecycleScope.launch(Dispatchers.IO) {
|
viewLifecycleScope.launch(Dispatchers.IO) {
|
||||||
recentAppsStorage.updateRecentApp(app.activityName)
|
recentAppsStorage.updateRecentApp(app.activityName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -79,7 +79,7 @@ class ShareFragment : AppCompatDialogFragment() {
|
||||||
navController = findNavController(),
|
navController = findNavController(),
|
||||||
sendTabUseCases = SendTabUseCases(accountManager),
|
sendTabUseCases = SendTabUseCases(accountManager),
|
||||||
recentAppsStorage = RecentAppsStorage(requireContext()),
|
recentAppsStorage = RecentAppsStorage(requireContext()),
|
||||||
lifecycleScope = lifecycleScope
|
viewLifecycleScope = viewLifecycleOwner.lifecycleScope
|
||||||
) { result ->
|
) { result ->
|
||||||
consumePrompt {
|
consumePrompt {
|
||||||
when (result) {
|
when (result) {
|
||||||
|
|
|
@ -42,8 +42,10 @@ class DefaultCollectionCreationControllerTest {
|
||||||
every { state.tabCollections } returns emptyList()
|
every { state.tabCollections } returns emptyList()
|
||||||
every { state.tabs } returns emptyList()
|
every { state.tabs } returns emptyList()
|
||||||
|
|
||||||
controller = DefaultCollectionCreationController(store, dismiss, analytics,
|
controller = DefaultCollectionCreationController(
|
||||||
tabCollectionStorage, tabsUseCases, sessionManager, testCoroutineScope)
|
store, dismiss, analytics,
|
||||||
|
tabCollectionStorage, sessionManager, testCoroutineScope
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -46,7 +46,6 @@ import org.mozilla.fenix.R
|
||||||
import org.mozilla.fenix.browser.BrowserAnimator
|
import org.mozilla.fenix.browser.BrowserAnimator
|
||||||
import org.mozilla.fenix.browser.BrowserFragment
|
import org.mozilla.fenix.browser.BrowserFragment
|
||||||
import org.mozilla.fenix.browser.BrowserFragmentDirections
|
import org.mozilla.fenix.browser.BrowserFragmentDirections
|
||||||
import org.mozilla.fenix.browser.browsingmode.BrowsingModeManager
|
|
||||||
import org.mozilla.fenix.browser.readermode.ReaderModeController
|
import org.mozilla.fenix.browser.readermode.ReaderModeController
|
||||||
import org.mozilla.fenix.collections.SaveCollectionStep
|
import org.mozilla.fenix.collections.SaveCollectionStep
|
||||||
import org.mozilla.fenix.components.Analytics
|
import org.mozilla.fenix.components.Analytics
|
||||||
|
@ -71,12 +70,10 @@ class DefaultBrowserToolbarControllerTest {
|
||||||
private var swipeRefreshLayout: SwipeRefreshLayout = mockk(relaxed = true)
|
private var swipeRefreshLayout: SwipeRefreshLayout = mockk(relaxed = true)
|
||||||
private var activity: HomeActivity = mockk(relaxed = true)
|
private var activity: HomeActivity = mockk(relaxed = true)
|
||||||
private var analytics: Analytics = mockk(relaxed = true)
|
private var analytics: Analytics = mockk(relaxed = true)
|
||||||
private val browsingModeManager: BrowsingModeManager = mockk(relaxed = true)
|
|
||||||
private var navController: NavController = mockk(relaxed = true)
|
private var navController: NavController = mockk(relaxed = true)
|
||||||
private var findInPageLauncher: () -> Unit = mockk(relaxed = true)
|
private var findInPageLauncher: () -> Unit = mockk(relaxed = true)
|
||||||
private val engineView: EngineView = mockk(relaxed = true)
|
private val engineView: EngineView = mockk(relaxed = true)
|
||||||
private val currentSession: Session = mockk(relaxed = true)
|
private val currentSession: Session = mockk(relaxed = true)
|
||||||
private val getSupportUrl: () -> String = { "https://supportUrl.org" }
|
|
||||||
private val openInFenixIntent: Intent = mockk(relaxed = true)
|
private val openInFenixIntent: Intent = mockk(relaxed = true)
|
||||||
private val currentSessionAsTab: Tab = mockk(relaxed = true)
|
private val currentSessionAsTab: Tab = mockk(relaxed = true)
|
||||||
private val metrics: MetricController = mockk(relaxed = true)
|
private val metrics: MetricController = mockk(relaxed = true)
|
||||||
|
@ -104,12 +101,10 @@ class DefaultBrowserToolbarControllerTest {
|
||||||
controller = DefaultBrowserToolbarController(
|
controller = DefaultBrowserToolbarController(
|
||||||
activity = activity,
|
activity = activity,
|
||||||
navController = navController,
|
navController = navController,
|
||||||
browsingModeManager = browsingModeManager,
|
|
||||||
findInPageLauncher = findInPageLauncher,
|
findInPageLauncher = findInPageLauncher,
|
||||||
engineView = engineView,
|
engineView = engineView,
|
||||||
browserAnimator = browserAnimator,
|
browserAnimator = browserAnimator,
|
||||||
customTabSession = null,
|
customTabSession = null,
|
||||||
getSupportUrl = getSupportUrl,
|
|
||||||
openInFenixIntent = openInFenixIntent,
|
openInFenixIntent = openInFenixIntent,
|
||||||
scope = scope,
|
scope = scope,
|
||||||
swipeRefresh = swipeRefreshLayout,
|
swipeRefresh = swipeRefreshLayout,
|
||||||
|
@ -118,7 +113,6 @@ class DefaultBrowserToolbarControllerTest {
|
||||||
bookmarkTapped = mockk(),
|
bookmarkTapped = mockk(),
|
||||||
readerModeController = readerModeController,
|
readerModeController = readerModeController,
|
||||||
sessionManager = mockk(),
|
sessionManager = mockk(),
|
||||||
store = mockk(),
|
|
||||||
sharedViewModel = mockk()
|
sharedViewModel = mockk()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -200,12 +194,10 @@ class DefaultBrowserToolbarControllerTest {
|
||||||
controller = DefaultBrowserToolbarController(
|
controller = DefaultBrowserToolbarController(
|
||||||
activity = activity,
|
activity = activity,
|
||||||
navController = navController,
|
navController = navController,
|
||||||
browsingModeManager = browsingModeManager,
|
|
||||||
findInPageLauncher = findInPageLauncher,
|
findInPageLauncher = findInPageLauncher,
|
||||||
engineView = engineView,
|
engineView = engineView,
|
||||||
browserAnimator = browserAnimator,
|
browserAnimator = browserAnimator,
|
||||||
customTabSession = null,
|
customTabSession = null,
|
||||||
getSupportUrl = getSupportUrl,
|
|
||||||
openInFenixIntent = openInFenixIntent,
|
openInFenixIntent = openInFenixIntent,
|
||||||
scope = this,
|
scope = this,
|
||||||
swipeRefresh = swipeRefreshLayout,
|
swipeRefresh = swipeRefreshLayout,
|
||||||
|
@ -214,7 +206,6 @@ class DefaultBrowserToolbarControllerTest {
|
||||||
bookmarkTapped = mockk(),
|
bookmarkTapped = mockk(),
|
||||||
readerModeController = mockk(),
|
readerModeController = mockk(),
|
||||||
sessionManager = mockk(),
|
sessionManager = mockk(),
|
||||||
store = mockk(),
|
|
||||||
sharedViewModel = mockk()
|
sharedViewModel = mockk()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -353,12 +344,10 @@ class DefaultBrowserToolbarControllerTest {
|
||||||
controller = DefaultBrowserToolbarController(
|
controller = DefaultBrowserToolbarController(
|
||||||
activity = activity,
|
activity = activity,
|
||||||
navController = navController,
|
navController = navController,
|
||||||
browsingModeManager = browsingModeManager,
|
|
||||||
findInPageLauncher = findInPageLauncher,
|
findInPageLauncher = findInPageLauncher,
|
||||||
engineView = engineView,
|
engineView = engineView,
|
||||||
browserAnimator = browserAnimator,
|
browserAnimator = browserAnimator,
|
||||||
customTabSession = null,
|
customTabSession = null,
|
||||||
getSupportUrl = getSupportUrl,
|
|
||||||
openInFenixIntent = openInFenixIntent,
|
openInFenixIntent = openInFenixIntent,
|
||||||
scope = this,
|
scope = this,
|
||||||
swipeRefresh = swipeRefreshLayout,
|
swipeRefresh = swipeRefreshLayout,
|
||||||
|
@ -367,7 +356,6 @@ class DefaultBrowserToolbarControllerTest {
|
||||||
bookmarkTapped = mockk(),
|
bookmarkTapped = mockk(),
|
||||||
readerModeController = mockk(),
|
readerModeController = mockk(),
|
||||||
sessionManager = mockk(),
|
sessionManager = mockk(),
|
||||||
store = mockk(),
|
|
||||||
sharedViewModel = mockk()
|
sharedViewModel = mockk()
|
||||||
)
|
)
|
||||||
controller.ioScope = this
|
controller.ioScope = this
|
||||||
|
@ -560,12 +548,10 @@ class DefaultBrowserToolbarControllerTest {
|
||||||
controller = DefaultBrowserToolbarController(
|
controller = DefaultBrowserToolbarController(
|
||||||
activity = activity,
|
activity = activity,
|
||||||
navController = navController,
|
navController = navController,
|
||||||
browsingModeManager = browsingModeManager,
|
|
||||||
findInPageLauncher = findInPageLauncher,
|
findInPageLauncher = findInPageLauncher,
|
||||||
engineView = engineView,
|
engineView = engineView,
|
||||||
browserAnimator = browserAnimator,
|
browserAnimator = browserAnimator,
|
||||||
customTabSession = currentSession,
|
customTabSession = currentSession,
|
||||||
getSupportUrl = getSupportUrl,
|
|
||||||
openInFenixIntent = openInFenixIntent,
|
openInFenixIntent = openInFenixIntent,
|
||||||
scope = scope,
|
scope = scope,
|
||||||
swipeRefresh = swipeRefreshLayout,
|
swipeRefresh = swipeRefreshLayout,
|
||||||
|
@ -574,7 +560,6 @@ class DefaultBrowserToolbarControllerTest {
|
||||||
bookmarkTapped = mockk(),
|
bookmarkTapped = mockk(),
|
||||||
readerModeController = mockk(),
|
readerModeController = mockk(),
|
||||||
sessionManager = mockk(),
|
sessionManager = mockk(),
|
||||||
store = mockk(),
|
|
||||||
sharedViewModel = mockk()
|
sharedViewModel = mockk()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -602,12 +587,10 @@ class DefaultBrowserToolbarControllerTest {
|
||||||
controller = DefaultBrowserToolbarController(
|
controller = DefaultBrowserToolbarController(
|
||||||
activity = activity,
|
activity = activity,
|
||||||
navController = navController,
|
navController = navController,
|
||||||
browsingModeManager = browsingModeManager,
|
|
||||||
findInPageLauncher = findInPageLauncher,
|
findInPageLauncher = findInPageLauncher,
|
||||||
engineView = engineView,
|
engineView = engineView,
|
||||||
browserAnimator = browserAnimator,
|
browserAnimator = browserAnimator,
|
||||||
customTabSession = null,
|
customTabSession = null,
|
||||||
getSupportUrl = getSupportUrl,
|
|
||||||
openInFenixIntent = openInFenixIntent,
|
openInFenixIntent = openInFenixIntent,
|
||||||
scope = testScope,
|
scope = testScope,
|
||||||
swipeRefresh = swipeRefreshLayout,
|
swipeRefresh = swipeRefreshLayout,
|
||||||
|
@ -616,7 +599,6 @@ class DefaultBrowserToolbarControllerTest {
|
||||||
bookmarkTapped = mockk(),
|
bookmarkTapped = mockk(),
|
||||||
readerModeController = mockk(),
|
readerModeController = mockk(),
|
||||||
sessionManager = mockk(),
|
sessionManager = mockk(),
|
||||||
store = mockk(),
|
|
||||||
sharedViewModel = mockk()
|
sharedViewModel = mockk()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -88,7 +88,7 @@ class DefaultSessionControlControllerTest {
|
||||||
fragmentStore = fragmentStore,
|
fragmentStore = fragmentStore,
|
||||||
navController = navController,
|
navController = navController,
|
||||||
browsingModeManager = browsingModeManager,
|
browsingModeManager = browsingModeManager,
|
||||||
lifecycleScope = MainScope(),
|
viewLifecycleScope = MainScope(),
|
||||||
closeTab = closeTab,
|
closeTab = closeTab,
|
||||||
closeAllTabs = closeAllTabs,
|
closeAllTabs = closeAllTabs,
|
||||||
getListOfTabs = getListOfTabs,
|
getListOfTabs = getListOfTabs,
|
||||||
|
|
|
@ -66,7 +66,7 @@ class DefaultSearchControllerTest {
|
||||||
context = context,
|
context = context,
|
||||||
store = store,
|
store = store,
|
||||||
navController = navController,
|
navController = navController,
|
||||||
lifecycleScope = lifecycleScope,
|
viewLifecycleScope = lifecycleScope,
|
||||||
clearToolbarFocus = clearToolbarFocus
|
clearToolbarFocus = clearToolbarFocus
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -96,7 +96,7 @@ class DefaultSearchControllerTest {
|
||||||
context = context,
|
context = context,
|
||||||
store = store,
|
store = store,
|
||||||
navController = navController,
|
navController = navController,
|
||||||
lifecycleScope = this,
|
viewLifecycleScope = this,
|
||||||
clearToolbarFocus = clearToolbarFocus
|
clearToolbarFocus = clearToolbarFocus
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue