commit 1f737ca8c862353db438a62f85630d67028faf53 parent d235b12a77a8170992b621d981623e17c5c1fa12 Author: Matthew Tighe <matthewdtighe@gmail.com> Date: Wed, 12 Nov 2025 23:31:20 +0000 Bug 1997640 - Introduce CognitiveComplexMethod as a detekt rule and forbid it r=android-reviewers,sfamisa This patch does the following main things: 1. Introduces `CognitiveComplexMethod` to our detekt configs 2. Suppresses all failures of it, so that can track the number of suppressions 3. Regenerates the baseline 4. Forbids new usages of `CognitiveComplexMethod` 5. Replaces old usages of `ComplexMethod` with `CognitiveComplexMethod` or `CyclomaticComplexMethod` as appropriate All the new suppressions were done with a script that I generated. I double-checked all the changes, but it might be worth a second pair of eyes. Probably easier to view by fetching and `git diff`ing. Each change is small, there's just a ton of files touched so Phab is complaining. Differential Revision: https://phabricator.services.mozilla.com/D271859 Diffstat:
136 files changed, 317 insertions(+), 589 deletions(-)
diff --git a/mobile/android/android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/GeckoEngineSession.kt b/mobile/android/android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/GeckoEngineSession.kt @@ -870,6 +870,7 @@ class GeckoEngineSession( /** * NavigationDelegate implementation for forwarding callbacks to observers of the session. */ + @Suppress("CognitiveComplexMethod") private fun createNavigationDelegate() = object : GeckoSession.NavigationDelegate { override fun onLocationChange( session: GeckoSession, @@ -1234,7 +1235,7 @@ class GeckoEngineSession( } } - @Suppress("NestedBlockDepth") + @Suppress("NestedBlockDepth", "CognitiveComplexMethod") internal fun createContentDelegate() = object : GeckoSession.ContentDelegate { override fun onCookieBannerDetected(session: GeckoSession) { notifyObservers { onCookieBannerChange(CookieBannerHandlingStatus.DETECTED) } diff --git a/mobile/android/android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/NestedGeckoView.kt b/mobile/android/android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/NestedGeckoView.kt @@ -69,6 +69,7 @@ open class NestedGeckoView(context: Context) : GeckoView(context), NestedScrolli } @SuppressLint("ClickableViewAccessibility") + @Suppress("CognitiveComplexMethod") override fun onTouchEvent(ev: MotionEvent): Boolean { val event = MotionEvent.obtain(ev) val action = ev.actionMasked @@ -155,6 +156,7 @@ open class NestedGeckoView(context: Context) : GeckoView(context), NestedScrolli } @SuppressLint("WrongThread") // Lint complains startNestedScroll() needs to be called on the main thread + @Suppress("CognitiveComplexMethod") @VisibleForTesting internal fun updateInputResult(event: MotionEvent) { val eventAction = event.actionMasked diff --git a/mobile/android/android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/permission/GeckoSitePermissionsStorage.kt b/mobile/android/android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/permission/GeckoSitePermissionsStorage.kt @@ -149,7 +149,7 @@ class GeckoSitePermissionsStorage( * on the [geckoStorage] otherwise the same [SitePermissions]. */ @VisibleForTesting - @Suppress("LongMethod") + @Suppress("LongMethod", "CognitiveComplexMethod") internal suspend fun updateGeckoPermissionIfNeeded( userSitePermissions: SitePermissions, permissionRequest: PermissionRequest? = null, @@ -271,7 +271,7 @@ class GeckoSitePermissionsStorage( * @return a [SitePermissions] containing the values from the on disk and gecko permission. */ @VisibleForTesting - @Suppress("ComplexMethod") + @Suppress("CognitiveComplexMethod", "CyclomaticComplexMethod") internal fun mergePermissions( onDiskPermissions: SitePermissions?, geckoPermissionByType: Map<Int, List<ContentPermission>>, diff --git a/mobile/android/android-components/components/browser/engine-system/src/main/java/mozilla/components/browser/engine/system/SystemEngineView.kt b/mobile/android/android-components/components/browser/engine-system/src/main/java/mozilla/components/browser/engine/system/SystemEngineView.kt @@ -144,7 +144,7 @@ class SystemEngineView @JvmOverloads constructor( return webView } - @Suppress("NestedBlockDepth") + @Suppress("NestedBlockDepth", "CognitiveComplexMethod") private fun createWebViewClient() = object : WebViewClient() { override fun doUpdateVisitedHistory(view: WebView, url: String, isReload: Boolean) { // TODO private browsing not supported for SystemEngine diff --git a/mobile/android/android-components/components/browser/engine-system/src/main/java/mozilla/components/browser/engine/system/matcher/Safelist.kt b/mobile/android/android-components/components/browser/engine-system/src/main/java/mozilla/components/browser/engine/system/matcher/Safelist.kt @@ -90,7 +90,7 @@ internal class Safelist { * @param reader a JsonReader * @return the safe list. */ - @Suppress("NestedBlockDepth") + @Suppress("NestedBlockDepth", "CognitiveComplexMethod") fun fromJson(reader: JsonReader): Safelist { val safelist = Safelist() reader.beginObject() diff --git a/mobile/android/android-components/components/browser/engine-system/src/main/java/mozilla/components/browser/engine/system/matcher/UrlMatcher.kt b/mobile/android/android-components/components/browser/engine-system/src/main/java/mozilla/components/browser/engine/system/matcher/UrlMatcher.kt @@ -252,7 +252,7 @@ class UrlMatcher { return categoryMap } - @Suppress("ThrowsCount", "NestedBlockDepth") + @Suppress("ThrowsCount", "NestedBlockDepth", "CognitiveComplexMethod") private fun extractCategories(reader: JsonReader, categoryMap: MutableMap<String, Trie>, override: Boolean) { reader.beginObject() diff --git a/mobile/android/android-components/components/browser/icons/src/main/java/mozilla/components/browser/icons/decoder/ico/IconDirectoryEntry.kt b/mobile/android/android-components/components/browser/icons/src/main/java/mozilla/components/browser/icons/decoder/ico/IconDirectoryEntry.kt @@ -138,7 +138,7 @@ internal data class IconDirectoryEntry( * * The Icon Directory consists of n-many Icon Directory Entries in sequence, with no gaps. */ -@Suppress("MagicNumber", "ReturnCount", "ComplexMethod", "NestedBlockDepth", "ComplexCondition") +@Suppress("MagicNumber", "ReturnCount", "CognitiveComplexMethod", "NestedBlockDepth", "ComplexCondition", "CyclomaticComplexMethod") internal fun decodeDirectoryEntries(data: ByteArray, maxSize: Int): List<IconDirectoryEntry> { // Fail if we don't have enough space for the header. if (data.size < HEADER_LENGTH_BYTES) { diff --git a/mobile/android/android-components/components/browser/icons/src/main/java/mozilla/components/browser/icons/loader/HttpIconLoader.kt b/mobile/android/android-components/components/browser/icons/src/main/java/mozilla/components/browser/icons/loader/HttpIconLoader.kt @@ -83,6 +83,7 @@ open class HttpIconLoader( return resource.url.sanitizeURL().toUri().isHttpOrHttps && !failureCache.hasFailedRecently(resource.url) } + @Suppress("CognitiveComplexMethod") private fun Response.toIconLoaderResult(): IconLoader.Result { // Compare the Response Content-Length header with the available memory on device val contentLengthHeader = headers[Headers.Names.CONTENT_LENGTH] diff --git a/mobile/android/android-components/components/browser/menu/src/main/java/mozilla/components/browser/menu/view/ExpandableLayout.kt b/mobile/android/android-components/components/browser/menu/src/main/java/mozilla/components/browser/menu/view/ExpandableLayout.kt @@ -125,7 +125,7 @@ internal class ExpandableLayout private constructor(context: Context) : FrameLay // // Also if this view is collapsed (full height but translated) we want to treat any touch in the // invisible space as a dismiss event. - @Suppress("ReturnCount") + @Suppress("ReturnCount", "CognitiveComplexMethod") override fun onInterceptTouchEvent(ev: MotionEvent?): Boolean { if (shouldInterceptTouches()) { return when (ev?.actionMasked) { @@ -309,7 +309,7 @@ internal class ExpandableLayout private constructor(context: Context) : FrameLay // That distance will be the collapsed height of the ViewGroup used when this will be first shown on the screen. // Users will be able to afterwards expand the ViewGroup to the full height. @VisibleForTesting - @Suppress("ReturnCount") + @Suppress("ReturnCount", "CognitiveComplexMethod") internal fun calculateCollapsedHeight(): Int { val listView = (wrappedView.getChildAt(0) as RecyclerView) // Reconcile adapter positions with listView children positions. diff --git a/mobile/android/android-components/components/browser/menu2/src/main/java/mozilla/components/browser/menu2/ext/BrowserMenuPositioning.kt b/mobile/android/android-components/components/browser/menu2/src/main/java/mozilla/components/browser/menu2/ext/BrowserMenuPositioning.kt @@ -18,7 +18,7 @@ import kotlin.math.roundToInt const val HALF_MENU_ITEM = 0.5 -@Suppress("ComplexMethod") +@Suppress("CyclomaticComplexMethod") internal fun inferMenuPositioningData( containerView: View, anchor: View, diff --git a/mobile/android/android-components/components/browser/session-storage/src/main/java/mozilla/components/browser/session/storage/serialize/BrowserStateReader.kt b/mobile/android/android-components/components/browser/session-storage/src/main/java/mozilla/components/browser/session/storage/serialize/BrowserStateReader.kt @@ -70,7 +70,6 @@ class BrowserStateReader { } } -@Suppress("ComplexMethod") private fun JsonReader.browsingSession( engine: Engine, restoreSessionId: Boolean = true, @@ -164,7 +163,7 @@ private fun JsonReader.tab( ) } -@Suppress("ComplexMethod", "LongMethod") +@Suppress("LongMethod", "CyclomaticComplexMethod") private fun JsonReader.tabSession(): RecoverableTab { var id: String? = null var parentId: String? = null diff --git a/mobile/android/android-components/components/browser/state/src/main/java/mozilla/components/browser/state/engine/middleware/TranslationsMiddleware.kt b/mobile/android/android-components/components/browser/state/src/main/java/mozilla/components/browser/state/engine/middleware/TranslationsMiddleware.kt @@ -47,7 +47,7 @@ class TranslationsMiddleware( ) : Middleware<BrowserState, BrowserAction> { private val logger = Logger("TranslationsMiddleware") - @Suppress("LongMethod", "CyclomaticComplexMethod") + @Suppress("LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod") override fun invoke( context: MiddlewareContext<BrowserState, BrowserAction>, next: (BrowserAction) -> Unit, @@ -959,6 +959,7 @@ class TranslationsMiddleware( * @param context The context used to update the language models. * @param options The change and specified language models that should change state. */ + @Suppress("CognitiveComplexMethod") private fun updateLanguageModel( context: MiddlewareContext<BrowserState, BrowserAction>, options: ModelManagementOptions, diff --git a/mobile/android/android-components/components/browser/state/src/main/java/mozilla/components/browser/state/reducer/ContentStateReducer.kt b/mobile/android/android-components/components/browser/state/src/main/java/mozilla/components/browser/state/reducer/ContentStateReducer.kt @@ -24,7 +24,7 @@ internal object ContentStateReducer { /** * [ContentAction] Reducer function for modifying a specific [ContentState] of a [SessionState]. */ - @Suppress("LongMethod", "ThrowsCount") + @Suppress("LongMethod", "ThrowsCount", "CognitiveComplexMethod") fun reduce(state: BrowserState, action: ContentAction): BrowserState { return when (action) { is ContentAction.RemoveIconAction -> updateContentState(state, action.sessionId) { diff --git a/mobile/android/android-components/components/browser/state/src/main/java/mozilla/components/browser/state/reducer/TabListReducer.kt b/mobile/android/android-components/components/browser/state/src/main/java/mozilla/components/browser/state/reducer/TabListReducer.kt @@ -17,7 +17,7 @@ internal object TabListReducer { /** * [TabListAction] Reducer function for modifying the list of [TabSessionState] objects in [BrowserState.tabs]. */ - @Suppress("LongMethod") + @Suppress("LongMethod", "CognitiveComplexMethod") fun reduce(state: BrowserState, action: TabListAction): BrowserState { return when (action) { is TabListAction.AddTabAction -> { diff --git a/mobile/android/android-components/components/browser/state/src/main/java/mozilla/components/browser/state/reducer/TranslationsStateReducer.kt b/mobile/android/android-components/components/browser/state/src/main/java/mozilla/components/browser/state/reducer/TranslationsStateReducer.kt @@ -23,7 +23,7 @@ internal object TranslationsStateReducer { /** * Reducer for [BrowserState.translationEngine] and [SessionState.translationsState] */ - @Suppress("LongMethod") + @Suppress("LongMethod", "CognitiveComplexMethod") fun reduce(state: BrowserState, action: TranslationsAction): BrowserState = when (action) { TranslationsAction.InitTranslationsBrowserState -> { state.copy(translationsInitialized = true) diff --git a/mobile/android/android-components/components/browser/storage-sync/src/main/java/mozilla/components/browser/storage/sync/RemoteTabsStorage.kt b/mobile/android/android-components/components/browser/storage-sync/src/main/java/mozilla/components/browser/storage/sync/RemoteTabsStorage.kt @@ -156,6 +156,7 @@ class RemoteTabsCommandQueue( } } + @Suppress("CognitiveComplexMethod") override suspend fun flush(): DeviceCommandQueue.FlushResult = withContext(scope.coroutineContext) { api.getUnsentCommands() .groupBy { diff --git a/mobile/android/android-components/components/compose/base/src/main/java/mozilla/components/compose/base/menu/CustomPlacementPopup.kt b/mobile/android/android-components/components/compose/base/src/main/java/mozilla/components/compose/base/menu/CustomPlacementPopup.kt @@ -352,7 +352,7 @@ private fun computePopupYCoord( * @param contentOffset The vertical offset of the popup from the anchor. * @param layoutDirection The layout direction of the anchor layout. */ -@Suppress("ComplexMethod", "ReturnCount") +@Suppress("CyclomaticComplexMethod", "ReturnCount", "CognitiveComplexMethod") private fun computePopupXCoord( wantedAlignment: Alignment.Horizontal, windowSize: IntSize, diff --git a/mobile/android/android-components/components/compose/base/src/main/java/mozilla/components/compose/base/progressbar/AnimatedProgressBar.kt b/mobile/android/android-components/components/compose/base/src/main/java/mozilla/components/compose/base/progressbar/AnimatedProgressBar.kt @@ -75,7 +75,7 @@ private const val LIGHTEN_TRACK_COLOR_FACTOR = 0.2f * @param progressAnimSpec The animation behavior when values change. By default the change is shown instantly. */ @Composable -@Suppress("LongMethod") +@Suppress("LongMethod", "CognitiveComplexMethod") fun AnimatedProgressBar( @IntRange(from = 0, to = 100) progress: Int, modifier: Modifier = Modifier, diff --git a/mobile/android/android-components/components/compose/base/src/main/java/mozilla/components/compose/base/textfield/TextField.kt b/mobile/android/android-components/components/compose/base/src/main/java/mozilla/components/compose/base/textfield/TextField.kt @@ -85,7 +85,7 @@ private val TrailingIconHeight = 24.dp * called. Note that this IME action may be different from what you specified in * [KeyboardOptions.imeAction]. */ -@Suppress("LongMethod") +@Suppress("LongMethod", "CognitiveComplexMethod") @Composable fun TextField( value: String, diff --git a/mobile/android/android-components/components/compose/browser-toolbar/src/main/java/mozilla/components/compose/browser/toolbar/BrowserDisplayToolbar.kt b/mobile/android/android-components/components/compose/browser-toolbar/src/main/java/mozilla/components/compose/browser/toolbar/BrowserDisplayToolbar.kt @@ -74,7 +74,7 @@ private const val LARGE_TOOLBAR_PADDING_DP = 24 * @param onInteraction Callback for handling [BrowserToolbarEvent]s on user interactions. */ @Composable -@Suppress("LongMethod", "CyclomaticComplexMethod") +@Suppress("LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod") fun BrowserDisplayToolbar( pageOrigin: PageOrigin, gravity: ToolbarGravity, diff --git a/mobile/android/android-components/components/compose/browser-toolbar/src/main/java/mozilla/components/compose/browser/toolbar/ui/ActionButton.kt b/mobile/android/android-components/components/compose/browser-toolbar/src/main/java/mozilla/components/compose/browser/toolbar/ui/ActionButton.kt @@ -49,7 +49,7 @@ import mozilla.components.ui.icons.R as iconsR * @param onInteraction Callback for handling [BrowserToolbarEvent]s on user interactions. */ @Composable -@Suppress("LongMethod", "CyclomaticComplexMethod") +@Suppress("LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod") internal fun ActionButton( icon: Drawable, contentDescription: String, diff --git a/mobile/android/android-components/components/compose/browser-toolbar/src/main/java/mozilla/components/compose/browser/toolbar/ui/InlineAutocompleteTextField.kt b/mobile/android/android-components/components/compose/browser-toolbar/src/main/java/mozilla/components/compose/browser/toolbar/ui/InlineAutocompleteTextField.kt @@ -93,7 +93,7 @@ private const val TEXT_HIGHLIGHT_COLOR = "#5C592ACB" * @param onUrlCommitted A callback for when the user commits the text via an IME action like "Go". */ @OptIn(ExperimentalComposeUiApi::class) // for InterceptPlatformTextInput -@Suppress("LongMethod", "CyclomaticComplexMethod") +@Suppress("LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod") @Composable internal fun InlineAutocompleteTextField( query: String, diff --git a/mobile/android/android-components/components/compose/cfr/src/main/java/mozilla/components/compose/cfr/CFRPopupContent.kt b/mobile/android/android-components/components/compose/cfr/src/main/java/mozilla/components/compose/cfr/CFRPopupContent.kt @@ -54,7 +54,7 @@ import mozilla.components.ui.icons.R as iconsR * @param action Optional other composable to show just below the popup text. */ @Composable -@Suppress("LongMethod") +@Suppress("LongMethod", "CognitiveComplexMethod") fun CFRPopupContent( popupBodyColors: List<Int>, showDismissButton: Boolean, diff --git a/mobile/android/android-components/components/concept/engine/src/main/java/mozilla/components/concept/engine/translate/LanguageModel.kt b/mobile/android/android-components/components/concept/engine/src/main/java/mozilla/components/concept/engine/translate/LanguageModel.kt @@ -117,6 +117,7 @@ data class LanguageModel( * @param newStatus What the new state should be based on the change. * @return The new state of the language models based on the information. */ + @Suppress("CognitiveComplexMethod") fun determineNewLanguageModelState( appLanguage: String?, currentLanguageModels: List<LanguageModel>?, diff --git a/mobile/android/android-components/components/feature/addons/src/main/java/mozilla/components/feature/addons/Addon.kt b/mobile/android/android-components/components/feature/addons/src/main/java/mozilla/components/feature/addons/Addon.kt @@ -724,7 +724,7 @@ data class Addon( return localizedSiteAccessPermissions } - @Suppress("MagicNumber", "ComplexMethod") + @Suppress("MagicNumber", "CognitiveComplexMethod", "CyclomaticComplexMethod") private fun formatURLAccessPermission( permissionsToTranslations: MutableMap<String, Int>, localizedSiteAccessPermissions: MutableList<String>, diff --git a/mobile/android/android-components/components/feature/addons/src/main/java/mozilla/components/feature/addons/amo/AMOAddonsProvider.kt b/mobile/android/android-components/components/feature/addons/src/main/java/mozilla/components/feature/addons/amo/AMOAddonsProvider.kt @@ -108,7 +108,7 @@ class AMOAddonsProvider( * a connectivity problem or a timeout. */ @Throws(IOException::class) - @Suppress("NestedBlockDepth") + @Suppress("NestedBlockDepth", "CognitiveComplexMethod") override suspend fun getFeaturedAddons( allowCache: Boolean, readTimeoutInSeconds: Long?, @@ -149,6 +149,7 @@ class AMOAddonsProvider( } } + @Suppress("CognitiveComplexMethod") private suspend fun fetchFeaturedAddons( readTimeoutInSeconds: Long?, language: String?, diff --git a/mobile/android/android-components/components/feature/addons/src/main/java/mozilla/components/feature/addons/ui/PermissionsDialogFragment.kt b/mobile/android/android-components/components/feature/addons/src/main/java/mozilla/components/feature/addons/ui/PermissionsDialogFragment.kt @@ -190,7 +190,7 @@ class PermissionsDialogFragment : AddonDialogFragment() { } @SuppressLint("InflateParams") - @Suppress("LongMethod") + @Suppress("LongMethod", "CognitiveComplexMethod") private fun createContainer(): View { val rootView = LayoutInflater.from(requireContext()).inflate( R.layout.mozac_feature_addons_fragment_dialog_addon_permissions, diff --git a/mobile/android/android-components/components/feature/app-links/src/main/java/mozilla/components/feature/app/links/AppLinksInterceptor.kt b/mobile/android/android-components/components/feature/app-links/src/main/java/mozilla/components/feature/app/links/AppLinksInterceptor.kt @@ -71,7 +71,7 @@ class AppLinksInterceptor( private val store: BrowserStore? = null, ) : RequestInterceptor { - @Suppress("ComplexMethod", "ReturnCount") + @Suppress("CognitiveComplexMethod", "ReturnCount", "CyclomaticComplexMethod") override fun onLoadRequest( engineSession: EngineSession, uri: String, diff --git a/mobile/android/android-components/components/feature/app-links/src/main/java/mozilla/components/feature/app/links/AppLinksUseCases.kt b/mobile/android/android-components/components/feature/app-links/src/main/java/mozilla/components/feature/app/links/AppLinksUseCases.kt @@ -87,11 +87,11 @@ class AppLinksUseCases( * @param includeInstallAppFallback If {true} then offer an app-link to the installed market app * if no web fallback is available. */ - @Suppress("ComplexMethod") inner class GetAppLinkRedirect internal constructor( private val includeHttpAppLinks: Boolean = false, private val includeInstallAppFallback: Boolean = false, ) { + @Suppress("CyclomaticComplexMethod") operator fun invoke(url: String): AppLinkRedirect { val urlHash = (url + includeHttpAppLinks + includeHttpAppLinks).hashCode() val currentTimeStamp = SystemClock.elapsedRealtime() diff --git a/mobile/android/android-components/components/feature/downloads/src/main/java/mozilla/components/feature/downloads/AbstractFetchDownloadService.kt b/mobile/android/android-components/components/feature/downloads/src/main/java/mozilla/components/feature/downloads/AbstractFetchDownloadService.kt @@ -90,7 +90,7 @@ import kotlin.random.Random * * To use this service, you must create a subclass in your application and add it to the manifest. */ -@Suppress("TooManyFunctions", "LargeClass", "ComplexMethod") +@Suppress("TooManyFunctions", "LargeClass") abstract class AbstractFetchDownloadService : Service() { protected abstract val store: BrowserStore @@ -363,7 +363,6 @@ abstract class AbstractFetchDownloadService : Service() { * Android rate limits notifications being sent, so we must send them on a delay so that * notifications are not dropped */ - @Suppress("ComplexMethod") private fun updateDownloadNotification() { for (download in downloadJobs.values) { if (!download.canUpdateNotification()) { continue } @@ -666,7 +665,7 @@ abstract class AbstractFetchDownloadService : Service() { } } - @Suppress("ComplexCondition", "ComplexMethod") + @Suppress("ComplexCondition") internal fun performDownload(currentDownloadJobState: DownloadJobState, useHttpClient: Boolean = false) { val download = currentDownloadJobState.state val isResumingDownload = currentDownloadJobState.currentBytesCopied > 0L diff --git a/mobile/android/android-components/components/feature/prompts/src/main/java/mozilla/components/feature/prompts/PromptFeature.kt b/mobile/android/android-components/components/feature/prompts/src/main/java/mozilla/components/feature/prompts/PromptFeature.kt @@ -436,7 +436,7 @@ class PromptFeature private constructor( * Starts observing the selected session to listen for prompt requests * and displays a dialog when needed. */ - @Suppress("ComplexMethod", "LongMethod") + @Suppress("CognitiveComplexMethod", "LongMethod", "CyclomaticComplexMethod") override fun start() { promptAbuserDetector.resetJSAlertAbuseState() @@ -632,7 +632,7 @@ class PromptFeature private constructor( } } - @Suppress("NestedBlockDepth", "CyclomaticComplexMethod") + @Suppress("NestedBlockDepth", "CyclomaticComplexMethod", "CognitiveComplexMethod") @VisibleForTesting(otherwise = PRIVATE) internal fun processPromptRequest( promptRequest: PromptRequest, @@ -755,7 +755,7 @@ class PromptFeature private constructor( * @param promptRequestUID identifier of the [PromptRequest] for which this dialog was shown. * @param value an optional value provided by the dialog as a result of confirming the action. */ - @Suppress("UNCHECKED_CAST", "ComplexMethod") + @Suppress("UNCHECKED_CAST", "CyclomaticComplexMethod") override fun onConfirm(sessionId: String, promptRequestUID: String, value: Any?) { store.consumePromptFrom(sessionId, promptRequestUID, activePrompt) { when (it) { @@ -880,7 +880,7 @@ class PromptFeature private constructor( /** * Called from on [onPromptRequested] to handle requests for showing native dialogs. */ - @Suppress("ComplexMethod", "LongMethod", "ReturnCount") + @Suppress("CognitiveComplexMethod", "LongMethod", "ReturnCount", "CyclomaticComplexMethod") @VisibleForTesting(otherwise = PRIVATE) internal fun handleDialogsRequest( promptRequest: PromptRequest, diff --git a/mobile/android/android-components/components/feature/prompts/src/main/java/mozilla/components/feature/prompts/dialog/SaveLoginDialogFragment.kt b/mobile/android/android-components/components/feature/prompts/src/main/java/mozilla/components/feature/prompts/dialog/SaveLoginDialogFragment.kt @@ -294,6 +294,7 @@ internal class SaveLoginDialogFragment : PromptDialogFragment() { * Check current state then update view state to match. */ @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) + @Suppress("CognitiveComplexMethod") fun update() = view?.toScope()?.launch(IO) { val entry = LoginEntry( origin = origin, diff --git a/mobile/android/android-components/components/feature/search/src/main/java/mozilla/components/feature/search/telemetry/Utils.kt b/mobile/android/android-components/components/feature/search/src/main/java/mozilla/components/feature/search/telemetry/Utils.kt @@ -19,7 +19,7 @@ private val validChannelSet = setOf("ts") * * @see [TrackKeyInfo.createTrackKey] */ -@Suppress("NestedBlockDepth") +@Suppress("NestedBlockDepth", "CognitiveComplexMethod") internal fun getTrackKey( provider: SearchProviderModel, uri: Uri, diff --git a/mobile/android/android-components/components/feature/sitepermissions/src/main/java/mozilla/components/feature/sitepermissions/SitePermissionsFeature.kt b/mobile/android/android-components/components/feature/sitepermissions/src/main/java/mozilla/components/feature/sitepermissions/SitePermissionsFeature.kt @@ -596,7 +596,7 @@ class SitePermissionsFeature( } @VisibleForTesting - @Suppress("ComplexMethod") + @Suppress("CyclomaticComplexMethod") internal fun updatePermissionToolbarIndicator( request: PermissionRequest, value: SitePermissions.Status, diff --git a/mobile/android/android-components/components/lib/crash/src/main/java/mozilla/components/lib/crash/service/MozillaSocorroService.kt b/mobile/android/android-components/components/lib/crash/src/main/java/mozilla/components/lib/crash/service/MozillaSocorroService.kt @@ -240,7 +240,7 @@ class MozillaSocorroService( internal fun createFormDataWriter(os: OutputStream, boundary: String, logger: Logger) = FormDataWriter(os, boundary, logger) - @Suppress("LongParameterList", "LongMethod") + @Suppress("LongParameterList", "LongMethod", "CognitiveComplexMethod") private fun sendCrashData( os: OutputStream, boundary: String, diff --git a/mobile/android/android-components/components/lib/crash/src/main/java/mozilla/components/lib/crash/store/CrashMiddleware.kt b/mobile/android/android-components/components/lib/crash/src/main/java/mozilla/components/lib/crash/store/CrashMiddleware.kt @@ -119,7 +119,7 @@ class CrashMiddleware( * @param next The next middleware in the chain. * @param action The current [CrashAction] to process in the middleware. */ - @Suppress("CyclomaticComplexMethod", "LongMethod") + @Suppress("CyclomaticComplexMethod", "LongMethod", "CognitiveComplexMethod") fun invoke( middlewareContext: Pair<() -> CrashState, (CrashAction) -> Unit>, next: (CrashAction) -> Unit, diff --git a/mobile/android/android-components/components/lib/jexl/src/main/java/mozilla/components/lib/jexl/lexer/Lexer.kt b/mobile/android/android-components/components/lib/jexl/src/main/java/mozilla/components/lib/jexl/lexer/Lexer.kt @@ -31,8 +31,8 @@ internal class Lexer(private val grammar: Grammar) { /** * Splits the JEXL expression string into a list of tokens. */ - @Suppress("ComplexMethod") @Throws(LexerException::class) + @Suppress("CyclomaticComplexMethod") fun tokenize(raw: String): List<Token> { val input = LexerInput(raw) val tokens = mutableListOf<Token>() @@ -188,7 +188,6 @@ internal class Lexer(private val grammar: Grammar) { return Token(Token.Type.IDENTIFIER, raw, raw) } - @Suppress("ComplexMethod") private fun readDigit(input: LexerInput, negate: Boolean): Token { input.mark() diff --git a/mobile/android/android-components/components/lib/jexl/src/main/java/mozilla/components/lib/jexl/parser/Parser.kt b/mobile/android/android-components/components/lib/jexl/src/main/java/mozilla/components/lib/jexl/parser/Parser.kt @@ -65,7 +65,7 @@ internal class Parser( tokens.forEach { parseToken(it) } } - @Suppress("ThrowsCount") + @Suppress("ThrowsCount", "CognitiveComplexMethod") private fun parseToken(token: Token): State? { if (state == State.COMPLETE) { throw ParserException("Token after parsing completed") diff --git a/mobile/android/android-components/components/lib/publicsuffixlist/src/main/java/mozilla/components/lib/publicsuffixlist/ext/ByteArray.kt b/mobile/android/android-components/components/lib/publicsuffixlist/src/main/java/mozilla/components/lib/publicsuffixlist/ext/ByteArray.kt @@ -14,7 +14,7 @@ private const val BITMASK = 0xff.toByte() * This algorithm is based on OkHttp's PublicSuffixDatabase class: * https://github.com/square/okhttp/blob/master/okhttp/src/main/java/okhttp3/internal/publicsuffix/PublicSuffixDatabase.java */ -@Suppress("NestedBlockDepth") +@Suppress("NestedBlockDepth", "CognitiveComplexMethod") internal fun ByteArray.binarySearch(labels: List<ByteArray>, labelIndex: Int): String? { var low = 0 var high = size diff --git a/mobile/android/android-components/components/service/firefox-accounts/src/main/java/mozilla/components/service/fxa/FxaDeviceConstellation.kt b/mobile/android/android-components/components/service/firefox-accounts/src/main/java/mozilla/components/service/fxa/FxaDeviceConstellation.kt @@ -64,6 +64,7 @@ class FxaDeviceConstellation( } @Throws(FxaPanicException::class) + @Suppress("CognitiveComplexMethod") override suspend fun finalizeDevice( authType: AuthType, config: DeviceConfig, diff --git a/mobile/android/android-components/components/service/firefox-accounts/src/main/java/mozilla/components/service/fxa/manager/State.kt b/mobile/android/android-components/components/service/firefox-accounts/src/main/java/mozilla/components/service/fxa/manager/State.kt @@ -183,6 +183,7 @@ internal sealed class State { } } +@Suppress("CognitiveComplexMethod") internal fun State.next(event: Event): State? = when (this) { // Reacting to external events. is State.Idle -> when (this.accountState) { diff --git a/mobile/android/android-components/components/service/firefox-accounts/src/main/java/mozilla/components/service/fxa/sync/WorkManagerSyncManager.kt b/mobile/android/android-components/components/service/firefox-accounts/src/main/java/mozilla/components/service/fxa/sync/WorkManagerSyncManager.kt @@ -342,7 +342,7 @@ internal class WorkManagerSyncWorker( } } - @Suppress("LongMethod", "ComplexMethod") + @Suppress("LongMethod", "CyclomaticComplexMethod") private suspend fun doSync(syncableStores: Map<SyncEngine, LazyStoreWithKey>): Result { val engineKeyProviders = mutableMapOf<SyncEngine, KeyProvider>() diff --git a/mobile/android/android-components/components/support/ktx/src/main/java/mozilla/components/support/ktx/android/os/Bundle.kt b/mobile/android/android-components/components/support/ktx/src/main/java/mozilla/components/support/ktx/android/os/Bundle.kt @@ -10,7 +10,7 @@ import android.os.Bundle * Returns `true` if the two specified bundles are *structurally* equal to one another, * i.e. contain the same number of the same elements in the same order. */ -@Suppress("ComplexMethod") +@Suppress("CyclomaticComplexMethod") infix fun Bundle.contentEquals(other: Bundle): Boolean { if (size() != other.size()) return false diff --git a/mobile/android/android-components/components/support/webextensions/src/main/java/mozilla/components/support/webextensions/WebExtensionSupport.kt b/mobile/android/android-components/components/support/webextensions/src/main/java/mozilla/components/support/webextensions/WebExtensionSupport.kt @@ -169,6 +169,7 @@ object WebExtensionSupport { * engine. Note that the UI (browser/page actions etc.) may not be initialized at this point. * System add-ons (built-in extensions) will not be passed along. */ + @Suppress("CognitiveComplexMethod") fun initialize( runtime: WebExtensionRuntime, store: BrowserStore, diff --git a/mobile/android/android-components/components/ui/autocomplete/src/main/java/mozilla/components/ui/autocomplete/InlineAutocompleteEditText.kt b/mobile/android/android-components/components/ui/autocomplete/src/main/java/mozilla/components/ui/autocomplete/InlineAutocompleteEditText.kt @@ -569,6 +569,7 @@ open class InlineAutocompleteEditText @JvmOverloads constructor( * * Also turns off text prediction for private mode tabs. */ + @Suppress("CognitiveComplexMethod") override fun onCreateInputConnection(outAttrs: EditorInfo): InputConnection? { val ic = super.onCreateInputConnection(outAttrs) ?: return null @@ -800,7 +801,7 @@ open class InlineAutocompleteEditText @JvmOverloads constructor( * * Method matching TextView#paste() but which also strips unwanted schemes before actually pasting. */ - @Suppress("NestedBlockDepth") + @Suppress("NestedBlockDepth", "CognitiveComplexMethod") @VisibleForTesting internal fun paste(min: Int, max: Int, withFormatting: Boolean) { val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager diff --git a/mobile/android/android-components/components/ui/tabcounter/src/main/java/mozilla/components/ui/tabcounter/TabCounter.kt b/mobile/android/android-components/components/ui/tabcounter/src/main/java/mozilla/components/ui/tabcounter/TabCounter.kt @@ -53,6 +53,7 @@ private const val TWO_DIGITS_SIZE_RATIO = 0.4f * @param iconColor the border color of the tab counter. */ @Composable +@Suppress("CognitiveComplexMethod") fun TabCounter( tabCount: Int, showPrivacyBadge: Boolean = false, diff --git a/mobile/android/android-components/config/detekt-baseline.xml b/mobile/android/android-components/config/detekt-baseline.xml @@ -2,57 +2,42 @@ <SmellBaseline> <ManuallySuppressedIssues/> <CurrentIssues> - <ID>ForbiddenSuppress:AbstractFetchDownloadService.kt$AbstractFetchDownloadService$@Suppress("ComplexCondition", "ComplexMethod")</ID> - <ID>ForbiddenSuppress:AbstractFetchDownloadService.kt$AbstractFetchDownloadService$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:AbstractFetchDownloadService.kt$AbstractFetchDownloadService$@Suppress("TooManyFunctions", "LargeClass", "ComplexMethod")</ID> + <ID>ForbiddenSuppress:AMOAddonsProvider.kt$AMOAddonsProvider$@Suppress("CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:AMOAddonsProvider.kt$AMOAddonsProvider$@Suppress("NestedBlockDepth", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:AbstractFetchDownloadService.kt$AbstractFetchDownloadService.<no name provided>$@Suppress("LongMethod")</ID> <ID>ForbiddenSuppress:AcornColorGrid.kt$@Suppress("LongMethod", "MagicNumber")</ID> <ID>ForbiddenSuppress:AcornColorGrid.kt$@Suppress("LongParameterList", "LongMethod", "MagicNumber")</ID> <ID>ForbiddenSuppress:AcornColors.kt$@file:Suppress("MagicNumber")</ID> <ID>ForbiddenSuppress:AcornColors.kt$AcornColors$@Suppress("LongMethod")</ID> <ID>ForbiddenSuppress:AcornTheme.kt$@file:Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:ActionButton.kt$@Suppress("LongMethod", "CyclomaticComplexMethod")</ID> - <ID>ForbiddenSuppress:Addon.kt$Addon.Companion$@Suppress("MagicNumber", "ComplexMethod")</ID> - <ID>ForbiddenSuppress:AddonsManagerAdapter.kt$AddonsManagerAdapter$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:AddonsManagerAdapter.kt$AddonsManagerAdapter$@Suppress("LongMethod")</ID> + <ID>ForbiddenSuppress:ActionButton.kt$@Suppress("LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:Addon.kt$Addon.Companion$@Suppress("MagicNumber", "CognitiveComplexMethod", "CyclomaticComplexMethod")</ID> <ID>ForbiddenSuppress:AndroidAssetFinder.kt$AndroidAssetFinder$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:AnimatedProgressBar.kt$@Suppress("LongMethod")</ID> + <ID>ForbiddenSuppress:AnimatedProgressBar.kt$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:AnimatedProgressBar.kt$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:AppLinksInterceptor.kt$AppLinksInterceptor$@Suppress("ComplexMethod", "ReturnCount")</ID> - <ID>ForbiddenSuppress:AppLinksUseCases.kt$AppLinksUseCases.GetAppLinkRedirect$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:AudioFocus.kt$AudioFocus$@Suppress("ComplexMethod")</ID> + <ID>ForbiddenSuppress:AppLinksInterceptor.kt$AppLinksInterceptor$@Suppress("CognitiveComplexMethod", "ReturnCount", "CyclomaticComplexMethod")</ID> + <ID>ForbiddenSuppress:AppLinksUseCases.kt$AppLinksUseCases.GetAppLinkRedirect$@Suppress("CyclomaticComplexMethod")</ID> <ID>ForbiddenSuppress:BaseBrowserFragment.kt$BaseBrowserFragment$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:BrowserDisplayToolbar.kt$@Suppress("LongMethod", "CyclomaticComplexMethod")</ID> - <ID>ForbiddenSuppress:BrowserEditToolbar.kt$@Suppress("LongMethod")</ID> + <ID>ForbiddenSuppress:BrowserDisplayToolbar.kt$@Suppress("LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:BrowserFragment.kt$BrowserFragment$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:BrowserMenu.kt$BrowserMenu$@Suppress("InflateParams", "ComplexMethod")</ID> - <ID>ForbiddenSuppress:BrowserMenuPositioning.kt$@Suppress("ComplexMethod")</ID> + <ID>ForbiddenSuppress:BrowserMenuPositioning.kt$@Suppress("CyclomaticComplexMethod")</ID> <ID>ForbiddenSuppress:BrowserScreen.kt$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:BrowserStateReader.kt$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:BrowserStateReader.kt$@Suppress("ComplexMethod", "LongMethod")</ID> - <ID>ForbiddenSuppress:BrowserToolbar.kt$@Suppress("MagicNumber")</ID> + <ID>ForbiddenSuppress:BrowserStateReader.kt$@Suppress("LongMethod", "CyclomaticComplexMethod")</ID> <ID>ForbiddenSuppress:BrowserToolbarStore.kt$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:Bundle.kt$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:ByteArray.kt$@Suppress("ComplexMethod", "NestedBlockDepth")</ID> + <ID>ForbiddenSuppress:Bundle.kt$@Suppress("CyclomaticComplexMethod")</ID> <ID>ForbiddenSuppress:ByteArray.kt$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:CFRPopupContent.kt$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:CFRPopupFullscreenLayout.kt$CFRPopupFullscreenLayout$@Suppress("LongMethod")</ID> + <ID>ForbiddenSuppress:ByteArray.kt$@Suppress("NestedBlockDepth", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:CFRPopupContent.kt$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:CFRPopupShape.kt$CFRPopupShape$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:Client.kt$Client$@Suppress("ComplexMethod", "TooGenericExceptionCaught")</ID> <ID>ForbiddenSuppress:ClipboardHandler.kt$ClipboardHandler$@Suppress("MagicNumber")</ID> <ID>ForbiddenSuppress:ColorUtils.kt$ColorUtils$@SuppressWarnings("MagicNumber")</ID> <ID>ForbiddenSuppress:Constants.kt$@Suppress("MagicNumber", "TopLevelPropertyNaming")</ID> - <ID>ForbiddenSuppress:ContainerToolbarAction.kt$ContainerToolbarAction$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:ContentStateReducer.kt$ContentStateReducer$@Suppress("LongMethod", "ThrowsCount")</ID> + <ID>ForbiddenSuppress:ContentStateReducer.kt$ContentStateReducer$@Suppress("LongMethod", "ThrowsCount", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:CrashApplication.kt$GleanBuildInfo$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:CrashMiddleware.kt$CrashMiddleware$@Suppress("CyclomaticComplexMethod", "LongMethod")</ID> - <ID>ForbiddenSuppress:CreditCardUtils.kt$CreditCardUtils$@Suppress("ComplexMethod")</ID> + <ID>ForbiddenSuppress:CrashMiddleware.kt$CrashMiddleware$@Suppress("CyclomaticComplexMethod", "LongMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:CreditCardUtils.kt$CreditCardUtils$@Suppress("MagicNumber", "LargeClass")</ID> - <ID>ForbiddenSuppress:CustomPlacementPopup.kt$@Suppress("ComplexMethod", "ReturnCount")</ID> - <ID>ForbiddenSuppress:CustomTabWindowFeature.kt$CustomTabWindowFeature$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:DefaultSelectionActionDelegate.kt$DefaultSelectionActionDelegate$@SuppressWarnings("ComplexMethod")</ID> + <ID>ForbiddenSuppress:CustomPlacementPopup.kt$@Suppress("CyclomaticComplexMethod", "ReturnCount", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:Dispatchers.kt$Dispatchers$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:DownloadMiddleware.kt$DownloadMiddleware$@Suppress("ComplexMethod")</ID> <ID>ForbiddenSuppress:DownloadsDatabase.kt$Migrations$@Suppress("MaxLineLength", "MagicNumber")</ID> <ID>ForbiddenSuppress:Dropdown.kt$@Suppress("LongMethod")</ID> <ID>ForbiddenSuppress:Dropdown.kt$@Suppress("MagicNumber")</ID> @@ -62,287 +47,145 @@ <ID>ForbiddenSuppress:EngineSession.kt$EngineSession.TrackingProtectionPolicy.CookiePolicy$@Suppress("MagicNumber")</ID> <ID>ForbiddenSuppress:EngineStateReducer.kt$EngineStateReducer$@Suppress("LongMethod")</ID> <ID>ForbiddenSuppress:EngineVersion.kt$EngineVersion.Companion$@Suppress("MagicNumber", "ReturnCount")</ID> - <ID>ForbiddenSuppress:ExpandableLayout.kt$ExpandableLayout$@Suppress("ComplexMethod", "ReturnCount")</ID> - <ID>ForbiddenSuppress:FilePicker.kt$FilePicker$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:FxaDeviceConstellation.kt$FxaDeviceConstellation$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:FxaWebChannelFeature.kt$FxaWebChannelFeature.Companion$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:FxaWebChannelFeature.kt$FxaWebChannelFeature.WebChannelViewContentMessageHandler$@SuppressWarnings("ComplexMethod")</ID> - <ID>ForbiddenSuppress:GeckoEngine.kt$GeckoEngine$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:GeckoEngineSession.kt$GeckoEngineSession$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:GeckoEngineSession.kt$GeckoEngineSession$@Suppress("ComplexMethod", "NestedBlockDepth")</ID> - <ID>ForbiddenSuppress:GeckoEngineSession.kt$GeckoEngineSession.Companion$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:GeckoPermissionRequest.kt$GeckoPermissionRequest.Media.Companion$@Suppress("ComplexMethod", "SwitchIntDef")</ID> - <ID>ForbiddenSuppress:GeckoPromptDelegate.kt$GeckoPromptDelegate$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:GeckoSitePermissionsStorage.kt$GeckoSitePermissionsStorage$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:GeckoSitePermissionsStorage.kt$GeckoSitePermissionsStorage$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:GleanCrashReporterService.kt$GleanCrashReporterService$@Suppress("ComplexMethod")</ID> + <ID>ForbiddenSuppress:ExpandableLayout.kt$ExpandableLayout$@Suppress("ReturnCount", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:FxaDeviceConstellation.kt$FxaDeviceConstellation$@Suppress("CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:GeckoEngineSession.kt$GeckoEngineSession$@Suppress("CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:GeckoEngineSession.kt$GeckoEngineSession$@Suppress("NestedBlockDepth", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:GeckoSitePermissionsStorage.kt$GeckoSitePermissionsStorage$@Suppress("CognitiveComplexMethod", "CyclomaticComplexMethod")</ID> + <ID>ForbiddenSuppress:GeckoSitePermissionsStorage.kt$GeckoSitePermissionsStorage$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:Grammar.kt$Grammar$@Suppress("MagicNumber")</ID> <ID>ForbiddenSuppress:HighlightedDomainUrl.kt$@Suppress("LongMethod")</ID> + <ID>ForbiddenSuppress:HttpIconLoader.kt$HttpIconLoader$@Suppress("CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:IconDirectoryEntry.kt$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:IconDirectoryEntry.kt$@Suppress("MagicNumber", "ReturnCount", "ComplexMethod", "NestedBlockDepth", "ComplexCondition")</ID> + <ID>ForbiddenSuppress:IconDirectoryEntry.kt$@Suppress("MagicNumber", "ReturnCount", "CognitiveComplexMethod", "NestedBlockDepth", "ComplexCondition", "CyclomaticComplexMethod")</ID> <ID>ForbiddenSuppress:IconDirectoryEntry.kt$IconDirectoryEntry$@Suppress("MagicNumber")</ID> <ID>ForbiddenSuppress:IconResourceComparator.kt$@Suppress("MagicNumber")</ID> <ID>ForbiddenSuppress:ImageDecoder.kt$ImageDecoder.Companion.ImageMagicNumbers$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:InlineAutocompleteEditText.kt$InlineAutocompleteEditText$@SuppressWarnings("ComplexMethod")</ID> - <ID>ForbiddenSuppress:InlineAutocompleteTextField.kt$@Suppress("LongMethod", "CyclomaticComplexMethod")</ID> + <ID>ForbiddenSuppress:InlineAutocompleteEditText.kt$InlineAutocompleteEditText$@Suppress("CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:InlineAutocompleteEditText.kt$InlineAutocompleteEditText$@Suppress("NestedBlockDepth", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:InlineAutocompleteTextField.kt$@Suppress("LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:InputResultDetail.kt$InputResultDetail$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:Lexer.kt$Lexer$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:Lexer.kt$Lexer$@Suppress("ComplexMethod", "LongMethod")</ID> - <ID>ForbiddenSuppress:LinkingMiddleware.kt$LinkingMiddleware$@Suppress("ComplexMethod")</ID> + <ID>ForbiddenSuppress:LanguageModel.kt$LanguageModel.Companion$@Suppress("CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:Lexer.kt$Lexer$@Suppress("CyclomaticComplexMethod")</ID> <ID>ForbiddenSuppress:LoginPickerView.kt$@Suppress("MagicNumber")</ID> <ID>ForbiddenSuppress:MainActivity.kt$MainActivity$@Suppress("MagicNumber")</ID> <ID>ForbiddenSuppress:ManifestDatabase.kt$ManifestDatabase.Companion$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:MozillaSocorroService.kt$MozillaSocorroService$@Suppress("LongParameterList")</ID> - <ID>ForbiddenSuppress:MozillaSocorroService.kt$MozillaSocorroService$@Suppress("LongParameterList", "LongMethod")</ID> - <ID>ForbiddenSuppress:NestedGeckoView.kt$NestedGeckoView$@Suppress("ComplexMethod")</ID> + <ID>ForbiddenSuppress:MozillaSocorroService.kt$MozillaSocorroService$@Suppress("LongParameterList", "LongMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:NestedGeckoView.kt$NestedGeckoView$@Suppress("CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:Origin.kt$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:Parser.kt$Parser$@Suppress("ComplexMethod", "ThrowsCount")</ID> + <ID>ForbiddenSuppress:Parser.kt$Parser$@Suppress("ThrowsCount", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:Performance.kt$@SuppressWarnings("MagicNumber")</ID> - <ID>ForbiddenSuppress:PermissionsDialogFragment.kt$PermissionsDialogFragment$@Suppress("LongMethod")</ID> + <ID>ForbiddenSuppress:PermissionsDialogFragment.kt$PermissionsDialogFragment$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:PopupToMenuItemsMapper.kt$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:PromptFeature.kt$PromptFeature$@Suppress("ComplexMethod", "LongMethod")</ID> - <ID>ForbiddenSuppress:PromptFeature.kt$PromptFeature$@Suppress("ComplexMethod", "LongMethod", "ReturnCount")</ID> - <ID>ForbiddenSuppress:PromptFeature.kt$PromptFeature$@Suppress("UNCHECKED_CAST", "ComplexMethod")</ID> + <ID>ForbiddenSuppress:PromptFeature.kt$PromptFeature$@Suppress("CognitiveComplexMethod", "LongMethod", "CyclomaticComplexMethod")</ID> + <ID>ForbiddenSuppress:PromptFeature.kt$PromptFeature$@Suppress("CognitiveComplexMethod", "LongMethod", "ReturnCount", "CyclomaticComplexMethod")</ID> + <ID>ForbiddenSuppress:PromptFeature.kt$PromptFeature$@Suppress("NestedBlockDepth", "CyclomaticComplexMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:PromptFeature.kt$PromptFeature$@Suppress("UNCHECKED_CAST", "CyclomaticComplexMethod")</ID> <ID>ForbiddenSuppress:PublicSuffixListLoader.kt$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:QrFragment.kt$QrFragment$@Suppress("ComplexMethod")</ID> <ID>ForbiddenSuppress:QrFragment.kt$QrFragment$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:QrFragment.kt$QrFragment.Companion$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:ReaderViewControlsBar.kt$ReaderViewControlsBar$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:RecentlyClosedMiddleware.kt$RecentlyClosedMiddleware$@Suppress("ComplexMethod")</ID> <ID>ForbiddenSuppress:RemoteSettingsSyncScheduler.kt$DefaultRemoteSettingsSyncScheduler$@SuppressWarnings("MagicNumber")</ID> + <ID>ForbiddenSuppress:RemoteTabsStorage.kt$RemoteTabsCommandQueue$@Suppress("CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:Safelist.kt$Safelist.Companion$@Suppress("NestedBlockDepth", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:SampleApplication.kt$GleanBuildInfo$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:SearchEngineReader.kt$SearchEngineReader$@Suppress("ComplexMethod")</ID> + <ID>ForbiddenSuppress:SaveLoginDialogFragment.kt$SaveLoginDialogFragment$@Suppress("CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:SearchMiddleware.kt$SearchMiddleware$@SuppressWarnings("LongMethod")</ID> - <ID>ForbiddenSuppress:SearchSuggestionProvider.kt$SearchSuggestionProvider$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:SecurePrefsReliabilityExperiment.kt$SecurePrefsReliabilityExperiment$@Suppress("TooGenericExceptionCaught", "ComplexMethod")</ID> <ID>ForbiddenSuppress:SessionState.kt$SessionState.Source$@Suppress("MagicNumber")</ID> <ID>ForbiddenSuppress:SitePermissionsDatabase.kt$Migrations$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:SitePermissionsFeature.kt$SitePermissionsFeature$@Suppress("ComplexMethod")</ID> + <ID>ForbiddenSuppress:SitePermissionsFeature.kt$SitePermissionsFeature$@Suppress("CyclomaticComplexMethod")</ID> <ID>ForbiddenSuppress:SitePermissionsFeature.kt$SitePermissionsFeature$@Suppress("LongMethod")</ID> + <ID>ForbiddenSuppress:State.kt$@Suppress("CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:String.kt$@Suppress("MagicNumber")</ID> <ID>ForbiddenSuppress:Suggestion.kt$@Suppress("MagicNumber")</ID> <ID>ForbiddenSuppress:SuggestionFetcher.kt$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:SystemEngineView.kt$SystemEngineView$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:SystemEngineView.kt$SystemEngineView$@Suppress("ComplexMethod", "NestedBlockDepth")</ID> + <ID>ForbiddenSuppress:SystemEngineView.kt$SystemEngineView$@Suppress("NestedBlockDepth", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:SystemEngineView.kt$SystemEngineView.<no name provided>$@Suppress("ReturnCount", "NestedBlockDepth", "LongMethod")</ID> - <ID>ForbiddenSuppress:TabListReducer.kt$TabListReducer$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:TabsRemovedMiddleware.kt$TabsRemovedMiddleware$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:TextField.kt$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:ThumbnailsMiddleware.kt$ThumbnailsMiddleware$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:TimePickerDialogFragment.kt$TimePickerDialogFragment$@Suppress("ComplexMethod")</ID> + <ID>ForbiddenSuppress:TabCounter.kt$@Suppress("CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:TabListReducer.kt$TabListReducer$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:TextField.kt$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:ToolbarActivity.kt$ToolbarActivity$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:ToolbarActivity.kt$ToolbarActivity$@Suppress("TooGenericExceptionCaught", "ComplexMethod")</ID> + <ID>ForbiddenSuppress:ToolbarActivity.kt$ToolbarActivity$@Suppress("TooGenericExceptionCaught", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:TopSiteDatabase.kt$Migrations$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:TranslationsMiddleware.kt$TranslationsMiddleware$@Suppress("LongMethod", "CyclomaticComplexMethod")</ID> - <ID>ForbiddenSuppress:TranslationsStateReducer.kt$TranslationsStateReducer$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:UrlMatcher.kt$UrlMatcher$@Suppress("ReturnCount", "ComplexMethod")</ID> - <ID>ForbiddenSuppress:UrlMatcher.kt$UrlMatcher.Companion$@Suppress("ThrowsCount", "ComplexMethod", "NestedBlockDepth")</ID> - <ID>ForbiddenSuppress:Utils.kt$@Suppress("NestedBlockDepth", "ComplexMethod")</ID> - <ID>ForbiddenSuppress:VerticalSwipeRefreshLayout.kt$VerticalSwipeRefreshLayout$@Suppress("ComplexMethod", "ReturnCount")</ID> + <ID>ForbiddenSuppress:TranslationsMiddleware.kt$TranslationsMiddleware$@Suppress("CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:TranslationsMiddleware.kt$TranslationsMiddleware$@Suppress("LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:TranslationsStateReducer.kt$TranslationsStateReducer$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:UrlMatcher.kt$UrlMatcher.Companion$@Suppress("ThrowsCount", "NestedBlockDepth", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:Utils.kt$@Suppress("NestedBlockDepth", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:WebAppManifestParser.kt$@Suppress("MagicNumber")</ID> <ID>ForbiddenSuppress:WebExtensionReducer.kt$WebExtensionReducer$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:WebPush.kt$WebPushSubscription$@Suppress("BracesOnIfStatements", "ComplexMethod")</ID> + <ID>ForbiddenSuppress:WebExtensionSupport.kt$WebExtensionSupport$@Suppress("CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:WebPush.kt$WebPushSubscription$@Suppress("MagicNumber")</ID> <ID>ForbiddenSuppress:WebURLFinder.kt$WebURLFinder.Companion$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:WorkManagerSyncManager.kt$WorkManagerSyncWorker$@Suppress("LongMethod", "ComplexMethod")</ID> + <ID>ForbiddenSuppress:WorkManagerSyncManager.kt$WorkManagerSyncWorker$@Suppress("LongMethod", "CyclomaticComplexMethod")</ID> <ID>MaxLineLength:ContextCompatDetector.kt$ContextCompatDetector.Companion$explanation = "Using this method can lead to crashes in older Android versions as newer features might not be available"</ID> + <ID>MaxLineLength:IconDirectoryEntry.kt$@Suppress("MagicNumber", "ReturnCount", "CognitiveComplexMethod", "NestedBlockDepth", "ComplexCondition", "CyclomaticComplexMethod")</ID> <ID>MayBeConst:ConstraintLayoutPerfDetector.kt$private val CUSTOM_VIEW_ISSUE_DESCRIPTION = "Caution regarding custom views extending `ConstraintLayout`"</ID> <ID>MayBeConst:ConstraintLayoutPerfDetector.kt$private val CUSTOM_VIEW_ISSUE_MESSAGE = "Custom views extending `ConstraintLayout` are less " + "efficient because they cannot share other `ConstraintLayout` defined in file."</ID> - <ID>UndocumentedPublicClass:AbstractAutofillUnlockActivity.kt$AbstractAutofillUnlockActivity$Companion</ID> - <ID>UndocumentedPublicClass:AbstractFetchDownloadService.kt$AbstractFetchDownloadService$Companion</ID> - <ID>UndocumentedPublicClass:AbstractMediaSessionService.kt$AbstractMediaSessionService$Companion</ID> - <ID>UndocumentedPublicClass:AbstractPrivateNotificationService.kt$AbstractPrivateNotificationService$Companion</ID> - <ID>UndocumentedPublicClass:ActivityContextWrapper.kt$ActivityContextWrapper$Companion</ID> - <ID>UndocumentedPublicClass:AdaptiveIconProcessor.kt$AdaptiveIconProcessor$Companion</ID> - <ID>UndocumentedPublicClass:AddMechanismEventProcessor.kt$AddMechanismEventProcessor$Companion</ID> - <ID>UndocumentedPublicClass:Addon.kt$Addon$Companion</ID> - <ID>UndocumentedPublicClass:AddonInstallationDialogFragment.kt$AddonInstallationDialogFragment$Companion</ID> - <ID>UndocumentedPublicClass:AddonManager.kt$AddonManager$Companion</ID> - <ID>UndocumentedPublicClass:AddonSettingsActivity.kt$AddonSettingsActivity.AddonSettingsFragment$Companion</ID> - <ID>UndocumentedPublicClass:AddonUpdater.kt$DefaultAddonUpdater$Companion</ID> - <ID>UndocumentedPublicClass:AddonUpdater.kt$DefaultAddonUpdater.NotificationHandlerService$Companion</ID> - <ID>UndocumentedPublicClass:AddonsFragment.kt$AddonsFragment$Companion</ID> - <ID>UndocumentedPublicClass:AddressSelectBar.kt$AddressSelectBar$Companion</ID> - <ID>UndocumentedPublicClass:AdsTelemetry.kt$AdsTelemetry$Companion</ID> - <ID>UndocumentedPublicClass:AndroidAssetFinder.kt$AndroidAssetFinder$Companion</ID> - <ID>UndocumentedPublicClass:AndroidPhotoPicker.kt$AndroidPhotoPicker$Companion</ID> - <ID>UndocumentedPublicClass:AndroidSrcXmlDetector.kt$AndroidSrcXmlDetector$Companion</ID> - <ID>UndocumentedPublicClass:AppLinksInterceptor.kt$AppLinksInterceptor$Companion</ID> - <ID>UndocumentedPublicClass:AppLinksUseCases.kt$AppLinksUseCases$Companion</ID> - <ID>UndocumentedPublicClass:AppSearchWidgetProvider.kt$AppSearchWidgetProvider$Companion</ID> - <ID>UndocumentedPublicClass:AutoPushFeature.kt$AutoPushFeature$Companion</ID> <ID>UndocumentedPublicClass:AutoSave.kt$AutoSave</ID> - <ID>UndocumentedPublicClass:AutoSave.kt$AutoSave$Companion</ID> <ID>UndocumentedPublicClass:AutoSave.kt$AutoSave$Storage</ID> - <ID>UndocumentedPublicClass:AutofillCrypto.kt$AutofillCrypto$Companion</ID> <ID>UndocumentedPublicClass:Base64.kt$Base64</ID> - <ID>UndocumentedPublicClass:BaseBrowserFragment.kt$BaseBrowserFragment$Companion</ID> - <ID>UndocumentedPublicClass:BaseVoiceSearchActivity.kt$BaseVoiceSearchActivity$Companion</ID> - <ID>UndocumentedPublicClass:BookmarksStorage.kt$BookmarksStorage$Companion</ID> - <ID>UndocumentedPublicClass:BootUtils.kt$BootUtils$Companion</ID> - <ID>UndocumentedPublicClass:BrowserComposeActivity.kt$BrowserComposeActivity$Companion</ID> - <ID>UndocumentedPublicClass:BrowserFragment.kt$BrowserFragment$Companion</ID> - <ID>UndocumentedPublicClass:BrowserMenu.kt$BrowserMenu$Companion</ID> <ID>UndocumentedPublicClass:BrowserMenu.kt$BrowserMenu$Orientation</ID> <ID>UndocumentedPublicClass:BrowserMenuAdapter.kt$BrowserMenuItemViewHolder : ViewHolder</ID> - <ID>UndocumentedPublicClass:BrowserMenuImageTextCheckboxButton.kt$BrowserMenuImageTextCheckboxButton$Companion</ID> - <ID>UndocumentedPublicClass:BrowserToolbar.kt$BrowserToolbar$Companion</ID> - <ID>UndocumentedPublicClass:Browsers.kt$Browsers$Companion</ID> - <ID>UndocumentedPublicClass:BuildVersionProvider.kt$BuildVersionProvider$Companion</ID> - <ID>UndocumentedPublicClass:ButtonStyleXmlDetector.kt$ButtonStyleXmlDetector$Companion</ID> - <ID>UndocumentedPublicClass:CFRPopup.kt$CFRPopup$Companion</ID> - <ID>UndocumentedPublicClass:CFRPopupShape.kt$CFRPopupShape$Companion</ID> <ID>UndocumentedPublicClass:Choice.kt$Choice$CREATOR : Creator</ID> - <ID>UndocumentedPublicClass:Client.kt$Client$Companion</ID> - <ID>UndocumentedPublicClass:CollectionProcessor.kt$CollectionProcessor$Companion</ID> <ID>UndocumentedPublicClass:ColorUtils.kt$ColorUtils</ID> - <ID>UndocumentedPublicClass:ConceptFetchDetector.kt$ConceptFetchDetector$Companion</ID> - <ID>UndocumentedPublicClass:ConceptFetchHttpUploader.kt$ConceptFetchHttpUploader$Companion</ID> <ID>UndocumentedPublicClass:Constants.kt$Constants</ID> - <ID>UndocumentedPublicClass:ConstraintLayoutPerfDetector.kt$ConstraintLayoutPerfDetector$Companion</ID> - <ID>UndocumentedPublicClass:Consumable.kt$Consumable$Companion</ID> <ID>UndocumentedPublicClass:ContextCompatDetector.kt$ContextCompatDetector : DetectorSourceCodeScanner</ID> - <ID>UndocumentedPublicClass:ContextCompatDetector.kt$ContextCompatDetector$Companion</ID> - <ID>UndocumentedPublicClass:ContextMenuCandidate.kt$ContextMenuCandidate$Companion</ID> - <ID>UndocumentedPublicClass:ContextMenuFragment.kt$ContextMenuFragment$Companion</ID> <ID>UndocumentedPublicClass:ContextMenuUseCases.kt$ContextMenuUseCases$ConsumeHitResultUseCase</ID> <ID>UndocumentedPublicClass:ContextMenuUseCases.kt$ContextMenuUseCases$InjectDownloadUseCase</ID> - <ID>UndocumentedPublicClass:ContileTopSitesUpdater.kt$ContileTopSitesUpdater$Companion</ID> - <ID>UndocumentedPublicClass:CoordinateScrollingFeature.kt$CoordinateScrollingFeature$Companion</ID> - <ID>UndocumentedPublicClass:Crash.kt$Crash$Companion</ID> - <ID>UndocumentedPublicClass:Crash.kt$Crash.NativeCodeCrash$Companion</ID> - <ID>UndocumentedPublicClass:Crash.kt$Crash.UncaughtExceptionCrash$Companion</ID> <ID>UndocumentedPublicClass:CrashActivity.kt$CrashActivity : AppCompatActivityOnClickListener</ID> <ID>UndocumentedPublicClass:CrashApplication.kt$CrashApplication : Application</ID> - <ID>UndocumentedPublicClass:CrashApplication.kt$CrashApplication$Companion</ID> - <ID>UndocumentedPublicClass:CrashReporter.kt$CrashReporter$Companion</ID> <ID>UndocumentedPublicClass:CrashReporter.kt$CrashReporter$Prompt</ID> - <ID>UndocumentedPublicClass:CrashReporterActivity.kt$CrashReporterActivity$Companion</ID> - <ID>UndocumentedPublicClass:CreditCardItemViewHolder.kt$CreditCardItemViewHolder$Companion</ID> - <ID>UndocumentedPublicClass:CreditCardSelectBar.kt$CreditCardSelectBar$Companion</ID> - <ID>UndocumentedPublicClass:CreditCardsAddressesStorage.kt$Address$Companion</ID> - <ID>UndocumentedPublicClass:CreditCardsAddressesStorage.kt$CreditCard$Companion</ID> - <ID>UndocumentedPublicClass:CreditCardsAddressesStorage.kt$CreditCardEntry$Companion</ID> <ID>UndocumentedPublicClass:CustomTabConfig.kt$CustomTabActionButtonConfig</ID> <ID>UndocumentedPublicClass:CustomTabConfig.kt$CustomTabMenuItem</ID> <ID>UndocumentedPublicClass:CustomTabsAction.kt$CustomTabsAction : Action</ID> <ID>UndocumentedPublicClass:CustomTabsService.kt$CustomTabsService : AbstractCustomTabsService</ID> <ID>UndocumentedPublicClass:CustomTabsServiceStore.kt$CustomTabsServiceStore : Store</ID> - <ID>UndocumentedPublicClass:CustomTabsToolbarFeature.kt$CustomTabsToolbarFeature$Companion</ID> - <ID>UndocumentedPublicClass:CustomViewFinder.kt$CustomViewFinder$Companion</ID> <ID>UndocumentedPublicClass:DefaultComponents.kt$DefaultComponents</ID> - <ID>UndocumentedPublicClass:DefaultComponents.kt$DefaultComponents$Companion</ID> - <ID>UndocumentedPublicClass:DefaultIconGenerator.kt$DefaultIconGenerator$Companion</ID> - <ID>UndocumentedPublicClass:DeniedPermissionDialogFragment.kt$DeniedPermissionDialogFragment$Companion</ID> - <ID>UndocumentedPublicClass:DeviceCommandQueue.kt$DeviceCommandQueue.FlushResult$Companion</ID> <ID>UndocumentedPublicClass:DeviceRecyclerViewAdapter.kt$DeviceRecyclerViewAdapter$ViewHolder : ViewHolder</ID> - <ID>UndocumentedPublicClass:DialogColors.kt$DialogColors$Companion</ID> - <ID>UndocumentedPublicClass:DigitalAssetLinksApi.kt$DigitalAssetLinksApi$Companion</ID> <ID>UndocumentedPublicClass:DiskIconLoader.kt$DiskIconLoader$LoaderDiskCache</ID> <ID>UndocumentedPublicClass:DiskIconPreparer.kt$DiskIconPreparer$PreparerDiskCache</ID> <ID>UndocumentedPublicClass:DiskIconProcessor.kt$DiskIconProcessor$ProcessorDiskCache</ID> - <ID>UndocumentedPublicClass:Domain.kt$Domain$Companion</ID> <ID>UndocumentedPublicClass:DomainAutoCompleteProvider.kt$DomainAutoCompleteProvider$AutocompleteSource</ID> <ID>UndocumentedPublicClass:DomainMatcher.kt$DomainMatch</ID> - <ID>UndocumentedPublicClass:DownloadCancelDialogFragment.kt$DownloadCancelDialogFragment$Companion</ID> - <ID>UndocumentedPublicClass:DownloadDialogFragment.kt$DownloadDialogFragment$Companion</ID> <ID>UndocumentedPublicClass:DownloadManager.kt$DownloadManager</ID> <ID>UndocumentedPublicClass:DownloadService.kt$DownloadService : AbstractFetchDownloadService</ID> - <ID>UndocumentedPublicClass:DownloadState.kt$DownloadState$Companion</ID> - <ID>UndocumentedPublicClass:DownloadStorage.kt$DownloadStorage$Companion</ID> <ID>UndocumentedPublicClass:DownloadUtils.kt$DownloadUtils</ID> <ID>UndocumentedPublicClass:DownloadsUseCases.kt$DownloadsUseCases$ConsumeDownloadUseCase</ID> <ID>UndocumentedPublicClass:DrawableUtils.kt$DrawableUtils</ID> - <ID>UndocumentedPublicClass:Engine.kt$Engine.BrowsingData$Companion</ID> - <ID>UndocumentedPublicClass:EngineSession.kt$EngineSession.LoadUrlFlags$Companion</ID> - <ID>UndocumentedPublicClass:EngineSession.kt$EngineSession.TrackingProtectionPolicy$Companion</ID> <ID>UndocumentedPublicClass:EngineSession.kt$EngineSession.TrackingProtectionPolicy$TrackingCategory</ID> - <ID>UndocumentedPublicClass:EngineVersion.kt$EngineVersion$Companion</ID> <ID>UndocumentedPublicClass:ErrorPages.kt$ErrorPages</ID> - <ID>UndocumentedPublicClass:ExternalAppBrowserFragment.kt$ExternalAppBrowserFragment$Companion</ID> - <ID>UndocumentedPublicClass:FactCollectDetector.kt$FactCollectDetector$Companion</ID> <ID>UndocumentedPublicClass:FindInPageView.kt$FindInPageView$Listener</ID> - <ID>UndocumentedPublicClass:FirefoxAccount.kt$FirefoxAccount$Companion</ID> - <ID>UndocumentedPublicClass:FxaPushSupportFeature.kt$FxaPushSupportFeature$Companion</ID> - <ID>UndocumentedPublicClass:FxaWebChannelFeature.kt$FxaWebChannelFeature$Companion</ID> - <ID>UndocumentedPublicClass:FxaWebChannelFeature.kt$FxaWebChannelFeature.Companion$WebChannelCommand</ID> - <ID>UndocumentedPublicClass:GeckoEngineSession.kt$GeckoEngineSession$Companion</ID> <ID>UndocumentedPublicClass:GeckoEngineSessionState.kt$GeckoEngineSessionState : EngineSessionState</ID> - <ID>UndocumentedPublicClass:GeckoEngineSessionState.kt$GeckoEngineSessionState$Companion</ID> - <ID>UndocumentedPublicClass:GeckoEngineView.kt$GeckoEngineView$Companion</ID> - <ID>UndocumentedPublicClass:GeckoPermissionRequest.kt$GeckoPermissionRequest.App$Companion</ID> - <ID>UndocumentedPublicClass:GeckoPermissionRequest.kt$GeckoPermissionRequest.Content$Companion</ID> - <ID>UndocumentedPublicClass:GeckoPermissionRequest.kt$GeckoPermissionRequest.Media$Companion</ID> - <ID>UndocumentedPublicClass:GeckoSelectionActionDelegate.kt$GeckoSelectionActionDelegate$Companion</ID> - <ID>UndocumentedPublicClass:GeckoViewFetchClient.kt$GeckoViewFetchClient$Companion</ID> - <ID>UndocumentedPublicClass:GeckoWebExtensionException.kt$GeckoWebExtensionException$Companion</ID> <ID>UndocumentedPublicClass:GleanApplication.kt$GleanApplication : Application</ID> - <ID>UndocumentedPublicClass:GleanApplication.kt$GleanApplication$Companion</ID> - <ID>UndocumentedPublicClass:GleanCrashReporterService.kt$GleanCrashReporterService$Companion</ID> <ID>UndocumentedPublicClass:Grammar.kt$GrammarElement</ID> - <ID>UndocumentedPublicClass:HttpURLConnectionClient.kt$HttpURLConnectionClient$Companion</ID> <ID>UndocumentedPublicClass:IconLoader.kt$IconLoader$Result</ID> <ID>UndocumentedPublicClass:IconLoader.kt$IconLoader.Result$BitmapResult : Result</ID> <ID>UndocumentedPublicClass:IconLoader.kt$IconLoader.Result$BytesResult : Result</ID> <ID>UndocumentedPublicClass:IconLoader.kt$IconLoader.Result$NoResult : Result</ID> <ID>UndocumentedPublicClass:IconMemoryCache.kt$IconMemoryCache : ProcessorMemoryCacheLoaderMemoryCachePreparerMemoryCache</ID> - <ID>UndocumentedPublicClass:ImageDecoder.kt$ImageDecoder$Companion</ID> - <ID>UndocumentedPublicClass:ImageDecoder.kt$ImageDecoder.Companion$ImageMagicNumbers</ID> - <ID>UndocumentedPublicClass:ImageViewAndroidTintXmlDetector.kt$ImageViewAndroidTintXmlDetector$Companion</ID> - <ID>UndocumentedPublicClass:ImeInsetsSynchronizer.kt$ImeInsetsSynchronizer$Companion</ID> - <ID>UndocumentedPublicClass:InContentTelemetry.kt$InContentTelemetry$Companion</ID> <ID>UndocumentedPublicClass:InlineAutocompleteEditText.kt$InlineAutocompleteEditText$AutocompleteResult</ID> - <ID>UndocumentedPublicClass:InlineAutocompleteEditText.kt$InlineAutocompleteEditText$Companion</ID> - <ID>UndocumentedPublicClass:InputResultDetail.kt$InputResultDetail$Companion</ID> <ID>UndocumentedPublicClass:IntentReceiverActivity.kt$IntentReceiverActivity : Activity</ID> <ID>UndocumentedPublicClass:Jexl.kt$Jexl</ID> - <ID>UndocumentedPublicClass:LanguageModel.kt$LanguageModel$Companion</ID> - <ID>UndocumentedPublicClass:LanguageSetting.kt$LanguageSetting$Companion</ID> - <ID>UndocumentedPublicClass:LazyComponent.kt$LazyComponent$Companion</ID> - <ID>UndocumentedPublicClass:LibrariesListFragment.kt$LibrariesListFragment$Companion</ID> <ID>UndocumentedPublicClass:LicenseCommentChecker.kt$LicenseCommentChecker : UElementHandler</ID> - <ID>UndocumentedPublicClass:LicenseCommentChecker.kt$LicenseCommentChecker$Companion</ID> <ID>UndocumentedPublicClass:LicenseDetector.kt$LicenseDetector : DetectorSourceCodeScanner</ID> - <ID>UndocumentedPublicClass:LicenseDetector.kt$LicenseDetector$Companion</ID> - <ID>UndocumentedPublicClass:LintLogChecks.kt$LintLogChecks$Companion</ID> - <ID>UndocumentedPublicClass:LocationService.kt$LocationService$Companion</ID> - <ID>UndocumentedPublicClass:Logger.kt$Logger$Companion</ID> <ID>UndocumentedPublicClass:LoginFragment.kt$LoginFragment : Fragment</ID> - <ID>UndocumentedPublicClass:LoginFragment.kt$LoginFragment$Companion</ID> <ID>UndocumentedPublicClass:LoginFragment.kt$LoginFragment$OnLoginCompleteListener</ID> - <ID>UndocumentedPublicClass:LoginsCrypto.kt$LoginsCrypto$Companion</ID> <ID>UndocumentedPublicClass:MainActivity.kt$MainActivity : AppCompatActivity</ID> <ID>UndocumentedPublicClass:MainActivity.kt$MainActivity : AppCompatActivityOnLoginCompleteListenerCoroutineScope</ID> <ID>UndocumentedPublicClass:MainActivity.kt$MainActivity : AppCompatActivityOnLoginCompleteListenerCoroutineScopeSyncStatusObserver</ID> - <ID>UndocumentedPublicClass:MainActivity.kt$MainActivity : AppCompatActivityOnLoginCompleteListenerOnDeviceListInteractionListenerCoroutineScope</ID> - <ID>UndocumentedPublicClass:MainActivity.kt$MainActivity$Companion</ID> - <ID>UndocumentedPublicClass:ManifestStorage.kt$ManifestStorage$Companion</ID> - <ID>UndocumentedPublicClass:MediaSession.kt$MediaSession.Feature$Companion</ID> <ID>UndocumentedPublicClass:MemoryIconLoader.kt$MemoryIconLoader$LoaderMemoryCache</ID> <ID>UndocumentedPublicClass:MemoryIconPreparer.kt$MemoryIconPreparer$PreparerMemoryCache</ID> <ID>UndocumentedPublicClass:MemoryIconProcessor.kt$MemoryIconProcessor$ProcessorMemoryCache</ID> - <ID>UndocumentedPublicClass:NotYetSupportedAddonActivity.kt$NotYetSupportedAddonActivity.NotYetSupportedAddonFragment$Companion</ID> - <ID>UndocumentedPublicClass:NotificationManagerChecks.kt$NotificationManagerChecks$Companion</ID> <ID>UndocumentedPublicClass:OAuthAccount.kt$AuthType</ID> <ID>UndocumentedPublicClass:OAuthAccount.kt$Avatar</ID> <ID>UndocumentedPublicClass:OAuthAccount.kt$Profile</ID> - <ID>UndocumentedPublicClass:OkHttpClient.kt$OkHttpClient$Companion</ID> - <ID>UndocumentedPublicClass:Orientation.kt$Orientation$Companion</ID> - <ID>UndocumentedPublicClass:OriginVerifier.kt$OriginVerifier$Companion</ID> <ID>UndocumentedPublicClass:OriginVerifierFeature.kt$OriginVerifierFeature</ID> <ID>UndocumentedPublicClass:Parser.kt$ParserException : Exception</ID> - <ID>UndocumentedPublicClass:PasswordGeneratorDialogColors.kt$PasswordGeneratorDialogColors$Companion</ID> - <ID>UndocumentedPublicClass:PermissionsDialogFragment.kt$PermissionsDialogFragment$Companion</ID> - <ID>UndocumentedPublicClass:PreferredColorScheme.kt$PreferredColorScheme$Companion</ID> <ID>UndocumentedPublicClass:PreferredColorScheme.kt$PreferredColorScheme$Dark : PreferredColorScheme</ID> <ID>UndocumentedPublicClass:PreferredColorScheme.kt$PreferredColorScheme$Light : PreferredColorScheme</ID> <ID>UndocumentedPublicClass:PreferredColorScheme.kt$PreferredColorScheme$System : PreferredColorScheme</ID> - <ID>UndocumentedPublicClass:PromptAbuserDetector.kt$PromptAbuserDetector$Companion</ID> - <ID>UndocumentedPublicClass:PromptFeature.kt$PromptFeature$Companion</ID> <ID>UndocumentedPublicClass:PromptRequest.kt$PromptRequest$Dismissible</ID> <ID>UndocumentedPublicClass:PromptRequest.kt$PromptRequest.Authentication$Level</ID> <ID>UndocumentedPublicClass:PromptRequest.kt$PromptRequest.Authentication$Method</ID> - <ID>UndocumentedPublicClass:PromptRequest.kt$PromptRequest.File$Companion</ID> <ID>UndocumentedPublicClass:PromptRequest.kt$PromptRequest.File$FacingMode</ID> <ID>UndocumentedPublicClass:PromptRequest.kt$PromptRequest.TimeSelection$Type</ID> <ID>UndocumentedPublicClass:ProtectedDataAdapter.kt$ProtectedDataAdapter : Adapter</ID> @@ -352,50 +195,28 @@ <ID>UndocumentedPublicClass:PushProcessor.kt$PushError$Network : PushError</ID> <ID>UndocumentedPublicClass:PushProcessor.kt$PushError$Registration : PushError</ID> <ID>UndocumentedPublicClass:PushProcessor.kt$PushError$ServiceUnavailable : PushError</ID> - <ID>UndocumentedPublicClass:PushProcessor.kt$PushProcessor$Companion</ID> - <ID>UndocumentedPublicClass:PushService.kt$PushService$Companion</ID> - <ID>UndocumentedPublicClass:QrFeature.kt$QrFeature$Companion</ID> - <ID>UndocumentedPublicClass:QrFragment.kt$QrFragment$Companion</ID> <ID>UndocumentedPublicClass:ReaderViewControlsView.kt$ReaderViewControlsView$Listener</ID> <ID>UndocumentedPublicClass:ReaderViewFeature.kt$ReaderViewFeature$ColorScheme</ID> - <ID>UndocumentedPublicClass:ReaderViewFeature.kt$ReaderViewFeature$Companion</ID> <ID>UndocumentedPublicClass:ReaderViewFeature.kt$ReaderViewFeature$FontType</ID> - <ID>UndocumentedPublicClass:RedirectDialogFragment.kt$RedirectDialogFragment$Companion</ID> - <ID>UndocumentedPublicClass:RegionState.kt$RegionState$Companion</ID> - <ID>UndocumentedPublicClass:ReportSiteDomainsRepository.kt$ReportSiteDomainsRepository$Companion</ID> <ID>UndocumentedPublicClass:Request.kt$Request$CookiePolicy</ID> <ID>UndocumentedPublicClass:Request.kt$Request$Redirect</ID> - <ID>UndocumentedPublicClass:Request.kt$Request.Body$Companion</ID> <ID>UndocumentedPublicClass:RequestInterceptor.kt$RequestInterceptor.InterceptionResponse$AppIntent : InterceptionResponse</ID> <ID>UndocumentedPublicClass:RequestInterceptor.kt$RequestInterceptor.InterceptionResponse$Content : InterceptionResponse</ID> - <ID>UndocumentedPublicClass:Response.kt$Response$Companion</ID> - <ID>UndocumentedPublicClass:Response.kt$Response.Body$Companion</ID> - <ID>UndocumentedPublicClass:ReversibleString.kt$ReversibleString$Companion</ID> <ID>UndocumentedPublicClass:RustLog.kt$RustLog</ID> <ID>UndocumentedPublicClass:SampleApplication.kt$SampleApplication : Application</ID> <ID>UndocumentedPublicClass:SampleToolbarHelpers.kt$ConfigurationAdapter : Adapter</ID> <ID>UndocumentedPublicClass:SampleToolbarHelpers.kt$ConfigurationViewHolder : ViewHolder</ID> <ID>UndocumentedPublicClass:SampleToolbarHelpers.kt$Extra</ID> <ID>UndocumentedPublicClass:SampleToolbarHelpers.kt$ToolbarConfiguration</ID> - <ID>UndocumentedPublicClass:SampleToolbarHelpers.kt$UrlBoxProgressView$Companion</ID> - <ID>UndocumentedPublicClass:SearchEngineSuggestionProvider.kt$SearchEngineSuggestionProvider$Companion</ID> <ID>UndocumentedPublicClass:SearchSuggestionClient.kt$SearchSuggestionClient$ResponseParserException : Exception</ID> - <ID>UndocumentedPublicClass:SearchSuggestionProvider.kt$SearchSuggestionProvider$Companion</ID> <ID>UndocumentedPublicClass:SearchSuggestionProvider.kt$SearchSuggestionProvider$Mode</ID> <ID>UndocumentedPublicClass:SearchUseCases.kt$SearchUseCases$DefaultSearchUseCase : SearchUseCase</ID> <ID>UndocumentedPublicClass:SearchUseCases.kt$SearchUseCases$NewTabSearchUseCase : SearchUseCase</ID> <ID>UndocumentedPublicClass:SearchUseCases.kt$SearchUseCases$SearchUseCase</ID> - <ID>UndocumentedPublicClass:SecurePrefsReliabilityExperiment.kt$SecurePrefsReliabilityExperiment$Companion</ID> - <ID>UndocumentedPublicClass:SecurePrefsReliabilityExperiment.kt$SecurePrefsReliabilityExperiment.Companion$Actions</ID> - <ID>UndocumentedPublicClass:SecurePrefsReliabilityExperiment.kt$SecurePrefsReliabilityExperiment.Companion$Values</ID> <ID>UndocumentedPublicClass:SendCrashReportService.kt$SendCrashReportService : Service</ID> - <ID>UndocumentedPublicClass:SendCrashReportService.kt$SendCrashReportService$Companion</ID> <ID>UndocumentedPublicClass:SendCrashTelemetryService.kt$SendCrashTelemetryService : Service</ID> - <ID>UndocumentedPublicClass:SendCrashTelemetryService.kt$SendCrashTelemetryService$Companion</ID> <ID>UndocumentedPublicClass:SendTabUseCases.kt$SendTabUseCases$SendToAllUseCase</ID> <ID>UndocumentedPublicClass:SendTabUseCases.kt$SendTabUseCases$SendToDeviceUseCase</ID> - <ID>UndocumentedPublicClass:SessionState.kt$PackageCategory$Companion</ID> - <ID>UndocumentedPublicClass:SessionState.kt$SessionState.Source$Companion</ID> <ID>UndocumentedPublicClass:SessionUseCases.kt$SessionUseCases$DefaultLoadUrlUseCase : LoadUrlUseCase</ID> <ID>UndocumentedPublicClass:SessionUseCases.kt$SessionUseCases$ExitFullScreenUseCase</ID> <ID>UndocumentedPublicClass:SessionUseCases.kt$SessionUseCases$GoBackUseCase</ID> @@ -406,60 +227,26 @@ <ID>UndocumentedPublicClass:SessionUseCases.kt$SessionUseCases$StopLoadingUseCase</ID> <ID>UndocumentedPublicClass:SettingUpdater.kt$SettingUpdater<T></ID> <ID>UndocumentedPublicClass:Settings.kt$UnsupportedSetting<T></ID> - <ID>UndocumentedPublicClass:SimpleDownloadDialogFragment.kt$SimpleDownloadDialogFragment$Companion</ID> - <ID>UndocumentedPublicClass:SimpleRedirectDialogFragment.kt$SimpleRedirectDialogFragment$Companion</ID> - <ID>UndocumentedPublicClass:SiteControlsBuilder.kt$SiteControlsBuilder.CopyAndRefresh$Companion</ID> - <ID>UndocumentedPublicClass:SiteControlsBuilder.kt$SiteControlsBuilder.Default$Companion</ID> <ID>UndocumentedPublicClass:SitePermissions.kt$SitePermissions$Status</ID> <ID>UndocumentedPublicClass:SitePermissionsFeature.kt$SitePermissionsFeature$PromptsStyling</ID> - <ID>UndocumentedPublicClass:SitePermissionsFeature.kt$SitePermissionsFeature.DialogConfig$Companion</ID> <ID>UndocumentedPublicClass:SitePermissionsRules.kt$SitePermissionsRules$Action</ID> <ID>UndocumentedPublicClass:SitePermissionsStorage.kt$SitePermissionsStorage$Permission</ID> - <ID>UndocumentedPublicClass:Size.kt$Size$Companion</ID> - <ID>UndocumentedPublicClass:StatementRelationChecker.kt$StatementRelationChecker$Companion</ID> <ID>UndocumentedPublicClass:StatusBarUtils.kt$StatusBarUtils</ID> - <ID>UndocumentedPublicClass:StickyItemLayoutManager.kt$StickyItemsLinearLayoutManager$Companion</ID> - <ID>UndocumentedPublicClass:StorageMaintenanceWorker.kt$StorageMaintenanceWorker$Companion</ID> <ID>UndocumentedPublicClass:StorageUtils.kt$StorageUtils</ID> <ID>UndocumentedPublicClass:Store.kt$Store.Subscription$Binding</ID> - <ID>UndocumentedPublicClass:StringLintXmlDetector.kt$StringLintXmlDetector$Companion</ID> - <ID>UndocumentedPublicClass:SupportedAddonsChecker.kt$DefaultSupportedAddonsChecker$Companion</ID> - <ID>UndocumentedPublicClass:SyncEnginesStorage.kt$SyncEnginesStorage$Companion</ID> - <ID>UndocumentedPublicClass:SystemEngine.kt$SystemEngine$Companion</ID> - <ID>UndocumentedPublicClass:SystemEngineSession.kt$SystemEngineSession$Companion</ID> <ID>UndocumentedPublicClass:SystemEngineSession.kt$SystemEngineSession$WebSetting<T></ID> <ID>UndocumentedPublicClass:SystemEngineSessionState.kt$SystemEngineSessionState : EngineSessionState</ID> - <ID>UndocumentedPublicClass:SystemEngineSessionState.kt$SystemEngineSessionState$Companion</ID> - <ID>UndocumentedPublicClass:SystemEngineView.kt$SystemEngineView$Companion</ID> <ID>UndocumentedPublicClass:SystemEngineView.kt$SystemEngineView$ImageHandler : Handler</ID> - <ID>UndocumentedPublicClass:SystemPermissionRequest.kt$SystemPermissionRequest$Companion</ID> <ID>UndocumentedPublicClass:TabCounterView.kt$TabCounterView : RelativeLayout</ID> - <ID>UndocumentedPublicClass:TabCounterView.kt$TabCounterView$Companion</ID> <ID>UndocumentedPublicClass:TabThumbnailView.kt$TabThumbnailView : AppCompatImageView</ID> - <ID>UndocumentedPublicClass:TabViewHolder.kt$DefaultTabViewHolder$Companion</ID> - <ID>UndocumentedPublicClass:TabsAdapter.kt$TabsAdapter$Companion</ID> <ID>UndocumentedPublicClass:TabsUseCases.kt$TabsUseCases$AddNewTabUseCase : LoadUrlUseCase</ID> <ID>UndocumentedPublicClass:TabsUseCases.kt$TabsUseCases$DefaultSelectTabUseCase : SelectTabUseCase</ID> <ID>UndocumentedPublicClass:TabsUseCases.kt$TabsUseCases$RemoveAllTabsUseCase</ID> - <ID>UndocumentedPublicClass:TextViewAndroidSrcXmlDetector.kt$TextViewAndroidSrcXmlDetector$Companion</ID> <ID>UndocumentedPublicClass:ThreadUtils.kt$ThreadUtils</ID> <ID>UndocumentedPublicClass:Token.kt$Token$Type</ID> - <ID>UndocumentedPublicClass:ToolbarActivity.kt$ToolbarActivity$Companion</ID> - <ID>UndocumentedPublicClass:Trie.kt$Trie$Companion</ID> <ID>UndocumentedPublicClass:URLStringUtils.kt$URLStringUtils</ID> - <ID>UndocumentedPublicClass:UrlMatcher.kt$UrlMatcher$Companion</ID> - <ID>UndocumentedPublicClass:WebAppIntentProcessor.kt$WebAppIntentProcessor$Companion</ID> - <ID>UndocumentedPublicClass:WebAppLauncherActivity.kt$WebAppLauncherActivity$Companion</ID> <ID>UndocumentedPublicClass:WebAppManifest.kt$WebAppManifest.Icon$Purpose</ID> - <ID>UndocumentedPublicClass:WebAppSiteControlsFeature.kt$WebAppSiteControlsFeature$Companion</ID> - <ID>UndocumentedPublicClass:WebAuthnFeature.kt$WebAuthnFeature$Companion</ID> - <ID>UndocumentedPublicClass:WebExtension.kt$DisabledFlags$Companion</ID> - <ID>UndocumentedPublicClass:WebExtension.kt$Incognito$Companion</ID> - <ID>UndocumentedPublicClass:WebExtensionActionPopupActivity.kt$WebExtensionActionPopupActivity.WebExtensionActionPopupFragment$Companion</ID> - <ID>UndocumentedPublicClass:WebExtensionBrowserMenu.kt$WebExtensionBrowserMenu$Companion</ID> - <ID>UndocumentedPublicClass:WebExtensionPlaceholderMenuItem.kt$WebExtensionPlaceholderMenuItem$Companion</ID> - <ID>UndocumentedPublicClass:WebURLFinder.kt$WebURLFinder$Companion</ID> - <ID>UndocumentedPublicFunction:AppLinksUseCases.kt$AppLinksUseCases.GetAppLinkRedirect$operator fun invoke(url: String): AppLinkRedirect</ID> + <ID>UndocumentedPublicFunction:AppLinksUseCases.kt$AppLinksUseCases.GetAppLinkRedirect$@Suppress("CyclomaticComplexMethod") operator fun invoke(url: String): AppLinkRedirect</ID> <ID>UndocumentedPublicFunction:Base64.kt$Base64$fun encodeToUriString(data: String)</ID> <ID>UndocumentedPublicFunction:BrowserFragment.kt$BrowserFragment.Companion$fun create(sessionId: String? = null)</ID> <ID>UndocumentedPublicFunction:BrowserMenu.kt$BrowserMenu$fun dismiss()</ID> diff --git a/mobile/android/android-components/config/detekt.yml b/mobile/android/android-components/config/detekt.yml @@ -94,7 +94,7 @@ comments: complexity: active: true CognitiveComplexMethod: - active: false + active: true threshold: 15 ComplexCondition: active: true @@ -596,7 +596,7 @@ style: value: 'kotlin.io.println' ForbiddenSuppress: active: true - rules: ['LongMethod', 'ComplexMethod', 'MagicNumber'] + rules: ['LongMethod', 'CognitiveComplexMethod', 'CyclomaticComplexMethod', 'MagicNumber'] ForbiddenVoid: active: false # (Default: true) ignoreOverridden: false diff --git a/mobile/android/android-components/samples/toolbar/src/main/java/org/mozilla/samples/toolbar/ToolbarActivity.kt b/mobile/android/android-components/samples/toolbar/src/main/java/org/mozilla/samples/toolbar/ToolbarActivity.kt @@ -595,7 +595,7 @@ class ToolbarActivity : AppCompatActivity() { private var loading = MutableLiveData<Boolean>() - @Suppress("TooGenericExceptionCaught") + @Suppress("TooGenericExceptionCaught", "CognitiveComplexMethod") private fun simulateReload(view: UrlBoxProgressView? = null) { job?.cancel() diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/FenixApplication.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/FenixApplication.kt @@ -736,7 +736,7 @@ open class FenixApplication : LocaleAwareApplication(), Provider { * the current metrics ping design. The values set here will be sent in every metrics ping even * if these values have not changed since the last startup. */ - @Suppress("ComplexMethod", "LongMethod") + @Suppress("CognitiveComplexMethod", "LongMethod", "CyclomaticComplexMethod") @VisibleForTesting internal fun setStartupMetrics( browserStore: BrowserStore, @@ -904,7 +904,7 @@ open class FenixApplication : LocaleAwareApplication(), Provider { private fun isDeviceRamAboveThreshold() = deviceRamApproxMegabytes() > RAM_THRESHOLD_MEGABYTES - @Suppress("ComplexMethod") + @Suppress("CyclomaticComplexMethod") private fun setPreferenceMetrics( settings: Settings, dohSettingsProvider: DohSettingsProvider, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/HomeActivity.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/HomeActivity.kt @@ -357,7 +357,7 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity { } } - @Suppress("ComplexMethod") + @Suppress("CognitiveComplexMethod", "CyclomaticComplexMethod") final override fun onCreate(savedInstanceState: Bundle?) { // DO NOT MOVE ANYTHING ABOVE THIS getProfilerTime CALL. val startTimeProfiler = components.core.engine.profiler?.getProfilerTime() diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/addons/AddonsManagementFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/addons/AddonsManagementFragment.kt @@ -67,6 +67,7 @@ class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management) binding = null } + @Suppress("CognitiveComplexMethod") private fun bindRecyclerView() { val managementView = AddonsManagementView( navController = findNavController(), diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/addons/ui/AddonPermissionsScreen.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/addons/ui/AddonPermissionsScreen.kt @@ -41,7 +41,7 @@ import mozilla.components.feature.addons.R as addonsR * The permissions screen for an addon which allows a user to edit the optional permissions. */ @Composable -@Suppress("LongParameterList", "LongMethod") +@Suppress("LongParameterList", "LongMethod", "CognitiveComplexMethod") fun AddonPermissionsScreen( permissions: List<String>, optionalPermissions: List<Addon.LocalizedPermission>, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/bookmarks/BookmarksMiddleware.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/bookmarks/BookmarksMiddleware.kt @@ -78,7 +78,7 @@ internal class BookmarksMiddleware( private val scope = CoroutineScope(ioDispatcher) - @Suppress("LongMethod", "ComplexMethod") + @Suppress("LongMethod", "CognitiveComplexMethod", "CyclomaticComplexMethod") override fun invoke( context: MiddlewareContext<BookmarksState, BookmarksAction>, next: (BookmarksAction) -> Unit, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/bookmarks/BookmarksScreen.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/bookmarks/BookmarksScreen.kt @@ -232,7 +232,7 @@ internal object BookmarksDestinations { * The Bookmarks list screen. */ @OptIn(ExperimentalLayoutApi::class) // for WindowInsets.isImeVisible -@Suppress("LongMethod", "ComplexMethod") +@Suppress("LongMethod", "CognitiveComplexMethod", "CyclomaticComplexMethod") @Composable private fun BookmarksList( store: BookmarksStore, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/bookmarks/BookmarksTelemetryMiddleware.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/bookmarks/BookmarksTelemetryMiddleware.kt @@ -15,7 +15,7 @@ private val LIST_SCREEN_METRIC_SOURCE = MetricsUtils.BookmarkAction.Source.BOOKM internal class BookmarksTelemetryMiddleware : Middleware<BookmarksState, BookmarksAction> { - @Suppress("LongMethod", "ComplexMethod") + @Suppress("LongMethod", "CyclomaticComplexMethod") override fun invoke( context: MiddlewareContext<BookmarksState, BookmarksAction>, next: (BookmarksAction) -> Unit, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt @@ -526,7 +526,7 @@ abstract class BaseBrowserFragment : } } - @Suppress("ComplexMethod", "LongMethod", "DEPRECATION") + @Suppress("CognitiveComplexMethod", "CyclomaticComplexMethod", "LongMethod", "DEPRECATION") // https://github.com/mozilla-mobile/fenix/issues/19920 @CallSuper internal open fun initializeUI(view: View, tab: SessionState) { @@ -1715,7 +1715,7 @@ abstract class BaseBrowserFragment : } } - @Suppress("LongMethod") + @Suppress("LongMethod", "CognitiveComplexMethod") private fun initializeMicrosurveyPrompt() { val context = requireContext() val view = requireView() @@ -2608,6 +2608,7 @@ abstract class BaseBrowserFragment : findInPageIntegration.withFeature { it.launch() } } + @Suppress("CognitiveComplexMethod") private fun setupIMEInsetsHandling(view: View) { // Ensure that navigating to new webpages which triggers this handling being set again // would not leave the engine view with half set values from the previous animation. diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/TabPreview.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/TabPreview.kt @@ -98,7 +98,7 @@ class TabPreview @JvmOverloads constructor( val isVisible: () -> Boolean = { true }, ) - @Suppress("LongMethod", "CyclomaticComplexMethod") + @Suppress("LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod") private fun buildAction( toolbarAction: ToolbarAction, tab: TabSessionState?, @@ -440,6 +440,7 @@ class TabPreview @JvmOverloads constructor( } } + @Suppress("CognitiveComplexMethod") private fun buildBottomComposableToolbar(): ComposeView { return binding.composableBottomToolbar.apply { setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/ToolbarGestureHandler.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/ToolbarGestureHandler.kt @@ -156,6 +156,7 @@ class ToolbarGestureHandler( } } + @Suppress("CognitiveComplexMethod") private fun getDestination(): Destination { val isLtr = activity.resources.configuration.layoutDirection == View.LAYOUT_DIRECTION_LTR val currentTab = store.state.selectedTab ?: return Destination.None diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/TranslationsBinding.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/TranslationsBinding.kt @@ -50,7 +50,7 @@ class TranslationsBinding( private val onShowTranslationsDialog: () -> Unit = { }, ) : AbstractBinding<BrowserState>(browserStore) { - @Suppress("LongMethod") + @Suppress("LongMethod", "CognitiveComplexMethod") override suspend fun onState(flow: Flow<BrowserState>) { // Browser level flows val browserFlow = flow.mapNotNull { state -> state } diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/tabstrip/TabStrip.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/tabstrip/TabStrip.kt @@ -319,7 +319,7 @@ private fun TabsList( } @Composable -@Suppress("LongMethod") +@Suppress("LongMethod", "CognitiveComplexMethod") private fun TabItem( state: TabStripItem, modifier: Modifier = Modifier, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/appstate/AppStoreReducer.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/appstate/AppStoreReducer.kt @@ -31,7 +31,7 @@ import org.mozilla.fenix.share.ShareActionReducer * Reducer for [AppStore]. */ internal object AppStoreReducer { - @Suppress("LongMethod") + @Suppress("LongMethod", "CognitiveComplexMethod") fun reduce(state: AppState, action: AppAction): AppState = when (action) { is AppAction.UpdateInactiveExpanded -> state.copy(inactiveTabsExpanded = action.expanded) diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/appstate/recommendations/ContentRecommendationsReducer.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/appstate/recommendations/ContentRecommendationsReducer.kt @@ -25,7 +25,7 @@ internal object ContentRecommendationsReducer { /** * Reduces the given [ContentRecommendationsAction] into a new [AppState]. */ - @Suppress("LongMethod") + @Suppress("LongMethod", "CognitiveComplexMethod") fun reduce(state: AppState, action: ContentRecommendationsAction): AppState { return when (action) { is ContentRecommendationsAction.ContentRecommendationsFetched -> { diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/appstate/setup/checklist/SetupChecklistReducer.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/appstate/setup/checklist/SetupChecklistReducer.kt @@ -19,6 +19,7 @@ internal object SetupChecklistReducer { * @param action The [SetupChecklistAction] being reduced. * @return The resulting [AppState] after the given [action] has been reduced. */ + @Suppress("CognitiveComplexMethod") fun reduce(state: AppState, action: SetupChecklistAction): AppState = when (action) { is SetupChecklistAction.Init -> state is SetupChecklistAction.Closed -> state.copy( diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/MenuDialogFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/MenuDialogFragment.kt @@ -207,7 +207,7 @@ class MenuDialogFragment : BottomSheetDialogFragment() { } } - @Suppress("LongMethod", "CyclomaticComplexMethod", "MagicNumber") + @Suppress("LongMethod", "CyclomaticComplexMethod", "MagicNumber", "CognitiveComplexMethod") override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/compose/CustomTabMenu.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/compose/CustomTabMenu.kt @@ -63,7 +63,7 @@ import mozilla.components.ui.icons.R as iconsR * @param onStopButtonClick Invoked when the user clicks on the stop button. * @param onShareButtonClick Invoked when the user clicks on the share button. */ -@Suppress("LongParameterList", "LongMethod", "CyclomaticComplexMethod") +@Suppress("LongParameterList", "LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod") @Composable internal fun CustomTabMenu( canGoBack: Boolean, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/compose/MainMenu.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/compose/MainMenu.kt @@ -134,7 +134,7 @@ import mozilla.components.ui.icons.R as iconsR * @param extensionSubmenu The content of extensions menu item to avoid configuration during animation. * @param extensionsMenuItemDescription The label of extensions menu item description. */ -@Suppress("LongParameterList", "LongMethod", "CyclomaticComplexMethod") +@Suppress("LongParameterList", "LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod") @Composable fun MainMenu( accessPoint: MenuAccessPoint, @@ -336,7 +336,7 @@ fun MainMenu( } } -@Suppress("LongParameterList", "LongMethod") +@Suppress("LongParameterList", "LongMethod", "CognitiveComplexMethod") @Composable private fun ExtensionsMenuItem( isExtensionsProcessDisabled: Boolean, @@ -500,7 +500,7 @@ private fun QuitMenuGroup( } } -@Suppress("LongParameterList", "LongMethod") +@Suppress("LongParameterList", "LongMethod", "CognitiveComplexMethod") @Composable private fun ToolsAndActionsMenuGroup( isBookmarked: Boolean, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/compose/MoreSettingsSubmenu.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/compose/MoreSettingsSubmenu.kt @@ -22,7 +22,7 @@ import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.Theme import mozilla.components.ui.icons.R as iconsR -@Suppress("LongParameterList") +@Suppress("LongParameterList", "CognitiveComplexMethod") @Composable internal fun MoreSettingsSubmenu( isPinned: Boolean, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/middleware/MenuNavigationMiddleware.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/middleware/MenuNavigationMiddleware.kt @@ -76,7 +76,7 @@ class MenuNavigationMiddleware( private val webCompatReporterMoreInfoSender: WebCompatReporterMoreInfoSender, ) : Middleware<MenuState, MenuAction> { - @Suppress("CyclomaticComplexMethod", "LongMethod") + @Suppress("CyclomaticComplexMethod", "LongMethod", "CognitiveComplexMethod") override fun invoke( context: MiddlewareContext<MenuState, MenuAction>, next: (MenuAction) -> Unit, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/middleware/MenuTelemetryMiddleware.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/middleware/MenuTelemetryMiddleware.kt @@ -28,7 +28,7 @@ class MenuTelemetryMiddleware( private val accessPoint: MenuAccessPoint, ) : Middleware<MenuState, MenuAction> { - @Suppress("CyclomaticComplexMethod", "LongMethod") + @Suppress("CyclomaticComplexMethod", "LongMethod", "CognitiveComplexMethod") override fun invoke( context: MiddlewareContext<MenuState, MenuAction>, next: (MenuAction) -> Unit, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/metrics/AdjustMetricsService.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/metrics/AdjustMetricsService.kt @@ -33,6 +33,7 @@ class AdjustMetricsService( override val type = MetricServiceType.Marketing private val logger = Logger("AdjustMetricsService") + @Suppress("CognitiveComplexMethod") override fun start() { val settings = application.components.settings diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/metrics/InstallReferrerMetricsService.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/metrics/InstallReferrerMetricsService.kt @@ -35,6 +35,7 @@ class InstallReferrerMetricsService(private val context: Context) : MetricsServi private var referrerClient: InstallReferrerClient? = null + @Suppress("CognitiveComplexMethod") override fun start() { if (context.settings().utmParamsKnown) { return diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/metrics/MarketingAttributionService.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/metrics/MarketingAttributionService.kt @@ -30,6 +30,7 @@ class MarketingAttributionService(private val context: Context) { /** * Starts the connection with the install referrer and handle the response. */ + @Suppress("CognitiveComplexMethod") fun start() { val client = InstallReferrerClient.newBuilder(context).build() referrerClient = client diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/metrics/MetricController.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/metrics/MetricController.kt @@ -147,7 +147,7 @@ internal class ReleaseMetricController( } @VisibleForTesting - @Suppress("LongMethod") + @Suppress("LongMethod", "CognitiveComplexMethod") internal fun Fact.process(): Unit = when (component to item) { Component.FEATURE_PROMPTS to LoginDialogFacts.Items.DISPLAY -> { LoginDialog.displayed.record(NoExtras()) diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarMenuController.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarMenuController.kt @@ -104,7 +104,7 @@ class DefaultBrowserToolbarMenuController( @VisibleForTesting internal var ioScope: CoroutineScope = CoroutineScope(Dispatchers.IO) - @Suppress("ComplexMethod", "LongMethod") + @Suppress("CognitiveComplexMethod", "LongMethod", "CyclomaticComplexMethod") override fun handleToolbarItemInteraction(item: ToolbarMenu.Item) { val sessionUseCases = activity.components.useCases.sessionUseCases val customTabUseCases = activity.components.useCases.customTabsUseCases @@ -452,7 +452,7 @@ class DefaultBrowserToolbarMenuController( } } - @Suppress("ComplexMethod", "LongMethod") + @Suppress("CognitiveComplexMethod", "LongMethod") private fun trackToolbarItemInteraction(item: ToolbarMenu.Item) { when (item) { is ToolbarMenu.Item.OpenInFenix -> diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarMiddleware.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarMiddleware.kt @@ -218,7 +218,7 @@ class BrowserToolbarMiddleware( @VisibleForTesting internal var environment: BrowserToolbarEnvironment? = null - @Suppress("LongMethod", "CyclomaticComplexMethod", "NestedBlockDepth", "ReturnCount") + @Suppress("LongMethod", "CyclomaticComplexMethod", "NestedBlockDepth", "ReturnCount", "CognitiveComplexMethod") override fun invoke( context: MiddlewareContext<BrowserToolbarState, BrowserToolbarAction>, next: (BrowserToolbarAction) -> Unit, @@ -1128,7 +1128,7 @@ class BrowserToolbarMiddleware( appStore.state.searchState.selectedSearchEngine?.searchEngine ?: browserStore.state.search.selectedOrDefaultSearchEngine - @Suppress("LongMethod") + @Suppress("LongMethod", "CognitiveComplexMethod") @VisibleForTesting internal fun buildAction( toolbarAction: ToolbarAction, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/usecases/FenixBrowserUseCases.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/usecases/FenixBrowserUseCases.kt @@ -48,6 +48,7 @@ class FenixBrowserUseCases( * was opened from history. * @param additionalHeaders The extra headers to use when loading the URL. */ + @Suppress("CognitiveComplexMethod") fun loadUrlOrSearch( searchTermOrURL: String, newTab: Boolean, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/compose/Menu.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/compose/Menu.kt @@ -52,7 +52,7 @@ import mozilla.components.ui.icons.R as iconsR * @param offset Offset to be added to the position of the menu. * @param onDismissRequest Invoked when user dismisses the menu or on orientation changes. */ -@Suppress("LongMethod") +@Suppress("LongMethod", "CognitiveComplexMethod") @Composable private fun Menu( menuItems: List<MenuItem>, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/compose/SwipeToDismissBox2.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/compose/SwipeToDismissBox2.kt @@ -158,7 +158,7 @@ class SwipeToDismissState2( } // https://bugzilla.mozilla.org/show_bug.cgi?id=1957790 -@Suppress("DEPRECATION") +@Suppress("DEPRECATION", "CognitiveComplexMethod") private fun Modifier.anchoredHorizontalDraggable( state: SwipeToDismissState2, scope: CoroutineScope, @@ -214,6 +214,7 @@ private fun isReallyHorizontal(x: Float, y: Float) = * @param dismissContent The content that can be dismissed. */ @Composable +@Suppress("CognitiveComplexMethod") fun SwipeToDismissBox2( state: SwipeToDismissState2, modifier: Modifier = Modifier, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/compose/list/ListItem.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/compose/list/ListItem.kt @@ -662,6 +662,7 @@ fun SelectableFaviconListItem( * not supplied. */ @Composable +@Suppress("CognitiveComplexMethod") fun SelectableIconListItem( label: String, isSelected: Boolean, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/compose/tabstray/TabGridItem.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/compose/tabstray/TabGridItem.kt @@ -122,7 +122,7 @@ fun TabGridItem( } } -@Suppress("LongMethod") +@Suppress("LongMethod", "CognitiveComplexMethod") @Composable private fun TabContent( tab: TabSessionState, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/downloads/listscreen/DownloadsScreen.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/downloads/listscreen/DownloadsScreen.kt @@ -83,7 +83,7 @@ import mozilla.components.ui.icons.R as iconsR * @param onItemClick Callback invoked when a download item is clicked. * @param onNavigationIconClick Callback for the back button click in the toolbar. */ -@Suppress("LongMethod") +@Suppress("LongMethod", "CognitiveComplexMethod") @Composable fun DownloadsScreen( downloadsStore: DownloadUIStore, @@ -402,7 +402,7 @@ private fun DownloadsScreenContent( } @Composable -@Suppress("LongParameterList") +@Suppress("LongParameterList", "CognitiveComplexMethod") private fun DownloadsContent( items: List<DownloadListItem>, mode: Mode, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/historymetadata/HistoryMetadataMiddleware.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/historymetadata/HistoryMetadataMiddleware.kt @@ -35,7 +35,7 @@ class HistoryMetadataMiddleware( // e.g. via the toolbar as opposed to via web content. private var directLoadTriggeredSet = mutableSetOf<String>() - @Suppress("ComplexMethod") + @Suppress("CyclomaticComplexMethod") override fun invoke( context: MiddlewareContext<BrowserState, BrowserAction>, next: (BrowserAction) -> Unit, @@ -150,7 +150,7 @@ class HistoryMetadataMiddleware( } } - @Suppress("ComplexMethod") + @Suppress("CognitiveComplexMethod") private fun createHistoryMetadata( context: MiddlewareContext<BrowserState, BrowserAction>, tab: TabSessionState, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -722,6 +722,7 @@ class HomeFragment : Fragment() { } } + @Suppress("CognitiveComplexMethod") private fun initializeMicrosurveyPrompt() { val context = requireContext() diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/collections/CollectionItem.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/collections/CollectionItem.kt @@ -55,6 +55,7 @@ private val BOTTOM_TAB_SHAPE = RoundedCornerShape(bottomStart = 8.dp, bottomEnd * @param onRemove Invoked when the user removes the tab informing also if the tab was swiped to be removed. */ @Composable +@Suppress("CognitiveComplexMethod") fun CollectionItem( tab: Tab, isLastInCollection: Boolean, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/intent/HomeDeepLinkIntentProcessor.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/intent/HomeDeepLinkIntentProcessor.kt @@ -46,7 +46,7 @@ class HomeDeepLinkIntentProcessor( } } - @Suppress("ComplexMethod") + @Suppress("CyclomaticComplexMethod") private fun handleDeepLink( deepLink: Uri, extras: Bundle?, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/pocket/ui/PocketStoriesComposables.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/pocket/ui/PocketStoriesComposables.kt @@ -333,7 +333,7 @@ fun ContentRecommendation( * @param onStoryShown Callback for when a certain story is visible to the user. * @param onStoryClicked Callback for when the user taps on a recommended story. */ -@Suppress("CyclomaticComplexMethod", "LongMethod") +@Suppress("CyclomaticComplexMethod", "LongMethod", "CognitiveComplexMethod") @Composable fun PocketStories( @PreviewParameter(PocketStoryProvider::class) stories: List<PocketStory>, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/pocket/ui/Stories.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/pocket/ui/Stories.kt @@ -261,7 +261,7 @@ fun ContentRecommendationStory( * @param onStoryShown Callback for when a certain story is visible to the user. * @param onStoryClicked Callback for when the user taps on a recommended story. */ -@Suppress("CyclomaticComplexMethod", "LongMethod") +@Suppress("CyclomaticComplexMethod", "LongMethod", "CognitiveComplexMethod") @Composable fun Stories( @PreviewParameter(StoryProvider::class) stories: List<PocketStory>, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/recentsyncedtabs/view/RecentSyncedTab.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/recentsyncedtabs/view/RecentSyncedTab.kt @@ -66,7 +66,7 @@ private const val THUMBNAIL_SIZE = 108 * @param onSeeAllSyncedTabsButtonClick Invoked when user clicks on the "See all" button in the synced tab card. * @param onRemoveSyncedTab Invoked when user clicks on the "Remove" dropdown menu option. */ -@Suppress("LongMethod") +@Suppress("LongMethod", "CognitiveComplexMethod") @Composable fun RecentSyncedTab( tab: RecentSyncedTab?, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/recentvisits/view/RecentlyVisited.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/recentvisits/view/RecentlyVisited.kt @@ -68,6 +68,7 @@ private val contentPadding = 16.dp * the item resides in. */ @Composable +@Suppress("CognitiveComplexMethod") fun RecentlyVisited( recentVisits: List<RecentlyVisitedItem>, menuItems: List<RecentVisitMenuItem>, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/toolbar/BrowserToolbarMiddleware.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/toolbar/BrowserToolbarMiddleware.kt @@ -121,7 +121,7 @@ class BrowserToolbarMiddleware( private var syncCurrentSearchEngineJob: Job? = null private var observeBrowserSearchStateJob: Job? = null - @Suppress("LongMethod", "CyclomaticComplexMethod") + @Suppress("LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod") override fun invoke( context: MiddlewareContext<BrowserToolbarState, BrowserToolbarAction>, next: (BrowserToolbarAction) -> Unit, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/ui/Homepage.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/ui/Homepage.kt @@ -83,7 +83,7 @@ private const val BOTTOM_PADDING = 47 * @param onTopSitesItemBound Invoked during the composition of a top site item. * @param modifier [Modifier] to be applied to the layout. */ -@Suppress("LongMethod", "CyclomaticComplexMethod") +@Suppress("LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod") @Composable internal fun Homepage( state: HomepageState, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/ui/MiddleSearchHomepage.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/ui/MiddleSearchHomepage.kt @@ -45,7 +45,7 @@ private const val BOTTOM_PADDING = 47 * @param onMiddleSearchBarVisibilityChanged Invoked when the middle search is shown/hidden. * @param onTopSitesItemBound Invoked during the composition of a top site item. */ -@Suppress("LongMethod", "CyclomaticComplexMethod") +@Suppress("LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod") @Composable internal fun MiddleSearchHomepage( state: HomepageState, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/library/history/HistoryAdapter.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/library/history/HistoryAdapter.kt @@ -57,7 +57,7 @@ class HistoryAdapter( if (itemCount > 0) notifyItemChanged(0) } - @Suppress("ComplexMethod") + @Suppress("CognitiveComplexMethod", "CyclomaticComplexMethod") override fun onBindViewHolder(holder: HistoryListItemViewHolder, position: Int) { val current = getItem(position) ?: return var isPendingDeletion = false diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/library/history/HistoryFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/library/history/HistoryFragment.kt @@ -446,7 +446,7 @@ class HistoryFragment : LibraryPageFragment<History>(), UserInteractionHandler, else -> false } - @Suppress("LongMethod") + @Suppress("LongMethod", "CognitiveComplexMethod") @OptIn(ExperimentalLayoutApi::class) // for WindowInsets.isImeVisible private fun handleShowingSearchUX() { if (searchLayout == null) { diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/library/history/HistoryFragmentStore.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/library/history/HistoryFragmentStore.kt @@ -215,6 +215,7 @@ data class HistoryFragmentState( /** * The HistoryState Reducer. */ +@Suppress("CognitiveComplexMethod") private fun historyStateReducer( state: HistoryFragmentState, action: HistoryFragmentAction, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/perf/ProfilerViewModel.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/perf/ProfilerViewModel.kt @@ -182,6 +182,7 @@ class ProfilerViewModel( /** * Polls the profiler status until it becomes active or the operation is cancelled. */ + @Suppress("CognitiveComplexMethod") private fun pollUntilProfilerActiveAndThen(onActive: () -> Unit, onPollFail: () -> Unit) { pollingJob?.cancel() pollingJob = viewModelScope.launch(ioDispatcher) { diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/reviewprompt/ReviewPromptMiddleware.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/reviewprompt/ReviewPromptMiddleware.kt @@ -94,6 +94,7 @@ class ReviewPromptMiddleware( next(action) } + @Suppress("CognitiveComplexMethod") private fun handleReviewPromptCheck(context: MiddlewareContext<AppState, AppAction>) { if (context.state.reviewPrompt != ReviewPromptState.Unknown) { // We only want to try to show it once to avoid unnecessary disk reads. diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/search/SearchDialogFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/search/SearchDialogFragment.kt @@ -370,7 +370,7 @@ class SearchDialogFragment : AppCompatDialogFragment(), UserInteractionHandler { return binding.root } - @SuppressWarnings("LongMethod", "ComplexMethod") + @SuppressWarnings("LongMethod", "CognitiveComplexMethod") override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/search/SearchFragmentStore.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/search/SearchFragmentStore.kt @@ -444,7 +444,7 @@ sealed class SearchFragmentAction : Action { /** * The SearchState Reducer. */ -@Suppress("LongMethod") +@Suppress("LongMethod", "CognitiveComplexMethod") private fun searchStateReducer(state: SearchFragmentState, action: SearchFragmentAction): SearchFragmentState { return when (action) { is Init -> { diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarComposable.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarComposable.kt @@ -96,7 +96,7 @@ class AwesomeBarComposable( * that will show search suggestions whenever the users edits the current query in the toolbar. */ @OptIn(ExperimentalLayoutApi::class) // for WindowInsets.isImeVisible - @Suppress("LongMethod", "CyclomaticComplexMethod") + @Suppress("LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod") @Composable fun SearchSuggestions() { val isSearchActive = appStore.observeAsComposableState { it.searchState.isSearchActive }.value diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/search/awesomebar/SearchSuggestionsProvidersBuilder.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/search/awesomebar/SearchSuggestionsProvidersBuilder.kt @@ -151,7 +151,7 @@ class SearchSuggestionsProvidersBuilder( searchSuggestionProviderMap = HashMap() } - @Suppress("ComplexMethod", "LongMethod") + @Suppress("CognitiveComplexMethod", "LongMethod", "CyclomaticComplexMethod") internal fun getProvidersToAdd( state: SearchProviderState, ): Set<AwesomeBar.SuggestionProvider> { diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/PrivateBrowsingFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/PrivateBrowsingFragment.kt @@ -52,6 +52,7 @@ class PrivateBrowsingFragment : PreferenceFragmentCompat() { updatePreferences() } + @Suppress("CognitiveComplexMethod") private fun updatePreferences() { val biometricManager = BiometricManager.from(requireContext()) val deviceCapable = biometricManager.isHardwareAvailable() diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SecretSettingsFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SecretSettingsFragment.kt @@ -36,7 +36,7 @@ class SecretSettingsFragment : PreferenceFragmentCompat() { showToolbar(getString(R.string.preferences_debug_settings)) } - @Suppress("LongMethod", "CyclomaticComplexMethod") + @Suppress("LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod") override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { val debugSettingsRepository = DefaultDebugSettingsRepository( context = requireContext(), diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt @@ -316,7 +316,7 @@ class SettingsFragment : PreferenceFragmentCompat() { } @SuppressLint("InflateParams") - @Suppress("ComplexMethod", "LongMethod") + @Suppress("LongMethod", "CyclomaticComplexMethod") override fun onPreferenceTreeClick(preference: Preference): Boolean { // Hide the scrollbar so the animation looks smoother val recyclerView = requireView().findViewById<RecyclerView>(R.id.recycler_view) diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/account/AccountSettingsFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/account/AccountSettingsFragment.kt @@ -140,7 +140,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat() { ) } - @Suppress("ComplexMethod", "LongMethod") + @Suppress("LongMethod", "CyclomaticComplexMethod") override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.account_settings_preferences, rootKey) diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesScreen.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesScreen.kt @@ -317,6 +317,7 @@ private fun TogglePreferenceSection( * @param onClick Callback invoked when the section is clicked (if enabled). */ @Composable +@Suppress("CognitiveComplexMethod") private fun StudiesSection( studiesEnabled: Boolean = true, sectionEnabled: Boolean = true, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/logins/ui/LoginsMiddleware.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/logins/ui/LoginsMiddleware.kt @@ -45,7 +45,7 @@ internal class LoginsMiddleware( private val scope = CoroutineScope(ioDispatcher) - @Suppress("LongMethod", "ComplexMethod") + @Suppress("LongMethod", "CyclomaticComplexMethod") override fun invoke( context: MiddlewareContext<LoginsState, LoginsAction>, next: (LoginsAction) -> Unit, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/logins/ui/SavedLoginsScreen.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/logins/ui/SavedLoginsScreen.kt @@ -246,7 +246,7 @@ private fun EmptyList( @OptIn(ExperimentalMaterial3Api::class) @Composable -@Suppress("LongMethod") +@Suppress("LongMethod", "CognitiveComplexMethod") private fun LoginsListTopBar( store: LoginsStore, text: String, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/settingssearch/DefaultFenixSettingsIndexer.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/settingssearch/DefaultFenixSettingsIndexer.kt @@ -68,7 +68,7 @@ class DefaultFenixSettingsIndexer(private val context: Context) : SettingsIndexe return null } - @Suppress("NestedBlockDepth") + @Suppress("NestedBlockDepth", "CognitiveComplexMethod") private fun parseXmlFile( parser: XmlResourceParser, preferenceFileInformation: PreferenceFileInformation, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/trustpanel/TrustPanelFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/trustpanel/TrustPanelFragment.kt @@ -111,7 +111,7 @@ class TrustPanelFragment : BottomSheetDialogFragment() { } } - @Suppress("LongMethod", "MagicNumber") + @Suppress("LongMethod", "MagicNumber", "CognitiveComplexMethod") override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/trustpanel/ui/ProtectionPanel.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/trustpanel/ui/ProtectionPanel.kt @@ -72,7 +72,7 @@ private val BANNER_ROUNDED_CORNER_SHAPE = RoundedCornerShape( private const val DROPDOWN_TEXT_WIDTH_FRACTION = 0.5f -@Suppress("LongParameterList", "LongMethod") +@Suppress("LongParameterList", "LongMethod", "CognitiveComplexMethod") @Composable internal fun ProtectionPanel( websiteInfoState: WebsiteInfoState, @@ -272,6 +272,7 @@ private fun ProtectionPanelBanner( } @Composable +@Suppress("CognitiveComplexMethod") private fun WebsitePermissionsMenuGroup( websitePermissions: List<WebsitePermission>, onAutoplayValueClick: (AutoplayValue) -> Unit, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/wallpaper/WallpaperSettings.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/wallpaper/WallpaperSettings.kt @@ -223,6 +223,7 @@ fun WallpaperThumbnails( * @param onSelect Action to take when a new wallpaper is selected. */ @Composable +@Suppress("CognitiveComplexMethod") private fun WallpaperThumbnailItem( wallpaper: Wallpaper, defaultWallpaper: Wallpaper, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/snackbar/SnackbarBinding.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/snackbar/SnackbarBinding.kt @@ -73,7 +73,7 @@ class SnackbarBinding( private val currentSession get() = browserStore.state.findCustomTabOrSelectedTab(customTabSessionId) - @Suppress("LongMethod", "ComplexMethod") + @Suppress("LongMethod", "CognitiveComplexMethod", "CyclomaticComplexMethod") override suspend fun onState(flow: Flow<AppState>) { flow.map { state -> state.snackbarState } .distinctUntilChanged() diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/TabsTray.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/TabsTray.kt @@ -359,7 +359,7 @@ private fun TabsTrayLockedPreview() { ) } -@Suppress("LongMethod") +@Suppress("LongMethod", "CognitiveComplexMethod") @Composable private fun TabsTrayPreviewRoot( displayTabsInGrid: Boolean = true, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/TabsTrayFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/TabsTrayFragment.kt @@ -228,7 +228,7 @@ class TabsTrayFragment : AppCompatDialogFragment() { dialog?.window?.setWindowAnimations(R.style.DialogFragmentRestoreAnimation) } - @Suppress("LongMethod") + @Suppress("LongMethod", "CognitiveComplexMethod") override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/browser/compose/ReorderableList.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/browser/compose/ReorderableList.kt @@ -153,6 +153,7 @@ class ListReorderState internal constructor( draggingItemInitialOffset = 0f } + @Suppress("CognitiveComplexMethod") internal fun onDrag(offset: Float) { draggingItemCumulatedOffset += offset diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/syncedtabs/SyncedTabsList.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/syncedtabs/SyncedTabsList.kt @@ -62,7 +62,7 @@ typealias OnTabCloseClick = (deviceId: String, tab: SyncTab) -> Unit * @param onTabClick The lambda for handling clicks on synced tabs. * @param onTabCloseClick The lambda for handling clicks on a synced tab's close button. */ -@SuppressWarnings("LongMethod") +@SuppressWarnings("LongMethod", "CognitiveComplexMethod") @Composable fun SyncedTabsList( syncedTabs: List<SyncedTabsListItem>, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/ui/TabManagementFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/ui/TabManagementFragment.kt @@ -195,7 +195,7 @@ class TabManagementFragment : DialogFragment() { setStyle(STYLE_NO_TITLE, R.style.TabManagerDialogStyle) } - @Suppress("LongMethod") + @Suppress("LongMethod", "CognitiveComplexMethod") override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/ui/syncedtabs/SyncedTabsList.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/ui/syncedtabs/SyncedTabsList.kt @@ -73,7 +73,7 @@ typealias OnTabCloseClick = (deviceId: String, tab: SyncTab) -> Unit * @param onTabClick The lambda for handling clicks on synced tabs. * @param onTabCloseClick The lambda for handling clicks on a synced tab's close button. */ -@SuppressWarnings("LongMethod") +@SuppressWarnings("LongMethod", "CognitiveComplexMethod") @Composable fun SyncedTabsList( syncedTabs: List<SyncedTabsListItem>, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/ui/tabitems/TabGridItem.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/ui/tabitems/TabGridItem.kt @@ -136,7 +136,7 @@ fun TabGridItem( } } -@Suppress("LongMethod") +@Suppress("LongMethod", "CognitiveComplexMethod") @Composable private fun TabContent( tab: TabSessionState, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/ui/tabpage/TabLayout.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/ui/tabpage/TabLayout.kt @@ -283,7 +283,7 @@ private fun TabGrid( } } -@Suppress("LongParameterList", "LongMethod") +@Suppress("LongParameterList", "LongMethod", "CognitiveComplexMethod") @Composable private fun TabList( tabs: List<TabSessionState>, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/telemetry/TelemetryMiddleware.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/telemetry/TelemetryMiddleware.kt @@ -54,7 +54,7 @@ class TelemetryMiddleware( private val logger = Logger("TelemetryMiddleware") - @Suppress("TooGenericExceptionCaught", "ComplexMethod", "NestedBlockDepth", "LongMethod") + @Suppress("TooGenericExceptionCaught", "CognitiveComplexMethod", "NestedBlockDepth", "LongMethod", "CyclomaticComplexMethod") override fun invoke( context: MiddlewareContext<BrowserState, BrowserAction>, next: (BrowserAction) -> Unit, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/trackingprotection/TrackingProtectionPanelView.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/trackingprotection/TrackingProtectionPanelView.kt @@ -215,6 +215,7 @@ class TrackingProtectionPanelView( * visibility, where "..._loaded" titles correspond to "Allowed" permissions and the other * corresponds to "Blocked" permissions for each category. */ + @Suppress("CognitiveComplexMethod") private fun getLastUsedCategoryView(categoryTitle: String) = when (categoryTitle) { CROSS_SITE_TRACKING_COOKIES.name -> { if (binding.crossSiteTracking.isGone) binding.crossSiteTrackingLoaded else binding.crossSiteTracking diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/TranslationSettings.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/TranslationSettings.kt @@ -43,7 +43,7 @@ import org.mozilla.fenix.theme.FirefoxTheme * @param onNeverTranslationClicked Invoked when the user clicks on the "Never Translation" button. * @param onDownloadLanguageClicked Invoked when the user clicks on the "Download Language" button. */ -@Suppress("LongMethod") +@Suppress("LongMethod", "CognitiveComplexMethod") @Composable fun TranslationSettings( translationSwitchList: List<TranslationSwitchItem>, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/TranslationsDialogFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/TranslationsDialogFragment.kt @@ -98,7 +98,7 @@ class TranslationsDialogFragment : BottomSheetDialogFragment() { } } - @Suppress("LongMethod") + @Suppress("LongMethod", "CognitiveComplexMethod") override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/TranslationsDialogStore.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/TranslationsDialogStore.kt @@ -226,7 +226,7 @@ internal object TranslationsDialogReducer { * @param action The action to perform. * @return The new [TranslationsDialogState]. */ - @Suppress("LongMethod") + @Suppress("LongMethod", "CognitiveComplexMethod") fun reduce( state: TranslationsDialogState, action: TranslationsDialogAction, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/preferences/downloadlanguages/DownloadLanguagesPreference.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/preferences/downloadlanguages/DownloadLanguagesPreference.kt @@ -71,7 +71,7 @@ import mozilla.components.ui.icons.R as iconsR * @param onLearnMoreClicked Invoked when the user clicks on the "Learn More" button. * @param onItemClick Invoked when the user clicks on the language item. */ -@Suppress("LongMethod", "CyclomaticComplexMethod") +@Suppress("LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod") @Composable fun DownloadLanguagesPreference( downloadLanguageItemPreferences: List<DownloadLanguageItemPreference>, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/preferences/downloadlanguages/DownloadLanguagesPreferenceFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/preferences/downloadlanguages/DownloadLanguagesPreferenceFragment.kt @@ -50,6 +50,7 @@ class DownloadLanguagesPreferenceFragment : Fragment() { showToolbar(getString(R.string.download_languages_translations_toolbar_title_preference)) } + @Suppress("CognitiveComplexMethod") override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/wallpapers/LegacyWallpaperMigration.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/wallpapers/LegacyWallpaperMigration.kt @@ -33,6 +33,7 @@ class LegacyWallpaperMigration( * * @param wallpaperName Name of the wallpaper to be migrated. */ + @Suppress("CognitiveComplexMethod") suspend fun migrateLegacyWallpaper( wallpaperName: String, ): String = withContext(Dispatchers.IO) { diff --git a/mobile/android/fenix/config/detekt-baseline.xml b/mobile/android/fenix/config/detekt-baseline.xml @@ -2,86 +2,100 @@ <SmellBaseline> <ManuallySuppressedIssues/> <CurrentIssues> - <ID>ForbiddenSuppress:AccountSettingsFragment.kt$AccountSettingsFragment$@Suppress("ComplexMethod", "LongMethod")</ID> + <ID>ForbiddenSuppress:AccountSettingsFragment.kt$AccountSettingsFragment$@Suppress("LongMethod", "CyclomaticComplexMethod")</ID> <ID>ForbiddenSuppress:AddonMenuItem.kt$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:AddonPermissionsDetailsFragment.kt$AddonPermissionsDetailsFragment$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:AddonPermissionsScreen.kt$@Suppress("LongParameterList", "LongMethod")</ID> + <ID>ForbiddenSuppress:AddonPermissionsScreen.kt$@Suppress("LongParameterList", "LongMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:AddonPopupBaseFragment.kt$AddonPopupBaseFragment$@Suppress("DEPRECATION", "LongMethod")</ID> - <ID>ForbiddenSuppress:AppStoreReducer.kt$AppStoreReducer$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:AwesomeBarComposable.kt$AwesomeBarComposable$@Suppress("LongMethod", "CyclomaticComplexMethod")</ID> - <ID>ForbiddenSuppress:BaseBrowserFragment.kt$BaseBrowserFragment$@Suppress("ComplexMethod", "LongMethod", "DEPRECATION")</ID> - <ID>ForbiddenSuppress:BaseBrowserFragment.kt$BaseBrowserFragment$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:BlocklistMiddleware.kt$BlocklistMiddleware$@Suppress("ComplexMethod")</ID> + <ID>ForbiddenSuppress:AddonsManagementFragment.kt$AddonsManagementFragment$@Suppress("CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:AdjustMetricsService.kt$AdjustMetricsService$@Suppress("CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:AppStoreReducer.kt$AppStoreReducer$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:AwesomeBarComposable.kt$AwesomeBarComposable$@Suppress("LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:BaseBrowserFragment.kt$BaseBrowserFragment$@Suppress("CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:BaseBrowserFragment.kt$BaseBrowserFragment$@Suppress("CognitiveComplexMethod", "CyclomaticComplexMethod", "LongMethod", "DEPRECATION")</ID> + <ID>ForbiddenSuppress:BaseBrowserFragment.kt$BaseBrowserFragment$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:BookmarkFragment.kt$BookmarkFragment$@Suppress("LongMethod")</ID> <ID>ForbiddenSuppress:BookmarksMiddleware.kt$BookmarksMiddleware$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:BookmarksMiddleware.kt$BookmarksMiddleware$@Suppress("LongMethod", "ComplexMethod")</ID> - <ID>ForbiddenSuppress:BookmarksScreen.kt$@Suppress("LongMethod", "ComplexMethod")</ID> - <ID>ForbiddenSuppress:BookmarksTelemetryMiddleware.kt$BookmarksTelemetryMiddleware$@Suppress("LongMethod", "ComplexMethod")</ID> - <ID>ForbiddenSuppress:BrowserFragment.kt$BrowserFragment$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:BrowserToolbarCFRPresenter.kt$BrowserToolbarCFRPresenter$@Suppress("LongMethod")</ID> + <ID>ForbiddenSuppress:BookmarksMiddleware.kt$BookmarksMiddleware$@Suppress("LongMethod", "CognitiveComplexMethod", "CyclomaticComplexMethod")</ID> + <ID>ForbiddenSuppress:BookmarksReducer.kt$@Suppress("CyclomaticComplexMethod")</ID> + <ID>ForbiddenSuppress:BookmarksScreen.kt$@Suppress("LongMethod", "CognitiveComplexMethod", "CyclomaticComplexMethod")</ID> + <ID>ForbiddenSuppress:BookmarksTelemetryMiddleware.kt$BookmarksTelemetryMiddleware$@Suppress("LongMethod", "CyclomaticComplexMethod")</ID> <ID>ForbiddenSuppress:BrowserToolbarCFRPresenter.kt$BrowserToolbarCFRPresenter$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:BrowserToolbarMenuController.kt$DefaultBrowserToolbarMenuController$@Suppress("ComplexMethod", "LongMethod")</ID> - <ID>ForbiddenSuppress:BrowserToolbarMiddleware.kt$BrowserToolbarMiddleware$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:BrowserToolbarMiddleware.kt$BrowserToolbarMiddleware$@Suppress("LongMethod", "CyclomaticComplexMethod")</ID> - <ID>ForbiddenSuppress:BrowserToolbarMiddleware.kt$BrowserToolbarMiddleware$@Suppress("LongMethod", "CyclomaticComplexMethod", "NestedBlockDepth", "ReturnCount")</ID> + <ID>ForbiddenSuppress:BrowserToolbarMenuController.kt$DefaultBrowserToolbarMenuController$@Suppress("CognitiveComplexMethod", "LongMethod")</ID> + <ID>ForbiddenSuppress:BrowserToolbarMenuController.kt$DefaultBrowserToolbarMenuController$@Suppress("CognitiveComplexMethod", "LongMethod", "CyclomaticComplexMethod")</ID> + <ID>ForbiddenSuppress:BrowserToolbarMiddleware.kt$BrowserToolbarMiddleware$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:BrowserToolbarMiddleware.kt$BrowserToolbarMiddleware$@Suppress("LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:BrowserToolbarMiddleware.kt$BrowserToolbarMiddleware$@Suppress("LongMethod", "CyclomaticComplexMethod", "NestedBlockDepth", "ReturnCount", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:BrowserToolbarSearchMiddleware.kt$BrowserToolbarSearchMiddleware$@Suppress("CyclomaticComplexMethod", "LongMethod")</ID> <ID>ForbiddenSuppress:BrowserToolbarStoreBuilder.kt$BrowserToolbarStoreBuilder$@Suppress("LongParameterList", "LongMethod")</ID> + <ID>ForbiddenSuppress:BrowserToolbarTelemetryMiddleware.kt$BrowserToolbarTelemetryMiddleware$@Suppress("CyclomaticComplexMethod")</ID> <ID>ForbiddenSuppress:CfrTools.kt$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:CfrToolsPreferencesMiddleware.kt$CfrToolsPreferencesMiddleware$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:CfrToolsStore.kt$CfrToolsReducer$@Suppress("ComplexMethod")</ID> <ID>ForbiddenSuppress:Collection.kt$@Suppress("LongMethod", "Deprecation")</ID> + <ID>ForbiddenSuppress:CollectionItem.kt$@Suppress("CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:Components.kt$Components$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:ContentRecommendationsReducer.kt$ContentRecommendationsReducer$@Suppress("LongMethod")</ID> + <ID>ForbiddenSuppress:ContentRecommendationsReducer.kt$ContentRecommendationsReducer$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:Core.kt$Core$@Suppress("MagicNumber")</ID> <ID>ForbiddenSuppress:CreditCardEditorFragment.kt$CreditCardEditorFragment$@Suppress("MagicNumber")</ID> <ID>ForbiddenSuppress:CustomTabBrowserToolbarMiddleware.kt$CustomTabBrowserToolbarMiddleware$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:CustomTabMenu.kt$@Suppress("LongParameterList", "LongMethod", "CyclomaticComplexMethod")</ID> + <ID>ForbiddenSuppress:CustomTabMenu.kt$@Suppress("LongParameterList", "LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:DataChoicesScreen.kt$@Suppress("CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:DebugDrawerRoute.kt$DebugDrawerRoute.Companion$@Suppress("LongParameterList", "LongMethod")</ID> <ID>ForbiddenSuppress:DebugOverlay.kt$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:DeleteBrowsingDataOnQuitFragment.kt$DeleteBrowsingDataOnQuitFragment$@Suppress("ComplexMethod")</ID> + <ID>ForbiddenSuppress:DefaultFenixSettingsIndexer.kt$DefaultFenixSettingsIndexer$@Suppress("NestedBlockDepth", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:DohSettingsNavHost.kt$@Suppress("LongMethod")</ID> <ID>ForbiddenSuppress:DohSettingsScreen.kt$@Suppress("LongMethod")</ID> <ID>ForbiddenSuppress:DownloadLanguageFileDialog.kt$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:DownloadLanguagesPreference.kt$@Suppress("LongMethod", "CyclomaticComplexMethod")</ID> + <ID>ForbiddenSuppress:DownloadLanguagesPreference.kt$@Suppress("LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:DownloadLanguagesPreference.kt$@Suppress("MagicNumber", "LongMethod")</ID> + <ID>ForbiddenSuppress:DownloadLanguagesPreferenceFragment.kt$DownloadLanguagesPreferenceFragment$@Suppress("CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:DownloadUIStore.kt$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:DownloadsScreen.kt$@Suppress("LongMethod")</ID> + <ID>ForbiddenSuppress:DownloadsScreen.kt$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:DownloadsScreen.kt$@Suppress("LongParameterList", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:EditBookmarkFragment.kt$EditBookmarkFragment$@Suppress("LongMethod")</ID> <ID>ForbiddenSuppress:ExternalAppBrowserFragment.kt$ExternalAppBrowserFragment$@Suppress("LongMethod")</ID> <ID>ForbiddenSuppress:FakeHomepagePreview.kt$FakeHomepagePreview$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:FenixApplication.kt$FenixApplication$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:FenixApplication.kt$FenixApplication$@Suppress("ComplexMethod", "LongMethod")</ID> + <ID>ForbiddenSuppress:FenixApplication.kt$FenixApplication$@Suppress("CognitiveComplexMethod", "LongMethod", "CyclomaticComplexMethod")</ID> + <ID>ForbiddenSuppress:FenixApplication.kt$FenixApplication$@Suppress("CyclomaticComplexMethod")</ID> + <ID>ForbiddenSuppress:FenixBrowserUseCases.kt$FenixBrowserUseCases$@Suppress("CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:FontParser.kt$FontParser$@Suppress("MagicNumber")</ID> <ID>ForbiddenSuppress:GleanDebugToolsScreen.kt$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:HistoryAdapter.kt$HistoryAdapter$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:HistoryFragment.kt$HistoryFragment$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:HistoryMetadataMiddleware.kt$HistoryMetadataMiddleware$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:HomeActivity.kt$HomeActivity$@Suppress("ComplexMethod")</ID> + <ID>ForbiddenSuppress:HistoryAdapter.kt$HistoryAdapter$@Suppress("CognitiveComplexMethod", "CyclomaticComplexMethod")</ID> + <ID>ForbiddenSuppress:HistoryFragment.kt$HistoryFragment$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:HistoryFragmentStore.kt$@Suppress("CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:HistoryMetadataMiddleware.kt$HistoryMetadataMiddleware$@Suppress("CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:HistoryMetadataMiddleware.kt$HistoryMetadataMiddleware$@Suppress("CyclomaticComplexMethod")</ID> + <ID>ForbiddenSuppress:HomeActivity.kt$HomeActivity$@Suppress("CognitiveComplexMethod", "CyclomaticComplexMethod")</ID> <ID>ForbiddenSuppress:HomeActivity.kt$HomeActivity$@Suppress("MagicNumber")</ID> <ID>ForbiddenSuppress:HomeActivity.kt$HomeActivity$@SuppressWarnings("TooManyFunctions", "LargeClass", "LongMethod")</ID> - <ID>ForbiddenSuppress:HomeDeepLinkIntentProcessor.kt$HomeDeepLinkIntentProcessor$@Suppress("ComplexMethod")</ID> + <ID>ForbiddenSuppress:HomeDeepLinkIntentProcessor.kt$HomeDeepLinkIntentProcessor$@Suppress("CyclomaticComplexMethod")</ID> + <ID>ForbiddenSuppress:HomeFragment.kt$HomeFragment$@Suppress("CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:HomeFragment.kt$HomeFragment$@Suppress("LongMethod")</ID> <ID>ForbiddenSuppress:HomeFragment.kt$HomeFragment$@Suppress("LongMethod", "CyclomaticComplexMethod")</ID> - <ID>ForbiddenSuppress:HomeMenu.kt$HomeMenu$@Suppress("ComplexMethod")</ID> <ID>ForbiddenSuppress:HomeMenu.kt$HomeMenu$@Suppress("LargeClass", "LongMethod")</ID> <ID>ForbiddenSuppress:HomeMenuView.kt$HomeMenuView$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:Homepage.kt$@Suppress("LongMethod", "CyclomaticComplexMethod")</ID> + <ID>ForbiddenSuppress:Homepage.kt$@Suppress("LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:InfoCard.kt$@Suppress("LongMethod")</ID> + <ID>ForbiddenSuppress:InstallReferrerMetricsService.kt$InstallReferrerMetricsService$@Suppress("CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:InstalledAddonDetailsFragment.kt$InstalledAddonDetailsFragment$@SuppressWarnings("LongMethod")</ID> + <ID>ForbiddenSuppress:LegacyWallpaperMigration.kt$LegacyWallpaperMigration$@Suppress("CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:ListItem.kt$@Suppress("CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:ListItem.kt$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:LoginsMiddleware.kt$LoginsMiddleware$@Suppress("LongMethod", "ComplexMethod")</ID> + <ID>ForbiddenSuppress:LoginsMiddleware.kt$LoginsMiddleware$@Suppress("LongMethod", "CyclomaticComplexMethod")</ID> <ID>ForbiddenSuppress:MainMenu.kt$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:MainMenu.kt$@Suppress("LongParameterList", "LongMethod")</ID> - <ID>ForbiddenSuppress:MainMenu.kt$@Suppress("LongParameterList", "LongMethod", "CyclomaticComplexMethod")</ID> + <ID>ForbiddenSuppress:MainMenu.kt$@Suppress("LongParameterList", "LongMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:MainMenu.kt$@Suppress("LongParameterList", "LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:MarketingAttributionService.kt$MarketingAttributionService$@Suppress("CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:MarketingDataOnboardingPage.kt$@Suppress("LongMethod")</ID> <ID>ForbiddenSuppress:MarketingDataOnboardingPageRedesign.kt$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:Menu.kt$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:MenuDialogFragment.kt$MenuDialogFragment$@Suppress("LongMethod", "CyclomaticComplexMethod", "MagicNumber")</ID> - <ID>ForbiddenSuppress:MenuNavigationMiddleware.kt$MenuNavigationMiddleware$@Suppress("CyclomaticComplexMethod", "LongMethod")</ID> - <ID>ForbiddenSuppress:MenuTelemetryMiddleware.kt$MenuTelemetryMiddleware$@Suppress("CyclomaticComplexMethod", "LongMethod")</ID> + <ID>ForbiddenSuppress:Menu.kt$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:MenuDialogFragment.kt$MenuDialogFragment$@Suppress("LongMethod", "CyclomaticComplexMethod", "MagicNumber", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:MenuDialogMiddleware.kt$MenuDialogMiddleware$@Suppress("LongParameterList", "CyclomaticComplexMethod")</ID> + <ID>ForbiddenSuppress:MenuNavigationMiddleware.kt$MenuNavigationMiddleware$@Suppress("CyclomaticComplexMethod", "LongMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:MenuTelemetryMiddleware.kt$MenuTelemetryMiddleware$@Suppress("CyclomaticComplexMethod", "LongMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:MessageCard.kt$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:MetricController.kt$ReleaseMetricController$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:MiddleSearchHomepage.kt$@Suppress("LongMethod", "CyclomaticComplexMethod")</ID> + <ID>ForbiddenSuppress:MetricController.kt$ReleaseMetricController$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:MetricsStorage.kt$DefaultMetricsStorage$@Suppress("CyclomaticComplexMethod")</ID> + <ID>ForbiddenSuppress:MiddleSearchHomepage.kt$@Suppress("LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:MoreSettingsSubmenu.kt$@Suppress("LongParameterList", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:MozillaAccountMenuItem.kt$@SuppressWarnings("LongMethod")</ID> <ID>ForbiddenSuppress:NotificationManager.kt$NotificationManager$@SuppressWarnings("MagicNumber")</ID> <ID>ForbiddenSuppress:OnboardingFragment.kt$OnboardingFragment$@Suppress("LongMethod")</ID> @@ -90,45 +104,55 @@ <ID>ForbiddenSuppress:OnboardingScreenRedesign.kt$@Suppress("LongParameterList", "LongMethod")</ID> <ID>ForbiddenSuppress:OnboardingTelemetryRecorder.kt$OnboardingTelemetryRecorder$@Suppress("LongMethod")</ID> <ID>ForbiddenSuppress:PagedHistoryProvider.kt$DefaultPagedHistoryProvider$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:PhoneFeature.kt$PhoneFeature$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:PocketStoriesComposables.kt$@Suppress("CyclomaticComplexMethod", "LongMethod")</ID> + <ID>ForbiddenSuppress:PocketStoriesComposables.kt$@Suppress("CyclomaticComplexMethod", "LongMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:PocketStoriesComposables.kt$@file:Suppress("MagicNumber")</ID> + <ID>ForbiddenSuppress:PrivateBrowsingFragment.kt$PrivateBrowsingFragment$@Suppress("CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:ProfilerViewModel.kt$ProfilerViewModel$@Suppress("CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:ProgressBarSetupChecklistView.kt$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:ProtectionPanel.kt$@Suppress("LongParameterList", "LongMethod")</ID> - <ID>ForbiddenSuppress:RecentSyncedTab.kt$@Suppress("LongMethod")</ID> + <ID>ForbiddenSuppress:ProtectionPanel.kt$@Suppress("CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:ProtectionPanel.kt$@Suppress("LongParameterList", "LongMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:RecentSyncedTab.kt$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:RecentTabs.kt$@Suppress("LongMethod")</ID> <ID>ForbiddenSuppress:RecentTabs.kt$@file:Suppress("MagicNumber", "TooManyFunctions")</ID> + <ID>ForbiddenSuppress:RecentlyVisited.kt$@Suppress("CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:RegionTools.kt$@Suppress("LongMethod")</ID> <ID>ForbiddenSuppress:ReorderableGrid.kt$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:SaveSearchEngineFragment.kt$SaveSearchEngineFragment$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:SavedLoginsAuthFragment.kt$SavedLoginsAuthFragment$@Suppress("LongMethod")</ID> + <ID>ForbiddenSuppress:ReorderableList.kt$ListReorderState$@Suppress("CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:ReviewPromptMiddleware.kt$ReviewPromptMiddleware$@Suppress("CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:SavedLoginsFragment.kt$SavedLoginsFragment$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:SavedLoginsScreen.kt$@Suppress("LongMethod")</ID> + <ID>ForbiddenSuppress:SavedLoginsScreen.kt$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:SearchDialogFragment.kt$SearchDialogFragment$@SuppressWarnings("LongMethod")</ID> - <ID>ForbiddenSuppress:SearchDialogFragment.kt$SearchDialogFragment$@SuppressWarnings("LongMethod", "ComplexMethod")</ID> + <ID>ForbiddenSuppress:SearchDialogFragment.kt$SearchDialogFragment$@SuppressWarnings("LongMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:SearchEngineFragment.kt$SearchEngineFragment$@Suppress("LongMethod")</ID> <ID>ForbiddenSuppress:SearchEngineShortcuts.kt$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:SearchFragmentStore.kt$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:SearchSuggestionsProvidersBuilder.kt$SearchSuggestionsProvidersBuilder$@Suppress("ComplexMethod", "LongMethod")</ID> - <ID>ForbiddenSuppress:SecretSettingsFragment.kt$SecretSettingsFragment$@Suppress("LongMethod", "CyclomaticComplexMethod")</ID> - <ID>ForbiddenSuppress:SettingsFragment.kt$SettingsFragment$@Suppress("ComplexMethod", "LongMethod")</ID> + <ID>ForbiddenSuppress:SearchFragmentStore.kt$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:SearchSuggestionsProvidersBuilder.kt$SearchSuggestionsProvidersBuilder$@Suppress("CognitiveComplexMethod", "LongMethod", "CyclomaticComplexMethod")</ID> + <ID>ForbiddenSuppress:SecretSettingsFragment.kt$SecretSettingsFragment$@Suppress("LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:SettingsFragment.kt$SettingsFragment$@Suppress("LongMethod", "CyclomaticComplexMethod")</ID> + <ID>ForbiddenSuppress:SetupChecklistReducer.kt$SetupChecklistReducer$@Suppress("CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:Snackbar.kt$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:SnackbarBinding.kt$SnackbarBinding$@Suppress("LongMethod", "ComplexMethod")</ID> + <ID>ForbiddenSuppress:SnackbarBinding.kt$SnackbarBinding$@Suppress("LongMethod", "CognitiveComplexMethod", "CyclomaticComplexMethod")</ID> <ID>ForbiddenSuppress:StartupStateProvider.kt$StartupStateProvider$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:Stories.kt$@Suppress("CyclomaticComplexMethod", "LongMethod")</ID> + <ID>ForbiddenSuppress:Stories.kt$@Suppress("CyclomaticComplexMethod", "LongMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:Stories.kt$@Suppress("MagicNumber")</ID> <ID>ForbiddenSuppress:String.kt$@Suppress("MagicNumber")</ID> + <ID>ForbiddenSuppress:SwipeToDismissBox2.kt$@Suppress("CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:SwipeToDismissBox2.kt$@Suppress("DEPRECATION", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:SwipeToDismissBox2.kt$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:SyncedTabsList.kt$@SuppressWarnings("LongMethod")</ID> - <ID>ForbiddenSuppress:TabGridItem.kt$@Suppress("LongMethod")</ID> + <ID>ForbiddenSuppress:SyncedTabsList.kt$@SuppressWarnings("LongMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:TabGridItem.kt$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:TabLayout.kt$@Suppress("LongParameterList", "LongMethod")</ID> + <ID>ForbiddenSuppress:TabLayout.kt$@Suppress("LongParameterList", "LongMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:TabListItem.kt$@Suppress("LongMethod", "LongParameterList")</ID> <ID>ForbiddenSuppress:TabManagementFragment.kt$TabManagementFragment$@Suppress("LongMethod")</ID> + <ID>ForbiddenSuppress:TabManagementFragment.kt$TabManagementFragment$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:TabPreview.kt$TabPreview$@Suppress("CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:TabPreview.kt$TabPreview$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:TabPreview.kt$TabPreview$@Suppress("LongMethod", "CyclomaticComplexMethod")</ID> - <ID>ForbiddenSuppress:TabStrip.kt$@Suppress("LongMethod")</ID> + <ID>ForbiddenSuppress:TabPreview.kt$TabPreview$@Suppress("LongMethod", "CyclomaticComplexMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:TabStrip.kt$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:TabTools.kt$@Suppress("LongMethod")</ID> <ID>ForbiddenSuppress:TabsTray.kt$@Suppress("LongMethod")</ID> + <ID>ForbiddenSuppress:TabsTray.kt$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:TabsTray.kt$@Suppress("LongMethod", "LongParameterList")</ID> <ID>ForbiddenSuppress:TabsTray.kt$@Suppress("MagicNumber")</ID> <ID>ForbiddenSuppress:TabsTrayBanner.kt$@Suppress("DEPRECATION", "LongMethod")</ID> @@ -136,25 +160,27 @@ <ID>ForbiddenSuppress:TabsTrayBanner.kt$@Suppress("LongMethod", "LongParameterList")</ID> <ID>ForbiddenSuppress:TabsTrayBanner.kt$@Suppress("LongParameterList", "LongMethod")</ID> <ID>ForbiddenSuppress:TabsTrayFragment.kt$TabsTrayFragment$@Suppress("LongMethod")</ID> + <ID>ForbiddenSuppress:TabsTrayFragment.kt$TabsTrayFragment$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:TabsTrayTabLayouts.kt$@Suppress("LongParameterList", "LongMethod")</ID> <ID>ForbiddenSuppress:TabsTrayTabLayouts.kt$@Suppress("MagicNumber")</ID> - <ID>ForbiddenSuppress:TelemetryMiddleware.kt$TelemetryMiddleware$@Suppress("TooGenericExceptionCaught", "ComplexMethod", "NestedBlockDepth", "LongMethod")</ID> + <ID>ForbiddenSuppress:TelemetryMiddleware.kt$TelemetryMiddleware$@Suppress("TooGenericExceptionCaught", "CognitiveComplexMethod", "NestedBlockDepth", "LongMethod", "CyclomaticComplexMethod")</ID> <ID>ForbiddenSuppress:ThemeOnboardingPage.kt$@Suppress("LongMethod")</ID> + <ID>ForbiddenSuppress:ToolbarGestureHandler.kt$ToolbarGestureHandler$@Suppress("CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:TopSites.kt$@Suppress( "LongMethod", "LongParameterList", "Deprecation", )</ID> - <ID>ForbiddenSuppress:TopSites.kt$@Suppress("LongParameterList", "LongMethod")</ID> - <ID>ForbiddenSuppress:TrackingProtectionPolicyFactory.kt$TrackingProtectionPolicyFactory$@Suppress("ComplexMethod")</ID> - <ID>ForbiddenSuppress:TranslationSettings.kt$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:TranslationsBinding.kt$TranslationsBinding$@Suppress("LongMethod")</ID> + <ID>ForbiddenSuppress:TrackingProtectionPanelView.kt$TrackingProtectionPanelView$@Suppress("CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:TranslationSettings.kt$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:TranslationsBinding.kt$TranslationsBinding$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:TranslationsDialogBinding.kt$TranslationsDialogBinding$@Suppress("LongMethod", "CyclomaticComplexMethod")</ID> - <ID>ForbiddenSuppress:TranslationsDialogFragment.kt$TranslationsDialogFragment$@Suppress("LongMethod")</ID> + <ID>ForbiddenSuppress:TranslationsDialogFragment.kt$TranslationsDialogFragment$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:TranslationsDialogMiddleware.kt$TranslationsDialogMiddleware$@Suppress("LongMethod", "CyclomaticComplexMethod")</ID> - <ID>ForbiddenSuppress:TranslationsDialogStore.kt$TranslationsDialogReducer$@Suppress("LongMethod")</ID> - <ID>ForbiddenSuppress:TrustPanelFragment.kt$TrustPanelFragment$@Suppress("LongMethod", "MagicNumber")</ID> - <ID>ForbiddenSuppress:TrustPanelNavigationMiddleware.kt$TrustPanelNavigationMiddleware$@Suppress("CyclomaticComplexMethod", "LongMethod")</ID> + <ID>ForbiddenSuppress:TranslationsDialogStore.kt$TranslationsDialogReducer$@Suppress("LongMethod", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:TrustPanelFragment.kt$TrustPanelFragment$@Suppress("LongMethod", "MagicNumber", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:TrustPanelNavigationMiddleware.kt$TrustPanelNavigationMiddleware$@Suppress("CyclomaticComplexMethod")</ID> <ID>ForbiddenSuppress:UnsubmittedCrashDialog.kt$@Suppress("LongMethod")</ID> + <ID>ForbiddenSuppress:WallpaperSettings.kt$@Suppress("CognitiveComplexMethod")</ID> <ID>ForbiddenSuppress:WallpaperSettings.kt$@Suppress("MagicNumber")</ID> <ID>ForbiddenSuppress:WebCompatReporter.kt$@Suppress("LongMethod")</ID> - <ID>UndocumentedPublicClass:AboutFragment.kt$AboutFragment$Companion</ID> + <ID>MaxLineLength:TelemetryMiddleware.kt$TelemetryMiddleware$@Suppress("TooGenericExceptionCaught", "CognitiveComplexMethod", "NestedBlockDepth", "LongMethod", "CyclomaticComplexMethod")</ID> <ID>UndocumentedPublicClass:AboutItem.kt$AboutItem</ID> <ID>UndocumentedPublicClass:AboutItem.kt$AboutItem$Crashes : AboutItem</ID> <ID>UndocumentedPublicClass:AboutItem.kt$AboutItem$ExternalLink : AboutItem</ID> @@ -162,15 +188,10 @@ <ID>UndocumentedPublicClass:AboutItem.kt$AboutItemType</ID> <ID>UndocumentedPublicClass:AboutItem.kt$AboutPageItem</ID> <ID>UndocumentedPublicClass:AboutItemViewHolder.kt$AboutItemViewHolder : ViewHolder</ID> - <ID>UndocumentedPublicClass:AboutItemViewHolder.kt$AboutItemViewHolder$Companion</ID> - <ID>UndocumentedPublicClass:AboutLibrariesFragment.kt$AboutLibrariesFragment$Companion</ID> <ID>UndocumentedPublicClass:AboutPageAdapter.kt$AboutPageAdapter : ListAdapter</ID> <ID>UndocumentedPublicClass:AboutPageAdapter.kt$AboutPageListener</ID> - <ID>UndocumentedPublicClass:AccessibilityFragment.kt$AccessibilityFragment$Companion</ID> - <ID>UndocumentedPublicClass:AccountAbnormalities.kt$AccountAbnormalities$Companion</ID> <ID>UndocumentedPublicClass:AccountAuthErrorPreference.kt$AccountAuthErrorPreference : Preference</ID> <ID>UndocumentedPublicClass:AccountDeviceViewHolder.kt$AccountDeviceViewHolder : ViewHolder</ID> - <ID>UndocumentedPublicClass:AccountDeviceViewHolder.kt$AccountDeviceViewHolder$Companion</ID> <ID>UndocumentedPublicClass:AccountDevicesAdapter.kt$SyncShareOption$AddNewDevice : SyncShareOption</ID> <ID>UndocumentedPublicClass:AccountDevicesAdapter.kt$SyncShareOption$Offline : SyncShareOption</ID> <ID>UndocumentedPublicClass:AccountDevicesAdapter.kt$SyncShareOption$Reconnect : SyncShareOption</ID> @@ -180,7 +201,6 @@ <ID>UndocumentedPublicClass:AccountPreference.kt$AccountPreference : Preference</ID> <ID>UndocumentedPublicClass:AccountProblemFragment.kt$AccountProblemFragment : PreferenceFragmentCompatAccountObserver</ID> <ID>UndocumentedPublicClass:AccountSettingsFragment.kt$AccountSettingsFragment : PreferenceFragmentCompat</ID> - <ID>UndocumentedPublicClass:AccountSettingsFragment.kt$AccountSettingsFragment$Companion</ID> <ID>UndocumentedPublicClass:AccountSettingsFragmentStore.kt$AccountSettingsFragmentAction$SyncEnded : AccountSettingsFragmentAction</ID> <ID>UndocumentedPublicClass:AccountSettingsFragmentStore.kt$AccountSettingsFragmentAction$SyncFailed : AccountSettingsFragmentAction</ID> <ID>UndocumentedPublicClass:AccountSettingsFragmentStore.kt$AccountSettingsFragmentAction$UpdateDeviceName : AccountSettingsFragmentAction</ID> @@ -192,11 +212,8 @@ <ID>UndocumentedPublicClass:AccountSettingsInteractor.kt$AccountSettingsUserActions</ID> <ID>UndocumentedPublicClass:AccountUiView.kt$AccountUiView</ID> <ID>UndocumentedPublicClass:ActivationPing.kt$ActivationPing</ID> - <ID>UndocumentedPublicClass:AddLoginFragment.kt$AddLoginFragment$Companion</ID> <ID>UndocumentedPublicClass:AddonDetailsBindingDelegate.kt$AddonDetailsInteractor</ID> - <ID>UndocumentedPublicClass:AddonPopupBaseFragment.kt$AddonPopupBaseFragment$Companion</ID> <ID>UndocumentedPublicClass:AdjustMetricsService.kt$AdjustMetricsService : MetricsService</ID> - <ID>UndocumentedPublicClass:AdjustMetricsService.kt$AdjustMetricsService$Companion</ID> <ID>UndocumentedPublicClass:AppAction.kt$AppAction$AddNonFatalCrash : AppAction</ID> <ID>UndocumentedPublicClass:AppAction.kt$AppAction$Change : AppAction</ID> <ID>UndocumentedPublicClass:AppAction.kt$AppAction$CollectionExpanded : AppAction</ID> @@ -211,25 +228,14 @@ <ID>UndocumentedPublicClass:AppAction.kt$AppAction$RemoveRecentTab : AppAction</ID> <ID>UndocumentedPublicClass:AppAction.kt$AppAction$TopSitesChange : AppAction</ID> <ID>UndocumentedPublicClass:AppRequestInterceptor.kt$AppRequestInterceptor : RequestInterceptor</ID> - <ID>UndocumentedPublicClass:AppRequestInterceptor.kt$AppRequestInterceptor$Companion</ID> <ID>UndocumentedPublicClass:AppStartReasonProvider.kt$AppStartReasonProvider$StartReason</ID> <ID>UndocumentedPublicClass:AppViewHolder.kt$AppViewHolder : ViewHolder</ID> - <ID>UndocumentedPublicClass:AppViewHolder.kt$AppViewHolder$Companion</ID> - <ID>UndocumentedPublicClass:AutofillSettingFragment.kt$AutofillSettingFragment$Companion</ID> - <ID>UndocumentedPublicClass:BaseBrowserFragment.kt$BaseBrowserFragment$Companion</ID> - <ID>UndocumentedPublicClass:BiometricPromptFeature.kt$BiometricPromptFeature$Companion</ID> - <ID>UndocumentedPublicClass:BookmarksUseCase.kt$BookmarksUseCase$Companion</ID> - <ID>UndocumentedPublicClass:BrowserAnimator.kt$BrowserAnimator$Companion</ID> - <ID>UndocumentedPublicClass:BrowserFragment.kt$BrowserFragment$Companion</ID> <ID>UndocumentedPublicClass:BrowserFragmentStore.kt$BrowserFragmentAction : Action</ID> <ID>UndocumentedPublicClass:BrowserFragmentStore.kt$BrowserFragmentStore : Store</ID> <ID>UndocumentedPublicClass:BrowserToolbarController.kt$DefaultBrowserToolbarController : BrowserToolbarController</ID> <ID>UndocumentedPublicClass:BrowserToolbarMenuController.kt$DefaultBrowserToolbarMenuController : BrowserToolbarMenuController</ID> - <ID>UndocumentedPublicClass:BrowserToolbarMenuController.kt$DefaultBrowserToolbarMenuController$Companion</ID> - <ID>UndocumentedPublicClass:BrowsingModeManager.kt$BrowsingMode$Companion</ID> <ID>UndocumentedPublicClass:BrowsingModeManager.kt$BrowsingModeManager</ID> <ID>UndocumentedPublicClass:CollectionCreationController.kt$CollectionCreationController</ID> - <ID>UndocumentedPublicClass:CollectionCreationController.kt$DefaultCollectionCreationController$Companion</ID> <ID>UndocumentedPublicClass:CollectionCreationFragment.kt$CollectionCreationFragment : DialogFragment</ID> <ID>UndocumentedPublicClass:CollectionCreationInteractor.kt$CollectionCreationInteractor</ID> <ID>UndocumentedPublicClass:CollectionCreationStore.kt$CollectionCreationAction : Action</ID> @@ -241,34 +247,18 @@ <ID>UndocumentedPublicClass:CollectionCreationStore.kt$CollectionCreationStore : Store</ID> <ID>UndocumentedPublicClass:CollectionCreationTabListAdapter.kt$CollectionCreationTabListAdapter : Adapter</ID> <ID>UndocumentedPublicClass:CollectionCreationTabListAdapter.kt$TabViewHolder : ViewHolder</ID> - <ID>UndocumentedPublicClass:CollectionCreationTabListAdapter.kt$TabViewHolder$Companion</ID> <ID>UndocumentedPublicClass:CollectionCreationView.kt$CollectionCreationView</ID> - <ID>UndocumentedPublicClass:CollectionCreationView.kt$CollectionCreationView$Companion</ID> <ID>UndocumentedPublicClass:CollectionsListAdapter.kt$CollectionsListAdapter$CollectionItemViewHolder : ViewHolder</ID> - <ID>UndocumentedPublicClass:CollectionsState.kt$CollectionsState$Companion</ID> <ID>UndocumentedPublicClass:Config.kt$Config</ID> <ID>UndocumentedPublicClass:Config.kt$ReleaseChannel</ID> <ID>UndocumentedPublicClass:ConnectionPanelDialogFragment.kt$ConnectionPanelDialogFragment : FenixDialogFragment</ID> - <ID>UndocumentedPublicClass:Core.kt$Core$Companion</ID> <ID>UndocumentedPublicClass:CounterPreference.kt$CounterPreference</ID> - <ID>UndocumentedPublicClass:CrashContentView.kt$CrashContentView$Companion</ID> <ID>UndocumentedPublicClass:CrashReporterController.kt$CrashReporterController</ID> <ID>UndocumentedPublicClass:CreateShortcutFragment.kt$CreateShortcutFragment : DialogFragment</ID> - <ID>UndocumentedPublicClass:CreateShortcutFragment.kt$CreateShortcutFragment$Companion</ID> - <ID>UndocumentedPublicClass:CreateXiaomiShortcutFragment.kt$CreateXiaomiShortcutFragment$Companion</ID> - <ID>UndocumentedPublicClass:CreditCardEditorFragment.kt$CreditCardEditorFragment$Companion</ID> - <ID>UndocumentedPublicClass:CreditCardEditorView.kt$CreditCardEditorView$Companion</ID> - <ID>UndocumentedPublicClass:CreditCardItemViewHolder.kt$CreditCardItemViewHolder$Companion</ID> - <ID>UndocumentedPublicClass:CreditCardsManagementView.kt$CreditCardsManagementView$Companion</ID> <ID>UndocumentedPublicClass:CustomTabContextMenuCandidate.kt$CustomTabContextMenuCandidate</ID> <ID>UndocumentedPublicClass:CustomTabToolbarIntegration.kt$CustomTabToolbarIntegration : ToolbarIntegration</ID> - <ID>UndocumentedPublicClass:CustomTabToolbarMenu.kt$CustomTabToolbarMenu$Companion</ID> <ID>UndocumentedPublicClass:CustomTabsIntegration.kt$CustomTabsIntegration : LifecycleAwareFeatureUserInteractionHandler</ID> - <ID>UndocumentedPublicClass:CustomTabsIntegration.kt$CustomTabsIntegration$Companion</ID> <ID>UndocumentedPublicClass:CustomTabsService.kt$CustomTabsService : AbstractCustomTabsService</ID> - <ID>UndocumentedPublicClass:CustomizationFragment.kt$CustomizationFragment$Companion</ID> - <ID>UndocumentedPublicClass:CustomizationFragment.kt$CustomizationFragment.Companion$Position</ID> - <ID>UndocumentedPublicClass:DebugDrawerRoute.kt$DebugDrawerRoute$Companion</ID> <ID>UndocumentedPublicClass:DebugFenixApplication.kt$DebugFenixApplication : FenixApplication</ID> <ID>UndocumentedPublicClass:DefaultBrowserPreference.kt$DefaultBrowserPreference : Preference</ID> <ID>UndocumentedPublicClass:DefaultSyncController.kt$SyncController</ID> @@ -277,7 +267,6 @@ <ID>UndocumentedPublicClass:DeleteBrowsingDataController.kt$DefaultDeleteBrowsingDataController : DeleteBrowsingDataController</ID> <ID>UndocumentedPublicClass:DeleteBrowsingDataController.kt$DeleteBrowsingDataController</ID> <ID>UndocumentedPublicClass:DeleteBrowsingDataFragment.kt$DeleteBrowsingDataFragment : Fragment</ID> - <ID>UndocumentedPublicClass:DeleteBrowsingDataFragment.kt$DeleteBrowsingDataFragment$Companion</ID> <ID>UndocumentedPublicClass:DeleteBrowsingDataItem.kt$DeleteBrowsingDataItem : ConstraintLayout</ID> <ID>UndocumentedPublicClass:DeleteBrowsingDataOnQuitFragment.kt$DeleteBrowsingDataOnQuitFragment : PreferenceFragmentCompat</ID> <ID>UndocumentedPublicClass:DeleteBrowsingDataOnQuitType.kt$DeleteBrowsingDataOnQuitType</ID> @@ -291,25 +280,12 @@ <ID>UndocumentedPublicClass:ExceptionsDeleteButtonViewHolder.kt$ExceptionsDeleteButtonViewHolder : ViewHolder</ID> <ID>UndocumentedPublicClass:ExceptionsFragmentStore.kt$ExceptionsFragmentAction$Change : ExceptionsFragmentAction</ID> <ID>UndocumentedPublicClass:ExceptionsHeaderViewHolder.kt$ExceptionsHeaderViewHolder : ViewHolder</ID> - <ID>UndocumentedPublicClass:ExceptionsHeaderViewHolder.kt$ExceptionsHeaderViewHolder$Companion</ID> - <ID>UndocumentedPublicClass:ExceptionsListItemViewHolder.kt$ExceptionsListItemViewHolder$Companion</ID> - <ID>UndocumentedPublicClass:ExtensionsProcessDisabledBackgroundController.kt$ExtensionsProcessDisabledBackgroundController$Companion</ID> - <ID>UndocumentedPublicClass:ExtensionsProcessDisabledForegroundController.kt$ExtensionsProcessDisabledForegroundController$Companion</ID> <ID>UndocumentedPublicClass:FenixOnboarding.kt$FenixOnboarding : PreferencesHolder</ID> - <ID>UndocumentedPublicClass:FenixOnboarding.kt$FenixOnboarding$Companion</ID> <ID>UndocumentedPublicClass:FenixTabCounterMenu.kt$FenixTabCounterMenu : TabCounterMenu</ID> - <ID>UndocumentedPublicClass:FennecBookmarkShortcutsIntentProcessor.kt$FennecBookmarkShortcutsIntentProcessor$Companion</ID> - <ID>UndocumentedPublicClass:FennecWebAppIntentProcessor.kt$FennecWebAppIntentProcessor$Companion</ID> - <ID>UndocumentedPublicClass:FirefoxTheme.kt$Theme$Companion</ID> <ID>UndocumentedPublicClass:FirstSessionPing.kt$FirstSessionPing</ID> - <ID>UndocumentedPublicClass:FontEnumerationWorker.kt$FontEnumerationWorker$Companion</ID> <ID>UndocumentedPublicClass:GeckoProvider.kt$GeckoProvider</ID> - <ID>UndocumentedPublicClass:GleanDebugToolsStore.kt$GleanDebugToolsState$Companion</ID> <ID>UndocumentedPublicClass:GroupableRadioButton.kt$GroupableRadioButton</ID> - <ID>UndocumentedPublicClass:GrowthDataWorker.kt$GrowthDataWorker$Companion</ID> - <ID>UndocumentedPublicClass:HistoryAdapter.kt$HistoryAdapter$Companion</ID> <ID>UndocumentedPublicClass:HistoryFragment.kt$HistoryFragment : LibraryPageFragmentUserInteractionHandlerMenuProvider</ID> - <ID>UndocumentedPublicClass:HistoryFragment.kt$HistoryFragment$Companion</ID> <ID>UndocumentedPublicClass:HistoryFragmentStore.kt$HistoryFragmentAction$AddItemForRemoval : HistoryFragmentAction</ID> <ID>UndocumentedPublicClass:HistoryFragmentStore.kt$HistoryFragmentAction$EnterDeletionMode : HistoryFragmentAction</ID> <ID>UndocumentedPublicClass:HistoryFragmentStore.kt$HistoryFragmentAction$ExitDeletionMode : HistoryFragmentAction</ID> @@ -319,26 +295,20 @@ <ID>UndocumentedPublicClass:HistoryFragmentStore.kt$HistoryFragmentAction$SearchClicked : HistoryFragmentAction</ID> <ID>UndocumentedPublicClass:HistoryFragmentStore.kt$HistoryFragmentAction$SearchDismissed : HistoryFragmentAction</ID> <ID>UndocumentedPublicClass:HistoryFragmentStore.kt$HistoryFragmentAction$StartSync : HistoryFragmentAction</ID> - <ID>UndocumentedPublicClass:HistoryFragmentStore.kt$HistoryFragmentState$Companion</ID> <ID>UndocumentedPublicClass:HistoryFragmentStore.kt$HistoryFragmentState$Mode</ID> <ID>UndocumentedPublicClass:HistoryFragmentStore.kt$HistoryFragmentState.Mode$Editing : Mode</ID> <ID>UndocumentedPublicClass:HistoryFragmentStore.kt$HistoryFragmentState.Mode$Normal : Mode</ID> <ID>UndocumentedPublicClass:HistoryFragmentStore.kt$HistoryFragmentState.Mode$Syncing : Mode</ID> <ID>UndocumentedPublicClass:HistoryItemTimeGroup.kt$HistoryItemTimeGroup</ID> - <ID>UndocumentedPublicClass:HistoryItemTimeGroup.kt$HistoryItemTimeGroup$Companion</ID> <ID>UndocumentedPublicClass:HistoryListItemViewHolder.kt$HistoryListItemViewHolder : ViewHolder</ID> - <ID>UndocumentedPublicClass:HistoryListItemViewHolder.kt$HistoryListItemViewHolder$Companion</ID> <ID>UndocumentedPublicClass:HistoryMetadataGroupFragmentStore.kt$HistoryMetadataGroupFragmentAction$Delete : HistoryMetadataGroupFragmentAction</ID> <ID>UndocumentedPublicClass:HistoryMetadataGroupFragmentStore.kt$HistoryMetadataGroupFragmentAction$DeleteAll : HistoryMetadataGroupFragmentAction</ID> <ID>UndocumentedPublicClass:HistoryMetadataGroupFragmentStore.kt$HistoryMetadataGroupFragmentAction$Deselect : HistoryMetadataGroupFragmentAction</ID> <ID>UndocumentedPublicClass:HistoryMetadataGroupFragmentStore.kt$HistoryMetadataGroupFragmentAction$DeselectAll : HistoryMetadataGroupFragmentAction</ID> <ID>UndocumentedPublicClass:HistoryMetadataGroupFragmentStore.kt$HistoryMetadataGroupFragmentAction$Select : HistoryMetadataGroupFragmentAction</ID> <ID>UndocumentedPublicClass:HistoryMetadataGroupFragmentStore.kt$HistoryMetadataGroupFragmentAction$UpdateHistoryItems : HistoryMetadataGroupFragmentAction</ID> - <ID>UndocumentedPublicClass:HistoryMetadataGroupItemViewHolder.kt$HistoryMetadataGroupItemViewHolder$Companion</ID> <ID>UndocumentedPublicClass:HistoryMetadataService.kt$DefaultHistoryMetadataService : HistoryMetadataService</ID> - <ID>UndocumentedPublicClass:HomeActivity.kt$HomeActivity$Companion</ID> <ID>UndocumentedPublicClass:HomeFragment.kt$HomeFragment : Fragment</ID> - <ID>UndocumentedPublicClass:HomeFragment.kt$HomeFragment$Companion</ID> <ID>UndocumentedPublicClass:HomeMenu.kt$HomeMenu</ID> <ID>UndocumentedPublicClass:HomeMenu.kt$HomeMenu$Item</ID> <ID>UndocumentedPublicClass:HomeMenu.kt$HomeMenu.Item$Bookmarks : Item</ID> @@ -352,12 +322,8 @@ <ID>UndocumentedPublicClass:HomeMenu.kt$HomeMenu.Item$Settings : Item</ID> <ID>UndocumentedPublicClass:HomeMenu.kt$HomeMenu.Item$SyncAccount : Item</ID> <ID>UndocumentedPublicClass:HomeMenu.kt$HomeMenu.Item$WhatsNew : Item</ID> - <ID>UndocumentedPublicClass:IncreasedTapAreaActionDecorator.kt$IncreasedTapAreaActionDecorator$Companion</ID> - <ID>UndocumentedPublicClass:InstallReferrerMetricsService.kt$MetaParams$Companion</ID> - <ID>UndocumentedPublicClass:InstallReferrerMetricsService.kt$UTMParams$Companion</ID> <ID>UndocumentedPublicClass:IntentProcessorType.kt$IntentProcessorType</ID> <ID>UndocumentedPublicClass:IntentUtils.kt$IntentUtils</ID> - <ID>UndocumentedPublicClass:LegacyWallpaperMigration.kt$LegacyWallpaperMigration$Companion</ID> <ID>UndocumentedPublicClass:LibraryPageFragment.kt$LibraryPageFragment<T> : Fragment</ID> <ID>UndocumentedPublicClass:LibraryPageView.kt$LibraryPageView</ID> <ID>UndocumentedPublicClass:LibrarySiteItemView.kt$LibrarySiteItemView : ConstraintLayout</ID> @@ -375,7 +341,6 @@ <ID>UndocumentedPublicClass:LocaleViewHolders.kt$BaseLocaleViewHolder : ViewHolder</ID> <ID>UndocumentedPublicClass:LocaleViewHolders.kt$LocaleViewHolder : BaseLocaleViewHolder</ID> <ID>UndocumentedPublicClass:LocaleViewHolders.kt$SystemLocaleViewHolder : BaseLocaleViewHolder</ID> - <ID>UndocumentedPublicClass:LoginDetailFragment.kt$LoginDetailFragment$Companion</ID> <ID>UndocumentedPublicClass:LoginExceptionsAdapter.kt$LoginExceptionsAdapter$LoginAdapterItem : Item</ID> <ID>UndocumentedPublicClass:LoginExceptionsInteractor.kt$DefaultLoginExceptionsInteractor : LoginExceptionsInteractor</ID> <ID>UndocumentedPublicClass:LoginExceptionsInteractor.kt$LoginExceptionsInteractor : ExceptionsInteractor</ID> @@ -392,55 +357,33 @@ <ID>UndocumentedPublicClass:LoginsFragmentStore.kt$LoginsAction$UpdateLogin : LoginsAction</ID> <ID>UndocumentedPublicClass:LoginsFragmentStore.kt$LoginsAction$UpdateLoginsList : LoginsAction</ID> <ID>UndocumentedPublicClass:LoginsListViewHolder.kt$LoginsListViewHolder : ViewHolder</ID> - <ID>UndocumentedPublicClass:MarkersActivityLifecycleCallbacks.kt$MarkersActivityLifecycleCallbacks$Companion</ID> - <ID>UndocumentedPublicClass:MarkersFragmentLifecycleCallbacks.kt$MarkersFragmentLifecycleCallbacks$Companion</ID> - <ID>UndocumentedPublicClass:MenuDialogMiddleware.kt$MenuDialogMiddleware$Companion</ID> <ID>UndocumentedPublicClass:MenuPresenter.kt$MenuPresenter : OnAttachStateChangeListener</ID> - <ID>UndocumentedPublicClass:MessageCard.kt$MessageCardColors$Companion</ID> - <ID>UndocumentedPublicClass:MessageNotificationWorker.kt$MessageNotificationWorker$Companion</ID> <ID>UndocumentedPublicClass:MessagingMiddleware.kt$MessagingMiddleware : Middleware</ID> <ID>UndocumentedPublicClass:MetricController.kt$MetricController</ID> - <ID>UndocumentedPublicClass:MetricController.kt$MetricController$Companion</ID> <ID>UndocumentedPublicClass:MetricsService.kt$MetricServiceType</ID> <ID>UndocumentedPublicClass:MetricsService.kt$MetricsService</ID> <ID>UndocumentedPublicClass:MozillaProductDetector.kt$MozillaProductDetector</ID> <ID>UndocumentedPublicClass:MozillaProductDetector.kt$MozillaProductDetector$MozillaProducts</ID> <ID>UndocumentedPublicClass:NewTabShortcutIntentProcessor.kt$NewTabShortcutIntentProcessor : IntentProcessor</ID> - <ID>UndocumentedPublicClass:NewTabShortcutIntentProcessor.kt$NewTabShortcutIntentProcessor$Companion</ID> - <ID>UndocumentedPublicClass:NotificationManager.kt$NotificationManager$Companion</ID> <ID>UndocumentedPublicClass:OnSharedPreferenceChangeListener.kt$OnSharedPreferenceChangeListener : OnSharedPreferenceChangeListenerDefaultLifecycleObserver</ID> - <ID>UndocumentedPublicClass:OnboardingTelemetryRecorder.kt$OnboardingTelemetryRecorder$Companion</ID> - <ID>UndocumentedPublicClass:OpenRecentlyClosedIntentProcessor.kt$OpenRecentlyClosedIntentProcessor$Companion</ID> - <ID>UndocumentedPublicClass:OrientationMode.kt$OrientationMode$Companion</ID> <ID>UndocumentedPublicClass:PagedHistoryProvider.kt$HistoryDB$Group : HistoryDB</ID> <ID>UndocumentedPublicClass:PagedHistoryProvider.kt$HistoryDB$Metadata : HistoryDB</ID> <ID>UndocumentedPublicClass:PagedHistoryProvider.kt$HistoryDB$Regular : HistoryDB</ID> <ID>UndocumentedPublicClass:PairFragment.kt$PairFragment : FragmentUserInteractionHandler</ID> - <ID>UndocumentedPublicClass:PairFragment.kt$PairFragment$Companion</ID> - <ID>UndocumentedPublicClass:PasswordManagerIntentProcessor.kt$PasswordManagerIntentProcessor$Companion</ID> <ID>UndocumentedPublicClass:PerformanceInflater.kt$InflationCounter</ID> <ID>UndocumentedPublicClass:PermissionStorage.kt$PermissionStorage</ID> <ID>UndocumentedPublicClass:PhoneFeature.kt$PhoneFeature : Parcelable</ID> - <ID>UndocumentedPublicClass:PhoneFeature.kt$PhoneFeature$Companion</ID> - <ID>UndocumentedPublicClass:PoweredByNotification.kt$PoweredByNotification$Companion</ID> - <ID>UndocumentedPublicClass:ProfilerMarkerFactProcessor.kt$ProfilerMarkerFactProcessor$Companion</ID> <ID>UndocumentedPublicClass:QuickSettingsFragmentReducer.kt$WebsitePermissionsStateReducer</ID> <ID>UndocumentedPublicClass:QuickSettingsFragmentState.kt$AutoplayValue</ID> <ID>UndocumentedPublicClass:QuickSettingsFragmentState.kt$AutoplayValue$AllowAll : AutoplayValue</ID> <ID>UndocumentedPublicClass:QuickSettingsFragmentState.kt$AutoplayValue$BlockAll : AutoplayValue</ID> <ID>UndocumentedPublicClass:QuickSettingsFragmentState.kt$AutoplayValue$BlockAudible : AutoplayValue</ID> - <ID>UndocumentedPublicClass:QuickSettingsFragmentState.kt$AutoplayValue$Companion</ID> - <ID>UndocumentedPublicClass:QuickSettingsFragmentState.kt$WebsiteInfoState$Companion</ID> <ID>UndocumentedPublicClass:QuickSettingsFragmentState.kt$WebsitePermission$Autoplay : WebsitePermission</ID> <ID>UndocumentedPublicClass:QuickSettingsFragmentState.kt$WebsitePermission$Toggleable : WebsitePermission</ID> - <ID>UndocumentedPublicClass:QuickSettingsFragmentStore.kt$QuickSettingsFragmentStore$Companion</ID> <ID>UndocumentedPublicClass:RadioButtonInfoPreference.kt$RadioButtonInfoPreference : RadioButtonPreference</ID> <ID>UndocumentedPublicClass:RadioButtonPreference.kt$RadioButtonPreference : PreferenceGroupableRadioButton</ID> - <ID>UndocumentedPublicClass:RadioButtonPreference.kt$RadioButtonPreference$Companion</ID> <ID>UndocumentedPublicClass:RadioSearchEngineListPreference.kt$RadioSearchEngineListPreference : PreferenceOnCheckedChangeListener</ID> - <ID>UndocumentedPublicClass:ReEngagementNotificationWorker.kt$ReEngagementNotificationWorker$Companion</ID> <ID>UndocumentedPublicClass:ReaderModeController.kt$DefaultReaderModeController : ReaderModeController</ID> - <ID>UndocumentedPublicClass:RecentSyncedTabFeature.kt$RecentSyncedTabFeature$Companion</ID> <ID>UndocumentedPublicClass:RecentTabsListFeature.kt$RecentTab</ID> <ID>UndocumentedPublicClass:RecentlyClosedAdapter.kt$RecentlyClosedAdapter : ListAdapterSelectionHolder</ID> <ID>UndocumentedPublicClass:RecentlyClosedController.kt$DefaultRecentlyClosedController : RecentlyClosedController</ID> @@ -452,21 +395,14 @@ <ID>UndocumentedPublicClass:RecentlyClosedFragmentStore.kt$RecentlyClosedFragmentAction$Select : RecentlyClosedFragmentAction</ID> <ID>UndocumentedPublicClass:RecentlyClosedFragmentView.kt$RecentlyClosedInteractor : SelectionInteractor</ID> <ID>UndocumentedPublicClass:RecentlyClosedItemViewHolder.kt$RecentlyClosedItemViewHolder : ViewHolder</ID> - <ID>UndocumentedPublicClass:RecentlyClosedItemViewHolder.kt$RecentlyClosedItemViewHolder$Companion</ID> - <ID>UndocumentedPublicClass:ResearchSurfaceDialogFragment.kt$ResearchSurfaceDialogFragment$Companion</ID> <ID>UndocumentedPublicClass:SaveCollectionListAdapter.kt$CollectionViewHolder : ViewHolder</ID> <ID>UndocumentedPublicClass:SavedLoginsAuthFragment.kt$SavedLoginsAuthFragment : PreferenceFragmentCompat</ID> <ID>UndocumentedPublicClass:SavedLoginsFragment.kt$SavedLoginsFragment : SecureFragmentMenuProvider</ID> - <ID>UndocumentedPublicClass:SavedLoginsListView.kt$SavedLoginsListView$Companion</ID> <ID>UndocumentedPublicClass:SavedLoginsSettingFragment.kt$SavedLoginsSettingFragment : PreferenceFragmentCompat</ID> - <ID>UndocumentedPublicClass:SavedLoginsSettingFragment.kt$SavedLoginsSettingFragment$Companion</ID> - <ID>UndocumentedPublicClass:SavedLoginsSettingFragment.kt$SavedLoginsSettingFragment.Companion$Setting</ID> <ID>UndocumentedPublicClass:SavedLoginsSortingStrategyMenu.kt$SavedLoginsSortingStrategyMenu</ID> <ID>UndocumentedPublicClass:SavedLoginsSortingStrategyMenu.kt$SavedLoginsSortingStrategyMenu$Item</ID> - <ID>UndocumentedPublicClass:SavedLoginsSortingStrategyMenu.kt$SavedLoginsSortingStrategyMenu.Item$Companion</ID> <ID>UndocumentedPublicClass:SearchDialogController.kt$SearchDialogController : SearchController</ID> <ID>UndocumentedPublicClass:SearchDialogFragment.kt$SearchDialogFragment : AppCompatDialogFragmentUserInteractionHandler</ID> - <ID>UndocumentedPublicClass:SearchDialogFragment.kt$SearchDialogFragment$Companion</ID> <ID>UndocumentedPublicClass:SearchEngineFragment.kt$SearchEngineFragment : PreferenceFragmentCompat</ID> <ID>UndocumentedPublicClass:SearchEngineMenu.kt$SearchEngineMenu</ID> <ID>UndocumentedPublicClass:SearchEngineMenu.kt$SearchEngineMenu$Item</ID> @@ -475,31 +411,23 @@ <ID>UndocumentedPublicClass:SearchStringValidator.kt$SearchStringValidator</ID> <ID>UndocumentedPublicClass:SearchStringValidator.kt$SearchStringValidator$Result</ID> <ID>UndocumentedPublicClass:SearchWidgetProvider.kt$SearchWidgetProvider : AppWidgetProvider</ID> - <ID>UndocumentedPublicClass:SearchWidgetProvider.kt$SearchWidgetProvider$Companion</ID> <ID>UndocumentedPublicClass:SearchWidgetProvider.kt$SearchWidgetProviderSize</ID> - <ID>UndocumentedPublicClass:SecretDebugMenuTrigger.kt$SecretDebugMenuTrigger$Companion</ID> <ID>UndocumentedPublicClass:SecretDebugSettingsFragment.kt$SecretDebugSettingsFragment : Fragment</ID> <ID>UndocumentedPublicClass:SecretSettingsFragment.kt$SecretSettingsFragment : PreferenceFragmentCompat</ID> <ID>UndocumentedPublicClass:SessionControlController.kt$DefaultSessionControlController : SessionControlController</ID> <ID>UndocumentedPublicClass:SessionControlInteractor.kt$MessageCardInteractor</ID> - <ID>UndocumentedPublicClass:Settings.kt$Settings$Companion</ID> <ID>UndocumentedPublicClass:Settings.kt$Settings$TabTimout</ID> <ID>UndocumentedPublicClass:Settings.kt$Settings$TabView</ID> <ID>UndocumentedPublicClass:SettingsFragment.kt$SettingsFragment : PreferenceFragmentCompat</ID> - <ID>UndocumentedPublicClass:SettingsFragment.kt$SettingsFragment$Companion</ID> <ID>UndocumentedPublicClass:ShareCloseView.kt$ShareCloseView</ID> - <ID>UndocumentedPublicClass:ShareController.kt$DefaultShareController$Companion</ID> <ID>UndocumentedPublicClass:ShareController.kt$ShareController$Result</ID> <ID>UndocumentedPublicClass:ShareFragment.kt$ShareFragment : AppCompatDialogFragment</ID> - <ID>UndocumentedPublicClass:ShareFragment.kt$ShareFragment$Companion</ID> <ID>UndocumentedPublicClass:ShareTabsAdapter.kt$ShareTabsAdapter$ShareTabViewHolder : ViewHolder</ID> <ID>UndocumentedPublicClass:ShareToAccountDevicesView.kt$ShareToAccountDevicesView</ID> <ID>UndocumentedPublicClass:ShareToAppsView.kt$ShareToAppsView</ID> <ID>UndocumentedPublicClass:ShareViewModel.kt$ShareViewModel : AndroidViewModel</ID> - <ID>UndocumentedPublicClass:ShareViewModel.kt$ShareViewModel$Companion</ID> <ID>UndocumentedPublicClass:SignOutFragment.kt$SignOutFragment : AppCompatDialogFragment</ID> <ID>UndocumentedPublicClass:SitePermissionsDetailsExceptionsFragment.kt$SitePermissionsDetailsExceptionsFragment : PreferenceFragmentCompat</ID> - <ID>UndocumentedPublicClass:SitePermissionsExceptionsFragment.kt$ExceptionsAdapter$Companion</ID> <ID>UndocumentedPublicClass:SitePermissionsExceptionsFragment.kt$SitePermissionsExceptionsFragment : FragmentOnClickListener</ID> <ID>UndocumentedPublicClass:SitePermissionsExceptionsFragment.kt$SitePermissionsViewHolder : ViewHolder</ID> <ID>UndocumentedPublicClass:SitePermissionsManageExceptionsPhoneFeatureFragment.kt$SitePermissionsManageExceptionsPhoneFeatureFragment : Fragment</ID> @@ -507,7 +435,6 @@ <ID>UndocumentedPublicClass:SortingStrategy.kt$SortingStrategy</ID> <ID>UndocumentedPublicClass:SortingStrategy.kt$SortingStrategy$Alphabetically : SortingStrategy</ID> <ID>UndocumentedPublicClass:SortingStrategy.kt$SortingStrategy$LastUsed : SortingStrategy</ID> - <ID>UndocumentedPublicClass:StartSearchIntentProcessor.kt$StartSearchIntentProcessor$Companion</ID> <ID>UndocumentedPublicClass:StartupActivityLog.kt$StartupActivityLog$StartupLogActivityLifecycleCallbacks : DefaultActivityLifecycleCallbacks</ID> <ID>UndocumentedPublicClass:StartupActivityLog.kt$StartupActivityLog$StartupLogAppLifecycleObserver : DefaultLifecycleObserver</ID> <ID>UndocumentedPublicClass:StartupActivityLog.kt$StartupActivityLog.LogEntry$ActivityCreated : LogEntry</ID> @@ -515,9 +442,7 @@ <ID>UndocumentedPublicClass:StartupActivityLog.kt$StartupActivityLog.LogEntry$ActivityStopped : LogEntry</ID> <ID>UndocumentedPublicClass:StartupActivityLog.kt$StartupActivityLog.LogEntry$AppStarted : LogEntry</ID> <ID>UndocumentedPublicClass:StartupActivityLog.kt$StartupActivityLog.LogEntry$AppStopped : LogEntry</ID> - <ID>UndocumentedPublicClass:StartupPathProvider.kt$StartupPathProvider$StartupPathLifecycleObserver : DefaultLifecycleObserver</ID> <ID>UndocumentedPublicClass:StartupTypeTelemetry.kt$StartupTypeTelemetry$StartupTypeLifecycleObserver : DefaultLifecycleObserver</ID> - <ID>UndocumentedPublicClass:StoreProvider.kt$StoreProvider$Companion</ID> <ID>UndocumentedPublicClass:StudiesInteractor.kt$DefaultStudiesInteractor : StudiesInteractor</ID> <ID>UndocumentedPublicClass:StudiesInteractor.kt$StudiesInteractor</ID> <ID>UndocumentedPublicClass:StudiesView.kt$StudiesView : StudiesAdapterDelegate</ID> @@ -531,22 +456,14 @@ <ID>UndocumentedPublicClass:TabHistoryController.kt$DefaultTabHistoryController : TabHistoryController</ID> <ID>UndocumentedPublicClass:TabHistoryController.kt$TabHistoryController</ID> <ID>UndocumentedPublicClass:TabHistoryDialogFragment.kt$TabHistoryDialogFragment : BottomSheetDialogFragment</ID> - <ID>UndocumentedPublicClass:TabHistoryDialogFragment.kt$TabHistoryDialogFragment$Companion</ID> <ID>UndocumentedPublicClass:TabHistoryInteractor.kt$TabHistoryInteractor : TabHistoryViewInteractor</ID> <ID>UndocumentedPublicClass:TabHistoryView.kt$TabHistoryView</ID> <ID>UndocumentedPublicClass:TabHistoryView.kt$TabHistoryViewInteractor</ID> <ID>UndocumentedPublicClass:TabHistoryViewHolder.kt$TabHistoryViewHolder : ViewHolder</ID> - <ID>UndocumentedPublicClass:TabStripState.kt$TabStripState$Companion</ID> <ID>UndocumentedPublicClass:TabsTrayFragment.kt$TabsTrayFragment : AppCompatDialogFragment</ID> - <ID>UndocumentedPublicClass:TabsTrayFragment.kt$TabsTrayFragment$Companion</ID> - <ID>UndocumentedPublicClass:TabsTrayStore.kt$Page$Companion</ID> - <ID>UndocumentedPublicClass:TextPercentageSeekBarPreference.kt$TextPercentageSeekBarPreference$Companion</ID> <ID>UndocumentedPublicClass:ThemeManager.kt$DefaultThemeManager : ThemeManager</ID> <ID>UndocumentedPublicClass:ThemeManager.kt$ThemeManager</ID> - <ID>UndocumentedPublicClass:ThemeManager.kt$ThemeManager$Companion</ID> - <ID>UndocumentedPublicClass:ToolbarGestureHandler.kt$ToolbarGestureHandler$Companion</ID> <ID>UndocumentedPublicClass:ToolbarIntegration.kt$DefaultToolbarIntegration : ToolbarIntegration</ID> - <ID>UndocumentedPublicClass:ToolbarIntegration.kt$DefaultToolbarIntegration$Companion</ID> <ID>UndocumentedPublicClass:ToolbarMenu.kt$ToolbarMenu</ID> <ID>UndocumentedPublicClass:ToolbarMenu.kt$ToolbarMenu$Item</ID> <ID>UndocumentedPublicClass:ToolbarMenu.kt$ToolbarMenu.Item$AddToHomeScreen : Item</ID> @@ -574,9 +491,7 @@ <ID>UndocumentedPublicClass:ToolbarMenu.kt$ToolbarMenu.Item$Share : Item</ID> <ID>UndocumentedPublicClass:ToolbarMenu.kt$ToolbarMenu.Item$Stop : Item</ID> <ID>UndocumentedPublicClass:ToolbarMenu.kt$ToolbarMenu.Item$SyncAccount : Item</ID> - <ID>UndocumentedPublicClass:TopSites.kt$TopSiteColors$Companion</ID> <ID>UndocumentedPublicClass:TrackerBuckets.kt$TrackerBuckets$BucketedTrackerLog</ID> - <ID>UndocumentedPublicClass:TrackerBuckets.kt$TrackerBuckets$Companion</ID> <ID>UndocumentedPublicClass:TrackingProtectionCategoryItem.kt$TrackingProtectionCategoryItem : ConstraintLayout</ID> <ID>UndocumentedPublicClass:TrackingProtectionExceptionsAdapter.kt$TrackingProtectionExceptionsAdapter$TrackingProtectionAdapterItem : Item</ID> <ID>UndocumentedPublicClass:TrackingProtectionExceptionsInteractor.kt$DefaultTrackingProtectionExceptionsInteractor : TrackingProtectionExceptionsInteractor</ID> @@ -584,28 +499,15 @@ <ID>UndocumentedPublicClass:TrackingProtectionExceptionsView.kt$TrackingProtectionExceptionsView : ExceptionsView</ID> <ID>UndocumentedPublicClass:TrackingProtectionMode.kt$TrackingProtectionMode : Parcelable</ID> <ID>UndocumentedPublicClass:TrackingProtectionPanelDialogFragment.kt$TrackingProtectionPanelDialogFragment : AppCompatDialogFragmentUserInteractionHandler</ID> - <ID>UndocumentedPublicClass:TrackingProtectionPanelView.kt$TrackingProtectionPanelView$Companion</ID> <ID>UndocumentedPublicClass:TurnOnSyncFragment.kt$TurnOnSyncFragment : FragmentAccountObserver</ID> - <ID>UndocumentedPublicClass:TurnOnSyncFragment.kt$TurnOnSyncFragment$Companion</ID> - <ID>UndocumentedPublicClass:UnsubmittedCrashDialog.kt$UnsubmittedCrashDialog$Companion</ID> <ID>UndocumentedPublicClass:Utils.kt$BookmarkNodeWithDepth</ID> - <ID>UndocumentedPublicClass:VisibilityLifecycleCallback.kt$VisibilityLifecycleCallback$Companion</ID> - <ID>UndocumentedPublicClass:VoiceSearchActivity.kt$VoiceSearchActivity$Companion</ID> - <ID>UndocumentedPublicClass:Wallpaper.kt$Wallpaper$Companion</ID> - <ID>UndocumentedPublicClass:WallpaperMetadataFetcher.kt$WallpaperMetadataFetcher$Companion</ID> - <ID>UndocumentedPublicClass:WallpaperOnboardingDialogFragment.kt$WallpaperOnboardingDialogFragment$Companion</ID> <ID>UndocumentedPublicClass:WallpaperSettingsFragment.kt$WallpaperSettingsFragment : Fragment</ID> - <ID>UndocumentedPublicClass:WallpaperState.kt$WallpaperState$Companion</ID> <ID>UndocumentedPublicClass:WebAppSiteControlsBuilder.kt$WebAppSiteControlsBuilder : SiteControlsBuilder</ID> - <ID>UndocumentedPublicClass:WebExtensionPromptFeature.kt$WebExtensionPromptFeature$Companion</ID> <ID>UndocumentedPublicClass:WebsitePermissionsView.kt$WebsitePermissionsView$PermissionViewHolder</ID> <ID>UndocumentedPublicClass:WebsitePermissionsView.kt$WebsitePermissionsView.PermissionViewHolder$SpinnerPermission : PermissionViewHolder</ID> <ID>UndocumentedPublicClass:WebsitePermissionsView.kt$WebsitePermissionsView.PermissionViewHolder$ToggleablePermission : PermissionViewHolder</ID> - <ID>UndocumentedPublicClass:WhatsNew.kt$WhatsNew$Companion</ID> <ID>UndocumentedPublicClass:WhatsNewStorage.kt$SharedPreferenceWhatsNewStorage : WhatsNewStorage</ID> - <ID>UndocumentedPublicClass:WhatsNewStorage.kt$WhatsNewStorage$Companion</ID> <ID>UndocumentedPublicClass:WhatsNewVersion.kt$ContextWhatsNewVersion : WhatsNewVersion</ID> - <ID>UndocumentedPublicClass:WidgetPinnedReceiver.kt$WidgetPinnedReceiver$Companion</ID> <ID>UndocumentedPublicFunction:AboutItemViewHolder.kt$AboutItemViewHolder$fun bind(item: AboutPageItem)</ID> <ID>UndocumentedPublicFunction:AboutPageAdapter.kt$AboutPageListener$fun onAboutItemClicked(item: AboutItem)</ID> <ID>UndocumentedPublicFunction:AccountDeviceViewHolder.kt$AccountDeviceViewHolder$fun bind(option: SyncShareOption)</ID> @@ -750,8 +652,8 @@ <ID>UndocumentedPublicFunction:NavController.kt$fun NavController.navigateSafe( @IdRes resId: Int, directions: NavDirections, )</ID> <ID>UndocumentedPublicFunction:NimbusBranchesView.kt$NimbusBranchesView$fun update(state: NimbusBranchesState)</ID> <ID>UndocumentedPublicFunction:PasswordRevealHelper.kt$fun togglePasswordReveal(passwordText: TextView, revealPasswordButton: ImageButton)</ID> - <ID>UndocumentedPublicFunction:PhoneFeature.kt$PhoneFeature$fun getActionLabel( context: Context, sitePermissions: SitePermissions? = null, settings: Settings? = null, ): String</ID> <ID>UndocumentedPublicFunction:PhoneFeature.kt$PhoneFeature$fun getAction(settings: Settings): SitePermissionsRules.Action</ID> + <ID>UndocumentedPublicFunction:PhoneFeature.kt$PhoneFeature$fun getActionLabel( context: Context, sitePermissions: SitePermissions? = null, settings: Settings? = null, ): String</ID> <ID>UndocumentedPublicFunction:PhoneFeature.kt$PhoneFeature$fun getLabel(context: Context): String</ID> <ID>UndocumentedPublicFunction:PhoneFeature.kt$PhoneFeature$fun getStatus( sitePermissions: SitePermissions? = null, settings: Settings? = null, ): SitePermissions.Status</ID> <ID>UndocumentedPublicFunction:PhoneFeature.kt$PhoneFeature$fun isAndroidPermissionGranted(context: Context): Boolean</ID> @@ -860,8 +762,6 @@ <ID>UndocumentedPublicFunction:StartupActivityLog.kt$StartupActivityLog$@VisibleForTesting(otherwise = NONE) fun getObserversForTesting()</ID> <ID>UndocumentedPublicFunction:StartupActivityLog.kt$StartupActivityLog$@VisibleForTesting(otherwise = PRIVATE) fun logEntries(loggerArg: Logger = logger, logLevel: Log.Priority = Log.logLevel)</ID> <ID>UndocumentedPublicFunction:StartupActivityLog.kt$StartupActivityLog$fun registerInAppOnCreate( application: Application, processLifecycleOwner: LifecycleOwner = ProcessLifecycleOwner.get(), )</ID> - <ID>UndocumentedPublicFunction:StartupPathProvider.kt$StartupPathProvider$@VisibleForTesting(otherwise = NONE) fun getTestCallbacks()</ID> - <ID>UndocumentedPublicFunction:StartupPathProvider.kt$StartupPathProvider$fun attachOnActivityOnCreate(lifecycle: Lifecycle, intent: Intent?)</ID> <ID>UndocumentedPublicFunction:StartupTimeline.kt$StartupTimeline$fun onActivityCreateEndHome(activity: HomeActivity)</ID> <ID>UndocumentedPublicFunction:StartupTimeline.kt$StartupTimeline$fun onActivityCreateEndIntentReceiver()</ID> <ID>UndocumentedPublicFunction:StartupTimeline.kt$StartupTimeline$fun onApplicationInit()</ID> diff --git a/mobile/android/fenix/config/detekt.yml b/mobile/android/fenix/config/detekt.yml @@ -97,7 +97,7 @@ comments: complexity: active: true CognitiveComplexMethod: - active: false + active: true threshold: 15 ComplexCondition: active: true @@ -599,7 +599,7 @@ style: value: 'kotlin.io.println' ForbiddenSuppress: active: true - rules: ['LongMethod', 'ComplexMethod', 'MagicNumber'] + rules: ['LongMethod', 'CognitiveComplexMethod', 'CyclomaticComplexMethod', 'MagicNumber'] ForbiddenVoid: active: false # (Default: true) ignoreOverridden: false diff --git a/mobile/android/focus-android/app/src/main/java/org/mozilla/focus/fragment/UrlInputFragment.kt b/mobile/android/focus-android/app/src/main/java/org/mozilla/focus/fragment/UrlInputFragment.kt @@ -424,6 +424,7 @@ class UrlInputFragment : */ // This method correctly triggers a complexity warning. This method is indeed very and too complex. // However refactoring it is not trivial at this point so we ignore the warning for now. + @Suppress("CognitiveComplexMethod") private fun playVisibilityAnimation(reverse: Boolean) { if (isAnimating) { // We are already animating, let's ignore another request. diff --git a/mobile/android/focus-android/app/src/main/java/org/mozilla/focus/session/IntentProcessor.kt b/mobile/android/focus-android/app/src/main/java/org/mozilla/focus/session/IntentProcessor.kt @@ -63,7 +63,7 @@ class IntentProcessor( createSessionFromIntent(context, intent) } - @Suppress("ReturnCount") + @Suppress("ReturnCount", "CognitiveComplexMethod") private fun createSessionFromIntent(context: Context, intent: SafeIntent): Result { when (intent.action) { Intent.ACTION_VIEW -> { diff --git a/mobile/android/focus-android/quality/detekt-baseline.xml b/mobile/android/focus-android/quality/detekt-baseline.xml @@ -2,6 +2,10 @@ <SmellBaseline> <ManuallySuppressedIssues/> <CurrentIssues> + <ID>ForbiddenSuppress:AppReducer.kt$@Suppress("CyclomaticComplexMethod", "ReturnCount")</ID> + <ID>ForbiddenSuppress:IntentProcessor.kt$IntentProcessor$@Suppress("ReturnCount", "CognitiveComplexMethod")</ID> + <ID>ForbiddenSuppress:MainActivityNavigation.kt$MainActivityNavigation$@Suppress("CyclomaticComplexMethod")</ID> + <ID>ForbiddenSuppress:UrlInputFragment.kt$UrlInputFragment$@Suppress("CognitiveComplexMethod")</ID> <ID>UndocumentedPublicClass:AdvancedSettingsFragment.kt$AdvancedSettingsFragment : BaseSettingsFragmentOnSharedPreferenceChangeListener</ID> <ID>UndocumentedPublicClass:AppAction.kt$AppAction$NavigateUp : AppAction</ID> <ID>UndocumentedPublicClass:AppAction.kt$AppAction$OpenSettings : AppAction</ID> @@ -93,7 +97,6 @@ <ID>UndocumentedPublicClass:SearchWidgetProvider.kt$SearchWidgetProvider : AppSearchWidgetProvider</ID> <ID>UndocumentedPublicClass:SearchWidgetUtils.kt$SearchWidgetUtils</ID> <ID>UndocumentedPublicClass:SecretSettingsFragment.kt$SecretSettingsFragment : BaseSettingsFragmentOnSharedPreferenceChangeListener</ID> - <ID>UndocumentedPublicFunction:SitePermissionOptionsStorage.kt$SitePermissionOptionsStorage$fun getSitePermissionLabel(sitePermission: SitePermission): String</ID> <ID>UndocumentedPublicClass:SitePermission.kt$SitePermission : Parcelable</ID> <ID>UndocumentedPublicClass:SitePermissionOption.kt$AutoplayOption</ID> <ID>UndocumentedPublicClass:SitePermissionOption.kt$AutoplayOption$AllowAudioVideo : SitePermissionOption</ID> @@ -196,6 +199,7 @@ <ID>UndocumentedPublicFunction:SearchSuggestionsViewModel.kt$SearchSuggestionsViewModel$fun setSearchQuery(query: String)</ID> <ID>UndocumentedPublicFunction:SearchUtils.kt$SearchUtils$fun createSearchUrl(context: Context?, text: String): String</ID> <ID>UndocumentedPublicFunction:SecretSettingsUnlocker.kt$SecretSettingsUnlocker$fun increment()</ID> + <ID>UndocumentedPublicFunction:SitePermissionOptionsStorage.kt$SitePermissionOptionsStorage$fun getSitePermissionLabel(sitePermission: SitePermission): String</ID> <ID>UndocumentedPublicFunction:SitePermissionOptionsStorage.kt$SitePermissionOptionsStorage$fun getSitePermissionsSettingsRules()</ID> <ID>UndocumentedPublicFunction:SitePermissionOptionsStorage.kt$SitePermissionOptionsStorage$fun isAndroidPermissionGranted(sitePermission: SitePermission): Boolean</ID> <ID>UndocumentedPublicFunction:SitePermissionOptionsStorage.kt$SitePermissionOptionsStorage$fun isSitePermissionNotBlocked(permissionsList: Array<String>): Boolean</ID> diff --git a/mobile/android/focus-android/quality/detekt.yml b/mobile/android/focus-android/quality/detekt.yml @@ -98,7 +98,7 @@ comments: complexity: active: true CognitiveComplexMethod: - active: false + active: true threshold: 15 ComplexCondition: active: true @@ -600,7 +600,7 @@ style: value: 'kotlin.io.println' ForbiddenSuppress: active: true - rules: ['LongMethod', 'ComplexMethod', 'MagicNumber'] + rules: ['LongMethod', 'CognitiveComplexMethod', 'CyclomaticComplexMethod', 'MagicNumber'] ForbiddenVoid: active: false # (Default: true) ignoreOverridden: false