1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- This Source Code Form is subject to the terms of the Mozilla Public
3 - License, v. 2.0. If a copy of the MPL was not distributed with this
4 - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
5 <issues format="6" by="lint 8.4.0" type="baseline" client="gradle" dependencies="false" name="AGP (8.4.0)" variant="all" version="8.4.0">
8 id="UseGetLayoutInflater"
9 message="Use of LayoutInflater.from(Context) detected. Consider using layoutInflater instead"
10 errorLine1=" val layout = LayoutInflater.from(context)"
11 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
13 file="src/main/java/org/mozilla/fenix/library/history/HistoryFragment.kt"
20 message="READ_EXTERNAL_STORAGE is deprecated (and is not granted) when targeting Android 13+. If you need to query or interact with MediaStore or media files on the shared storage, you should instead use one or more new storage permissions: `READ_MEDIA_IMAGES`, `READ_MEDIA_VIDEO` or `READ_MEDIA_AUDIO`."
21 errorLine1=" <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />"
22 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
24 file="src/main/AndroidManifest.xml"
31 message="READ_EXTERNAL_STORAGE is deprecated (and is not granted) when targeting Android 13+. If you need to query or interact with MediaStore or media files on the shared storage, you should instead use one or more new storage permissions: `READ_MEDIA_IMAGES`, `READ_MEDIA_VIDEO` or `READ_MEDIA_AUDIO`."
32 errorLine1=" <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />"
33 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
35 file="src/debug/AndroidManifest.xml"
42 message="This LinearLayout should use `android:layout_height="wrap_content"`"
43 errorLine1=" android:layout_height="match_parent""
44 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
46 file="src/main/res/layout/fragment_save_search_engine.xml"
52 id="KotlinNullnessAnnotation"
53 message="Do not use `@NonNull` in Kotlin; the nullability is already implied by the Kotlin type `RecyclerView.ViewHolder` **not** ending with `?`"
54 errorLine1=" @NonNull viewHolder: RecyclerView.ViewHolder,"
55 errorLine2=" ~~~~~~~~">
57 file="src/main/java/org/mozilla/fenix/tabstray/browser/DraggableItemAnimator.kt"
63 id="KotlinNullnessAnnotation"
64 message="Do not use `@NonNull` in Kotlin; the nullability is already implied by the Kotlin type `RecyclerView.ItemAnimator.ItemHolderInfo` **not** ending with `?`"
65 errorLine1=" @NonNull preLayoutInfo: RecyclerView.ItemAnimator.ItemHolderInfo,"
66 errorLine2=" ~~~~~~~~">
68 file="src/main/java/org/mozilla/fenix/tabstray/browser/DraggableItemAnimator.kt"
74 id="KotlinNullnessAnnotation"
75 message="Do not use `@NonNull` in Kotlin; the nullability is already implied by the Kotlin type `RecyclerView.ItemAnimator.ItemHolderInfo` **not** ending with `?`"
76 errorLine1=" @NonNull postLayoutInfo: RecyclerView.ItemAnimator.ItemHolderInfo,"
77 errorLine2=" ~~~~~~~~">
79 file="src/main/java/org/mozilla/fenix/tabstray/browser/DraggableItemAnimator.kt"
86 message="Attribute `android:foreground` has no effect on API levels lower than 23 (current min is 21)"
87 errorLine1=" android:foreground="?android:attr/selectableItemBackground""
88 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
90 file="src/main/res/layout/account_preference.xml"
97 message="Attribute `android:foreground` has no effect on API levels lower than 23 (current min is 21)"
98 errorLine1=" android:foreground="@drawable/rounded_ripple""
99 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
101 file="src/main/res/layout/component_collection_creation.xml"
108 message="Attribute `shortcutId` is only used in API level 25 and higher (current min is 21)"
109 errorLine1=" android:shortcutId="password_manager""
110 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
112 file="src/debug/res/xml/shortcuts.xml"
119 message="Attribute `shortcutId` is only used in API level 25 and higher (current min is 21)"
120 errorLine1=" android:shortcutId="password_manager""
121 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
123 file="src/main/res/xml/shortcuts.xml"
130 message="Attribute `shortcutShortLabel` is only used in API level 25 and higher (current min is 21)"
131 errorLine1=" android:shortcutShortLabel="@string/home_screen_shortcut_passwords">"
132 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
134 file="src/debug/res/xml/shortcuts.xml"
141 message="Attribute `shortcutShortLabel` is only used in API level 25 and higher (current min is 21)"
142 errorLine1=" android:shortcutShortLabel="@string/home_screen_shortcut_passwords">"
143 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
145 file="src/main/res/xml/shortcuts.xml"
152 message="Attribute `shortcutId` is only used in API level 25 and higher (current min is 21)"
153 errorLine1=" android:shortcutId="open_new_tab""
154 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
156 file="src/debug/res/xml/shortcuts.xml"
163 message="Attribute `shortcutId` is only used in API level 25 and higher (current min is 21)"
164 errorLine1=" android:shortcutId="open_new_tab""
165 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
167 file="src/main/res/xml/shortcuts.xml"
174 message="Attribute `shortcutShortLabel` is only used in API level 25 and higher (current min is 21)"
175 errorLine1=" android:shortcutShortLabel="@string/home_screen_shortcut_open_new_tab_2">"
176 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
178 file="src/debug/res/xml/shortcuts.xml"
185 message="Attribute `shortcutShortLabel` is only used in API level 25 and higher (current min is 21)"
186 errorLine1=" android:shortcutShortLabel="@string/home_screen_shortcut_open_new_tab_2">"
187 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
189 file="src/main/res/xml/shortcuts.xml"
196 message="Attribute `shortcutId` is only used in API level 25 and higher (current min is 21)"
197 errorLine1=" android:shortcutId="open_new_private_tab""
198 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
200 file="src/debug/res/xml/shortcuts.xml"
207 message="Attribute `shortcutId` is only used in API level 25 and higher (current min is 21)"
208 errorLine1=" android:shortcutId="open_new_private_tab""
209 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
211 file="src/main/res/xml/shortcuts.xml"
218 message="Attribute `shortcutShortLabel` is only used in API level 25 and higher (current min is 21)"
219 errorLine1=" android:shortcutShortLabel="@string/home_screen_shortcut_open_new_private_tab_2">"
220 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
222 file="src/debug/res/xml/shortcuts.xml"
229 message="Attribute `shortcutShortLabel` is only used in API level 25 and higher (current min is 21)"
230 errorLine1=" android:shortcutShortLabel="@string/home_screen_shortcut_open_new_private_tab_2">"
231 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
233 file="src/main/res/xml/shortcuts.xml"
240 message="Attribute `android:foreground` has no effect on API levels lower than 23 (current min is 21)"
241 errorLine1=" android:foreground="?android:selectableItemBackground">"
242 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
244 file="src/main/res/layout/tab_tray_item.xml"
250 id="AppBundleLocaleChanges"
251 message="Found dynamic locale changes, but did not find corresponding Play Core library calls for downloading languages and splitting by language is not disabled in the `bundle` configuration"
252 errorLine1=" config.setLocale(Locale("en"))"
253 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
255 file="src/main/java/org/mozilla/fenix/ext/Context.kt"
262 message="Avoid passing `null` as the view root (needed to resolve layout parameters on the inflated layout's root element)"
263 errorLine1=" .inflate(R.layout.crash_extension_dialog, null, false)"
266 file="src/main/java/org/mozilla/fenix/addons/ExtensionsProcessDisabledForegroundController.kt"
273 message="Avoid passing `null` as the view root (needed to resolve layout parameters on the inflated layout's root element)"
274 errorLine1=" .inflate(R.layout.delete_history_time_range_dialog, null)"
277 file="src/main/java/org/mozilla/fenix/library/history/HistoryFragment.kt"
283 id="IntentFilterUniqueDataAttributes"
284 message="Consider splitting data tag into multiple tags with individual attributes to avoid confusion"
285 errorLine1=" <data android:scheme="${deepLinkScheme}""
288 file="src/main/AndroidManifest.xml"
294 id="IntentFilterUniqueDataAttributes"
295 message="Consider splitting data tag into multiple tags with individual attributes to avoid confusion"
296 errorLine1=" <data android:scheme="${deepLinkScheme}""
299 file="src/main/AndroidManifest.xml"
305 id="IntentFilterUniqueDataAttributes"
306 message="Consider splitting data tag into multiple tags with individual attributes to avoid confusion"
307 errorLine1=" <data android:scheme="${deepLinkScheme}""
310 file="src/main/AndroidManifest.xml"
316 id="IntentFilterUniqueDataAttributes"
317 message="Consider splitting data tag into multiple tags with individual attributes to avoid confusion"
318 errorLine1=" <data android:scheme="${deepLinkScheme}""
321 file="src/main/AndroidManifest.xml"
327 id="IntentFilterUniqueDataAttributes"
328 message="Consider splitting data tag into multiple tags with individual attributes to avoid confusion"
329 errorLine1=" <data android:scheme="${deepLinkScheme}""
332 file="src/main/AndroidManifest.xml"
338 id="IntentFilterUniqueDataAttributes"
339 message="Consider splitting data tag into multiple tags with individual attributes to avoid confusion"
340 errorLine1=" <data android:scheme="${deepLinkScheme}""
343 file="src/main/AndroidManifest.xml"
349 id="IntentFilterUniqueDataAttributes"
350 message="Consider splitting data tag into multiple tags with individual attributes to avoid confusion"
351 errorLine1=" <data android:scheme="${deepLinkScheme}""
354 file="src/main/AndroidManifest.xml"
360 id="IntentFilterUniqueDataAttributes"
361 message="Consider splitting data tag into multiple tags with individual attributes to avoid confusion"
362 errorLine1=" <data android:scheme="${deepLinkScheme}""
365 file="src/main/AndroidManifest.xml"
371 id="IntentFilterUniqueDataAttributes"
372 message="Consider splitting data tag into multiple tags with individual attributes to avoid confusion"
373 errorLine1=" <data android:scheme="${deepLinkScheme}""
376 file="src/main/AndroidManifest.xml"
382 id="IntentFilterUniqueDataAttributes"
383 message="Consider splitting data tag into multiple tags with individual attributes to avoid confusion"
384 errorLine1=" <data android:scheme="${deepLinkScheme}""
387 file="src/main/AndroidManifest.xml"
393 id="IntentFilterUniqueDataAttributes"
394 message="Consider splitting data tag into multiple tags with individual attributes to avoid confusion"
395 errorLine1=" <data android:scheme="${deepLinkScheme}""
398 file="src/main/AndroidManifest.xml"
404 id="IntentFilterUniqueDataAttributes"
405 message="Consider splitting data tag into multiple tags with individual attributes to avoid confusion"
406 errorLine1=" <data android:scheme="${deepLinkScheme}""
409 file="src/main/AndroidManifest.xml"
415 id="IntentFilterUniqueDataAttributes"
416 message="Consider splitting data tag into multiple tags with individual attributes to avoid confusion"
417 errorLine1=" <data android:scheme="${deepLinkScheme}""
420 file="src/main/AndroidManifest.xml"
426 id="IntentFilterUniqueDataAttributes"
427 message="Consider splitting data tag into multiple tags with individual attributes to avoid confusion"
428 errorLine1=" <data android:scheme="${deepLinkScheme}""
431 file="src/main/AndroidManifest.xml"
437 id="IntentFilterUniqueDataAttributes"
438 message="Consider splitting data tag into multiple tags with individual attributes to avoid confusion"
439 errorLine1=" <data android:scheme="${deepLinkScheme}""
442 file="src/main/AndroidManifest.xml"
448 id="IntentFilterUniqueDataAttributes"
449 message="Consider splitting data tag into multiple tags with individual attributes to avoid confusion"
450 errorLine1=" <data android:scheme="${deepLinkScheme}""
453 file="src/main/AndroidManifest.xml"
459 id="IntentFilterUniqueDataAttributes"
460 message="Consider splitting data tag into multiple tags with individual attributes to avoid confusion"
461 errorLine1=" <data android:scheme="${deepLinkScheme}""
464 file="src/main/AndroidManifest.xml"
470 id="IntentFilterUniqueDataAttributes"
471 message="Consider splitting data tag into multiple tags with individual attributes to avoid confusion"
472 errorLine1=" <data android:scheme="${deepLinkScheme}""
475 file="src/main/AndroidManifest.xml"
481 id="InvalidLicenseFormat"
482 message="The license comment must be followed by a newline character"
483 errorLine1=" * file, You can obtain one at http://mozilla.org/MPL/2.0/. */"
486 file="src/main/java/org/mozilla/fenix/translations/TranslationsDialogStore.kt"
492 id="NonConstantResourceId"
493 message="Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in const fields"
494 errorLine1=" const val LAYOUT_ID = R.layout.about_list_item"
495 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
497 file="src/main/java/org/mozilla/fenix/settings/about/viewholders/AboutItemViewHolder.kt"
503 id="NonConstantResourceId"
504 message="Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in const fields"
505 errorLine1=" const val LAYOUT_ID = R.layout.account_share_list_item"
506 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
508 file="src/main/java/org/mozilla/fenix/share/viewholders/AccountDeviceViewHolder.kt"
514 id="NonConstantResourceId"
515 message="Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in const fields"
516 errorLine1=" const val LAYOUT_ID = R.layout.app_share_list_item"
517 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
519 file="src/main/java/org/mozilla/fenix/share/viewholders/AppViewHolder.kt"
525 id="NonConstantResourceId"
526 message="Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in const fields"
527 errorLine1=" const val LAYOUT_ID = R.layout.bookmark_list_item"
528 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~">
530 file="src/main/java/org/mozilla/fenix/library/bookmarks/viewholders/BookmarkNodeViewHolder.kt"
536 id="NonConstantResourceId"
537 message="Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in const fields"
538 errorLine1=" const val LAYOUT_ID = R.layout.library_separator"
539 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
541 file="src/main/java/org/mozilla/fenix/library/bookmarks/viewholders/BookmarkSeparatorViewHolder.kt"
547 id="NonConstantResourceId"
548 message="Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in const fields"
549 errorLine1=" const val LAYOUT_ID = R.layout.tab_tray_grid_item"
550 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~">
552 file="src/main/java/org/mozilla/fenix/tabstray/browser/BrowserTabViewHolder.kt"
558 id="NonConstantResourceId"
559 message="Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in const fields"
560 errorLine1=" const val LAYOUT_ID = R.layout.tab_tray_item"
561 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
563 file="src/main/java/org/mozilla/fenix/tabstray/browser/BrowserTabViewHolder.kt"
569 id="NonConstantResourceId"
570 message="Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in const fields"
571 errorLine1=" const val LAYOUT_ID = R.layout.collection_tab_list_row"
572 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
574 file="src/main/java/org/mozilla/fenix/collections/CollectionCreationTabListAdapter.kt"
580 id="NonConstantResourceId"
581 message="Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in const fields"
582 errorLine1=" const val LAYOUT_ID = R.layout.credit_card_list_item"
583 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
585 file="src/main/java/org/mozilla/fenix/settings/creditcards/view/CreditCardItemViewHolder.kt"
591 id="NonConstantResourceId"
592 message="Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in const fields"
593 errorLine1=" const val LAYOUT_ID = R.layout.component_credit_cards"
594 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
596 file="src/main/java/org/mozilla/fenix/settings/creditcards/view/CreditCardsManagementView.kt"
602 id="NonConstantResourceId"
603 message="Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in const fields"
604 errorLine1=" const val LAYOUT_ID = R.layout.download_list_item"
605 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~">
607 file="src/main/java/org/mozilla/fenix/library/downloads/viewholders/DownloadsListItemViewHolder.kt"
613 id="NonConstantResourceId"
614 message="Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in const fields"
615 errorLine1=" const val LAYOUT_ID = R.layout.exceptions_description"
616 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
618 file="src/main/java/org/mozilla/fenix/exceptions/viewholders/ExceptionsHeaderViewHolder.kt"
624 id="NonConstantResourceId"
625 message="Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in const fields"
626 errorLine1=" const val LAYOUT_ID = R.layout.site_list_item"
627 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~">
629 file="src/main/java/org/mozilla/fenix/exceptions/viewholders/ExceptionsListItemViewHolder.kt"
635 id="NonConstantResourceId"
636 message="Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in const fields"
637 errorLine1=" const val LAYOUT_ID = R.layout.history_list_item"
638 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
640 file="src/main/java/org/mozilla/fenix/library/history/viewholders/HistoryListItemViewHolder.kt"
646 id="NonConstantResourceId"
647 message="Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in const fields"
648 errorLine1=" const val LAYOUT_ID = R.layout.history_metadata_group_list_item"
649 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
651 file="src/main/java/org/mozilla/fenix/library/historymetadata/view/HistoryMetadataGroupItemViewHolder.kt"
657 id="NonConstantResourceId"
658 message="Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in const fields"
659 errorLine1=" const val LAYOUT_ID = R.layout.no_collections_message"
660 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
662 file="src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/NoCollectionsMessageViewHolder.kt"
668 id="NonConstantResourceId"
669 message="Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in const fields"
670 errorLine1=" const val LAYOUT_ID = R.layout.normal_browser_tray_list"
671 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
673 file="src/main/java/org/mozilla/fenix/tabstray/viewholders/NormalBrowserPageViewHolder.kt"
679 id="NonConstantResourceId"
680 message="Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in const fields"
681 errorLine1=" const val LAYOUT_ID = R.layout.private_browser_tray_list"
682 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
684 file="src/main/java/org/mozilla/fenix/tabstray/viewholders/PrivateBrowserPageViewHolder.kt"
690 id="NonConstantResourceId"
691 message="Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in const fields"
692 errorLine1=" const val LAYOUT_ID = R.layout.history_list_item"
693 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
695 file="src/main/java/org/mozilla/fenix/library/recentlyclosed/RecentlyClosedItemViewHolder.kt"
701 id="NonConstantResourceId"
702 message="Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in const fields"
703 errorLine1=" const val LAYOUT_ID = R.layout.collections_list_item"
704 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
706 file="src/main/java/org/mozilla/fenix/collections/SaveCollectionListAdapter.kt"
712 id="NonConstantResourceId"
713 message="Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in const fields"
714 errorLine1=" const val LAYOUT_ID = R.layout.top_placeholder_item"
715 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
717 file="src/main/java/org/mozilla/fenix/home/TopPlaceholderViewHolder.kt"
723 id="NonConstantResourceId"
724 message="Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in const fields"
725 errorLine1=" const val LAYOUT_ID = R.layout.top_site_item"
726 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
728 file="src/main/java/org/mozilla/fenix/home/topsites/TopSiteItemViewHolder.kt"
734 id="NonConstantResourceId"
735 message="Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in const fields"
736 errorLine1=" const val LAYOUT_ID = R.layout.component_top_sites_pager"
737 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
739 file="src/main/java/org/mozilla/fenix/home/topsites/TopSitePagerViewHolder.kt"
745 id="NonConstantResourceId"
746 message="Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in const fields"
747 errorLine1=" const val LAYOUT_ID = R.layout.component_top_sites"
748 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
750 file="src/main/java/org/mozilla/fenix/home/topsites/TopSiteViewHolder.kt"
757 message="Redundant label can be removed"
758 errorLine1=" android:label="@string/app_name""
759 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
761 file="src/main/AndroidManifest.xml"
768 message="Limit vector icons sizes to 200×200 to keep icon drawing fast; see https://developer.android.com/studio/write/vector-asset-studio#when for more"
769 errorLine1=" android:width="973dp""
772 file="src/main/res/drawable/ic_notification_permission.xml"
779 message="Limit vector icons sizes to 200×200 to keep icon drawing fast; see https://developer.android.com/studio/write/vector-asset-studio#when for more"
780 errorLine1="<vector xmlns:aapt="http://schemas.android.com/aapt" xmlns:android="http://schemas.android.com/apk/res/android" android:height="320dp" android:viewportHeight="193.94" android:viewportWidth="200" android:width="329.99896dp">"
783 file="src/main/res/drawable/ic_onboarding_key_features.xml"
790 message="Limit vector icons sizes to 200×200 to keep icon drawing fast; see https://developer.android.com/studio/write/vector-asset-studio#when for more"
791 errorLine1="<vector xmlns:aapt="http://schemas.android.com/aapt" xmlns:android="http://schemas.android.com/apk/res/android" android:height="320dp" android:viewportHeight="193.94" android:viewportWidth="200" android:width="329.99896dp">"
794 file="src/main/res/drawable/ic_onboarding_key_features_icons_only.xml"
801 message="Limit vector icons sizes to 200×200 to keep icon drawing fast; see https://developer.android.com/studio/write/vector-asset-studio#when for more"
802 errorLine1=" android:width="312dp""
805 file="src/main/res/drawable/ic_onboarding_search_widget.xml"
812 message="Limit vector icons sizes to 200×200 to keep icon drawing fast; see https://developer.android.com/studio/write/vector-asset-studio#when for more"
813 errorLine1="<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt" android:width="235dp" android:height="298dp" android:viewportWidth="235" android:viewportHeight="298">"
816 file="src/main/res/drawable/ic_onboarding_sync.xml"
823 message="Limit vector icons sizes to 200×200 to keep icon drawing fast; see https://developer.android.com/studio/write/vector-asset-studio#when for more"
824 errorLine1="<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt" android:width="223dp" android:height="345dp" android:viewportWidth="223" android:viewportHeight="345">"
827 file="src/main/res/drawable/ic_onboarding_welcome.xml"
834 message="Limit vector icons sizes to 200×200 to keep icon drawing fast; see https://developer.android.com/studio/write/vector-asset-studio#when for more"
835 errorLine1=" android:width="316dp""
838 file="src/main/res/drawable-night/onboarding_ctd_default_browser.xml"
845 message="Limit vector icons sizes to 200×200 to keep icon drawing fast; see https://developer.android.com/studio/write/vector-asset-studio#when for more"
846 errorLine1=" android:width="316dp""
849 file="src/main/res/drawable/onboarding_ctd_default_browser.xml"
856 message="Limit vector icons sizes to 200×200 to keep icon drawing fast; see https://developer.android.com/studio/write/vector-asset-studio#when for more"
857 errorLine1=" android:width="317dp""
860 file="src/main/res/drawable/onboarding_ctd_notification.xml"
867 message="Limit vector icons sizes to 200×200 to keep icon drawing fast; see https://developer.android.com/studio/write/vector-asset-studio#when for more"
868 errorLine1=" android:width="309dp""
871 file="src/main/res/drawable/onboarding_ctd_sync.xml"
878 message="This declaration implicitly references Country, which should only be accessed from tests or within private scope"
879 errorLine1=" countries.values.map { it.displayName },"
880 errorLine2=" ~~~~~~~~~~~~~~~~~~">
882 file="src/main/java/org/mozilla/fenix/settings/address/view/AddressEditorView.kt"
889 message="This declaration implicitly references Country, which should only be accessed from tests or within private scope"
890 errorLine1=" .indexOfFirst { it.countryCode == selectedCountryKey }"
891 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
893 file="src/main/java/org/mozilla/fenix/settings/address/view/AddressEditorView.kt"
900 message="This declaration implicitly references Country, which should only be accessed from tests or within private scope"
901 errorLine1=" countries[newCountryKey]?.let { country ->"
902 errorLine2=" ~~~~~~~">
904 file="src/main/java/org/mozilla/fenix/settings/address/view/AddressEditorView.kt"
911 message="This declaration implicitly references Country, which should only be accessed from tests or within private scope"
912 errorLine1=" countries[newCountryKey]?.let { country ->"
913 errorLine2=" ~~~~~~~">
915 file="src/main/java/org/mozilla/fenix/settings/address/view/AddressEditorView.kt"
922 message="This declaration implicitly references Country, which should only be accessed from tests or within private scope"
923 errorLine1=" countries[selectedCountryKey]?.let { country ->"
924 errorLine2=" ~~~~~~~">
926 file="src/main/java/org/mozilla/fenix/settings/address/view/AddressEditorView.kt"
933 message="This class should only be accessed from tests or within private scope"
934 errorLine1=" private fun bindSubregionDropdown(country: Country) {"
935 errorLine2=" ~~~~~~~">
937 file="src/main/java/org/mozilla/fenix/settings/address/view/AddressEditorView.kt"
944 message="This method should only be accessed from tests or within private scope"
945 errorLine1=" recentTabs = state.recentTabs.filterOutTab(action.recentTab),"
946 errorLine2=" ~~~~~~~~~~~~">
948 file="src/main/java/org/mozilla/fenix/components/appstate/AppStoreReducer.kt"
955 message="This method should only be accessed from tests or within private scope"
956 errorLine1=" selected = getCurrentTab()?.let {"
957 errorLine2=" ~~~~~~~~~~~~~">
959 file="src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt"
966 message="This method should only be accessed from tests or within private scope"
967 errorLine1=" if (it == getCurrentTab()?.id) {"
968 errorLine2=" ~~~~~~~~~~~~~">
970 file="src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt"
977 message="This method should only be accessed from tests or within private scope"
978 errorLine1=" getCurrentTab()?.content?.loading == false"
979 errorLine2=" ~~~~~~~~~~~~~">
981 file="src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt"
988 message="This method should only be accessed from tests or within private scope"
989 errorLine1=" if (getCurrentTab()?.content?.loading == true) {"
990 errorLine2=" ~~~~~~~~~~~~~">
992 file="src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt"
999 message="This method should only be accessed from tests or within private scope"
1000 errorLine1=" getCurrentTab()?.let { tab ->"
1001 errorLine2=" ~~~~~~~~~~~~~">
1003 file="src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt"
1009 id="VisibleForTests"
1010 message="This method should only be accessed from tests or within private scope"
1011 errorLine1=" (binding.root.layoutParams as CoordinatorLayout.LayoutParams).behavior = DynamicInfoBannerBehavior("
1012 errorLine2=" ~~~~~~~">
1014 file="src/main/java/org/mozilla/fenix/browser/infobanner/DynamicInfoBanner.kt"
1020 id="VisibleForTests"
1021 message="This method should only be accessed from tests or within private scope"
1022 errorLine1=" view.elevation = ELEVATION"
1023 errorLine2=" ~~~~~~~~~">
1025 file="src/main/java/org/mozilla/fenix/tabstray/ext/FenixSnackbar.kt"
1031 id="VisibleForTests"
1032 message="This method should only be accessed from tests or within private scope"
1033 errorLine1=" view.elevation = ELEVATION"
1034 errorLine2=" ~~~~~~~~~">
1036 file="src/main/java/org/mozilla/fenix/tabstray/ext/FenixSnackbar.kt"
1042 id="VisibleForTests"
1043 message="This method should only be accessed from tests or within private scope"
1044 errorLine1=" snackbar.view.elevation = TabsTrayFragment.ELEVATION"
1045 errorLine2=" ~~~~~~~~~">
1047 file="src/main/java/org/mozilla/fenix/tabstray/browser/InactiveTabViewHolder.kt"
1053 id="VisibleForTests"
1054 message="This method should only be accessed from tests or within private scope"
1055 errorLine1=" snackbar.view.elevation = TabsTrayFragment.ELEVATION"
1056 errorLine2=" ~~~~~~~~~">
1058 file="src/main/java/org/mozilla/fenix/tabstray/browser/InactiveTabViewHolder.kt"
1064 id="VisibleForTests"
1065 message="This method should only be accessed from tests or within private scope"
1066 errorLine1=" binding.exceptionsLearnMore.isVisible = false"
1067 errorLine2=" ~~~~~~~">
1069 file="src/main/java/org/mozilla/fenix/exceptions/login/LoginExceptionsView.kt"
1075 id="VisibleForTests"
1076 message="This method should only be accessed from tests or within private scope"
1077 errorLine1=" binding.exceptionsEmptyMessage.text ="
1078 errorLine2=" ~~~~~~~">
1080 file="src/main/java/org/mozilla/fenix/exceptions/login/LoginExceptionsView.kt"
1086 id="VisibleForTests"
1087 message="This method should only be accessed from tests or within private scope"
1088 errorLine1=" binding.exceptionsList.apply {"
1089 errorLine2=" ~~~~~~~">
1091 file="src/main/java/org/mozilla/fenix/exceptions/login/LoginExceptionsView.kt"
1097 id="VisibleForTests"
1098 message="This method should only be accessed from tests or within private scope"
1099 errorLine1=" it.items.size >= SEARCH_GROUP_MINIMUM_SITES"
1100 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
1102 file="src/main/java/org/mozilla/fenix/components/history/PagedHistoryProvider.kt"
1108 id="VisibleForTests"
1109 message="This method should only be accessed from tests or within private scope"
1110 errorLine1=" tabsAction.updateCount(tabCount)"
1111 errorLine2=" ~~~~~~~~~~~">
1113 file="src/main/java/org/mozilla/fenix/components/toolbar/ToolbarIntegration.kt"
1119 id="VisibleForTests"
1120 message="This method should only be accessed from tests or within private scope"
1121 errorLine1=" binding.exceptionsList.apply {"
1122 errorLine2=" ~~~~~~~">
1124 file="src/main/java/org/mozilla/fenix/exceptions/trackingprotection/TrackingProtectionExceptionsView.kt"
1130 id="VisibleForTests"
1131 message="This method should only be accessed from tests or within private scope"
1132 errorLine1=" with(binding.exceptionsLearnMore) {"
1133 errorLine2=" ~~~~~~~">
1135 file="src/main/java/org/mozilla/fenix/exceptions/trackingprotection/TrackingProtectionExceptionsView.kt"
1141 id="ComposableNaming"
1142 message="Composable functions with a return type should start with a lowercase letter"
1143 errorLine1="fun EagerFlingBehavior("
1144 errorLine2=" ~~~~~~~~~~~~~~~~~~">
1146 file="src/main/java/org/mozilla/fenix/compose/LazyListEagerFlingBehavior.kt"
1152 id="ComposableNaming"
1153 message="Composable functions that return Unit should start with an uppercase letter"
1154 errorLine1=" fun composeRunIfWallpaperCardColorsAreAvailable("
1155 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1157 file="src/main/java/org/mozilla/fenix/wallpapers/WallpaperState.kt"
1163 id="ModifierParameter"
1164 message="Optional Modifier parameter should have a default value of `Modifier`"
1165 errorLine1=" modifier: Modifier = Modifier.fillMaxWidth(),"
1166 errorLine2=" ~~~~~~~~">
1168 file="src/main/java/org/mozilla/fenix/compose/button/Button.kt"
1174 id="ModifierParameter"
1175 message="Optional Modifier parameter should have a default value of `Modifier`"
1176 errorLine1=" modifier: Modifier = Modifier.fillMaxWidth(),"
1177 errorLine2=" ~~~~~~~~">
1179 file="src/main/java/org/mozilla/fenix/compose/button/Button.kt"
1185 id="ModifierParameter"
1186 message="Optional Modifier parameter should have a default value of `Modifier`"
1187 errorLine1=" modifier: Modifier = Modifier.fillMaxWidth(),"
1188 errorLine2=" ~~~~~~~~">
1190 file="src/main/java/org/mozilla/fenix/compose/button/Button.kt"
1196 id="ModifierParameter"
1197 message="Optional Modifier parameter should have a default value of `Modifier`"
1198 errorLine1=" modifier: Modifier = Modifier.fillMaxWidth(),"
1199 errorLine2=" ~~~~~~~~">
1201 file="src/main/java/org/mozilla/fenix/compose/button/Button.kt"
1207 id="ModifierParameter"
1208 message="Modifier parameter should be the first optional parameter"
1209 errorLine1=" modifier: Modifier = Modifier,"
1210 errorLine2=" ~~~~~~~~">
1212 file="src/main/java/org/mozilla/fenix/compose/SwitchWithLabel.kt"
1219 message="Use of this function is discouraged because resource reflection makes it harder to perform build optimizations and compile-time verification of code. It is much more efficient to retrieve resources by identifier (e.g. `R.foo.bar`) than by name (e.g. `getIdentifier("bar", "foo", null)`)."
1220 errorLine1=" val resId = context.resources.getIdentifier(projectIdKey, "string", context.packageName)"
1221 errorLine2=" ~~~~~~~~~~~~~">
1223 file="src/main/java/org/mozilla/fenix/components/Push.kt"
1230 message=""internett" is usually capitalized as "Internett""
1231 errorLine1=" <string name="private_browsing_placeholder_description_2">%1$s fjerner søk- og nettleserhistorikken fra private nettlesingsfaner når du lukker dem eller avslutter appen. Selv om dette ikke gjør deg anonym for nettsteder eller internett-leverandøren din, vil det gjøre det lettere"
1234 file="src/main/res/values-nb-rNO/strings.xml"
1241 message=""internett" is usually capitalized as "Internett""
1242 errorLine1=" <string name="onboarding_home_welcome_title_2">Velkommen til et mer personlig internett</string>"
1245 file="src/main/res/values-nb-rNO/strings.xml"
1252 message="Repeated word "zaman" in message: possible typo"
1253 errorLine1=" <string name="studies_description_2">%1$s zaman zaman araştırmalar yükleyip çalıştırabilir.</string>"
1256 file="src/main/res/values-tr/strings.xml"
1263 message=""A a" is a common misspelling; did you mean "A"?"
1264 errorLine1=" <string name="review_quality_check_info_review_grade_header"><![CDATA[AtribuÃmos à s avaliações de cada produto uma <b>classificação baseada em letras</b> de A a F.]]></string>"
1267 file="src/main/res/values-pt-rPT/strings.xml"
1274 message=""A a" is a common misspelling; did you mean "A"?"
1275 errorLine1=" <string name="review_quality_check_info_review_grade_header"><![CDATA[AtribuÃmos à s avaliações de cada produto uma <b>nota com letra</b> de A a F.]]></string>"
1278 file="src/main/res/values-pt-rBR/strings.xml"
1285 message="Using Android NOTIFY instead of base component"
1286 errorLine1=" notify(RECEIVE_TABS_TAG, notificationId, notification)"
1287 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1289 file="src/main/java/org/mozilla/fenix/components/NotificationManager.kt"
1295 id="SetJavaScriptEnabled"
1296 message="Using `setJavaScriptEnabled` can introduce XSS vulnerabilities into your application, review carefully"
1297 errorLine1=" webView.settings.javaScriptEnabled = true"
1298 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1300 file="src/main/java/org/mozilla/fenix/home/mozonline/PrivacyContentDisplayActivity.kt"
1306 id="ExportedReceiver"
1307 message="Exported receiver does not require permission"
1308 errorLine1=" <receiver android:name=".onboarding.WidgetPinnedReceiver""
1309 errorLine2=" ~~~~~~~~">
1311 file="src/main/AndroidManifest.xml"
1317 id="DataExtractionRules"
1318 message="The attribute `android:allowBackup` is deprecated from Android 12 and higher and may be removed in future versions. Consider adding the attribute `android:dataExtractionRules` specifying an `@xml` resource which configures cloud backups and device transfers on Android 12 and higher."
1319 errorLine1=" android:allowBackup="false""
1320 errorLine2=" ~~~~~">
1322 file="src/main/AndroidManifest.xml"
1328 id="MozMultipleConstraintLayouts"
1329 message="Flatten the view hierarchy by using one `ConstraintLayout`, if possible. If the alternative is several nested `ViewGroup`, it may not help performance and this may be worth suppressing."
1330 errorLine1=" <androidx.constraintlayout.widget.ConstraintLayout"
1331 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1333 file="src/main/res/layout/component_collection_creation.xml"
1339 id="MozMultipleConstraintLayouts"
1340 message="Flatten the view hierarchy by using one `ConstraintLayout`, if possible. If the alternative is several nested `ViewGroup`, it may not help performance and this may be worth suppressing."
1341 errorLine1=" <androidx.constraintlayout.widget.ConstraintLayout"
1342 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1344 file="src/main/res/layout/component_collection_creation_name_collection.xml"
1350 id="MozMultipleConstraintLayouts"
1351 message="Flatten the view hierarchy by using one `ConstraintLayout`, if possible. If the alternative is several nested `ViewGroup`, it may not help performance and this may be worth suppressing."
1352 errorLine1=" <androidx.constraintlayout.widget.ConstraintLayout"
1353 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1355 file="src/main/res/layout/component_collection_creation_select_collection.xml"
1361 id="MozMultipleConstraintLayouts"
1362 message="Flatten the view hierarchy by using one `ConstraintLayout`, if possible. If the alternative is several nested `ViewGroup`, it may not help performance and this may be worth suppressing."
1363 errorLine1=" <androidx.constraintlayout.widget.ConstraintLayout"
1364 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1366 file="src/main/res/layout/component_tracking_protection_panel.xml"
1372 id="MozMultipleConstraintLayouts"
1373 message="Flatten the view hierarchy by using one `ConstraintLayout`, if possible. If the alternative is several nested `ViewGroup`, it may not help performance and this may be worth suppressing."
1374 errorLine1=" <androidx.constraintlayout.widget.ConstraintLayout"
1375 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1377 file="src/main/res/layout/component_tracking_protection_panel.xml"
1383 id="MozMultipleConstraintLayouts"
1384 message="Flatten the view hierarchy by using one `ConstraintLayout`, if possible. If the alternative is several nested `ViewGroup`, it may not help performance and this may be worth suppressing."
1385 errorLine1=" <androidx.constraintlayout.widget.ConstraintLayout"
1386 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1388 file="src/main/res/layout/fragment_add_on_details.xml"
1394 id="MozMultipleConstraintLayouts"
1395 message="Flatten the view hierarchy by using one `ConstraintLayout`, if possible. If the alternative is several nested `ViewGroup`, it may not help performance and this may be worth suppressing."
1396 errorLine1=" <androidx.constraintlayout.widget.ConstraintLayout"
1397 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1399 file="src/main/res/layout/fragment_share.xml"
1405 id="NotifyDataSetChanged"
1406 message="It will always be more efficient to use more specific change events if you can. Rely on `notifyDataSetChanged` as a last resort."
1407 errorLine1=" notifyDataSetChanged()"
1408 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
1410 file="src/main/java/org/mozilla/fenix/library/downloads/DownloadAdapter.kt"
1416 id="NotifyDataSetChanged"
1417 message="It will always be more efficient to use more specific change events if you can. Rely on `notifyDataSetChanged` as a last resort."
1418 errorLine1=" historyAdapter.notifyDataSetChanged()"
1419 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1421 file="src/main/java/org/mozilla/fenix/library/history/HistoryView.kt"
1427 id="NotifyDataSetChanged"
1428 message="It will always be more efficient to use more specific change events if you can. Rely on `notifyDataSetChanged` as a last resort."
1429 errorLine1=" notifyDataSetChanged()"
1430 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
1432 file="src/main/java/org/mozilla/fenix/collections/SaveCollectionListAdapter.kt"
1438 id="NotifyDataSetChanged"
1439 message="It will always be more efficient to use more specific change events if you can. Rely on `notifyDataSetChanged` as a last resort."
1440 errorLine1=" tabsTrayBinding.tabsTray.adapter?.notifyDataSetChanged()"
1441 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1443 file="src/main/java/org/mozilla/fenix/tabstray/TabsTrayFragment.kt"
1449 id="MozMultipleConstraintLayoutsAndCustomViews"
1450 message="Custom views extending `ConstraintLayout` are less efficient because they cannot share other `ConstraintLayout` defined in file."
1451 errorLine1=" <org.mozilla.fenix.library.LibrarySiteItemView"
1452 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1454 file="src/main/res/layout/component_recently_closed.xml"
1460 id="MozMultipleConstraintLayoutsAndCustomViews"
1461 message="Custom views extending `ConstraintLayout` are less efficient because they cannot share other `ConstraintLayout` defined in file."
1462 errorLine1=" <mozilla.components.feature.findinpage.view.FindInPageBar"
1463 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1465 file="src/main/res/layout/fragment_browser.xml"
1471 id="MozMultipleConstraintLayoutsAndCustomViews"
1472 message="Custom views extending `ConstraintLayout` are less efficient because they cannot share other `ConstraintLayout` defined in file."
1473 errorLine1=" <mozilla.components.feature.readerview.view.ReaderViewControlsBar"
1474 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1476 file="src/main/res/layout/fragment_browser.xml"
1482 id="MozMultipleConstraintLayoutsAndCustomViews"
1483 message="Custom views extending `ConstraintLayout` are less efficient because they cannot share other `ConstraintLayout` defined in file."
1484 errorLine1=" <mozilla.components.feature.prompts.login.LoginSelectBar"
1485 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1487 file="src/main/res/layout/fragment_browser.xml"
1493 id="MozMultipleConstraintLayoutsAndCustomViews"
1494 message="Custom views extending `ConstraintLayout` are less efficient because they cannot share other `ConstraintLayout` defined in file."
1495 errorLine1=" <org.mozilla.fenix.settings.deletebrowsingdata.DeleteBrowsingDataItem"
1496 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1498 file="src/main/res/layout/fragment_delete_browsing_data.xml"
1504 id="MozMultipleConstraintLayoutsAndCustomViews"
1505 message="Custom views extending `ConstraintLayout` are less efficient because they cannot share other `ConstraintLayout` defined in file."
1506 errorLine1=" <org.mozilla.fenix.settings.deletebrowsingdata.DeleteBrowsingDataItem"
1507 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1509 file="src/main/res/layout/fragment_delete_browsing_data.xml"
1515 id="MozMultipleConstraintLayoutsAndCustomViews"
1516 message="Custom views extending `ConstraintLayout` are less efficient because they cannot share other `ConstraintLayout` defined in file."
1517 errorLine1=" <org.mozilla.fenix.settings.deletebrowsingdata.DeleteBrowsingDataItem"
1518 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1520 file="src/main/res/layout/fragment_delete_browsing_data.xml"
1526 id="MozMultipleConstraintLayoutsAndCustomViews"
1527 message="Custom views extending `ConstraintLayout` are less efficient because they cannot share other `ConstraintLayout` defined in file."
1528 errorLine1=" <org.mozilla.fenix.settings.deletebrowsingdata.DeleteBrowsingDataItem"
1529 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1531 file="src/main/res/layout/fragment_delete_browsing_data.xml"
1537 id="MozMultipleConstraintLayoutsAndCustomViews"
1538 message="Custom views extending `ConstraintLayout` are less efficient because they cannot share other `ConstraintLayout` defined in file."
1539 errorLine1=" <org.mozilla.fenix.settings.deletebrowsingdata.DeleteBrowsingDataItem"
1540 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1542 file="src/main/res/layout/fragment_delete_browsing_data.xml"
1548 id="MozMultipleConstraintLayoutsAndCustomViews"
1549 message="Custom views extending `ConstraintLayout` are less efficient because they cannot share other `ConstraintLayout` defined in file."
1550 errorLine1=" <org.mozilla.fenix.settings.deletebrowsingdata.DeleteBrowsingDataItem"
1551 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1553 file="src/main/res/layout/fragment_delete_browsing_data.xml"
1559 id="MozMultipleConstraintLayoutsAndCustomViews"
1560 message="Custom views extending `ConstraintLayout` are less efficient because they cannot share other `ConstraintLayout` defined in file."
1561 errorLine1=" <org.mozilla.fenix.trackingprotection.TrackingProtectionCategoryItem"
1562 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1564 file="src/main/res/layout/fragment_tracking_protection_blocking.xml"
1570 id="MozMultipleConstraintLayoutsAndCustomViews"
1571 message="Custom views extending `ConstraintLayout` are less efficient because they cannot share other `ConstraintLayout` defined in file."
1572 errorLine1=" <org.mozilla.fenix.trackingprotection.TrackingProtectionCategoryItem"
1573 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1575 file="src/main/res/layout/fragment_tracking_protection_blocking.xml"
1581 id="MozMultipleConstraintLayoutsAndCustomViews"
1582 message="Custom views extending `ConstraintLayout` are less efficient because they cannot share other `ConstraintLayout` defined in file."
1583 errorLine1=" <org.mozilla.fenix.trackingprotection.TrackingProtectionCategoryItem"
1584 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1586 file="src/main/res/layout/fragment_tracking_protection_blocking.xml"
1592 id="MozMultipleConstraintLayoutsAndCustomViews"
1593 message="Custom views extending `ConstraintLayout` are less efficient because they cannot share other `ConstraintLayout` defined in file."
1594 errorLine1=" <org.mozilla.fenix.trackingprotection.TrackingProtectionCategoryItem"
1595 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1597 file="src/main/res/layout/fragment_tracking_protection_blocking.xml"
1603 id="MozMultipleConstraintLayoutsAndCustomViews"
1604 message="Custom views extending `ConstraintLayout` are less efficient because they cannot share other `ConstraintLayout` defined in file."
1605 errorLine1=" <org.mozilla.fenix.trackingprotection.TrackingProtectionCategoryItem"
1606 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1608 file="src/main/res/layout/fragment_tracking_protection_blocking.xml"
1614 id="MozMultipleConstraintLayoutsAndCustomViews"
1615 message="Custom views extending `ConstraintLayout` are less efficient because they cannot share other `ConstraintLayout` defined in file."
1616 errorLine1=" <org.mozilla.fenix.trackingprotection.SwitchWithDescription"
1617 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1619 file="src/main/res/layout/quicksettings_protections_panel.xml"
1625 id="AutoboxingStateCreation"
1626 message="Prefer `mutableLongStateOf` instead of `mutableStateOf`"
1627 errorLine1=" var lastClickTime: Long by remember { mutableStateOf(0) }"
1628 errorLine2=" ~~~~~~~~~~~~~~">
1630 file="src/main/java/org/mozilla/fenix/compose/ext/Modifier.kt"
1636 id="AutoboxingStateCreation"
1637 message="Prefer `mutableIntStateOf` instead of `mutableStateOf`"
1638 errorLine1=" var offsetY by remember { mutableStateOf(INITIAL_OFFSET) }"
1639 errorLine2=" ~~~~~~~~~~~~~~">
1641 file="src/main/java/org/mozilla/fenix/experiments/view/ResearchSurfaceSurvey.kt"
1648 message="Possible overdraw: Root element paints background `@color/sync_error_background_color` with a theme that also paints a background (inferred theme is `@style/NormalTheme`)"
1649 errorLine1=" android:background="@color/sync_error_background_color""
1650 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1652 file="src/main/res/layout/account_auth_error_preference.xml"
1659 message="Possible overdraw: Root element paints background `?android:selectableItemBackground` with a theme that also paints a background (inferred theme is `@style/NormalTheme`)"
1660 errorLine1=" android:background="?android:selectableItemBackground""
1661 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1663 file="src/main/res/layout/checkbox_left_preference.xml"
1670 message="Possible overdraw: Root element paints background `?android:selectableItemBackground` with a theme that also paints a background (inferred theme is `@style/NormalTheme`)"
1671 errorLine1=" android:background="?android:selectableItemBackground""
1672 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1674 file="src/main/res/layout/checkbox_left_preference_etp.xml"
1681 message="Possible overdraw: Root element paints background `?android:selectableItemBackground` with a theme that also paints a background (inferred theme is `@style/NormalTheme`)"
1682 errorLine1=" android:background="?android:selectableItemBackground""
1683 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1685 file="src/main/res/layout/checkbox_left_sub_preference.xml"
1692 message="Possible overdraw: Root element paints background `?attr/layer1` with a theme that also paints a background (inferred theme is `@style/NormalTheme`)"
1693 errorLine1=" android:background="?attr/layer1">"
1694 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1696 file="src/main/res/layout/component_cookie_banner_details_panel.xml"
1703 message="Possible overdraw: Root element paints background `?attr/layer1` with a theme that also paints a background (inferred theme is `@style/NormalTheme`)"
1704 errorLine1=" android:background="?attr/layer1">"
1705 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1707 file="src/main/res/layout/component_tracking_protection_panel.xml"
1714 message="Possible overdraw: Root element paints background `?attr/layer1` with a theme that also paints a background (inferred theme is `@style/NormalTheme`)"
1715 errorLine1=" android:background="?attr/layer1""
1716 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1718 file="src/main/res/layout/connection_details_website_info.xml"
1725 message="Possible overdraw: Root element paints background `@color/material_scrim_color` with a theme that also paints a background (inferred theme is `@style/NormalTheme`)"
1726 errorLine1=" android:background="@color/material_scrim_color""
1727 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1729 file="src/main/res/layout/dialog_scrim.xml"
1736 message="Possible overdraw: Root element paints background `?attr/layer1` with a theme that also paints a background (inferred theme is `@style/NormalTheme`)"
1737 errorLine1=" android:background="?attr/layer1""
1738 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1740 file="src/main/res/layout/download_dialog_layout.xml"
1747 message="Possible overdraw: Root element paints background `?scrim` with a theme that also paints a background (inferred theme is `@style/NormalTheme`)"
1748 errorLine1=" android:background="?scrim""
1749 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1751 file="src/main/res/layout/fragment_create_collection.xml"
1758 message="Possible overdraw: Root element paints background `?scrim` with a theme that also paints a background (inferred theme is `@style/NormalTheme`)"
1759 errorLine1=" android:background="?scrim""
1760 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1762 file="src/main/res/layout/fragment_create_shortcut.xml"
1769 message="Possible overdraw: Root element paints background `?homeBackground` with a theme that also paints a background (inferred theme is `@style/NormalTheme`)"
1770 errorLine1=" android:background="?homeBackground">"
1771 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1773 file="src/main/res/layout/fragment_home.xml"
1780 message="Possible overdraw: Root element paints background `?scrim` with a theme that also paints a background (inferred theme is `@style/NormalTheme`)"
1781 errorLine1=" android:background="?scrim""
1782 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1784 file="src/main/res/layout/fragment_pwa_onboarding.xml"
1791 message="Possible overdraw: Root element paints background `?attr/scrimBackground` with a theme that also paints a background (inferred theme is `@style/NormalTheme`)"
1792 errorLine1=" android:background="?attr/scrimBackground">"
1793 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1795 file="src/main/res/layout/fragment_search_dialog.xml"
1802 message="Possible overdraw: Root element paints background `?attr/layer1` with a theme that also paints a background (inferred theme is `@style/NormalTheme`)"
1803 errorLine1=" android:background="?attr/layer1""
1804 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1806 file="src/main/res/layout/fragment_sign_out.xml"
1813 message="Possible overdraw: Root element paints background `?attr/layer1` with a theme that also paints a background (inferred theme is `@style/NormalTheme`)"
1814 errorLine1=" android:background="?attr/layer1""
1815 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1817 file="src/main/res/layout/info_banner.xml"
1824 message="Possible overdraw: Root element paints background `?attr/selectableItemBackground` with a theme that also paints a background (inferred theme is `@style/NormalTheme`)"
1825 errorLine1=" android:background="?attr/selectableItemBackground""
1826 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1828 file="src/main/res/layout/layout_add_credit_card.xml"
1835 message="Possible overdraw: Root element paints background `?attr/selectableItemBackground` with a theme that also paints a background (inferred theme is `@style/NormalTheme`)"
1836 errorLine1=" android:background="?attr/selectableItemBackground""
1837 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1839 file="src/main/res/layout/layout_add_login.xml"
1846 message="Possible overdraw: Root element paints background `?attr/layer1` with a theme that also paints a background (inferred theme is `@style/NormalTheme`)"
1847 errorLine1=" android:background="?attr/layer1""
1848 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1850 file="src/main/res/layout/navigation_toolbar.xml"
1857 message="Possible overdraw: Root element paints background `?android:selectableItemBackground` with a theme that also paints a background (inferred theme is `@style/NormalTheme`)"
1858 errorLine1=" android:background="?android:selectableItemBackground""
1859 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1861 file="src/main/res/layout/preference_search_add_engine.xml"
1868 message="Possible overdraw: Root element paints background `?android:selectableItemBackground` with a theme that also paints a background (inferred theme is `@style/NormalTheme`)"
1869 errorLine1=" android:background="?android:selectableItemBackground""
1870 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1872 file="src/main/res/layout/search_engine_radio_button.xml"
1879 message="Possible overdraw: Root element paints background `?android:windowBackground` with a theme that also paints a background (inferred theme is `@style/NormalTheme`)"
1880 errorLine1=" android:background="?android:windowBackground""
1881 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1883 file="src/main/res/layout/start_download_dialog_layout.xml"
1890 message="Possible overdraw: Root element paints background `#FF0250BB` with a theme that also paints a background (inferred theme is `@style/NormalTheme`)"
1891 errorLine1=" android:background="#FF0250BB">"
1892 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1894 file="src/main/res/layout/tracking_protection_learn_more_preference.xml"
1901 message="Possible overdraw: Root element paints background `?attr/layer2` with a theme that also paints a background (inferred theme is `@style/NormalTheme`)"
1902 errorLine1=" android:background="?attr/layer2">"
1903 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1905 file="src/main/res/layout/view_crash_reporter.xml"
1911 id="UnusedResources"
1912 message="The resource `R.string.resource_scheme` appears to be unused"
1913 errorLine1=" <string name="resource_scheme">"resource://"</string>"
1914 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
1916 file="src/main/res/values/arrays.xml"
1922 id="UnusedResources"
1923 message="The resource `R.string.chrome_scheme` appears to be unused"
1924 errorLine1=" <string name="chrome_scheme">"chrome://</string>"
1925 errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
1927 file="src/main/res/values/arrays.xml"
1933 id="UnusedResources"
1934 message="The resource `R.string.about_scheme` appears to be unused"
1935 errorLine1=" <string name="about_scheme">"about:"</string>"
1936 errorLine2=" ~~~~~~~~~~~~~~~~~~~">
1938 file="src/main/res/values/arrays.xml"
1944 id="UnusedResources"
1945 message="The resource `R.array.mozac_url_schemes_blocklist` appears to be unused"
1946 errorLine1=" <string-array name="mozac_url_schemes_blocklist" >"
1947 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1949 file="src/main/res/values/arrays.xml"
1955 id="UnusedResources"
1956 message="The resource `R.dimen.mozac_browser_menu_corner_radius` appears to be unused"
1957 errorLine1=" <dimen name="mozac_browser_menu_corner_radius">8dp</dimen>"
1958 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1960 file="src/main/res/values/dimens.xml"
1966 id="UnusedResources"
1967 message="The resource `R.dimen.mozac_browser_menu2_corner_radius` appears to be unused"
1968 errorLine1=" <dimen name="mozac_browser_menu2_corner_radius">8dp</dimen>"
1969 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
1971 file="src/main/res/values/dimens.xml"
1977 id="UnusedResources"
1978 message="The resource `R.mipmap.ic_launcher_private` appears to be unused">
1980 file="src/main/res/mipmap-hdpi/ic_launcher_private.webp"/>
1984 id="UnusedResources"
1985 message="The resource `R.drawable.ic_onboarding_key_features` appears to be unused"
1986 errorLine1="<vector xmlns:aapt="http://schemas.android.com/aapt" xmlns:android="http://schemas.android.com/apk/res/android" android:height="320dp" android:viewportHeight="193.94" android:viewportWidth="200" android:width="329.99896dp">"
1989 file="src/main/res/drawable/ic_onboarding_key_features.xml"
1995 id="UnusedResources"
1996 message="The resource `R.drawable.ic_onboarding_key_features_icons_only` appears to be unused"
1997 errorLine1="<vector xmlns:aapt="http://schemas.android.com/aapt" xmlns:android="http://schemas.android.com/apk/res/android" android:height="320dp" android:viewportHeight="193.94" android:viewportWidth="200" android:width="329.99896dp">"
2000 file="src/main/res/drawable/ic_onboarding_key_features_icons_only.xml"
2006 id="RedundantNamespace"
2007 message="This namespace declaration is redundant"
2008 errorLine1=" <vector xmlns:android="http://schemas.android.com/apk/res/android""
2009 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
2011 file="src/debug/res/drawable/animated_splash_screen.xml"
2017 id="RedundantNamespace"
2018 message="This namespace declaration is redundant"
2019 errorLine1=" <vector xmlns:android="http://schemas.android.com/apk/res/android""
2020 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
2022 file="src/main/res/drawable/animated_splash_screen.xml"
2028 id="RedundantNamespace"
2029 message="This namespace declaration is redundant"
2030 errorLine1=" xmlns:aapt="http://schemas.android.com/aapt""
2031 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
2033 file="src/debug/res/drawable/animated_splash_screen.xml"
2039 id="RedundantNamespace"
2040 message="This namespace declaration is redundant"
2041 errorLine1=" xmlns:aapt="http://schemas.android.com/aapt""
2042 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
2044 file="src/main/res/drawable/animated_splash_screen.xml"
2051 message="The following images appear both as density independent `.xml` files and as bitmap files: src/main/res/drawable-hdpi/ic_logo_wordmark_normal.webp, src/main/res/drawable-night/ic_logo_wordmark_normal.xml">
2053 file="src/main/res/drawable-xxxhdpi/ic_logo_wordmark_normal.webp"/>
2055 file="src/main/res/drawable-xxhdpi/ic_logo_wordmark_normal.webp"/>
2057 file="src/main/res/drawable-xhdpi/ic_logo_wordmark_normal.webp"/>
2059 file="src/main/res/drawable-night/ic_logo_wordmark_normal.xml"/>
2061 file="src/main/res/drawable-mdpi/ic_logo_wordmark_normal.webp"/>
2063 file="src/main/res/drawable-hdpi/ic_logo_wordmark_normal.webp"/>
2068 message="Found bitmap drawable `res/drawable/ic_baidu.webp` in densityless folder">
2070 file="src/main/res/drawable/ic_baidu.webp"/>
2075 message="Found bitmap drawable `res/drawable/ic_jd.webp` in densityless folder">
2077 file="src/main/res/drawable/ic_jd.webp"/>
2082 message="Found bitmap drawable `res/drawable/ic_meituan.webp` in densityless folder">
2084 file="src/main/res/drawable/ic_meituan.webp"/>
2089 message="Found bitmap drawable `res/drawable/ic_pdd.webp` in densityless folder">
2091 file="src/main/res/drawable/ic_pdd.webp"/>
2096 message="Found bitmap drawable `res/drawable/ic_tc.webp` in densityless folder">
2098 file="src/main/res/drawable/ic_tc.webp"/>
2103 message="Found bitmap drawable `res/drawable/ic_wordmark_logo.webp` in densityless folder">
2105 file="src/main/res/drawable/ic_wordmark_logo.webp"/>
2110 message="Found bitmap drawable `res/drawable/ic_wordmark_text_normal.webp` in densityless folder">
2112 file="src/main/res/drawable/ic_wordmark_text_normal.webp"/>
2117 message="Found bitmap drawable `res/drawable/ic_wordmark_text_private.webp` in densityless folder">
2119 file="src/main/res/drawable/ic_wordmark_text_private.webp"/>
2124 message="Missing the following drawables in `drawable-mdpi`: fenix_search_widget.webp (found in drawable-hdpi)">
2126 file="src/main/res/drawable-mdpi"/>
2131 message="Missing the following drawables in `drawable-xhdpi`: fenix_search_widget.webp (found in drawable-hdpi)">
2133 file="src/main/res/drawable-xhdpi"/>
2138 message="Missing the following drawables in `drawable-xxhdpi`: fenix_search_widget.webp (found in drawable-hdpi)">
2140 file="src/main/res/drawable-xxhdpi"/>
2145 message="Avoid using sizes smaller than `11sp`: `10sp`"
2146 errorLine1=" android:textSize="10sp""
2147 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~">
2149 file="src/main/res/layout/account_share_list_item.xml"
2156 message="Avoid using sizes smaller than `11sp`: `10sp`"
2157 errorLine1=" android:textSize="10sp""
2158 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~">
2160 file="src/main/res/layout/app_share_list_item.xml"
2166 id="ClickableViewAccessibility"
2167 message="Custom view ``SearchDialogFragmentConstraintLayout`` has `setOnTouchListener` called on it but does not override `performClick`"
2168 errorLine1=" binding.searchWrapper.setOnTouchListener { _, _ ->"
2171 file="src/main/java/org/mozilla/fenix/search/SearchDialogFragment.kt"
2177 id="ClickableViewAccessibility"
2178 message="`onTouch` lambda should call `View#performClick` when a click is detected"
2179 errorLine1=" binding.searchWrapper.setOnTouchListener { _, _ ->"
2182 file="src/main/java/org/mozilla/fenix/search/SearchDialogFragment.kt"
2188 id="ClickableViewAccessibility"
2189 message="Custom view ``SearchDialogFragmentConstraintLayout`` has `setOnTouchListener` called on it but does not override `performClick`"
2190 errorLine1=" binding.searchWrapper.setOnTouchListener { _, _ ->"
2193 file="src/main/java/org/mozilla/fenix/search/SearchDialogFragment.kt"
2199 id="ClickableViewAccessibility"
2200 message="`onTouch` lambda should call `View#performClick` when a click is detected"
2201 errorLine1=" binding.searchWrapper.setOnTouchListener { _, _ ->"
2204 file="src/main/java/org/mozilla/fenix/search/SearchDialogFragment.kt"
2210 id="ClickableViewAccessibility"
2211 message="Custom view ``SearchDialogFragmentConstraintLayout`` has `setOnTouchListener` called on it but does not override `performClick`"
2212 errorLine1=" binding.searchWrapper.setOnTouchListener { _, _ ->"
2215 file="src/main/java/org/mozilla/fenix/search/SearchDialogFragment.kt"
2221 id="ClickableViewAccessibility"
2222 message="`onTouch` lambda should call `View#performClick` when a click is detected"
2223 errorLine1=" binding.searchWrapper.setOnTouchListener { _, _ ->"
2226 file="src/main/java/org/mozilla/fenix/search/SearchDialogFragment.kt"
2232 id="ClickableViewAccessibility"
2233 message="Custom view `SwipeGestureLayout` overrides `onTouchEvent` but not `performClick`"
2234 errorLine1=" override fun onTouchEvent(event: MotionEvent): Boolean {"
2235 errorLine2=" ~~~~~~~~~~~~">
2237 file="src/main/java/org/mozilla/fenix/browser/SwipeGestureLayout.kt"
2243 id="ContentDescription"
2244 message="Missing `contentDescription` attribute on image"
2245 errorLine1=" <ImageView"
2246 errorLine2=" ~~~~~~~~~">
2248 file="src/main/res/layout/fragment_home.xml"
2254 id="ContentDescription"
2255 message="Missing `contentDescription` attribute on image"
2256 errorLine1=" <ImageView"
2257 errorLine2=" ~~~~~~~~~">
2259 file="src/main/res/layout/fragment_home.xml"
2265 id="ContentDescription"
2266 message="Missing `contentDescription` attribute on image"
2267 errorLine1=" <ImageView"
2268 errorLine2=" ~~~~~~~~~">
2270 file="src/main/res/layout/library_site_item.xml"
2276 id="ContentDescription"
2277 message="Missing `contentDescription` attribute on image"
2278 errorLine1=" <ImageView"
2279 errorLine2=" ~~~~~~~~~">
2281 file="src/main/res/layout/sign_in_preference.xml"
2288 message="When you define `paddingStart` you should probably also define `paddingEnd` for right-to-left symmetry"
2289 errorLine1=" android:paddingStart="@dimen/custom_checkbox_alignment_margin">"
2290 errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
2292 file="src/main/res/layout/checkbox_left_sub_preference.xml"
2299 message="Consider replacing `android:layout_marginLeft` with `android:layout_marginStart="10dp"` to better support right-to-left layouts"
2300 errorLine1=" android:layout_marginLeft="10dp""
2301 errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~">
2303 file="src/main/res/layout/activity_privacy_content_display.xml"