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. * Fenix [LogSink] implementation that writes to Android's log, depending on settings.
* *
* @param logsDebug If set to false, removes logging of debug logs. * @property logsDebug If set to false, removes logging of debug logs.
* @param androidLogSink an [AndroidLogSink] that writes to Android's log. * @property androidLogSink an [AndroidLogSink] that writes to Android's log.
*/ */
class FenixLogSink( class FenixLogSink(
private val logsDebug: Boolean = true, 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 * Navigates to the browser fragment and loads a URL or performs a search (depending on the
* value of [searchTermOrURL]). * 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 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. * @param additionalHeaders The extra headers to use when loading the URL.
*/ */
@Suppress("LongParameterList") @Suppress("LongParameterList")
@ -1048,7 +1058,12 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {
/** /**
* Loads a URL or performs a search (depending on the value of [searchTermOrURL]). * 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 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 * @param historyMetadata The [HistoryMetadataKey] of the new tab in case this tab
* was opened from history. * was opened from history.
* @param additionalHeaders The extra headers to use when loading the URL. * @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. * 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( class ServiceWorkerSupportFeature(
private val homeActivity: HomeActivity, private val homeActivity: HomeActivity,

@ -19,14 +19,13 @@ import mozilla.components.support.webextensions.ExtensionProcessDisabledPopupObs
import org.mozilla.fenix.GleanMetrics.Addons import org.mozilla.fenix.GleanMetrics.Addons
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.ext.components 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. * Controller for showing the user a dialog when the the extension process spawning has been disabled.
* *
* @param context to show the AlertDialog * @param context to show the AlertDialog
* @param store The [BrowserStore] which holds the state for showing the dialog * @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 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 * @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 * 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, * whether they would like to continue trying or disable extensions. If the user chooses to retry,
* enable the extension process spawning with [WebExtensionController.enableExtensionProcessSpawning]. * enable the extension process spawning with [Engine.enableExtensionProcessSpawning].
* Otherwise, call [WebExtensionController.disableExtensionProcessSpawning]. * Otherwise, call [Engine.disableExtensionProcessSpawning].
* *
* @param context to show the AlertDialog * @param context to show the AlertDialog
* @param store The [BrowserStore] which holds the state for showing the dialog * @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 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 * @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 view A [View] used to determine a parent for the [FenixSnackbar].
* @param text The text to display in 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) { internal fun showSnackBar(view: View, text: String, duration: Int = FenixSnackbar.LENGTH_SHORT) {
FenixSnackbar.make( FenixSnackbar.make(

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

@ -12,7 +12,15 @@ import androidx.coordinatorlayout.widget.CoordinatorLayout
* [InfoBanner] that will automatically scroll with the top [BrowserToolbar]. * [InfoBanner] that will automatically scroll with the top [BrowserToolbar].
* Only to be used with [BrowserToolbar]s placed at the top of the screen. * 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") @Suppress("LongParameterList")
class DynamicInfoBanner( 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. * 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. * The container can be a placeholder layout inserted in the original screen, or an existing layout.
* *
* @param context - A [Context] for accessing system resources. * @property context A [Context] for accessing system resources.
* @param container - The layout where the banner will be shown * @property container The layout where the banner will be shown.
* @param message - The message displayed in the banner * @property message The message displayed in the banner.
* @param dismissText - The text on the dismiss button * @property dismissText The text on the dismiss button.
* @param actionText - The text on the action to perform button * @property actionText The text on the action to perform button.
* @param actionToPerform - The action to be performed on action button press * @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") @SuppressWarnings("LongParameterList")
open class InfoBanner( 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. * @property store Store used to hold in-memory collection state.
* @param browserStore The global `BrowserStore` instance. * @property browserStore The global `BrowserStore` instance.
* @param dismiss Callback to dismiss the collection creation dialog. * @property dismiss Callback to dismiss the collection creation dialog.
* @param tabCollectionStorage Storage used to save tab collections to disk. * @property tabCollectionStorage Storage used to save tab collections to disk.
* @param scope Coroutine scope to launch coroutines. * @property scope Coroutine scope to launch coroutines.
*/ */
class DefaultCollectionCreationController( class DefaultCollectionCreationController(
private val store: CollectionCreationStore, 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]. * 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 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. * @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. * 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( class AccountAbnormalities(
context: Context, 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. * 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 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. * Depending on it's position (top / bottom) the snackbar will be shown below / above the toolbar.
*/ */
class FenixSnackbarBehavior<V : View>( 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. * BrowserFragment delegate to handle all layout updates needed to show or hide the find in page bar.
* *
* @param store [BrowserStore] * @property store The [BrowserStore] used to look up the current selected tab.
* @param sessionId ID of the [store] session in which the query will be performed. * @property 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 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. * 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( class FindInPageIntegration(
private val store: BrowserStore, private val store: BrowserStore,

@ -22,16 +22,19 @@ class PermissionStorage(
/** /**
* Persists the [sitePermissions] provided as a parameter. * 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) { suspend fun add(sitePermissions: SitePermissions, private: Boolean) = withContext(dispatcher) {
permissionsStorage.save(sitePermissions, private = private) permissionsStorage.save(sitePermissions, private = private)
} }
/** /**
* Finds all SitePermissions that match the [origin]. * 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. * @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? = suspend fun findSitePermissionsBy(origin: String, private: Boolean): SitePermissions? =
withContext(dispatcher) { withContext(dispatcher) {
@ -39,9 +42,10 @@ class PermissionStorage(
} }
/** /**
* Replaces an existing SitePermissions with the values of [sitePermissions] provided as a parameter. * 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. * @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) = suspend fun updateSitePermissions(sitePermissions: SitePermissions, private: Boolean) =
withContext(dispatcher) { withContext(dispatcher) {
@ -63,7 +67,7 @@ class PermissionStorage(
/** /**
* Deletes all sitePermissions that match the sitePermissions provided as a parameter. * 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) { suspend fun deleteSitePermissions(sitePermissions: SitePermissions) = withContext(dispatcher) {
permissionsStorage.remove(sitePermissions, private = false) permissionsStorage.remove(sitePermissions, private = false)

@ -33,7 +33,7 @@ class StoreProvider<T : Store<*, *>>(
/** /**
* ViewModel factory to create [StoreProvider] instances. * 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 @VisibleForTesting
class StoreProviderFactory<T : Store<*, *>>( class StoreProviderFactory<T : Store<*, *>>(

@ -28,13 +28,14 @@ import org.mozilla.fenix.wallpapers.WallpaperState
/** /**
* Value type that represents the state of the tabs tray. * 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 * @property inactiveTabsExpanded A flag to know if the Inactive Tabs section of the Tabs Tray
* should be expanded when the tray is opened. * should be expanded when the tray is opened.
* @property firstFrameDrawn Flag indicating whether the first frame of the homescreen has been drawn. * @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 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 collections The list of [TabCollection] to display in the [HomeFragment].
* @property expandedCollections A set containing the ids of the [TabCollection] that are expanded * @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 mode The state of the [HomeFragment] UI.
* @property topSites The list of [TopSite] in the [HomeFragment]. * @property topSites The list of [TopSite] in the [HomeFragment].
* @property showCollectionPlaceholder If true, shows a placeholder when there are no collections. * @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, * @property pendingDeletionHistoryItems The set of History items marked for removal in the UI,
* awaiting to be removed once the Undo snackbar hides away. * 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. * 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. * @property shoppingSheetExpanded Boolean indicating if the shopping sheet is expanded and visible.
*/ */
data class AppState( data class AppState(

@ -51,8 +51,8 @@ class BookmarksUseCase(
/** /**
* Uses for retrieving recently added bookmarks. * Uses for retrieving recently added bookmarks.
* *
* @param bookmarksStorage [BookmarksStorage] to retrieve the bookmark data. * @property bookmarksStorage [BookmarksStorage] to retrieve the bookmark data.
* @param historyStorage Optional [HistoryStorage] to retrieve the preview image of a visited * @property historyStorage Optional [HistoryStorage] to retrieve the preview image of a visited
* page associated with a bookmark. * page associated with a bookmark.
*/ */
class RetrieveRecentBookmarksUseCase internal constructor( 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( class DefaultPagedHistoryProvider(
private val historyStorage: PlacesHistoryStorage, 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, * 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. * 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 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. * @param listener Callback to be invoked when this menu item is clicked.
*/ */
class BrowserMenuSignIn( 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. * Delegate for handling all the business logic for showing CFRs in the toolbar.
* *
* @param context used for various Android interactions. * @property context used for various Android interactions.
* @param browserStore will be observed for tabs updates * @property browserStore will be observed for tabs updates
* @param settings used to read and write persistent user settings * @property settings used to read and write persistent user settings
* @param toolbar will serve as anchor for the CFRs * @property 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. * @property isPrivate Whether or not the session is private.
* @param onShoppingCfrActionClicked Triggered when the user taps on the shopping CFR action. * @property sessionId optional custom tab id used to identify the custom tab in which to show a CFR.
* @param shoppingExperienceFeature Used to determine if [ShoppingExperienceFeature] is enabled. * @property onShoppingCfrActionClicked Triggered when the user taps on the shopping CFR action.
* @property shoppingExperienceFeature Used to determine if [ShoppingExperienceFeature] is enabled.
*/ */
class BrowserToolbarCFRPresenter( class BrowserToolbarCFRPresenter(
private val context: Context, 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. * Builds the toolbar object used with the 3-dot menu in the browser fragment.
* @param context a [Context] for accessing system resources. * @property context a [Context] for accessing system resources.
* @param store reference to the application's [BrowserStore]. * @property store reference to the application's [BrowserStore].
* @param hasAccountProblem If true, there was a problem signing into the Firefox account. * @param hasAccountProblem If true, there was a problem signing into the Firefox account.
* @param onItemTapped Called when a menu item is tapped. * @property onItemTapped Called when a menu item is tapped.
* @param lifecycleOwner View lifecycle owner used to determine when to cancel UI jobs. * @property lifecycleOwner View lifecycle owner used to determine when to cancel UI jobs.
* @param bookmarksStorage Used to check if a page is bookmarked. * @property bookmarksStorage Used to check if a page is bookmarked.
* @param pinnedSiteStorage Used to check if the current url is a pinned site. * @property pinnedSiteStorage Used to check if the current url is a pinned site.
* @param isPinningSupported true if the launcher supports adding shortcuts. * @property isPinningSupported true if the launcher supports adding shortcuts.
*/ */
@Suppress("LargeClass", "LongParameterList", "TooManyFunctions") @Suppress("LargeClass", "LongParameterList", "TooManyFunctions")
open class DefaultToolbarMenu( open class DefaultToolbarMenu(

@ -95,10 +95,10 @@ fun SelectableChip(
/** /**
* Wrapper for the color parameters of [SelectableChip]. * Wrapper for the color parameters of [SelectableChip].
* *
* @param selectedBackgroundColor Background [Color] when the chip is selected. * @property selectedBackgroundColor Background [Color] when the chip is selected.
* @param unselectedBackgroundColor Background [Color] when the chip is not selected. * @property unselectedBackgroundColor Background [Color] when the chip is not selected.
* @param selectedTextColor Text [Color] when the chip is selected. * @property selectedTextColor Text [Color] when the chip is selected.
* @param unselectedTextColor Text [Color] when the chip is not selected. * @property unselectedTextColor Text [Color] when the chip is not selected.
*/ */
data class SelectableChipColors( data class SelectableChipColors(
val selectedBackgroundColor: Color, 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. * [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 textColor [Color] of the normal text. The URL substring will have a default URL style applied.
* @param linkTextColor [Color] of the link text. * @param linkTextColor [Color] of the link text.
* @param linkTextDecoration The decorations to paint on the link text (e.g., an underline). * @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 . * [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. * @param viewLifecycleOwner [LifecycleOwner] life cycle owner for the view.
*/ */
abstract class ComposeViewHolder( abstract class ComposeViewHolder(

@ -157,12 +157,12 @@ private fun MessageCardIconButton(
/** /**
* Wrapper for the color parameters of [MessageCard]. * Wrapper for the color parameters of [MessageCard].
* *
* @param backgroundColor The background [Color] of the message. * @property 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. * @property 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. * @property messageTextColor [Color] to apply to the message's body text.
* @param iconColor [Color] to apply to the message's icon. * @property iconColor [Color] to apply to the message's icon.
* @param buttonColor The background [Color] of the message's button. * @property buttonColor The background [Color] of the message's button.
* @param buttonTextColor [Color] to apply to the button text. * @property buttonTextColor [Color] to apply to the button text.
*/ */
data class MessageCardColors( data class MessageCardColors(
val backgroundColor: Color, 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. * 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 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 modifier The modifier to apply to this layout.
* @param activeColor The color of the active page indicator, and the color of previous page * @param activeColor The color of the active page indicator, and the color of previous page
* indicators in case [leaveTrail] is set to true. * 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 icon [Painter] icon to be displayed inside the action button.
* @param modifier [Modifier] to be applied to 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 label Text to be displayed next to the icon.
* @param onClick Invoked when the button is clicked. * @param onClick Invoked when the button is clicked.
*/ */

@ -75,6 +75,7 @@ fun HomeSectionHeader(
* Homepage header content. * Homepage header content.
* *
* @param headerText The header string. * @param headerText The header string.
* @param textColor [Color] to apply to the text.
* @param description The content description for the "Show all" button. * @param description The content description for the "Show all" button.
* @param showAllTextColor [Color] for the "Show all" button. * @param showAllTextColor [Color] for the "Show all" button.
* @param onShowAllClick Invoked when "Show all" button is clicked. * @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. * Thumbnail specific for the [TabGridItem], which can be selected.
* *
* @param tab Tab, containing the thumbnail to be displayed. * @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. * @param multiSelectionSelected Whether or not the multiple selection is enabled.
*/ */
@Composable @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. * 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]. * @property 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 appStore [AppStore] that tracks all content crashes in the current app session until the user
* decides to either send or dismiss all crash reports. * decides to either send or dismiss all crash reports.
* @param toolbar [BrowserToolbar] that will be expanded when showing the in-app crash reporter. * @property 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 isToolbarPlacedAtTop [Boolean] based allowing the in-app crash reporter to be shown as
* immediately below or above the toolbar. * immediately below or above the toolbar.
* @param crashReporterView [CrashContentView] which will be shown if the current tab is marked as crashed. * @property crashReporterView [CrashContentView] which will be shown if the current tab is marked as crashed.
* @param components [Components] allowing interactions with other app features. * @property components [Components] allowing interactions with other app features.
* @param settings [Settings] allowing to check whether crash reporting is enabled or not. * @property settings [Settings] allowing to check whether crash reporting is enabled or not.
* @param navController [NavController] used to navigate to other parts of the app. * @property 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 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. * 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. * 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. * @property context An Android [Context].
* @param shouldReverseItems If true, reverse the menu items. * @property store reference to the application's [BrowserStore].
* @param isSandboxCustomTab If true, menu should not show the "Open in Firefox" and "POWERED BY FIREFOX" items. * @property sessionId ID of the open custom tab session.
* @param onItemTapped Called when a menu item is tapped. * @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( class CustomTabToolbarMenu(
private val context: Context, 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]. * 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. * Used to update the activity [Window] to best mimic a modal dialog.
*/ */
abstract class StartDownloadDialog( 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. * 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. * 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. * @property 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 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. * 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. * @property 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 negativeButtonAction Callback for when the user interacts with the dialog to dismiss it.
*/ */
class FirstPartyDownloadDialog( class FirstPartyDownloadDialog(
private val activity: Activity, 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 * A download view mimicking a modal dialog that presents the user with a list of all apps
* that can handle the download request. * 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. * Used to update the activity [Window] to best mimic a modal dialog.
* @param downloaderApps List of all applications that can handle the download request. * @property 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. * @property 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 negativeButtonAction Callback for when the user interacts with the dialog to dismiss it.
*/ */
class ThirdPartyDownloadDialog( class ThirdPartyDownloadDialog(
private val activity: Activity, private val activity: Activity,

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

@ -29,10 +29,10 @@ import org.mozilla.fenix.home.pocket.PocketRecommendedStoriesSelectedCategory
/** /**
* [AppStore] middleware reacting in response to Pocket related [Action]s. * [AppStore] middleware reacting in response to Pocket related [Action]s.
* *
* @param pocketStoriesService [PocketStoriesService] used for updating details about the Pocket recommended stories. * @property pocketStoriesService [PocketStoriesService] used for updating details about the Pocket recommended stories.
* @param selectedPocketCategoriesDataStore [DataStore] used for reading or persisting details about the * @property selectedPocketCategoriesDataStore [DataStore] used for reading or persisting details about the
* currently selected Pocket recommended stories categories. * 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( class PocketUpdatesMiddleware(
private val pocketStoriesService: PocketStoriesService, private val pocketStoriesService: PocketStoriesService,

@ -15,7 +15,7 @@ import org.mozilla.fenix.home.recentvisits.RecentlyVisitedItem
import org.mozilla.fenix.utils.Settings 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 * The blocklist is a set of SHA1 hashed URLs, which are stripped
* of protocols and common subdomains like "www" or "mobile". * 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. * 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. * 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( class BlocklistMiddleware(
private val blocklistHandler: BlocklistHandler, 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 composeView [ComposeView] which will be populated with Jetpack Compose UI content.
* @param viewLifecycleOwner [LifecycleOwner] to which this Composable will be tied to. * @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( class CollectionViewHolder(
composeView: ComposeView, 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 composeView [ComposeView] which will be populated with Jetpack Compose UI content.
* @param viewLifecycleOwner [LifecycleOwner] to which this Composable will be tied to. * @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( class TabInCollectionViewHolder(
composeView: ComposeView, composeView: ComposeView,
@ -51,11 +51,10 @@ class TabInCollectionViewHolder(
tab = tab, tab = tab,
isLastInCollection = tabInfo.value.isLastInCollection, isLastInCollection = tabInfo.value.isLastInCollection,
onClick = { interactor.onCollectionOpenTabClicked(tab) }, onClick = { interactor.onCollectionOpenTabClicked(tab) },
onRemove = { wasSwiped -> onRemove = {
interactor.onCollectionRemoveTab( interactor.onCollectionRemoveTab(
collection = collection, collection = collection,
tab = tab, 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 composeView [ComposeView] which will be populated with Jetpack Compose UI content.
* @param viewLifecycleOwner [LifecycleOwner] to which this Composable will be tied to. * @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( class PocketCategoriesViewHolder(
composeView: ComposeView, 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 composeView [ComposeView] which will be populated with Jetpack Compose UI content.
* @param viewLifecycleOwner [LifecycleOwner] to which this Composable will be tied to. * @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( class PocketRecommendationsHeaderViewHolder(
composeView: ComposeView, composeView: ComposeView,

@ -68,8 +68,8 @@ interface PocketStoriesController {
/** /**
* Default behavior for handling all user interactions with the Pocket recommended stories feature. * Default behavior for handling all user interactions with the Pocket recommended stories feature.
* *
* @param homeActivity [HomeActivity] used to open URLs in a new tab. * @property 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 appStore [AppStore] from which to read the current Pocket recommendations and dispatch new actions on.
*/ */
internal class DefaultPocketStoriesController( internal class DefaultPocketStoriesController(
private val homeActivity: HomeActivity, 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 composeView [ComposeView] which will be populated with Jetpack Compose UI content.
* @param viewLifecycleOwner [LifecycleOwner] to which this Composable will be tied to. * @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( class PocketStoriesViewHolder(
composeView: ComposeView, composeView: ComposeView,

@ -14,16 +14,17 @@ import mozilla.components.support.base.feature.LifecycleAwareFeature
import org.mozilla.fenix.components.AppStore import org.mozilla.fenix.components.AppStore
import org.mozilla.fenix.components.appstate.AppAction import org.mozilla.fenix.components.appstate.AppAction
import org.mozilla.fenix.components.bookmarks.BookmarksUseCase 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 * View-bound feature that retrieves a list of recently added [BookmarkNode]s and dispatches
* updates to the [AppStore]. * updates to the [AppStore].
* *
* @param appStore the [AppStore] * @property appStore the [AppStore] that holds the state of the [HomeFragment].
* @param bookmarksUseCase the [BookmarksUseCase] for retrieving the list of recently saved * @property bookmarksUseCase the [BookmarksUseCase] for retrieving the list of recently saved
* bookmarks from storage. * bookmarks from storage.
* @param scope the [CoroutineScope] used to fetch the bookmarks list * @property scope the [CoroutineScope] used to fetch the bookmarks list
* @param ioDispatcher the [CoroutineDispatcher] for performing read/write operations. * @property ioDispatcher the [CoroutineDispatcher] for performing read/write operations.
*/ */
class RecentBookmarksFeature( class RecentBookmarksFeature(
private val appStore: AppStore, private val appStore: AppStore,
@ -48,9 +49,9 @@ class RecentBookmarksFeature(
/** /**
* A bookmark that was recently added. * A bookmark that was recently added.
* *
* @param title The title of the bookmark. * @property title The title of the bookmark.
* @param url The url of the bookmark. * @property url The url of the bookmark.
* @param previewImageUrl A preview image of the page (a.k.a. the hero image), if available. * @property previewImageUrl A preview image of the page (a.k.a. the hero image), if available.
*/ */
data class RecentBookmark( data class RecentBookmark(
val title: String? = null, 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. * View holder for the recent bookmarks header and "Show all" button.
* *
* @param composeView [ComposeView] which will be populated with Jetpack Compose UI content. * @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( class RecentBookmarksHeaderViewHolder(
composeView: ComposeView, 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. * 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 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 syncStore Store to observe for changes to Sync and account status.
* @property storage Storage layer for synced tabs. * @property storage Storage layer for synced tabs.
@ -224,10 +225,11 @@ sealed class RecentSyncedTabState {
/** /**
* A tab that was recently viewed on a synced device. * A tab that was recently viewed on a synced device.
* *
* @param deviceDisplayName The device the tab was viewed on. * @property deviceDisplayName The device the tab was viewed on.
* @param title The title of the tab. * @property deviceType The type of a device the tab was viewed on - mobile, desktop.
* @param url The url of the tab. * @property title The title of the tab.
* @param previewImageUrl The url used to retrieve the preview image 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( data class RecentSyncedTab(
val deviceDisplayName: String, val deviceDisplayName: String,
@ -240,8 +242,8 @@ data class RecentSyncedTab(
/** /**
* Class representing a tab from a synced device. * Class representing a tab from a synced device.
* *
* @param device The synced [Device]. * @property device The synced [Device].
* @param tab The tab from the synced device. * @property tab The tab from the synced device.
*/ */
private data class SyncedDeviceTab( private data class SyncedDeviceTab(
val device: Device, val device: Device,

@ -10,6 +10,7 @@ import org.mozilla.fenix.GleanMetrics.RecentSyncedTabs
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.components.AppStore import org.mozilla.fenix.components.AppStore
import org.mozilla.fenix.components.appstate.AppAction import org.mozilla.fenix.components.appstate.AppAction
import org.mozilla.fenix.home.HomeFragment
import org.mozilla.fenix.home.HomeFragmentDirections import org.mozilla.fenix.home.HomeFragmentDirections
import org.mozilla.fenix.home.recentsyncedtabs.RecentSyncedTab import org.mozilla.fenix.home.recentsyncedtabs.RecentSyncedTab
import org.mozilla.fenix.home.recentsyncedtabs.interactor.RecentSyncedTabInteractor 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 tabsUseCase Use cases to open the synced tab when clicked.
* @property navController [NavController] to navigate to synced tabs tray. * @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( class DefaultRecentSyncedTabController(
private val tabsUseCase: TabsUseCases, private val tabsUseCase: TabsUseCases,

@ -23,7 +23,8 @@ import org.mozilla.fenix.wallpapers.WallpaperState
* View holder for a recent synced tab item. * View holder for a recent synced tab item.
* *
* @param composeView [ComposeView] which will be populated with Jetpack Compose UI content. * @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. * recent synced tab user interactions.
*/ */
class RecentSyncedTabViewHolder( class RecentSyncedTabViewHolder(

@ -41,7 +41,7 @@ sealed class RecentTab {
/** /**
* A tab that was recently viewed * A tab that was recently viewed
* *
* @param state Recently viewed [TabSessionState] * @property state Recently viewed [TabSessionState]
*/ */
data class Tab(val state: TabSessionState) : RecentTab() 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.R
import org.mozilla.fenix.components.AppStore import org.mozilla.fenix.components.AppStore
import org.mozilla.fenix.components.appstate.AppAction import org.mozilla.fenix.components.appstate.AppAction
import org.mozilla.fenix.home.HomeFragment
import org.mozilla.fenix.home.HomeFragmentDirections import org.mozilla.fenix.home.HomeFragmentDirections
import org.mozilla.fenix.home.recenttabs.RecentTab import org.mozilla.fenix.home.recenttabs.RecentTab
import org.mozilla.fenix.home.recenttabs.interactor.RecentTabInteractor import org.mozilla.fenix.home.recenttabs.interactor.RecentTabInteractor
@ -39,8 +40,9 @@ interface RecentTabController {
/** /**
* The default implementation of [RecentTabController]. * The default implementation of [RecentTabController].
* *
* @param selectTabUseCase [SelectTabUseCase] used selecting a tab. * @property selectTabUseCase [SelectTabUseCase] used selecting a tab.
* @param navController [NavController] used for navigation. * @property navController [NavController] used for navigation.
* @property appStore The [AppStore] that holds the state of the [HomeFragment].
*/ */
class DefaultRecentTabsController( class DefaultRecentTabsController(
private val selectTabUseCase: SelectTabUseCase, private val selectTabUseCase: SelectTabUseCase,

@ -20,9 +20,9 @@ import org.mozilla.fenix.wallpapers.WallpaperState
* View holder for a recent tab item. * View holder for a recent tab item.
* *
* @param composeView [ComposeView] which will be populated with Jetpack Compose UI content. * @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. * tab interactions.
* recent synced tab interactions.
*/ */
class RecentTabViewHolder( class RecentTabViewHolder(
composeView: ComposeView, composeView: ComposeView,

@ -72,6 +72,7 @@ private const val THUMBNAIL_SIZE = 108
* *
* @param recentTabs List of [RecentTab] to display. * @param recentTabs List of [RecentTab] to display.
* @param menuItems List of [RecentTabMenuItem] shown long clicking a [RecentTab]. * @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 backgroundColor The background [Color] of each item.
* @param onRecentTabClick Invoked when the user clicks on a recent tab. * @param onRecentTabClick Invoked when the user clicks on a recent tab.
*/ */
@ -113,6 +114,8 @@ fun RecentTabs(
* A recent tab item. * A recent tab item.
* *
* @param tab [RecentTab.Tab] that was recently viewed. * @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 backgroundColor The background [Color] of the item.
* @param onRecentTabClick Invoked when the user clicks on a recent tab. * @param onRecentTabClick Invoked when the user clicks on a recent tab.
*/ */
@ -217,6 +220,7 @@ private fun RecentTabItem(
* A recent tab image. * A recent tab image.
* *
* @param tab [RecentTab] that was recently viewed. * @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 modifier [Modifier] used to draw the image content.
* @param contentScale [ContentScale] used to draw 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. * 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( class RecentTabsHeaderViewHolder(
composeView: ComposeView, composeView: ComposeView,

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

@ -14,8 +14,8 @@ sealed class RecentlyVisitedItem {
/** /**
* A history highlight - previously accessed webpage of particular importance. * A history highlight - previously accessed webpage of particular importance.
* *
* @param title The title of the webpage. May be [url] if the title is unavailable. * @property title The title of the webpage. May be [url] if the title is unavailable.
* @param url The URL of the webpage. * @property url The URL of the webpage.
*/ */
data class RecentHistoryHighlight( data class RecentHistoryHighlight(
val title: String, 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. * 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 * @property interactor [RecentVisitsInteractor] which will have delegated to all user
* interactions. * interactions.
*/ */

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

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

@ -83,7 +83,7 @@ interface CollectionInteractor {
* @param collection The collection of tabs that will be modified. * @param collection The collection of tabs that will be modified.
* @param tab The tab to remove from the tab collection. * @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 * 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) controller.handleCollectionOpenTabsTapped(collection)
} }
override fun onCollectionRemoveTab(collection: TabCollection, tab: Tab, wasSwiped: Boolean) { override fun onCollectionRemoveTab(collection: TabCollection, tab: Tab) {
controller.handleCollectionRemoveTab(collection, tab, wasSwiped) controller.handleCollectionRemoveTab(collection, tab)
} }
override fun onCollectionShareTabsClicked(collection: TabCollection) { 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 composeView [ComposeView] which will be populated with Jetpack Compose UI content.
* @param viewLifecycleOwner [LifecycleOwner] life cycle owner for the view. * @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( class PrivateBrowsingDescriptionViewHolder(
composeView: ComposeView, composeView: ComposeView,

@ -27,6 +27,8 @@ import org.mozilla.fenix.wallpapers.WallpaperState
/** /**
* View holder for the Nimbus Message Card. * 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 * @property interactor [SessionControlInteractor] which will have delegated to all user
* interactions. * 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 onSettingsClicked Invoked when the user clicks on the "Settings" menu item.
* @param onSponsorPrivacyClicked Invoked when the user clicks on the "Our sponsors & your privacy" * @param onSponsorPrivacyClicked Invoked when the user clicks on the "Our sponsors & your privacy"
* menu item. * menu item.
* @param onTopSitesItemBound Invoked during the composition of a top site item.
*/ */
@OptIn(ExperimentalFoundationApi::class, ExperimentalComposeUiApi::class) @OptIn(ExperimentalFoundationApi::class, ExperimentalComposeUiApi::class)
@Composable @Composable
@ -242,6 +243,7 @@ data class TopSiteColors(
* @param topSiteColors The color set defined by [TopSiteColors] used to style a top site. * @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 onTopSiteClick Invoked when the user clicks on a top site.
* @param onTopSiteLongClick Invoked when the user long 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") @Suppress("LongParameterList", "LongMethod")
@OptIn(ExperimentalFoundationApi::class, ExperimentalComposeUiApi::class) @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 composeView [ComposeView] which will be populated with Jetpack Compose UI content.
* @param viewLifecycleOwner [LifecycleOwner] to which this Composable will be tied to. * @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. * interactions.
*/ */
class TopSitesViewHolder( class TopSitesViewHolder(

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

@ -50,9 +50,12 @@ sealed class DownloadFragmentAction : Action {
} }
/** /**
* The state for the Download Screen * The state of the Download screen.
* @property items List of DownloadItem to display *
* @property mode Current Mode of Download * @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( data class DownloadFragmentState(
val items: List<DownloadItem>, val items: List<DownloadItem>,
@ -64,7 +67,7 @@ data class DownloadFragmentState(
open val selectedItems = emptySet<DownloadItem>() open val selectedItems = emptySet<DownloadItem>()
object Normal : Mode() 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 items List of History to display
* @property mode Current Mode of History * @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( data class HistoryFragmentState(
val items: List<History>, 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.HistoryFragmentAction
import org.mozilla.fenix.library.history.HistoryFragmentDirections import org.mozilla.fenix.library.history.HistoryFragmentDirections
import org.mozilla.fenix.library.history.HistoryFragmentState 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 * 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 navController [NavController] for handling navigation events
* @property openToBrowser Callback to open history items in a browser window. * @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( class HistoryNavigationMiddleware(
private val navController: NavController, 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.Action
import mozilla.components.lib.state.State import mozilla.components.lib.state.State
import mozilla.components.lib.state.Store 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.History
import org.mozilla.fenix.library.history.PendingDeletionHistory import org.mozilla.fenix.library.history.PendingDeletionHistory
import org.mozilla.fenix.library.historymetadata.view.HistoryMetadataGroupView
/** /**
* The [Store] for holding the [HistoryMetadataGroupFragmentState] and applying * 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]. * [HistoryMetadataGroupFragmentState] through the [historyStateReducer].
*/ */
sealed class HistoryMetadataGroupFragmentAction : Action { sealed class HistoryMetadataGroupFragmentAction : Action {
@ -31,7 +33,7 @@ sealed class HistoryMetadataGroupFragmentAction : Action {
data class Deselect(val item: History.Metadata) : HistoryMetadataGroupFragmentAction() 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. * to the [HistoryMetadataGroupFragmentStore], to be hidden from the UI.
*/ */
data class UpdatePendingDeletionItems(val pendingDeletionItems: Set<PendingDeletionHistory>) : data class UpdatePendingDeletionItems(val pendingDeletionItems: Set<PendingDeletionHistory>) :
@ -41,7 +43,7 @@ sealed class HistoryMetadataGroupFragmentAction : Action {
object DeleteAll : HistoryMetadataGroupFragmentAction() 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() data class ChangeEmptyState(val isEmpty: Boolean) : HistoryMetadataGroupFragmentAction()
} }
@ -50,6 +52,8 @@ sealed class HistoryMetadataGroupFragmentAction : Action {
* The state for [HistoryMetadataGroupFragment]. * The state for [HistoryMetadataGroupFragment].
* *
* @property items The list of [History.Metadata] to display. * @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( data class HistoryMetadataGroupFragmentState(
val items: List<History.Metadata>, val items: List<History.Metadata>,

@ -41,7 +41,9 @@ class HistoryMetadataGroupItemViewHolder(
/** /**
* Displays the data of the given history record. * 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) { fun bind(item: History.Metadata, isPendingDeletion: Boolean) {
binding.historyLayout.isVisible = !isPendingDeletion binding.historyLayout.isVisible = !isPendingDeletion

@ -30,8 +30,10 @@ sealed class RecentlyClosedFragmentAction : Action {
} }
/** /**
* The state for the Recently Closed Screen * The state for the Recently Closed Screen.
* @property items List of recently closed tabs to display *
* @property items List of recently closed tabs to display.
* @property selectedTabs List of selected recently closed tabs.
*/ */
data class RecentlyClosedFragmentState( data class RecentlyClosedFragmentState(
val items: List<TabState> = emptyList(), 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. * 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. * if it is null means there is not message that is eligible to be shown to users.
*/ */
data class MessagingState( data class MessagingState(

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

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

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

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

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

@ -21,7 +21,8 @@ data class OnboardingPageUiData(
) { ) {
/** /**
* Model for different types of Onboarding Pages. * 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( enum class Type(
val telemetryId: String, val telemetryId: String,

@ -72,35 +72,37 @@ sealed class SearchEngineSource {
/** /**
* The state for the Search Screen * The state for the Search Screen
* *
* @property query The current search query string * @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 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 * @property searchTerms The search terms used to search previously in this tab (if this fragment is shown
* for an already existing tab) * for an already existing tab).
* @property searchEngineSource The current selected search engine with the context of how it was selected * @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 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 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 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 showSearchShortcuts Whether or not to show search shortcuts in the AwesomeBar.
* @property areShortcutsAvailable Whether or not there are >=2 search engines installed * @property areShortcutsAvailable Whether or not there are >=2 search engines installed
* so to know to present users with certain options or not. * so to know to present users with certain options or not.
* @property showSearchShortcutsSetting Whether the setting for showing search shortcuts is enabled * @property showSearchShortcutsSetting Whether the setting for showing search shortcuts is enabled
* or disabled. * 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 * @property showSearchTermHistory Whether or not to show suggestions based on the previously used search terms
* with the currently selected search engine. * with the currently selected search engine.
* @property showHistorySuggestionsForCurrentEngine Whether or not to show history suggestions for only * @property showHistorySuggestionsForCurrentEngine Whether or not to show history suggestions for only
* the current search engine. * 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 * @property showBookmarksSuggestionsForCurrentEngine Whether or not to show bookmarks suggestions for only
* the current search engine. * 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 * @property showSyncedTabsSuggestionsForCurrentEngine Whether or not to show synced tabs suggestions for only
* the current search engine. * 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 * @property showSessionSuggestionsForCurrentEngine Whether or not to show local tabs suggestions for only
* the current search engine. * the current search engine.
* @property showAllSessionSuggestions Whether or not to show the session suggestion in the AwesomeBar * @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 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. * @property clipboardHasUrl Indicates if the clipboard contains an URL.
*/ */
data class SearchFragmentState( data class SearchFragmentState(

@ -16,6 +16,7 @@ interface AwesomeBarInteractor {
/** /**
* Called whenever a suggestion containing a URL is tapped * Called whenever a suggestion containing a URL is tapped
* @param url the url the suggestion was providing * @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()) fun onUrlTapped(url: String, flags: LoadUrlFlags = LoadUrlFlags.none())

@ -43,7 +43,7 @@ class SearchSelectorMenu(
/** /**
* The menu item to display a search engine. * 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() 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]. * A [Toolbar.Action] implementation that shows a [SearchSelector].
* *
* @property store [SearchDialogFragmentStore] containing the complete state of the search dialog. * @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 * @property menu An instance of [SearchSelectorMenu] to display a popup menu for the search
* selections. * selections.
*/ */

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

@ -11,19 +11,21 @@ import org.mozilla.fenix.ext.nav
interface AccountSettingsUserActions { interface AccountSettingsUserActions {
/** /**
* Called whenever the "Sync now" button is tapped * Called whenever the "Sync now" button is tapped.
*/ */
fun onSyncNow() fun onSyncNow()
/** /**
* Called whenever user sets a new device name * 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 * @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 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() fun onSignOut()
} }

@ -11,7 +11,7 @@ interface SyncInteractor {
/** /**
* Interactor for [TurnOnSyncFragment]. * Interactor for [TurnOnSyncFragment].
* *
* @param syncController Handles the interactions * @property syncController Handles the interactions
*/ */
class DefaultSyncInteractor(private val syncController: DefaultSyncController) : SyncInteractor { class DefaultSyncInteractor(private val syncController: DefaultSyncController) : SyncInteractor {
override fun onCameraPermissionsNeeded() { 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 countryCode The country code used to lookup the address data. Should match desktop entries.
* @property displayName The name to display when selected. * @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) @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
internal data class Country( internal data class Country(

@ -43,10 +43,10 @@ interface AddressEditorController {
/** /**
* The default implementation of [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. * addresses.
* @param lifecycleScope [CoroutineScope] scope to launch coroutines. * @property lifecycleScope [CoroutineScope] scope to launch coroutines.
* @param navController [NavController] used for navigation. * @property navController [NavController] used for navigation.
*/ */
class DefaultAddressEditorController( class DefaultAddressEditorController(
private val storage: AutofillCreditCardsAddressesStorage, private val storage: AutofillCreditCardsAddressesStorage,

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

@ -39,6 +39,7 @@ interface AddressEditorInteractor {
* Updates the provided address in the autofill storage. Called when a user * Updates the provided address in the autofill storage. Called when a user
* taps on the update menu item or "Update" button. * 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. * @param addressFields A [UpdatableAddressFields] record to add.
*/ */
fun onUpdateAddress(guid: String, addressFields: UpdatableAddressFields) fun onUpdateAddress(guid: String, addressFields: UpdatableAddressFields)
@ -47,7 +48,7 @@ interface AddressEditorInteractor {
/** /**
* The default implementation of [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. * user interactions.
*/ */
class DefaultAddressEditorInteractor( class DefaultAddressEditorInteractor(

@ -30,7 +30,7 @@ interface AddressManagementInteractor {
/** /**
* The default implementation of [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. * all user interactions.
*/ */
class DefaultAddressManagementInteractor( class DefaultAddressManagementInteractor(

@ -31,10 +31,10 @@ import org.mozilla.fenix.settings.address.toCountryCode
/** /**
* An address editor for adding or updating an address. * An address editor for adding or updating an address.
* *
* @param binding The binding used to display the view. * @property binding The binding used to display the view.
* @param interactor [AddressEditorInteractor] used to respond to any user interactions. * @property 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. * @property 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 address An [Address] to edit.
*/ */
class AddressEditorView( class AddressEditorView(
private val binding: FragmentAddressEditorBinding, private val binding: FragmentAddressEditorBinding,

@ -41,14 +41,14 @@ sealed class AutofillAction : Action {
/** /**
* Updates the list of addresses with the provided [addresses]. * 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() data class UpdateAddresses(val addresses: List<Address>) : AutofillAction()
/** /**
* Updates the list of credit cards with the provided [creditCards]. * 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() 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. * A [LifecycleAwareFeature] for the Android Biometric API to prompt for user authentication.
* *
* @param context Android context. * @property context Android context.
* @param fragment The fragment on which this feature will live. * @property fragment The fragment on which this feature will live.
* @param onAuthSuccess A success callback. * @property onAuthFailure A failure callback if authentication failed.
* @param onAuthFailure A failure callback if authentication failed. * @property onAuthSuccess A success callback.
*/ */
class BiometricPromptFeature( class BiometricPromptFeature(
private val context: Context, private val context: Context,

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

@ -48,12 +48,12 @@ interface CreditCardEditorController {
/** /**
* The default implementation of [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. * credit cards.
* @param lifecycleScope [CoroutineScope] scope to launch coroutines. * @property lifecycleScope [CoroutineScope] scope to launch coroutines.
* @param navController [NavController] used for navigation. * @property navController [NavController] used for navigation.
* @param ioDispatcher [CoroutineDispatcher] used for executing async tasks. Defaults to [Dispatchers.IO]. * @property ioDispatcher [CoroutineDispatcher] used for executing async tasks. Defaults to [Dispatchers.IO].
* @param showDeleteDialog [DialogInterface.OnClickListener] used to display a confirmation dialog * @property showDeleteDialog [DialogInterface.OnClickListener] used to display a confirmation dialog
* before removing credit card. * before removing credit card.
*/ */
class DefaultCreditCardEditorController( class DefaultCreditCardEditorController(

@ -48,7 +48,7 @@ interface CreditCardEditorInteractor {
/** /**
* The default implementation of [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. * user interactions.
*/ */
class DefaultCreditCardEditorInteractor( class DefaultCreditCardEditorInteractor(

@ -32,7 +32,7 @@ interface CreditCardsManagementInteractor {
/** /**
* The default implementation of [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. * all user interactions.
*/ */
class DefaultCreditCardsManagementInteractor( class DefaultCreditCardsManagementInteractor(

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

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

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

@ -36,9 +36,13 @@ interface ClearSiteDataViewInteractor {
/** /**
* MVI View to access the dialog to clear site cookies and data. * MVI View to access the dialog to clear site cookies and data.
* *
* @param containerView [ViewGroup] in which this View will inflate itself. * @property context An Android [Context].
* @param interactor [TrackingProtectionInteractor] which will have delegated to all user * @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. * interactions.
* @property navController [NavController] used for navigation.
*/ */
class ClearSiteDataView( class ClearSiteDataView(
val context: Context, 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, * Implements callbacks for each of [ConnectionPanelDialogFragment]'s Views declared possible user interactions,
* delegates all such user events to the [ConnectionDetailsController]. * 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. * it expected to contain all business logic for how to act in response.
*/ */
class ConnectionDetailsInteractor( class ConnectionDetailsInteractor(

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

Loading…
Cancel
Save