Verified Commit da39d415 authored by Dan Ballard's avatar Dan Ballard Committed by Pier Angelo Vendrame
Browse files

Bug 41972: [android] Disable mozilla onboarding

parent a3c2eeb3
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -343,10 +343,11 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {
            } else {
                StartOnHome.enterHomeScreen.record(NoExtras())
            }

            /*
            if (settings().showHomeOnboardingDialog && components.fenixOnboarding.userHasBeenOnboarded()) {
                navHost.navController.navigate(NavGraphDirections.actionGlobalHomeOnboardingDialog())
            }
            */
        }

        Performance.processIntentIfPerformanceTest(intent, this)
+2 −158
Original line number Diff line number Diff line
@@ -157,7 +157,6 @@ import org.mozilla.fenix.search.toolbar.SearchSelectorMenu
import org.mozilla.fenix.tabstray.Page
import org.mozilla.fenix.tabstray.TabsTrayAccessPoint
import org.mozilla.fenix.theme.FirefoxTheme
import org.mozilla.fenix.tor.bootstrap.TorQuickStart
import org.mozilla.fenix.utils.Settings.Companion.TOP_SITES_PROVIDER_MAX_THRESHOLD
import org.mozilla.fenix.utils.allowUndo
import org.mozilla.fenix.wallpapers.Wallpaper
@@ -258,8 +257,6 @@ class HomeFragment : Fragment() {
    private val bottomToolbarContainerIntegration = ViewBoundFeatureWrapper<BottomToolbarContainerIntegration>()

    private lateinit var savedLoginsLauncher: ActivityResultLauncher<Intent>
    private val torQuickStart by lazy { TorQuickStart(requireContext()) }
    private lateinit var currentMode: CurrentMode

    override fun onCreate(savedInstanceState: Bundle?) {
        // DO NOT ADD ANYTHING ABOVE THIS getProfilerTime CALL!
@@ -302,7 +299,7 @@ class HomeFragment : Fragment() {
        // Splits by full stops or commas and puts the parts in different lines.
        // Ignoring separators at the end of the string, it is expected
        // that there are at most two parts (e.g. "Explore. Privately.").
        val localBinding = binding;
        val localBinding = binding
        binding.exploreprivately.text = localBinding
            .exploreprivately
            .text
@@ -432,10 +429,6 @@ class HomeFragment : Fragment() {
                removeCollectionWithUndo = ::removeCollectionWithUndo,
                showUndoSnackbarForTopSite = ::showUndoSnackbarForTopSite,
                showTabTray = ::openTabsTray,
                handleTorBootstrapConnect = ::handleTorBootstrapConnect,
                cancelTorBootstrap = ::cancelTorBootstrap,
                initiateTorBootstrap = ::initiateTorBootstrap,
                openTorNetworkSettings = ::openTorNetworkSettings
            ),
            recentTabController = DefaultRecentTabsController(
                selectTabUseCase = components.useCases.tabsUseCases.selectTab,
@@ -512,9 +505,6 @@ class HomeFragment : Fragment() {

        // FxNimbus.features.homescreen.recordExposure()

        adjustHomeFragmentView(currentMode.getCurrentMode())
        showSessionControlView()

        // DO NOT MOVE ANYTHING BELOW THIS addMarker CALL!
        requireComponents.core.engine.profiler?.addMarker(
            MarkersFragmentLifecycleCallbacks.MARKER_NAME,
@@ -759,6 +749,7 @@ class HomeFragment : Fragment() {
        if (browsingModeManager.mode == BrowsingMode.Private) {
            binding.root.consumeFrom(requireContext().components.appStore, viewLifecycleOwner) {
                sessionControlView?.update(it)

            }
        } else {
            sessionControlView?.update(requireContext().components.appStore.state)
@@ -785,111 +776,6 @@ class HomeFragment : Fragment() {
        binding.homeAppBar.setExpanded(true)
    }

    // This function should be paired with showSessionControlView()
    @SuppressWarnings("ComplexMethod", "NestedBlockDepth", "LongMethod")
    private fun adjustHomeFragmentView(mode: Mode) {
        binding.sessionControlRecyclerView.apply {
                visibility = View.INVISIBLE
        }

        if (mode == Mode.Bootstrap) {
            binding.sessionControlRecyclerView.apply {
                setPadding(0, 0, 0, 0)
                (layoutParams as ViewGroup.MarginLayoutParams).setMargins(0, 0, 0, 0)
            }
            binding.homeAppBar.apply {
                visibility = View.GONE

                // Reset this as SCROLL in case it was previously set as NO_SCROLL after bootstrap
                children.forEach {
                    (it.layoutParams as AppBarLayout.LayoutParams).scrollFlags =
                        AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL
                }
            }
            binding.onionPatternImage.apply {
                visibility = View.GONE
            }
            binding.toolbarLayout.apply {
                visibility = View.GONE
            }
        } else {
            // Keep synchronized with xml layout (somehow).
            binding.sessionControlRecyclerView.apply {
                setPadding(
                    SESSION_CONTROL_VIEW_PADDING,
                    SESSION_CONTROL_VIEW_PADDING,
                    SESSION_CONTROL_VIEW_PADDING,
                    SESSION_CONTROL_VIEW_PADDING
                )
                // Default margin until it is re-set below (either set immediately or after Layout)
                (layoutParams as ViewGroup.MarginLayoutParams).setMargins(
                    0,
                    0,
                    0,
                    DEFAULT_ONBOARDING_FINISH_MARGIN
                )
            }
            binding.toolbarLayout.apply {
                visibility = View.VISIBLE
                // If the Layout rendering pass was completed, then we have a |height| value,
                // if it wasn't completed then we have 0.
                if (height == 0) {
                    // Set the bottom margin after the toolbar height is defined during Layout
                    doOnLayout {
                        val toolbarLayoutHeight = binding.toolbarLayout.height
                        binding.sessionControlRecyclerView.apply {
                            (layoutParams as ViewGroup.MarginLayoutParams).setMargins(
                                0,
                                0,
                                0,
                                toolbarLayoutHeight - SESSION_CONTROL_VIEW_PADDING
                            )
                        }
                    }
                } else {
                    binding.sessionControlRecyclerView.apply {
                        (layoutParams as ViewGroup.MarginLayoutParams).setMargins(
                            0,
                            0,
                            0,
                            height - SESSION_CONTROL_VIEW_PADDING
                        )
                    }
                }
            }
            // Hide the onion pattern during Onboarding, too.
            // With new onboarding HomeFragment is only reached once onboarding is complete
            binding.onionPatternImage.apply {
                visibility = if (currentMode.getCurrentMode() != Mode.Bootstrap) {
                    View.VISIBLE
                } else {
                    View.GONE
                }

            }
            binding.homeAppBar.apply {
                visibility = View.VISIBLE

                children.forEach {
                    (it.layoutParams as AppBarLayout.LayoutParams).scrollFlags =
                        if (currentMode.getCurrentMode() != Mode.Bootstrap) {
                            AppBarLayout.LayoutParams.SCROLL_FLAG_NO_SCROLL
                        } else {
                            AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL
                        }

                }
            }
        }
    }

    // This function should be paired with adjustHomeFragmentView()
    private fun showSessionControlView() {
        binding.sessionControlRecyclerView.apply {
                visibility = View.VISIBLE
        }
    }

    @Suppress("LongMethod", "ComplexMethod")
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        // DO NOT ADD ANYTHING ABOVE THIS getProfilerTime CALL!
@@ -1181,14 +1067,6 @@ class HomeFragment : Fragment() {
        }
    }

    private fun dispatchModeChanges(mode: Mode) {
        requireComponents.appStore.dispatch(AppAction.ModeChange(mode))

        adjustHomeFragmentView(mode)
        updateSessionControlView()
        showSessionControlView()
    }

    @VisibleForTesting
    internal fun removeCollectionWithUndo(tabCollection: TabCollection) {
        val snackbarMessage = getString(R.string.snackbar_collection_deleted)
@@ -1210,23 +1088,12 @@ class HomeFragment : Fragment() {
        }
    }

    override fun onStop() {
        super.onStop()
        currentMode.unregisterTorListener()
    }

    override fun onResume() {
        super.onResume()
        if (browsingModeManager.mode == BrowsingMode.Private) {
            activity?.window?.setBackgroundDrawableResource(R.drawable.private_home_background_gradient)
        }

        // fenix#40176: Ensure the Home fragment is rendered correctly when we resume.
        val mode = currentMode.getCurrentMode()
        adjustHomeFragmentView(mode)
        updateSessionControlView()
        showSessionControlView()

        hideToolbar()

        // Whenever a tab is selected its last access timestamp is automatically updated by A-C.
@@ -1490,25 +1357,6 @@ class HomeFragment : Fragment() {
        }
    }

    private fun handleTorBootstrapConnect() {
        requireComponents.torController.onTorConnecting()
    }

    private fun cancelTorBootstrap() {
        requireComponents.torController.stopTor()
    }

    private fun initiateTorBootstrap(withDebugLogging: Boolean = false) {
        requireComponents.torController.initiateTorBootstrap(lifecycleScope, withDebugLogging)
    }

    private fun openTorNetworkSettings() {
        val directions =
            HomeFragmentDirections
                .actionHomeFragmentToTorNetworkSettingsFragment()
        findNavController().navigate(directions)
    }

    companion object {
        // Used to set homeViewModel.sessionToDelete when all tabs of a browsing mode are closed
        const val ALL_NORMAL_TABS = "all_normal"
@@ -1528,9 +1376,5 @@ class HomeFragment : Fragment() {

        // Elevation for undo toasts
        internal const val TOAST_ELEVATION = 80f

        // Layout
        private const val DEFAULT_ONBOARDING_FINISH_MARGIN = 60
        private const val SESSION_CONTROL_VIEW_PADDING = 16
    }
}
+0 −20
Original line number Diff line number Diff line
@@ -34,10 +34,7 @@ import org.mozilla.fenix.home.sessioncontrol.viewholders.CollectionHeaderViewHol
import org.mozilla.fenix.home.sessioncontrol.viewholders.CustomizeHomeButtonViewHolder
import org.mozilla.fenix.home.sessioncontrol.viewholders.NoCollectionsMessageViewHolder
import org.mozilla.fenix.home.sessioncontrol.viewholders.PrivateBrowsingDescriptionViewHolder
import org.mozilla.fenix.home.sessioncontrol.viewholders.TorBootstrapPagerViewHolder
import org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding.MessageCardViewHolder
import org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding.TorOnboardingSecurityLevelViewHolder
import org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding.TorOnboardingDonateViewHolder
import org.mozilla.fenix.home.topsites.TopSitePagerViewHolder
import org.mozilla.fenix.home.topsites.TopSitesViewHolder
import mozilla.components.feature.tab.collections.Tab as ComponentTab
@@ -147,9 +144,6 @@ sealed class AdapterItem(@LayoutRes val viewType: Int) {

    object CustomizeHomeButton : AdapterItem(CustomizeHomeButtonViewHolder.LAYOUT_ID)

    object TorOnboardingSecurityLevel : AdapterItem(TorOnboardingSecurityLevelViewHolder.LAYOUT_ID)
    object TorOnboardingDonate : AdapterItem(TorOnboardingDonateViewHolder.LAYOUT_ID)

    object RecentTabsHeader : AdapterItem(RecentTabsHeaderViewHolder.LAYOUT_ID)
    object RecentTabItem : AdapterItem(RecentTabViewHolder.LAYOUT_ID)

@@ -308,11 +302,6 @@ class SessionControlAdapter(
                viewLifecycleOwner = viewLifecycleOwner,
                interactor = interactor,
            )
            TorBootstrapPagerViewHolder.LAYOUT_ID -> TorBootstrapPagerViewHolder(
                view,
                components,
                interactor
            )
            NoCollectionsMessageViewHolder.LAYOUT_ID ->
                NoCollectionsMessageViewHolder(
                    view,
@@ -322,15 +311,6 @@ class SessionControlAdapter(
                    interactor,
                )
            BottomSpacerViewHolder.LAYOUT_ID -> BottomSpacerViewHolder(view)

            TorOnboardingSecurityLevelViewHolder.LAYOUT_ID -> TorOnboardingSecurityLevelViewHolder(
                view,
                interactor
            )
            TorOnboardingDonateViewHolder.LAYOUT_ID -> TorOnboardingDonateViewHolder(
                view,
                interactor
            )
            else -> throw IllegalStateException()
        }
    }
+0 −83
Original line number Diff line number Diff line
@@ -135,21 +135,6 @@ interface SessionControlController {
     */
    fun handleTopSiteLongClicked(topSite: TopSite)

    /**
     * @see [OnboardingInteractor.onOpenSettingsClicked]
     */
    fun handleOpenSettingsClicked()

    /**
     * @see [OnboardingInteractor.onOpenSecurityLevelSettingsClicked]
     */
    fun handleOpenSecurityLevelSettingsClicked()

    /**
     * @see [OnboardingInteractor.onDonateClicked]
     */
    fun handleDonateClicked()

    /**
     * @see [CollectionInteractor.onToggleCollectionExpanded]
     */
@@ -189,31 +174,6 @@ interface SessionControlController {
     * @see [SessionControlInteractor.reportSessionMetrics]
     */
    fun handleReportSessionMetrics(state: AppState)

    /**
     * @see [TorBootstrapInteractor.onTorBootstrapConnectClicked]
     */
    fun handleTorBootstrapConnectClicked()

    /**
     * @see [TorBootstrapInteractor.onTorStopBootstrapping]
     */
    fun handleTorStopBootstrapping()

    /**
     * @see [TorBootstrapInteractor.onTorStartBootstrapping]
     */
    fun handleTorStartBootstrapping()

    /**
     * @see [TorBootstrapInteractor.onTorStartDebugBootstrapping]
     */
    fun handleTorStartDebugBootstrapping()

    /**
     * @see [TorBootstrapInteractor.onTorBootstrapNetworkSettingsClicked]
     */
    fun handleTorNetworkSettingsClicked()
}

@Suppress("TooManyFunctions", "LargeClass", "LongParameterList")
@@ -235,10 +195,6 @@ class DefaultSessionControlController(
    private val removeCollectionWithUndo: (tabCollection: TabCollection) -> Unit,
    private val showUndoSnackbarForTopSite: (topSite: TopSite) -> Unit,
    private val showTabTray: () -> Unit,
    private val handleTorBootstrapConnect: () -> Unit,
    private val initiateTorBootstrap: (Boolean) -> Unit,
    private val cancelTorBootstrap: () -> Unit,
    private val openTorNetworkSettings: () -> Unit
) : SessionControlController {

    override fun handleCollectionAddTabTapped(collection: TabCollection) {
@@ -532,25 +488,6 @@ class DefaultSessionControlController(
            }
        }
    }

    override fun handleOpenSettingsClicked() {
        val directions = HomeFragmentDirections.actionGlobalPrivateBrowsingFragment()
        navController.nav(R.id.homeFragment, directions)
    }

    override fun handleOpenSecurityLevelSettingsClicked() {
        val directions = HomeFragmentDirections.actionGlobalTorSecurityLevelFragment()
        navController.nav(R.id.homeFragment, directions)
    }

    override fun handleDonateClicked() {
        activity.openToBrowserAndLoad(
            searchTermOrURL = SupportUtils.DONATE_URL,
            newTab = true,
            from = BrowserDirection.FromHome
        )
    }

    override fun handleToggleCollectionExpanded(collection: TabCollection, expand: Boolean) {
        appStore.dispatch(AppAction.CollectionExpanded(collection, expand))
    }
@@ -622,24 +559,4 @@ class DefaultSessionControlController(

        HomeBookmarks.bookmarksCount.set(state.bookmarks.size.toLong())
    }

    override fun handleTorBootstrapConnectClicked() {
        handleTorBootstrapConnect()
    }

    override fun handleTorStopBootstrapping() {
        cancelTorBootstrap()
    }

    override fun handleTorStartBootstrapping() {
        initiateTorBootstrap(false)
    }

    override fun handleTorStartDebugBootstrapping() {
        initiateTorBootstrap(true)
    }

    override fun handleTorNetworkSettingsClicked() {
        openTorNetworkSettings()
    }
}
+0 −78
Original line number Diff line number Diff line
@@ -129,26 +129,6 @@ interface CollectionInteractor {
    fun onRemoveCollectionsPlaceholder()
}

/**
 * Interface for onboarding related actions in the [SessionControlInteractor].
 */
interface OnboardingInteractor {
    /**
     * Hides the onboarding and navigates to Search. Called when a user clicks on the "Start Browsing" button.
     */
    fun onStartBrowsingClicked()

    /**
     * Hides the onboarding and navigates to Settings. Called when a user clicks on the "Open settings" button.
     */
    fun onOpenSettingsClicked()

    /**
     * Opens a custom tab to privacy notice url. Called when a user clicks on the "read our privacy notice" button.
     */
    fun onDonateClicked()
}

interface CustomizeHomeIteractor {
    /**
     * Opens the customize home settings page.
@@ -156,34 +136,6 @@ interface CustomizeHomeIteractor {
    fun openCustomizeHomePage()
}

interface TorBootstrapInteractor {
    /**
     * Initiates Tor bootstrapping. Called when a user clicks on the "Connect" button.
     */
    fun onTorBootstrapConnectClicked()

    /**
     * Initiates Tor bootstrapping. Called when a user clicks on the "Connect" button.
     */
    fun onTorStartBootstrapping()

    /**
     * Stop Tor bootstrapping. Called when a user clicks on the "settings" cog/button.
     */
    fun onTorStopBootstrapping()

    /**
     * Initiates Tor bootstrapping with debug logging. Called when bootstrapping fails with
     * the control.txt file not existing.
     */
    fun onTorStartDebugBootstrapping()

    /**
     * Open Tor Network Settings preference screen
     */
    fun onTorBootstrapNetworkSettingsClicked()
}

/**
 * Interface for top site related actions in the [SessionControlInteractor].
 */
@@ -295,7 +247,6 @@ class SessionControlInteractor(
    PocketStoriesInteractor,
    PrivateBrowsingInteractor,
    SearchSelectorInteractor,
    TorBootstrapInteractor,
    WallpaperInteractor {

    override fun onCollectionAddTabTapped(collection: TabCollection) {
@@ -358,15 +309,6 @@ class SessionControlInteractor(
        return controller.handleShowWallpapersOnboardingDialog(state)
    }

    // TODO: Do these still work, if not overrides, cus parent class dropped, are they wired in still?
    fun onOpenSettingsClicked() {
        controller.handleOpenSettingsClicked()
    }

    fun onDonateClicked() {
        controller.handleDonateClicked()
    }

    override fun onToggleCollectionExpanded(collection: TabCollection, expand: Boolean) {
        controller.handleToggleCollectionExpanded(collection, expand)
    }
@@ -500,24 +442,4 @@ class SessionControlInteractor(
    override fun onMenuItemTapped(item: SearchSelectorMenu.Item) {
        searchSelectorController.handleMenuItemTapped(item)
    }

    override fun onTorBootstrapConnectClicked() {
        controller.handleTorBootstrapConnectClicked()
    }

    override fun onTorStopBootstrapping() {
        controller.handleTorStopBootstrapping()
    }

    override fun onTorStartBootstrapping() {
        controller.handleTorStartBootstrapping()
    }

    override fun onTorStartDebugBootstrapping() {
        controller.handleTorStartDebugBootstrapping()
    }

    override fun onTorBootstrapNetworkSettingsClicked() {
        controller.handleTorNetworkSettingsClicked()
    }
}
Loading