Commit 4a12f1b6 authored by Jovan Gerodetti's avatar Jovan Gerodetti Committed by Mihai Branescu
Browse files

For #7996: Private mode doesn't play nicely with sites added to home screen

Site Controls Notification should reflect the browsing mode of the
currernt web app session.
parent 688c3771
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -73,7 +73,7 @@ class ExternalAppBrowserFragment : BaseBrowserFragment(), UserInteractionHandler
                        activity = activity,
                        engineLayout = view.swipeRefresh,
                        onItemTapped = { browserInteractor.onBrowserToolbarMenuItemTapped(it) },
                        isPrivate = (activity as HomeActivity).browsingModeManager.mode.isPrivate,
                        isPrivate = it.private,
                        shouldReverseItems = !activity.settings().shouldUseBottomToolbar
                    ),
                    owner = this,
@@ -132,12 +132,18 @@ class ExternalAppBrowserFragment : BaseBrowserFragment(), UserInteractionHandler
                    viewLifecycleOwner.lifecycle.addObserver(
                        WebAppSiteControlsFeature(
                            activity.applicationContext,
                            requireComponents.core.sessionManager,
                            requireComponents.useCases.sessionUseCases.reload,
                            customTabSessionId,
                            manifest,
                            WebAppSiteControlsBuilder(
                                requireComponents.core.sessionManager,
                                requireComponents.useCases.sessionUseCases.reload,
                                customTabSessionId,
                                manifest
                            )
                        )
                    )
                } else {
                    viewLifecycleOwner.lifecycle.addObserver(
                        PoweredByNotification(
+45 −0
Original line number Diff line number Diff line
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

package org.mozilla.fenix.customtabs

import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import androidx.core.app.NotificationCompat
import mozilla.components.browser.session.Session
import mozilla.components.browser.session.SessionManager
import mozilla.components.concept.engine.manifest.WebAppManifest
import mozilla.components.feature.pwa.feature.SiteControlsBuilder
import mozilla.components.feature.session.SessionUseCases
import org.mozilla.fenix.R

class WebAppSiteControlsBuilder(
    private val sessionManager: SessionManager,
    reloadUrlUseCase: SessionUseCases.ReloadUrlUseCase,
    private val sessionId: String,
    private val manifest: WebAppManifest
) : SiteControlsBuilder {

    private val inner = SiteControlsBuilder.CopyAndRefresh(reloadUrlUseCase)

    override fun buildNotification(
        context: Context,
        builder: NotificationCompat.Builder,
        channelId: String
    ) {
        inner.buildNotification(context, builder, channelId)

        val isPrivateSession = sessionManager.findSessionById(sessionId)?.private ?: false

        if (!isPrivateSession) { return }

        builder.setSmallIcon(R.drawable.ic_pbm_notification)
        builder.setContentTitle(context.getString(R.string.pwa_site_controls_title_private, manifest.name))
    }

    override fun getFilter() = inner.getFilter()

    override fun onReceiveBroadcast(context: Context, session: Session, intent: Intent) = inner.onReceiveBroadcast(context, session, intent)
}
 No newline at end of file
+2 −0
Original line number Diff line number Diff line
@@ -460,6 +460,8 @@
    <string name="collection_open_tabs">Open tabs</string>
    <!-- Text for the menu button to remove a top site -->
    <string name="remove_top_site">Remove</string>
    <!-- Postfix for private WebApp titles, placeholder is replaced with app name -->
    <string name="pwa_site_controls_title_private">%1$s (Private Mode)</string>

    <!-- History -->
    <!-- Text for the button to clear all history -->