Bug 1848527 - Part 1: Enable OutdatedDocumentation detekt rule in Fenix

fenix/120.0
Gabriel Luong 9 months ago committed by mergify[bot]
parent ef4ceb4404
commit 978871c859

@ -11,8 +11,8 @@ import mozilla.components.support.base.log.sink.LogSink
/**
* Fenix [LogSink] implementation that writes to Android's log, depending on settings.
*
* @param logsDebug If set to false, removes logging of debug logs.
* @param androidLogSink an [AndroidLogSink] that writes to Android's log.
* @property logsDebug If set to false, removes logging of debug logs.
* @property androidLogSink an [AndroidLogSink] that writes to Android's log.
*/
class FenixLogSink(
private val logsDebug: Boolean = true,

@ -944,7 +944,17 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {
* Navigates to the browser fragment and loads a URL or performs a search (depending on the
* value of [searchTermOrURL]).
*
* @param searchTermOrURL The entered search term to search or URL to be loaded.
* @param newTab Whether or not to load the URL in a new tab.
* @param from The [BrowserDirection] to indicate which fragment the browser is being
* opened from.
* @param customTabSessionId Optional custom tab session ID if navigating from a custom tab.
* @param engine Optional [SearchEngine] to use when performing a search.
* @param forceSearch Whether or not to force performing a search.
* @param flags Flags that will be used when loading the URL (not applied to searches).
* @param requestDesktopMode Whether or not to request the desktop mode for the session.
* @param historyMetadata The [HistoryMetadataKey] of the new tab in case this tab
* was opened from history.
* @param additionalHeaders The extra headers to use when loading the URL.
*/
@Suppress("LongParameterList")
@ -1048,7 +1058,12 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {
/**
* Loads a URL or performs a search (depending on the value of [searchTermOrURL]).
*
* @param searchTermOrURL The entered search term to search or URL to be loaded.
* @param newTab Whether or not to load the URL in a new tab.
* @param engine Optional [SearchEngine] to use when performing a search.
* @param forceSearch Whether or not to force performing a search.
* @param flags Flags that will be used when loading the URL (not applied to searches).
* @param requestDesktopMode Whether or not to request the desktop mode for the session.
* @param historyMetadata The [HistoryMetadataKey] of the new tab in case this tab
* was opened from history.
* @param additionalHeaders The extra headers to use when loading the URL.

@ -18,7 +18,7 @@ import org.mozilla.fenix.ext.components
*
* Will automatically register callbacks for service workers requests and cleanup when [homeActivity] is destroyed.
*
* @param homeActivity [HomeActivity] used for navigating to browser or accessing various app components.
* @property homeActivity [HomeActivity] used for navigating to browser or accessing various app components.
*/
class ServiceWorkerSupportFeature(
private val homeActivity: HomeActivity,

@ -19,14 +19,13 @@ import mozilla.components.support.webextensions.ExtensionProcessDisabledPopupObs
import org.mozilla.fenix.GleanMetrics.Addons
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.components
import org.mozilla.geckoview.WebExtensionController
/**
* Controller for showing the user a dialog when the the extension process spawning has been disabled.
*
* @param context to show the AlertDialog
* @param store The [BrowserStore] which holds the state for showing the dialog
* @param webExtensionController to call when a user enables the process spawning
* @param engine An [Engine] instance used for handling extension process spawning.
* @param builder to use for creating the dialog which can be styled as needed
* @param appName to be added to the message. Optional and mainly relevant for testing
*/
@ -52,12 +51,12 @@ class ExtensionProcessDisabledController(
/**
* Present a dialog to the user notifying of extension process spawning disabled and also asking
* whether they would like to continue trying or disable extensions. If the user chooses to retry,
* enable the extension process spawning with [WebExtensionController.enableExtensionProcessSpawning].
* Otherwise, call [WebExtensionController.disableExtensionProcessSpawning].
* enable the extension process spawning with [Engine.enableExtensionProcessSpawning].
* Otherwise, call [Engine.disableExtensionProcessSpawning].
*
* @param context to show the AlertDialog
* @param store The [BrowserStore] which holds the state for showing the dialog
* @param webExtensionController to call when the user enables or disables the process spawning
* @param engine An [Engine] instance used for handling extension process spawning
* @param builder to use for creating the dialog which can be styled as needed
* @param appName to be added to the message. Necessary to be added as a param for testing
*/

@ -12,6 +12,7 @@ import org.mozilla.fenix.components.FenixSnackbar
*
* @param view A [View] used to determine a parent for the [FenixSnackbar].
* @param text The text to display in the [FenixSnackbar].
* @param duration The duration to show the [FenixSnackbar] for.
*/
internal fun showSnackBar(view: View, text: String, duration: Int = FenixSnackbar.LENGTH_SHORT) {
FenixSnackbar.make(

@ -82,7 +82,7 @@ class StandardSnackbarErrorBinding(
/**
* Standard Snackbar Error data class.
*
* @param message that will appear on the snackbar.
* @property message that will appear on the snackbar.
*/
data class StandardSnackbarError(
val message: String,

@ -12,7 +12,15 @@ import androidx.coordinatorlayout.widget.CoordinatorLayout
* [InfoBanner] that will automatically scroll with the top [BrowserToolbar].
* Only to be used with [BrowserToolbar]s placed at the top of the screen.
*
* @param shouldScrollWithTopToolbar whether to follow the Y translation of the top toolbar or not
* @property context A [Context] for accessing system resources.
* @param container The layout where the banner will be shown.
* @property shouldScrollWithTopToolbar whether to follow the Y translation of the top toolbar or not.
* @param message The message displayed in the banner.
* @param dismissText The text on the dismiss button.
* @param actionText The text on the action to perform button.
* @param dismissByHiding Whether or not to hide the banner when dismissed.
* @param dismissAction Optional callback invoked when the user dismisses the banner.
* @param actionToPerform The action to be performed on action button press.
*/
@Suppress("LongParameterList")
class DynamicInfoBanner(

@ -17,12 +17,14 @@ import org.mozilla.fenix.ext.settings
* Displays an Info Banner in the specified container with a message and an optional action.
* The container can be a placeholder layout inserted in the original screen, or an existing layout.
*
* @param context - A [Context] for accessing system resources.
* @param container - The layout where the banner will be shown
* @param message - The message displayed in the banner
* @param dismissText - The text on the dismiss button
* @param actionText - The text on the action to perform button
* @param actionToPerform - The action to be performed on action button press
* @property context A [Context] for accessing system resources.
* @property container The layout where the banner will be shown.
* @property message The message displayed in the banner.
* @property dismissText The text on the dismiss button.
* @property actionText The text on the action to perform button.
* @property dismissByHiding Whether or not to hide the banner when dismissed.
* @property dismissAction Optional callback invoked when the user dismisses the banner.
* @property actionToPerform The action to be performed on action button press.
*/
@SuppressWarnings("LongParameterList")
open class InfoBanner(

@ -64,11 +64,11 @@ fun List<Tab>.toTabSessionStateList(store: BrowserStore): List<TabSessionState>
}
/**
* @param store Store used to hold in-memory collection state.
* @param browserStore The global `BrowserStore` instance.
* @param dismiss Callback to dismiss the collection creation dialog.
* @param tabCollectionStorage Storage used to save tab collections to disk.
* @param scope Coroutine scope to launch coroutines.
* @property store Store used to hold in-memory collection state.
* @property browserStore The global `BrowserStore` instance.
* @property dismiss Callback to dismiss the collection creation dialog.
* @property tabCollectionStorage Storage used to save tab collections to disk.
* @property scope Coroutine scope to launch coroutines.
*/
class DefaultCollectionCreationController(
private val store: CollectionCreationStore,

@ -39,6 +39,8 @@ typealias OnNegativeButtonClick = () -> Unit
/**
* A data class for creating a dialog to prompt adding/creating a collection. See also [show].
*
* @property storage An instance of [TabCollectionStorage] to retrieve and modify collections.
* @property sessionList List of [TabSessionState] to add to a collection.
* @property onPositiveButtonClick Invoked when a user clicks on a confirmation button in the dialog.
* @property onNegativeButtonClick Invoked when a user clicks on a cancel button in the dialog.
*/

@ -48,7 +48,10 @@ internal abstract class AbnormalFxaEvent : Exception() {
*
* See [AbnormalFxaEvent] for types of abnormal events this class detects.
*
* @param crashReporter An instance of [CrashReporter] used for reporting detected abnormalities.
* @param context An Android [Context].
* @property crashReporter An instance of [CrashReporter] used for reporting detected abnormalities.
* @param strictMode An instance of [StrictModeManager] used to manage strict mode settings for the
* application.
*/
class AccountAbnormalities(
context: Context,

@ -19,7 +19,7 @@ import org.mozilla.fenix.components.toolbar.ToolbarPosition
* such that it will be shown on top (vertically) of other siblings that may obstruct it's view.
*
* @param context [Context] used for various system interactions.
* @param toolbarPosition Where the toolbar is positioned on the screen.
* @property toolbarPosition Where the toolbar is positioned on the screen.
* Depending on it's position (top / bottom) the snackbar will be shown below / above the toolbar.
*/
class FenixSnackbarBehavior<V : View>(

@ -22,11 +22,12 @@ import org.mozilla.fenix.components.FindInPageIntegration.ToolbarInfo
/**
* BrowserFragment delegate to handle all layout updates needed to show or hide the find in page bar.
*
* @param store [BrowserStore]
* @param sessionId ID of the [store] session in which the query will be performed.
* @param engineView the browser in which the queries will be made and which needs to be better positioned
* @property store The [BrowserStore] used to look up the current selected tab.
* @property sessionId ID of the [store] session in which the query will be performed.
* @property view The [FindInPageBar] view to display.
* @property engineView the browser in which the queries will be made and which needs to be better positioned
* to suit the find in page bar.
* @param toolbarInfo [ToolbarInfo] used to configure the [BrowserToolbar] while the find in page bar is shown.
* @property toolbarInfo [ToolbarInfo] used to configure the [BrowserToolbar] while the find in page bar is shown.
*/
class FindInPageIntegration(
private val store: BrowserStore,

@ -22,16 +22,19 @@ class PermissionStorage(
/**
* Persists the [sitePermissions] provided as a parameter.
* @param sitePermissions the [sitePermissions] to be stored.
*
* @param sitePermissions The [SitePermissions] to be stored.
* @param private Indicates if the [SitePermissions] belongs to a private session.
*/
suspend fun add(sitePermissions: SitePermissions, private: Boolean) = withContext(dispatcher) {
permissionsStorage.save(sitePermissions, private = private)
}
/**
* Finds all SitePermissions that match the [origin].
* @param origin the site to be used as filter in the search.
* @param private indicates if the [origin] belongs to a private session.
* Finds all [SitePermissions] that match the [origin].
*
* @param origin The site to be used as filter in the search.
* @param private Indicates if the [origin] belongs to a private session.
*/
suspend fun findSitePermissionsBy(origin: String, private: Boolean): SitePermissions? =
withContext(dispatcher) {
@ -39,9 +42,10 @@ class PermissionStorage(
}
/**
* Replaces an existing SitePermissions with the values of [sitePermissions] provided as a parameter.
* @param sitePermissions the sitePermissions to be updated.
* @param private indicates if the [SitePermissions] belongs to a private session.
* Replaces an existing SitePermissions with the values of provided [sitePermissions].
*
* @param sitePermissions The [SitePermissions] to be updated.
* @param private Indicates if the [SitePermissions] belongs to a private session.
*/
suspend fun updateSitePermissions(sitePermissions: SitePermissions, private: Boolean) =
withContext(dispatcher) {
@ -63,7 +67,7 @@ class PermissionStorage(
/**
* Deletes all sitePermissions that match the sitePermissions provided as a parameter.
* @param sitePermissions the sitePermissions to be deleted from the storage.
* @param sitePermissions The [SitePermissions] to be deleted from the storage.
*/
suspend fun deleteSitePermissions(sitePermissions: SitePermissions) = withContext(dispatcher) {
permissionsStorage.remove(sitePermissions, private = false)

@ -33,7 +33,7 @@ class StoreProvider<T : Store<*, *>>(
/**
* ViewModel factory to create [StoreProvider] instances.
*
* @param createStore Callback to create a new [Store], used when the [ViewModel] is first created.
* @property createStore Callback to create a new [Store], used when the [ViewModel] is first created.
*/
@VisibleForTesting
class StoreProviderFactory<T : Store<*, *>>(

@ -28,13 +28,14 @@ import org.mozilla.fenix.wallpapers.WallpaperState
/**
* Value type that represents the state of the tabs tray.
*
* @property isForeground Whether or not the app is in the foreground.
* @property inactiveTabsExpanded A flag to know if the Inactive Tabs section of the Tabs Tray
* should be expanded when the tray is opened.
* @property firstFrameDrawn Flag indicating whether the first frame of the homescreen has been drawn.
* @property nonFatalCrashes List of non-fatal crashes that allow the app to continue being used.
* @property collections The list of [TabCollection] to display in the [HomeFragment].
* @property expandedCollections A set containing the ids of the [TabCollection] that are expanded
* in the [HomeFragment].
* in the [HomeFragment].
* @property mode The state of the [HomeFragment] UI.
* @property topSites The list of [TopSite] in the [HomeFragment].
* @property showCollectionPlaceholder If true, shows a placeholder when there are no collections.
@ -50,6 +51,8 @@ import org.mozilla.fenix.wallpapers.WallpaperState
* @property pendingDeletionHistoryItems The set of History items marked for removal in the UI,
* awaiting to be removed once the Undo snackbar hides away.
* Also serves as an in memory cache of all stories mapped by category allowing for quick stories filtering.
* @property wallpaperState The [WallpaperState] to display in the [HomeFragment].
* @property standardSnackbarError A snackbar error message to display.
* @property shoppingSheetExpanded Boolean indicating if the shopping sheet is expanded and visible.
*/
data class AppState(

@ -51,8 +51,8 @@ class BookmarksUseCase(
/**
* Uses for retrieving recently added bookmarks.
*
* @param bookmarksStorage [BookmarksStorage] to retrieve the bookmark data.
* @param historyStorage Optional [HistoryStorage] to retrieve the preview image of a visited
* @property bookmarksStorage [BookmarksStorage] to retrieve the bookmark data.
* @property historyStorage Optional [HistoryStorage] to retrieve the preview image of a visited
* page associated with a bookmark.
*/
class RetrieveRecentBookmarksUseCase internal constructor(

@ -81,7 +81,8 @@ interface PagedHistoryProvider {
}
/**
* @param historyStorage
* @property historyStorage An instance [PlacesHistoryStorage] that provides read/write methods for
* history data.
*/
class DefaultPagedHistoryProvider(
private val historyStorage: PlacesHistoryStorage,

@ -20,8 +20,8 @@ import org.mozilla.fenix.ext.components
* A menu item for displaying account information. The item computes the label on every bind call,
* to provide each menu with the latest account manager state.
*
* @property textColorResource ID of color resource to tint the text.
* @param imageResource ID of a drawable resource to be shown as icon.
* @param textColorResource Optional ID of color resource to tint the text.
* @param listener Callback to be invoked when this menu item is clicked.
*/
class BrowserMenuSignIn(

@ -60,13 +60,14 @@ private const val CFR_MINIMUM_NUMBER_OPENED_TABS = 5
/**
* Delegate for handling all the business logic for showing CFRs in the toolbar.
*
* @param context used for various Android interactions.
* @param browserStore will be observed for tabs updates
* @param settings used to read and write persistent user settings
* @param toolbar will serve as anchor for the CFRs
* @param sessionId optional custom tab id used to identify the custom tab in which to show a CFR.
* @param onShoppingCfrActionClicked Triggered when the user taps on the shopping CFR action.
* @param shoppingExperienceFeature Used to determine if [ShoppingExperienceFeature] is enabled.
* @property context used for various Android interactions.
* @property browserStore will be observed for tabs updates
* @property settings used to read and write persistent user settings
* @property toolbar will serve as anchor for the CFRs
* @property isPrivate Whether or not the session is private.
* @property sessionId optional custom tab id used to identify the custom tab in which to show a CFR.
* @property onShoppingCfrActionClicked Triggered when the user taps on the shopping CFR action.
* @property shoppingExperienceFeature Used to determine if [ShoppingExperienceFeature] is enabled.
*/
class BrowserToolbarCFRPresenter(
private val context: Context,

@ -44,14 +44,14 @@ import org.mozilla.fenix.theme.ThemeManager
/**
* Builds the toolbar object used with the 3-dot menu in the browser fragment.
* @param context a [Context] for accessing system resources.
* @param store reference to the application's [BrowserStore].
* @property context a [Context] for accessing system resources.
* @property store reference to the application's [BrowserStore].
* @param hasAccountProblem If true, there was a problem signing into the Firefox account.
* @param onItemTapped Called when a menu item is tapped.
* @param lifecycleOwner View lifecycle owner used to determine when to cancel UI jobs.
* @param bookmarksStorage Used to check if a page is bookmarked.
* @param pinnedSiteStorage Used to check if the current url is a pinned site.
* @param isPinningSupported true if the launcher supports adding shortcuts.
* @property onItemTapped Called when a menu item is tapped.
* @property lifecycleOwner View lifecycle owner used to determine when to cancel UI jobs.
* @property bookmarksStorage Used to check if a page is bookmarked.
* @property pinnedSiteStorage Used to check if the current url is a pinned site.
* @property isPinningSupported true if the launcher supports adding shortcuts.
*/
@Suppress("LargeClass", "LongParameterList", "TooManyFunctions")
open class DefaultToolbarMenu(

@ -95,10 +95,10 @@ fun SelectableChip(
/**
* Wrapper for the color parameters of [SelectableChip].
*
* @param selectedBackgroundColor Background [Color] when the chip is selected.
* @param unselectedBackgroundColor Background [Color] when the chip is not selected.
* @param selectedTextColor Text [Color] when the chip is selected.
* @param unselectedTextColor Text [Color] when the chip is not selected.
* @property selectedBackgroundColor Background [Color] when the chip is selected.
* @property unselectedBackgroundColor Background [Color] when the chip is not selected.
* @property selectedTextColor Text [Color] when the chip is selected.
* @property unselectedTextColor Text [Color] when the chip is not selected.
*/
data class SelectableChipColors(
val selectedBackgroundColor: Color,

@ -21,7 +21,8 @@ import org.mozilla.fenix.theme.FirefoxTheme
/**
* [Text] containing a substring styled as an URL informing when this is clicked.
*
* @param text Full text that will be displayed
* @param text Full text that will be displayed.
* @param textStyle The [TextStyle] to apply to the text.
* @param textColor [Color] of the normal text. The URL substring will have a default URL style applied.
* @param linkTextColor [Color] of the link text.
* @param linkTextDecoration The decorations to paint on the link text (e.g., an underline).

@ -17,7 +17,7 @@ import org.mozilla.fenix.theme.Theme
/**
* [RecyclerView.ViewHolder] used for Jetpack Compose UI content .
*
* @param composeView [ComposeView] which will be populated with Jetpack Compose UI content.
* @property composeView [ComposeView] which will be populated with Jetpack Compose UI content.
* @param viewLifecycleOwner [LifecycleOwner] life cycle owner for the view.
*/
abstract class ComposeViewHolder(

@ -157,12 +157,12 @@ private fun MessageCardIconButton(
/**
* Wrapper for the color parameters of [MessageCard].
*
* @param backgroundColor The background [Color] of the message.
* @param titleTextColor [Color] to apply to the message's title, or the body text when there is no title.
* @param messageTextColor [Color] to apply to the message's body text.
* @param iconColor [Color] to apply to the message's icon.
* @param buttonColor The background [Color] of the message's button.
* @param buttonTextColor [Color] to apply to the button text.
* @property backgroundColor The background [Color] of the message.
* @property titleTextColor [Color] to apply to the message's title, or the body text when there is no title.
* @property messageTextColor [Color] to apply to the message's body text.
* @property iconColor [Color] to apply to the message's icon.
* @property buttonColor The background [Color] of the message's button.
* @property buttonTextColor [Color] to apply to the button text.
*/
data class MessageCardColors(
val backgroundColor: Color,

@ -35,9 +35,6 @@ import org.mozilla.fenix.theme.FirefoxTheme
* indicators to show progress, instead of just showing the current one as active.
*
* @param pagerState The state object of your [HorizontalPager] to be used to observe the list's state.
* @param pageCount The size of indicators should be displayed, defaults to [PagerState.pageCount].
* If you are implementing a looping pager with a much larger [PagerState.pageCount]
* than indicators should displayed, e.g. [Int.MAX_VALUE], specify you real size in this param.
* @param modifier The modifier to apply to this layout.
* @param activeColor The color of the active page indicator, and the color of previous page
* indicators in case [leaveTrail] is set to true.

@ -33,6 +33,7 @@ import org.mozilla.fenix.theme.FirefoxTheme
*
* @param icon [Painter] icon to be displayed inside the action button.
* @param modifier [Modifier] to be applied to the action button.
* @param contentDescription The content description to describe the icon.
* @param label Text to be displayed next to the icon.
* @param onClick Invoked when the button is clicked.
*/

@ -75,6 +75,7 @@ fun HomeSectionHeader(
* Homepage header content.
*
* @param headerText The header string.
* @param textColor [Color] to apply to the text.
* @param description The content description for the "Show all" button.
* @param showAllTextColor [Color] for the "Show all" button.
* @param onShowAllClick Invoked when "Show all" button is clicked.

@ -272,6 +272,8 @@ private fun clickableColor() = when (isSystemInDarkTheme()) {
* Thumbnail specific for the [TabGridItem], which can be selected.
*
* @param tab Tab, containing the thumbnail to be displayed.
* @param size Size of the thumbnail.
* @param storage [ThumbnailStorage] to obtain tab thumbnail bitmaps from.
* @param multiSelectionSelected Whether or not the multiple selection is enabled.
*/
@Composable

@ -24,17 +24,17 @@ import org.mozilla.fenix.utils.Settings
/**
* Helper for observing [BrowserStore] and show an in-app crash reporter for tabs with content crashes.
*
* @param browserStore [BrowserStore] observed for any changes related to [EngineState.crashed].
* @param appStore [AppStore] that tracks all content crashes in the current app session until the user
* @property browserStore [BrowserStore] observed for any changes related to [EngineState.crashed].
* @property appStore [AppStore] that tracks all content crashes in the current app session until the user
* decides to either send or dismiss all crash reports.
* @param toolbar [BrowserToolbar] that will be expanded when showing the in-app crash reporter.
* @param isToolbarPlacedAtTop [Boolean] based allowing the in-app crash reporter to be shown as
* @property toolbar [BrowserToolbar] that will be expanded when showing the in-app crash reporter.
* @property isToolbarPlacedAtTop [Boolean] based allowing the in-app crash reporter to be shown as
* immediately below or above the toolbar.
* @param crashReporterView [CrashContentView] which will be shown if the current tab is marked as crashed.
* @param components [Components] allowing interactions with other app features.
* @param settings [Settings] allowing to check whether crash reporting is enabled or not.
* @param navController [NavController] used to navigate to other parts of the app.
* @param sessionId [String] Id of the tab or custom tab which should be observed for [EngineState.crashed]
* @property crashReporterView [CrashContentView] which will be shown if the current tab is marked as crashed.
* @property components [Components] allowing interactions with other app features.
* @property settings [Settings] allowing to check whether crash reporting is enabled or not.
* @property navController [NavController] used to navigate to other parts of the app.
* @property sessionId [String] Id of the tab or custom tab which should be observed for [EngineState.crashed]
* depending on which [crashReporterView] will be shown or hidden.
*/

@ -31,11 +31,13 @@ import java.util.Locale
/**
* Builds the toolbar object used with the 3-dot menu in the custom tab browser fragment.
* @param store reference to the application's [BrowserStore].
* @param sessionId ID of the open custom tab session.
* @param shouldReverseItems If true, reverse the menu items.
* @param isSandboxCustomTab If true, menu should not show the "Open in Firefox" and "POWERED BY FIREFOX" items.
* @param onItemTapped Called when a menu item is tapped.
*
* @property context An Android [Context].
* @property store reference to the application's [BrowserStore].
* @property sessionId ID of the open custom tab session.
* @property shouldReverseItems If true, reverse the menu items.
* @property isSandboxCustomTab If true, menu should not show the "Open in Firefox" and "POWERED BY FIREFOX" items.
* @property onItemTapped Called when a menu item is tapped.
*/
class CustomTabToolbarMenu(
private val context: Context,

@ -34,7 +34,7 @@ import org.mozilla.fenix.ext.settings
/**
* Parent of all download views that can mimic a modal [Dialog].
*
* @param activity The [Activity] in which the dialog will be shown.
* @property activity The [Activity] in which the dialog will be shown.
* Used to update the activity [Window] to best mimic a modal dialog.
*/
abstract class StartDownloadDialog(
@ -153,13 +153,13 @@ abstract class StartDownloadDialog(
/**
* A download view mimicking a modal dialog that allows the user to download a file with the current application.
*
* @param activity The [Activity] in which the dialog will be shown.
* @property activity The [Activity] in which the dialog will be shown.
* Used to update the activity [Window] to best mimic a modal dialog.
* @param filename Name of the file to be downloaded. It wil be shown without any modification.
* @param contentSize Size of the file to be downloaded expressed as a number of bytes.
* @property filename Name of the file to be downloaded. It wil be shown without any modification.
* @property contentSize Size of the file to be downloaded expressed as a number of bytes.
* It will automatically be parsed to the appropriate kilobyte or megabyte value before being shown.
* @param positiveButtonAction Callback for when the user interacts with the dialog to start the download.
* @param negativeButtonAction Callback for when the user interacts with the dialog to dismiss it.
* @property positiveButtonAction Callback for when the user interacts with the dialog to start the download.
* @property negativeButtonAction Callback for when the user interacts with the dialog to dismiss it.
*/
class FirstPartyDownloadDialog(
private val activity: Activity,
@ -212,11 +212,11 @@ class FirstPartyDownloadDialog(
* A download view mimicking a modal dialog that presents the user with a list of all apps
* that can handle the download request.
*
* @param activity The [Activity] in which the dialog will be shown.
* @property activity The [Activity] in which the dialog will be shown.
* Used to update the activity [Window] to best mimic a modal dialog.
* @param downloaderApps List of all applications that can handle the download request.
* @param onAppSelected Callback for when the user chooses a specific application to handle the download request.
* @param negativeButtonAction Callback for when the user interacts with the dialog to dismiss it.
* @property downloaderApps List of all applications that can handle the download request.
* @property onAppSelected Callback for when the user chooses a specific application to handle the download request.
* @property negativeButtonAction Callback for when the user interacts with the dialog to dismiss it.
*/
class ThirdPartyDownloadDialog(
private val activity: Activity,

@ -37,12 +37,13 @@ import org.mozilla.fenix.GleanMetrics.HomeMenu as HomeMenuMetrics
* Helper class for building the [HomeMenu].
*
* @property view The [View] to attach the snackbar to.
* @property context An Android [Context].
* @property context An Android [Context].
* @property lifecycleOwner [LifecycleOwner] for the view.
* @property homeActivity [HomeActivity] used to open URLs in a new tab.
* @property navController [NavController] used for navigation.
* @property menuButton The [MenuButton] that will be used to create a menu when the button is
* clicked.
* @property fxaEntrypoint The source entry point to FxA.
*/
@Suppress("LongParameterList")
class HomeMenuView(

@ -29,10 +29,10 @@ import org.mozilla.fenix.home.pocket.PocketRecommendedStoriesSelectedCategory
/**
* [AppStore] middleware reacting in response to Pocket related [Action]s.
*
* @param pocketStoriesService [PocketStoriesService] used for updating details about the Pocket recommended stories.
* @param selectedPocketCategoriesDataStore [DataStore] used for reading or persisting details about the
* @property pocketStoriesService [PocketStoriesService] used for updating details about the Pocket recommended stories.
* @property selectedPocketCategoriesDataStore [DataStore] used for reading or persisting details about the
* currently selected Pocket recommended stories categories.
* @param coroutineScope [CoroutineScope] used for long running operations like disk IO.
* @property coroutineScope [CoroutineScope] used for long running operations like disk IO.
*/
class PocketUpdatesMiddleware(
private val pocketStoriesService: PocketStoriesService,

@ -15,7 +15,7 @@ import org.mozilla.fenix.home.recentvisits.RecentlyVisitedItem
import org.mozilla.fenix.utils.Settings
/**
* Class for interacting with the a blocklist stored in [settings].
* Class for interacting with the blocklist stored in [settings].
* The blocklist is a set of SHA1 hashed URLs, which are stripped
* of protocols and common subdomains like "www" or "mobile".
*

@ -14,7 +14,8 @@ import org.mozilla.fenix.home.recenttabs.RecentTab
* This [Middleware] reacts to item removals from the home screen, adding them to a blocklist.
* Additionally, it reacts to state changes in order to filter them by the blocklist.
*
* @param settings Blocklist is stored here as a string set
* @property blocklistHandler An instance of [BlocklistHandler] for interacting with the blocklist
* stored in shared preferences.
*/
class BlocklistMiddleware(
private val blocklistHandler: BlocklistHandler,

@ -36,7 +36,7 @@ import org.mozilla.fenix.theme.FirefoxTheme
*
* @param composeView [ComposeView] which will be populated with Jetpack Compose UI content.
* @param viewLifecycleOwner [LifecycleOwner] to which this Composable will be tied to.
* @param interactor [CollectionInteractor] callback for user interactions.
* @property interactor [CollectionInteractor] callback for user interactions.
*/
class CollectionViewHolder(
composeView: ComposeView,

@ -25,7 +25,7 @@ import org.mozilla.fenix.home.sessioncontrol.CollectionInteractor
*
* @param composeView [ComposeView] which will be populated with Jetpack Compose UI content.
* @param viewLifecycleOwner [LifecycleOwner] to which this Composable will be tied to.
* @param interactor [CollectionInteractor] callback for user interactions.
* @property interactor [CollectionInteractor] callback for user interactions.
*/
class TabInCollectionViewHolder(
composeView: ComposeView,
@ -51,11 +51,10 @@ class TabInCollectionViewHolder(
tab = tab,
isLastInCollection = tabInfo.value.isLastInCollection,
onClick = { interactor.onCollectionOpenTabClicked(tab) },
onRemove = { wasSwiped ->
onRemove = {
interactor.onCollectionRemoveTab(
collection = collection,
tab = tab,
wasSwiped = wasSwiped,
)
},
)

@ -35,7 +35,7 @@ internal const val POCKET_CATEGORIES_SELECTED_AT_A_TIME_COUNT = 8
*
* @param composeView [ComposeView] which will be populated with Jetpack Compose UI content.
* @param viewLifecycleOwner [LifecycleOwner] to which this Composable will be tied to.
* @param interactor [PocketStoriesInteractor] callback for user interaction.
* @property interactor [PocketStoriesInteractor] callback for user interaction.
*/
class PocketCategoriesViewHolder(
composeView: ComposeView,

@ -32,7 +32,7 @@ import org.mozilla.fenix.theme.FirefoxTheme
*
* @param composeView [ComposeView] which will be populated with Jetpack Compose UI content.
* @param viewLifecycleOwner [LifecycleOwner] to which this Composable will be tied to.
* @param interactor [PocketStoriesInteractor] callback for user interaction.
* @property interactor [PocketStoriesInteractor] callback for user interaction.
*/
class PocketRecommendationsHeaderViewHolder(
composeView: ComposeView,

@ -68,8 +68,8 @@ interface PocketStoriesController {
/**
* Default behavior for handling all user interactions with the Pocket recommended stories feature.
*
* @param homeActivity [HomeActivity] used to open URLs in a new tab.
* @param appStore [AppStore] from which to read the current Pocket recommendations and dispatch new actions on.
* @property homeActivity [HomeActivity] used to open URLs in a new tab.
* @property appStore [AppStore] from which to read the current Pocket recommendations and dispatch new actions on.
*/
internal class DefaultPocketStoriesController(
private val homeActivity: HomeActivity,

@ -34,7 +34,7 @@ import org.mozilla.fenix.wallpapers.WallpaperState
*
* @param composeView [ComposeView] which will be populated with Jetpack Compose UI content.
* @param viewLifecycleOwner [LifecycleOwner] to which this Composable will be tied to.
* @param interactor [PocketStoriesInteractor] callback for user interaction.
* @property interactor [PocketStoriesInteractor] callback for user interaction.
*/
class PocketStoriesViewHolder(
composeView: ComposeView,

@ -14,16 +14,17 @@ import mozilla.components.support.base.feature.LifecycleAwareFeature
import org.mozilla.fenix.components.AppStore
import org.mozilla.fenix.components.appstate.AppAction
import org.mozilla.fenix.components.bookmarks.BookmarksUseCase
import org.mozilla.fenix.home.HomeFragment
/**
* View-bound feature that retrieves a list of recently added [BookmarkNode]s and dispatches
* updates to the [AppStore].
*
* @param appStore the [AppStore]
* @param bookmarksUseCase the [BookmarksUseCase] for retrieving the list of recently saved
* @property appStore the [AppStore] that holds the state of the [HomeFragment].
* @property bookmarksUseCase the [BookmarksUseCase] for retrieving the list of recently saved
* bookmarks from storage.
* @param scope the [CoroutineScope] used to fetch the bookmarks list
* @param ioDispatcher the [CoroutineDispatcher] for performing read/write operations.
* @property scope the [CoroutineScope] used to fetch the bookmarks list
* @property ioDispatcher the [CoroutineDispatcher] for performing read/write operations.
*/
class RecentBookmarksFeature(
private val appStore: AppStore,
@ -48,9 +49,9 @@ class RecentBookmarksFeature(
/**
* A bookmark that was recently added.
*
* @param title The title of the bookmark.
* @param url The url of the bookmark.
* @param previewImageUrl A preview image of the page (a.k.a. the hero image), if available.
* @property title The title of the bookmark.
* @property url The url of the bookmark.
* @property previewImageUrl A preview image of the page (a.k.a. the hero image), if available.
*/
data class RecentBookmark(
val title: String? = null,

@ -23,7 +23,8 @@ import org.mozilla.fenix.home.recentbookmarks.interactor.RecentBookmarksInteract
* View holder for the recent bookmarks header and "Show all" button.
*
* @param composeView [ComposeView] which will be populated with Jetpack Compose UI content.
* @param interactor [RecentBookmarksInteractor] which will have delegated to all user interactions.
* @param viewLifecycleOwner [LifecycleOwner] life cycle owner for the view.
* @property interactor [RecentBookmarksInteractor] which will have delegated to all user interactions.
*/
class RecentBookmarksHeaderViewHolder(
composeView: ComposeView,

@ -33,6 +33,7 @@ import java.util.concurrent.TimeUnit
/**
* Delegate to handle layout updates and dispatch actions related to the recent synced tab.
*
* @property context An Android [Context].
* @property appStore Store to dispatch actions to when synced tabs are updated or errors encountered.
* @property syncStore Store to observe for changes to Sync and account status.
* @property storage Storage layer for synced tabs.
@ -224,10 +225,11 @@ sealed class RecentSyncedTabState {
/**
* A tab that was recently viewed on a synced device.
*
* @param deviceDisplayName The device the tab was viewed on.
* @param title The title of the tab.
* @param url The url of the tab.
* @param previewImageUrl The url used to retrieve the preview image of the tab.
* @property deviceDisplayName The device the tab was viewed on.
* @property deviceType The type of a device the tab was viewed on - mobile, desktop.
* @property title The title of the tab.
* @property url The url of the tab.
* @property previewImageUrl The url used to retrieve the preview image of the tab.
*/
data class RecentSyncedTab(
val deviceDisplayName: String,
@ -240,8 +242,8 @@ data class RecentSyncedTab(
/**
* Class representing a tab from a synced device.
*
* @param device The synced [Device].
* @param tab The tab from the synced device.
* @property device The synced [Device].
* @property tab The tab from the synced device.
*/
private data class SyncedDeviceTab(
val device: Device,

@ -10,6 +10,7 @@ import org.mozilla.fenix.GleanMetrics.RecentSyncedTabs
import org.mozilla.fenix.R
import org.mozilla.fenix.components.AppStore
import org.mozilla.fenix.components.appstate.AppAction
import org.mozilla.fenix.home.HomeFragment
import org.mozilla.fenix.home.HomeFragmentDirections
import org.mozilla.fenix.home.recentsyncedtabs.RecentSyncedTab
import org.mozilla.fenix.home.recentsyncedtabs.interactor.RecentSyncedTabInteractor
@ -43,6 +44,8 @@ interface RecentSyncedTabController {
*
* @property tabsUseCase Use cases to open the synced tab when clicked.
* @property navController [NavController] to navigate to synced tabs tray.
* @property accessPoint The action or screen that was used to navigate to the tabs tray.
* @property appStore The [AppStore] that holds the state of the [HomeFragment].
*/
class DefaultRecentSyncedTabController(
private val tabsUseCase: TabsUseCases,

@ -23,7 +23,8 @@ import org.mozilla.fenix.wallpapers.WallpaperState
* View holder for a recent synced tab item.
*
* @param composeView [ComposeView] which will be populated with Jetpack Compose UI content.
* @param recentSyncedTabInteractor [RecentSyncedTabInteractor] which will have delegated to all
* @param viewLifecycleOwner [LifecycleOwner] to which this Composable will be tied to.
* @property recentSyncedTabInteractor [RecentSyncedTabInteractor] which will have delegated to all
* recent synced tab user interactions.
*/
class RecentSyncedTabViewHolder(

@ -41,7 +41,7 @@ sealed class RecentTab {
/**
* A tab that was recently viewed
*
* @param state Recently viewed [TabSessionState]
* @property state Recently viewed [TabSessionState]
*/
data class Tab(val state: TabSessionState) : RecentTab()
}

@ -11,6 +11,7 @@ import org.mozilla.fenix.GleanMetrics.RecentTabs
import org.mozilla.fenix.R
import org.mozilla.fenix.components.AppStore
import org.mozilla.fenix.components.appstate.AppAction
import org.mozilla.fenix.home.HomeFragment
import org.mozilla.fenix.home.HomeFragmentDirections
import org.mozilla.fenix.home.recenttabs.RecentTab
import org.mozilla.fenix.home.recenttabs.interactor.RecentTabInteractor
@ -39,8 +40,9 @@ interface RecentTabController {
/**
* The default implementation of [RecentTabController].
*
* @param selectTabUseCase [SelectTabUseCase] used selecting a tab.
* @param navController [NavController] used for navigation.
* @property selectTabUseCase [SelectTabUseCase] used selecting a tab.
* @property navController [NavController] used for navigation.
* @property appStore The [AppStore] that holds the state of the [HomeFragment].
*/
class DefaultRecentTabsController(
private val selectTabUseCase: SelectTabUseCase,

@ -20,9 +20,9 @@ import org.mozilla.fenix.wallpapers.WallpaperState
* View holder for a recent tab item.
*
* @param composeView [ComposeView] which will be populated with Jetpack Compose UI content.
* @param recentTabInteractor [RecentTabInteractor] which will have delegated to all user recent
* @param viewLifecycleOwner [LifecycleOwner] to which this Composable will be tied to.
* @property recentTabInteractor [RecentTabInteractor] which will have delegated to all user recent
* tab interactions.
* recent synced tab interactions.
*/
class RecentTabViewHolder(
composeView: ComposeView,

@ -72,6 +72,7 @@ private const val THUMBNAIL_SIZE = 108
*
* @param recentTabs List of [RecentTab] to display.
* @param menuItems List of [RecentTabMenuItem] shown long clicking a [RecentTab].
* @param storage [ThumbnailStorage] to obtain tab thumbnail bitmaps from.
* @param backgroundColor The background [Color] of each item.
* @param onRecentTabClick Invoked when the user clicks on a recent tab.
*/
@ -113,6 +114,8 @@ fun RecentTabs(
* A recent tab item.
*
* @param tab [RecentTab.Tab] that was recently viewed.
* @param storage [ThumbnailStorage] to obtain tab thumbnail bitmaps from.
* @param menuItems List of [RecentTabMenuItem] to be shown in a menu.
* @param backgroundColor The background [Color] of the item.
* @param onRecentTabClick Invoked when the user clicks on a recent tab.
*/
@ -217,6 +220,7 @@ private fun RecentTabItem(
* A recent tab image.
*
* @param tab [RecentTab] that was recently viewed.
* @param storage [ThumbnailStorage] to obtain tab thumbnail bitmaps from.
* @param modifier [Modifier] used to draw the image content.
* @param contentScale [ContentScale] used to draw image content.
*/

@ -22,7 +22,9 @@ import org.mozilla.fenix.home.recenttabs.interactor.RecentTabInteractor
/**
* View holder for the recent tabs header and "Show all" button.
*
* @param interactor [RecentTabInteractor] which will have delegated to all user interactions.
* @param composeView [ComposeView] which will be populated with Jetpack Compose UI content.
* @param viewLifecycleOwner [LifecycleOwner] to which this Composable will be tied to.
* @property interactor [RecentTabInteractor] which will have delegated to all user interactions.
*/
class RecentTabsHeaderViewHolder(
composeView: ComposeView,

@ -38,12 +38,12 @@ import kotlin.math.max
* which will be mapped to [RecentlyVisitedItem]s and then dispatched to [AppStore]
* to be displayed on the home screen.
*
* @param appStore The [AppStore] that holds the state of the [HomeFragment].
* @param historyMetadataStorage The storage that manages [HistoryMetadata].
* @param historyHighlightsStorage The storage that manages [PlacesHistoryStorage].
* @param scope The [CoroutineScope] used for IO operations related to querying history
* @property appStore The [AppStore] that holds the state of the [HomeFragment].
* @property historyMetadataStorage The storage that manages [HistoryMetadata].
* @property historyHighlightsStorage The storage that manages [PlacesHistoryStorage].
* @property scope The [CoroutineScope] used for IO operations related to querying history
* and then for dispatching updates.
* @param ioDispatcher The [CoroutineDispatcher] for performing read/write operations.
* @property ioDispatcher The [CoroutineDispatcher] for performing read/write operations.
*/
class RecentVisitsFeature(
private val appStore: AppStore,

@ -14,8 +14,8 @@ sealed class RecentlyVisitedItem {
/**
* A history highlight - previously accessed webpage of particular importance.
*
* @param title The title of the webpage. May be [url] if the title is unavailable.
* @param url The URL of the webpage.
* @property title The title of the webpage. May be [url] if the title is unavailable.
* @property url The URL of the webpage.
*/
data class RecentHistoryHighlight(
val title: String,

@ -22,6 +22,8 @@ import org.mozilla.fenix.home.recentvisits.interactor.RecentVisitsInteractor
/**
* View holder for the "Recent visits" section header with the "Show all" button.
*
* @param composeView [ComposeView] which will be populated with Jetpack Compose UI content.
* @param viewLifecycleOwner [LifecycleOwner] to which this Composable will be tied to.
* @property interactor [RecentVisitsInteractor] which will have delegated to all user
* interactions.
*/

@ -26,6 +26,7 @@ import org.mozilla.fenix.wallpapers.WallpaperState
* View holder for [RecentlyVisitedItem]s.
*
* @param composeView [ComposeView] which will be populated with Jetpack Compose UI content.
* @param viewLifecycleOwner [LifecycleOwner] to which this Composable will be tied to.
* @property interactor [RecentVisitsInteractor] which will have delegated to all user interactions.
*/
class RecentlyVisitedViewHolder(

@ -83,7 +83,7 @@ interface SessionControlController {
/**
* @see [CollectionInteractor.onCollectionRemoveTab]
*/
fun handleCollectionRemoveTab(collection: TabCollection, tab: ComponentTab, wasSwiped: Boolean)
fun handleCollectionRemoveTab(collection: TabCollection, tab: ComponentTab)
/**
* @see [CollectionInteractor.onCollectionShareTabsClicked]
@ -244,7 +244,6 @@ class DefaultSessionControlController(
override fun handleCollectionRemoveTab(
collection: TabCollection,
tab: ComponentTab,
wasSwiped: Boolean,
) {
Collections.tabRemoved.record(NoExtras())

@ -83,7 +83,7 @@ interface CollectionInteractor {
* @param collection The collection of tabs that will be modified.
* @param tab The tab to remove from the tab collection.
*/
fun onCollectionRemoveTab(collection: TabCollection, tab: Tab, wasSwiped: Boolean)
fun onCollectionRemoveTab(collection: TabCollection, tab: Tab)
/**
* Shares the tabs in the given tab collection. Called when a user clicks on the Collection
@ -261,8 +261,8 @@ class SessionControlInteractor(
controller.handleCollectionOpenTabsTapped(collection)
}
override fun onCollectionRemoveTab(collection: TabCollection, tab: Tab, wasSwiped: Boolean) {
controller.handleCollectionRemoveTab(collection, tab, wasSwiped)
override fun onCollectionRemoveTab(collection: TabCollection, tab: Tab) {
controller.handleCollectionRemoveTab(collection, tab)
}
override fun onCollectionShareTabsClicked(collection: TabCollection) {

@ -36,7 +36,7 @@ import org.mozilla.fenix.theme.FirefoxTheme
*
* @param composeView [ComposeView] which will be populated with Jetpack Compose UI content.
* @param viewLifecycleOwner [LifecycleOwner] life cycle owner for the view.
* @param interactor [PrivateBrowsingInteractor] which will have delegated to all user interactions.
* @property interactor [PrivateBrowsingInteractor] which will have delegated to all user interactions.
*/
class PrivateBrowsingDescriptionViewHolder(
composeView: ComposeView,

@ -27,6 +27,8 @@ import org.mozilla.fenix.wallpapers.WallpaperState
/**
* View holder for the Nimbus Message Card.
*
* @param composeView [ComposeView] which will be populated with Jetpack Compose UI content.
* @param viewLifecycleOwner [LifecycleOwner] to which this Composable will be tied to.
* @property interactor [SessionControlInteractor] which will have delegated to all user
* interactions.
*/

@ -90,6 +90,7 @@ private const val TOP_SITES_FAVICON_SIZE = 36
* @param onSettingsClicked Invoked when the user clicks on the "Settings" menu item.
* @param onSponsorPrivacyClicked Invoked when the user clicks on the "Our sponsors & your privacy"
* menu item.
* @param onTopSitesItemBound Invoked during the composition of a top site item.
*/
@OptIn(ExperimentalFoundationApi::class, ExperimentalComposeUiApi::class)
@Composable
@ -242,6 +243,7 @@ data class TopSiteColors(
* @param topSiteColors The color set defined by [TopSiteColors] used to style a top site.
* @param onTopSiteClick Invoked when the user clicks on a top site.
* @param onTopSiteLongClick Invoked when the user long clicks on a top site.
* @param onTopSitesItemBound Invoked during the composition of a top site item.
*/
@Suppress("LongParameterList", "LongMethod")
@OptIn(ExperimentalFoundationApi::class, ExperimentalComposeUiApi::class)

@ -21,7 +21,7 @@ import org.mozilla.fenix.wallpapers.WallpaperState
*
* @param composeView [ComposeView] which will be populated with Jetpack Compose UI content.
* @param viewLifecycleOwner [LifecycleOwner] to which this Composable will be tied to.
* @param interactor [TopSiteInteractor] which will have delegated to all user top sites
* @property interactor [TopSiteInteractor] which will have delegated to all user top sites
* interactions.
*/
class TopSitesViewHolder(

@ -15,8 +15,6 @@ import org.mozilla.fenix.components.metrics.MetricsUtils
* Interactor for the Bookmarks screen.
* Provides implementations for the BookmarkViewInteractor.
*
* @property bookmarkStore bookmarks state
* @property viewModel view state
* @property bookmarksController view controller
*/
@SuppressWarnings("TooManyFunctions")

@ -50,9 +50,12 @@ sealed class DownloadFragmentAction : Action {
}
/**
* The state for the Download Screen
* @property items List of DownloadItem to display
* @property mode Current Mode of Download
* The state of the Download screen.
*
* @property items List of [DownloadItem] to display.
* @property mode Current [Mode] of the Download screen.
* @property pendingDeletionIds Set of [DownloadItem] IDs that are waiting to be deleted.
* @property isDeletingItems Whether or not download items are being deleted.
*/
data class DownloadFragmentState(
val items: List<DownloadItem>,
@ -64,7 +67,7 @@ data class DownloadFragmentState(
open val selectedItems = emptySet<DownloadItem>()
object Normal : Mode()
data class Editing(override val selectedItems: Set<DownloadItem>) : DownloadFragmentState.Mode()
data class Editing(override val selectedItems: Set<DownloadItem>) : Mode()
}
}

@ -182,9 +182,14 @@ sealed class HistoryFragmentAction : Action {
}
/**
* The state for the History Screen
* The state for the History Screen.
*
* @property items List of History to display
* @property mode Current Mode of History
* @property pendingDeletionItems The set of [PendingDeletionHistory] marked for removal.
* @property isEmpty Whether or not the screen is empty.
* @property isDeletingItems Whether or not the history items are currently in the process of being
* deleted.
*/
data class HistoryFragmentState(
val items: List<History>,

@ -17,6 +17,7 @@ import org.mozilla.fenix.library.history.History
import org.mozilla.fenix.library.history.HistoryFragmentAction
import org.mozilla.fenix.library.history.HistoryFragmentDirections
import org.mozilla.fenix.library.history.HistoryFragmentState
import org.mozilla.fenix.library.history.HistoryFragmentStore
/**
* A [Middleware] for initiating navigation events based on [HistoryFragmentAction]s that are
@ -24,6 +25,8 @@ import org.mozilla.fenix.library.history.HistoryFragmentState
*
* @property navController [NavController] for handling navigation events
* @property openToBrowser Callback to open history items in a browser window.
* @property onBackPressed Callback to handle back press actions.
* @property scope [CoroutineScope] used to launch coroutines.
*/
class HistoryNavigationMiddleware(
private val navController: NavController,

@ -7,8 +7,10 @@ package org.mozilla.fenix.library.historymetadata
import mozilla.components.lib.state.Action
import mozilla.components.lib.state.State
import mozilla.components.lib.state.Store
import org.mozilla.fenix.components.AppStore
import org.mozilla.fenix.library.history.History
import org.mozilla.fenix.library.history.PendingDeletionHistory
import org.mozilla.fenix.library.historymetadata.view.HistoryMetadataGroupView
/**
* The [Store] for holding the [HistoryMetadataGroupFragmentState] and applying
@ -21,7 +23,7 @@ class HistoryMetadataGroupFragmentStore(initialState: HistoryMetadataGroupFragme
)
/**
* Actions to dispatch through the [HistoryMetadataGroupFragmentStore to modify the
* Actions to dispatch through the [HistoryMetadataGroupFragmentStore] to modify the
* [HistoryMetadataGroupFragmentState] through the [historyStateReducer].
*/
sealed class HistoryMetadataGroupFragmentAction : Action {
@ -31,7 +33,7 @@ sealed class HistoryMetadataGroupFragmentAction : Action {
data class Deselect(val item: History.Metadata) : HistoryMetadataGroupFragmentAction()
/**
* Updates the set of items marked for removal from the [org.mozilla.fenix.components.AppStore]
* Updates the set of items marked for removal from the [AppStore]
* to the [HistoryMetadataGroupFragmentStore], to be hidden from the UI.
*/
data class UpdatePendingDeletionItems(val pendingDeletionItems: Set<PendingDeletionHistory>) :
@ -41,7 +43,7 @@ sealed class HistoryMetadataGroupFragmentAction : Action {
object DeleteAll : HistoryMetadataGroupFragmentAction()
/**
* Updates the empty state of [org.mozilla.fenix.library.historymetadata.view.HistoryMetadataGroupView].
* Updates the empty state of [HistoryMetadataGroupView].
*/
data class ChangeEmptyState(val isEmpty: Boolean) : HistoryMetadataGroupFragmentAction()
}
@ -50,6 +52,8 @@ sealed class HistoryMetadataGroupFragmentAction : Action {
* The state for [HistoryMetadataGroupFragment].
*
* @property items The list of [History.Metadata] to display.
* @property pendingDeletionItems The set of [PendingDeletionHistory] marked for removal.
* @property isEmpty Whether or not the screen is empty.
*/
data class HistoryMetadataGroupFragmentState(
val items: List<History.Metadata>,

@ -41,7 +41,9 @@ class HistoryMetadataGroupItemViewHolder(
/**
* Displays the data of the given history record.
* @param isPendingDeletion hides the item unless user evokes Undo snackbar action.
*
* @param item The [History.Metadata] to display.
* @param isPendingDeletion Whether or not the [item] is pending deletion.
*/
fun bind(item: History.Metadata, isPendingDeletion: Boolean) {
binding.historyLayout.isVisible = !isPendingDeletion

@ -30,8 +30,10 @@ sealed class RecentlyClosedFragmentAction : Action {
}
/**
* The state for the Recently Closed Screen
* @property items List of recently closed tabs to display
* The state for the Recently Closed Screen.
*
* @property items List of recently closed tabs to display.
* @property selectedTabs List of selected recently closed tabs.
*/
data class RecentlyClosedFragmentState(
val items: List<TabState> = emptyList(),

@ -9,8 +9,9 @@ import mozilla.components.service.nimbus.messaging.MessageSurfaceId
/**
* Represent all the state related to the Messaging framework.
* @param messages Indicates all the available messages.
* @param messageToShow Indicates the message that should be shown to users,
*
* @property messages Indicates all the available messages.
* @property messageToShow Indicates the message that should be shown to users,
* if it is null means there is not message that is eligible to be shown to users.
*/
data class MessagingState(

@ -39,8 +39,8 @@ sealed class NimbusBranchesAction : Action {
/**
* Updates the list of Nimbus branches and selected branch.
*
* @param branches The list of [Branch]s to display in the branches list.
* @param selectedBranch The selected [Branch] slug for a Nimbus experiment.
* @property branches The list of [Branch]s to display in the branches list.
* @property selectedBranch The selected [Branch] slug for a Nimbus experiment.
*/
data class UpdateBranches(val branches: List<Branch>, val selectedBranch: String) :
NimbusBranchesAction()
@ -48,7 +48,7 @@ sealed class NimbusBranchesAction : Action {
/**
* Updates the selected branch.
*
* @param selectedBranch The selected [Branch] slug for a Nimbus experiment.
* @property selectedBranch The selected [Branch] slug for a Nimbus experiment.
*/
data class UpdateSelectedBranch(val selectedBranch: String) : NimbusBranchesAction()

@ -39,7 +39,7 @@ class NimbusExperimentsFragment : Fragment() {
NimbusExperiments(
experiments = experiments,
onSelectedExperiment = { experiment ->
onExperimentClick = { experiment ->
val directions =
NimbusExperimentsFragmentDirections.actionNimbusExperimentsFragmentToNimbusBranchesFragment(
experimentId = experiment.slug,

@ -16,6 +16,7 @@ import org.mozilla.fenix.ext.getRootView
import org.mozilla.fenix.ext.navigateWithBreadcrumb
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.nimbus.NimbusBranchesAction
import org.mozilla.fenix.nimbus.NimbusBranchesFragment
import org.mozilla.fenix.nimbus.NimbusBranchesFragmentDirections
import org.mozilla.fenix.nimbus.NimbusBranchesStore
@ -23,10 +24,12 @@ import org.mozilla.fenix.nimbus.NimbusBranchesStore
* [NimbusBranchesFragment] controller. This implements [NimbusBranchesAdapterDelegate] to handle
* interactions with a Nimbus branch.
*
* @param nimbusBranchesStore An instance of [NimbusBranchesStore] for dispatching
* @property context An Android [Context].
* @property navController [NavController] used for navigation.
* @property nimbusBranchesStore An instance of [NimbusBranchesStore] for dispatching
* [NimbusBranchesAction]s.
* @param experiments An instance of [NimbusApi] for interacting with the Nimbus experiments.
* @param experimentId The string experiment-id or "slug" for a Nimbus experiment.
* @property experiments An instance of [NimbusApi] for interacting with the Nimbus experiments.
* @property experimentId The string experiment-id or "slug" for a Nimbus experiment.
*/
class NimbusBranchesController(
private val context: Context,

@ -23,7 +23,7 @@ import org.mozilla.fenix.theme.FirefoxTheme
@Composable
fun NimbusExperiments(
experiments: List<AvailableExperiment> = listOf(),
onSelectedExperiment: (AvailableExperiment) -> Unit,
onExperimentClick: (AvailableExperiment) -> Unit,
) {
LazyColumn(
modifier = Modifier.fillMaxSize(),
@ -34,7 +34,7 @@ fun NimbusExperiments(
description = experiment.userFacingDescription,
maxDescriptionLines = Int.MAX_VALUE,
onClick = {
onSelectedExperiment(experiment)
onExperimentClick(experiment)
},
)
}
@ -60,7 +60,7 @@ private fun NimbusExperimentsPreview() {
testExperiment,
testExperiment,
),
onSelectedExperiment = {},
onExperimentClick = {},
)
}
}

@ -34,8 +34,8 @@ private const val CFR_TO_ANCHOR_VERTICAL_PADDING = -16
/**
* Delegate for handling the Home Onboarding CFR.
*
* @param context [Context] used for various Android interactions.
* @param recyclerView [RecyclerView] will serve as anchor for the CFR.
* @property context [Context] used for various Android interactions.
* @property recyclerView [RecyclerView] will serve as anchor for the CFR.
*/
class HomeCFRPresenter(
private val context: Context,

@ -21,7 +21,8 @@ data class OnboardingPageUiData(
) {
/**
* Model for different types of Onboarding Pages.
* @param telemetryId Identifier for the page, used in telemetry.
*
* @property telemetryId Identifier for the page, used in telemetry.
*/
enum class Type(
val telemetryId: String,

@ -72,35 +72,37 @@ sealed class SearchEngineSource {
/**
* The state for the Search Screen
*
* @property query The current search query string
* @property url The current URL of the tab (if this fragment is shown for an already existing tab)
* @property query The current search query string.
* @property url The current URL of the tab (if this fragment is shown for an already existing tab).
* @property searchTerms The search terms used to search previously in this tab (if this fragment is shown
* for an already existing tab)
* @property searchEngineSource The current selected search engine with the context of how it was selected
* @property defaultEngine The current default search engine (or null if none is available yet)
* @property showSearchSuggestions Whether or not to show search suggestions from the search engine in the AwesomeBar
* @property showSearchSuggestionsHint Whether or not to show search suggestions in private hint panel
* @property showSearchShortcuts Whether or not to show search shortcuts in the AwesomeBar
* for an already existing tab).
* @property searchEngineSource The current selected search engine with the context of how it was selected.
* @property defaultEngine The current default search engine (or null if none is available yet).
* @property showSearchSuggestions Whether or not to show search suggestions from the search engine in the AwesomeBar.
* @property showSearchSuggestionsHint Whether or not to show search suggestions in private hint panel.
* @property showSearchShortcuts Whether or not to show search shortcuts in the AwesomeBar.
* @property areShortcutsAvailable Whether or not there are >=2 search engines installed
* so to know to present users with certain options or not.
* @property showSearchShortcutsSetting Whether the setting for showing search shortcuts is enabled
* or disabled.
* @property showClipboardSuggestions Whether or not to show clipboard suggestion in the AwesomeBar
* @property showClipboardSuggestions Whether or not to show clipboard suggestion in the AwesomeBar.
* @property showSearchTermHistory Whether or not to show suggestions based on the previously used search terms
* with the currently selected search engine.
* @property showHistorySuggestionsForCurrentEngine Whether or not to show history suggestions for only
* the current search engine.
* @property showAllHistorySuggestions Whether or not to show history suggestions in the AwesomeBar
* @property showAllHistorySuggestions Whether or not to show history suggestions in the AwesomeBar.
* @property showBookmarksSuggestionsForCurrentEngine Whether or not to show bookmarks suggestions for only
* the current search engine.
* @property showAllBookmarkSuggestions Whether or not to show the bookmark suggestion in the AwesomeBar
* @property showAllBookmarkSuggestions Whether or not to show the bookmark suggestion in the AwesomeBar.
* @property showSyncedTabsSuggestionsForCurrentEngine Whether or not to show synced tabs suggestions for only
* the current search engine.
* @property showAllSyncedTabsSuggestions Whether or not to show the synced tabs suggestion in the AwesomeBar
* @property showAllSyncedTabsSuggestions Whether or not to show the synced tabs suggestion in the AwesomeBar.
* @property showSessionSuggestionsForCurrentEngine Whether or not to show local tabs suggestions for only
* the current search engine.
* @property showAllSessionSuggestions Whether or not to show the session suggestion in the AwesomeBar
* @property pastedText The text pasted from the long press toolbar menu
* @property showAllSessionSuggestions Whether or not to show the session suggestion in the AwesomeBar.
* @property tabId The ID of the current tab.
* @property pastedText The text pasted from the long press toolbar menu.
* @property searchAccessPoint The source of the performed search.
* @property clipboardHasUrl Indicates if the clipboard contains an URL.
*/
data class SearchFragmentState(

@ -16,6 +16,7 @@ interface AwesomeBarInteractor {
/**
* Called whenever a suggestion containing a URL is tapped
* @param url the url the suggestion was providing
* @param flags the [LoadUrlFlags] to use when loading the provided url.
*/
fun onUrlTapped(url: String, flags: LoadUrlFlags = LoadUrlFlags.none())

@ -43,7 +43,7 @@ class SearchSelectorMenu(
/**
* The menu item to display a search engine.
*
* @param searchEngine The [SearchEngine] that was selected.
* @property searchEngine The [SearchEngine] that was selected.
*/
data class SearchEngine(val searchEngine: MozSearchEngine) : Item()
}

@ -32,6 +32,7 @@ import org.mozilla.fenix.search.SearchDialogFragmentStore
* A [Toolbar.Action] implementation that shows a [SearchSelector].
*
* @property store [SearchDialogFragmentStore] containing the complete state of the search dialog.
* @property defaultSearchEngine The user selected or default [SearchEngine].
* @property menu An instance of [SearchSelectorMenu] to display a popup menu for the search
* selections.
*/

@ -20,14 +20,14 @@ import mozilla.components.service.fxa.manager.SyncEnginesStorage
* that manages the sync account authentication. A toggle will be also added
* depending on the sync account status.
*
* @param syncPreference The sync [SyncPreference] to update and handle navigation.
* @property syncPreference The sync [SyncPreference] to update and handle navigation.
* @param lifecycleOwner View lifecycle owner used to determine when to cancel UI jobs.
* @param accountManager An instance of [FxaAccountManager].
* @param syncEngine The sync engine that will be used for the sync status lookup.
* @param loggedOffTitle Text label for the setting when user is not logged in.
* @param loggedInTitle Text label for the setting when user is logged in.
* @param onSyncSignInClicked A callback executed when the sync sign in [syncPreference] is clicked.
* @param onReconnectClicked A callback executed when the [syncPreference] is clicked with a
* @property syncEngine The sync engine that will be used for the sync status lookup.
* @property loggedOffTitle Text label for the setting when user is not logged in.
* @property loggedInTitle Text label for the setting when user is logged in.
* @property onSyncSignInClicked A callback executed when the sync sign in [syncPreference] is clicked.
* @property onReconnectClicked A callback executed when the [syncPreference] is clicked with a
* preference status of "Reconnect".
*/
@Suppress("LongParameterList")

@ -11,19 +11,21 @@ import org.mozilla.fenix.ext.nav
interface AccountSettingsUserActions {
/**
* Called whenever the "Sync now" button is tapped
* Called whenever the "Sync now" button is tapped.
*/
fun onSyncNow()
/**
* Called whenever user sets a new device name
* @param newDeviceName the device name to change to
* @return Boolean indicating whether the new device name has been accepted or not
* Called whenever user sets a new device name.
*
* @param newDeviceName The new device name to change to.
* @param invalidNameResponse Lambda invoked when the new synced device is not found.
* @return Boolean indicating whether the new device name has been accepted or not.
*/
fun onChangeDeviceName(newDeviceName: String, invalidNameResponse: () -> Unit): Boolean
/**
* Called whenever the "Sign out" button is tapped
* Called whenever the "Sign out" button is tapped.
*/
fun onSignOut()
}

@ -11,7 +11,7 @@ interface SyncInteractor {
/**
* Interactor for [TurnOnSyncFragment].
*
* @param syncController Handles the interactions
* @property syncController Handles the interactions
*/
class DefaultSyncInteractor(private val syncController: DefaultSyncController) : SyncInteractor {
override fun onCameraPermissionsNeeded() {

@ -28,6 +28,8 @@ internal const val DEFAULT_COUNTRY = "US"
*
* @property countryCode The country code used to lookup the address data. Should match desktop entries.
* @property displayName The name to display when selected.
* @property subregionTitleResource The string resource for the subregion title.
* @property subregions THe list of subregions.
*/
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
internal data class Country(

@ -43,10 +43,10 @@ interface AddressEditorController {
/**
* The default implementation of [AddressEditorController].
*
* @param storage An instance of the [AutofillCreditCardsAddressesStorage] for adding and retrieving
* @property storage An instance of the [AutofillCreditCardsAddressesStorage] for adding and retrieving
* addresses.
* @param lifecycleScope [CoroutineScope] scope to launch coroutines.
* @param navController [NavController] used for navigation.
* @property lifecycleScope [CoroutineScope] scope to launch coroutines.
* @property navController [NavController] used for navigation.
*/
class DefaultAddressEditorController(
private val storage: AutofillCreditCardsAddressesStorage,

@ -30,7 +30,7 @@ interface AddressManagementController {
/**
* The default implementation of [AddressManagementController].
*
* @param navController [NavController] used for navigation.
* @property navController [NavController] used for navigation.
*/
class DefaultAddressManagementController(
private val navController: NavController,

@ -39,6 +39,7 @@ interface AddressEditorInteractor {
* Updates the provided address in the autofill storage. Called when a user
* taps on the update menu item or "Update" button.
*
* @param guid The unique identifier for the [Address] record to update.
* @param addressFields A [UpdatableAddressFields] record to add.
*/
fun onUpdateAddress(guid: String, addressFields: UpdatableAddressFields)
@ -47,7 +48,7 @@ interface AddressEditorInteractor {
/**
* The default implementation of [AddressEditorInteractor].
*
* @param controller An instance of [AddressEditorController] which will be delegated for all
* @property controller An instance of [AddressEditorController] which will be delegated for all
* user interactions.
*/
class DefaultAddressEditorInteractor(

@ -30,7 +30,7 @@ interface AddressManagementInteractor {
/**
* The default implementation of [AddressManagementInteractor].
*
* @param controller An instance of [AddressManagementController] which will be delegated for
* @property controller An instance of [AddressManagementController] which will be delegated for
* all user interactions.
*/
class DefaultAddressManagementInteractor(

@ -31,10 +31,10 @@ import org.mozilla.fenix.settings.address.toCountryCode
/**
* An address editor for adding or updating an address.
*
* @param binding The binding used to display the view.
* @param interactor [AddressEditorInteractor] used to respond to any user interactions.
* @param region If the [RegionState] is available, it will be used to set the country when adding a new address.
* @param address An [Address] to edit.
* @property binding The binding used to display the view.
* @property interactor [AddressEditorInteractor] used to respond to any user interactions.
* @property region If the [RegionState] is available, it will be used to set the country when adding a new address.
* @property address An [Address] to edit.
*/
class AddressEditorView(
private val binding: FragmentAddressEditorBinding,

@ -41,14 +41,14 @@ sealed class AutofillAction : Action {
/**
* Updates the list of addresses with the provided [addresses].
*
* @param addresses The list of [Address]es to display in the address list.
* @property addresses The list of [Address]es to display in the address list.
*/
data class UpdateAddresses(val addresses: List<Address>) : AutofillAction()
/**
* Updates the list of credit cards with the provided [creditCards].
*
* @param creditCards The list of [CreditCard]s to display in the credit card list.
* @property creditCards The list of [CreditCard]s to display in the credit card list.
*/
data class UpdateCreditCards(val creditCards: List<CreditCard>) : AutofillAction()
}

@ -22,10 +22,10 @@ import org.mozilla.fenix.settings.biometric.ext.isHardwareAvailable
/**
* A [LifecycleAwareFeature] for the Android Biometric API to prompt for user authentication.
*
* @param context Android context.
* @param fragment The fragment on which this feature will live.
* @param onAuthSuccess A success callback.
* @param onAuthFailure A failure callback if authentication failed.
* @property context Android context.
* @property fragment The fragment on which this feature will live.
* @property onAuthFailure A failure callback if authentication failed.
* @property onAuthSuccess A success callback.
*/
class BiometricPromptFeature(
private val context: Context,

@ -95,6 +95,7 @@ abstract class BiometricPromptPreferenceFragment : PreferenceFragmentCompat() {
/**
* Use [BiometricPromptFeature] or [KeyguardManager] to confirm device security.
*
* @param context An Android [Context].
* @param prefList a list of [Preference]s to disable while authentication is happening.
*/
fun verifyCredentialsOrShowSetupWarning(context: Context, prefList: List<Int>) {

@ -48,12 +48,12 @@ interface CreditCardEditorController {
/**
* The default implementation of [CreditCardEditorController].
*
* @param storage An instance of the [AutofillCreditCardsAddressesStorage] for adding and retrieving
* @property storage An instance of the [AutofillCreditCardsAddressesStorage] for adding and retrieving
* credit cards.
* @param lifecycleScope [CoroutineScope] scope to launch coroutines.
* @param navController [NavController] used for navigation.
* @param ioDispatcher [CoroutineDispatcher] used for executing async tasks. Defaults to [Dispatchers.IO].
* @param showDeleteDialog [DialogInterface.OnClickListener] used to display a confirmation dialog
* @property lifecycleScope [CoroutineScope] scope to launch coroutines.
* @property navController [NavController] used for navigation.
* @property ioDispatcher [CoroutineDispatcher] used for executing async tasks. Defaults to [Dispatchers.IO].
* @property showDeleteDialog [DialogInterface.OnClickListener] used to display a confirmation dialog
* before removing credit card.
*/
class DefaultCreditCardEditorController(

@ -48,7 +48,7 @@ interface CreditCardEditorInteractor {
/**
* The default implementation of [CreditCardEditorInteractor].
*
* @param controller An instance of [CreditCardEditorController] which will be delegated for all
* @property controller An instance of [CreditCardEditorController] which will be delegated for all
* user interactions.
*/
class DefaultCreditCardEditorInteractor(

@ -32,7 +32,7 @@ interface CreditCardsManagementInteractor {
/**
* The default implementation of [CreditCardsManagementInteractor].
*
* @param controller An instance of [CreditCardsManagementController] which will be delegated for
* @property controller An instance of [CreditCardsManagementController] which will be delegated for
* all user interactions.
*/
class DefaultCreditCardsManagementInteractor(

@ -64,14 +64,17 @@ sealed class LoginsAction : Action {
}
/**
* The state for the Saved Logins Screen
* @property loginList Filterable list of logins to display
* @property currentItem The last item that was opened into the detail view
* @property searchedForText String used by the user to filter logins
* @property sortingStrategy sorting strategy selected by the user (Currently we support
* sorting alphabetically and by last used)
* @property highlightedItem The current selected sorting strategy from the sort menu
* @property duplicateLogin Duplicate login for the current add/save login form
* The state for the Saved Logins Screen.
*
* @property isLoading Whether or not the list of logins are being loaded.
* @property loginList Filterable list of [SavedLogin]s that persist in storage.
* @property filteredItems Filtered list of [SavedLogin]s to display.
* @property currentItem The last item that was opened in the detail view.
* @property searchedForText String used by the user to filter logins.
* @property sortingStrategy Sorting strategy selected by the user. Currently, we support
* sorting alphabetically and by last used.
* @property highlightedItem The current selected sorting strategy from the sort menu.
* @property duplicateLogin Duplicate login for the current add/save login form.
*/
data class LoginsListState(
val isLoading: Boolean = false,

@ -19,10 +19,10 @@ import org.mozilla.fenix.utils.Settings
/**
* Controller for the saved logins list
*
* @param loginsFragmentStore Store used to hold in-memory collection state.
* @param navController NavController manages app navigation within a NavHost.
* @param browserNavigator Controller allowing browser navigation to any Uri.
* @param settings SharedPreferences wrapper for easier usage.
* @property loginsFragmentStore Store used to hold in-memory collection state.
* @property navController NavController manages app navigation within a NavHost.
* @property browserNavigator Controller allowing browser navigation to any Uri.
* @property settings SharedPreferences wrapper for easier usage.
*/
class LoginsListController(
private val loginsFragmentStore: LoginsFragmentStore,

@ -12,9 +12,9 @@ import org.mozilla.fenix.settings.logins.controller.SavedLoginsStorageController
/**
* Interactor for the saved logins screen
*
* @param loginsListController [LoginsListController] which will be delegated for all
* @property loginsListController [LoginsListController] which will be delegated for all
* user interactions.
* @param savedLoginsStorageController [SavedLoginsStorageController] which will be delegated
* @property savedLoginsStorageController [SavedLoginsStorageController] which will be delegated
* for all calls to the password storage component
*/
class SavedLoginsInteractor(

@ -36,9 +36,13 @@ interface ClearSiteDataViewInteractor {
/**
* MVI View to access the dialog to clear site cookies and data.
*
* @param containerView [ViewGroup] in which this View will inflate itself.
* @param interactor [TrackingProtectionInteractor] which will have delegated to all user
* @property context An Android [Context].
* @property ioScope [CoroutineScope] with an IO dispatcher used for structured concurrency.
* @property containerView [ViewGroup] in which this View will inflate itself.
* @property containerDivider Divider [View] to manipulate.
* @property interactor [ClearSiteDataViewInteractor] which will have delegated to all user
* interactions.
* @property navController [NavController] used for navigation.
*/
class ClearSiteDataView(
val context: Context,

@ -10,7 +10,7 @@ package org.mozilla.fenix.settings.quicksettings
* Implements callbacks for each of [ConnectionPanelDialogFragment]'s Views declared possible user interactions,
* delegates all such user events to the [ConnectionDetailsController].
*
* @param controller [ConnectionDetailsController] which will be delegated for all users interactions,
* @property controller [ConnectionDetailsController] which will be delegated for all users interactions,
* it expected to contain all business logic for how to act in response.
*/
class ConnectionDetailsInteractor(

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save