Loading app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt +6 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import org.mozilla.fenix.home.sessioncontrol.viewholders.CollectionViewHolder 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.TorInfoBannerViewHolder import org.mozilla.fenix.home.sessioncontrol.viewholders.TabInCollectionViewHolder import org.mozilla.fenix.home.sessioncontrol.viewholders.TopSitePagerViewHolder import org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding.ExperimentDefaultBrowserCardViewHolder Loading Loading @@ -81,6 +82,7 @@ sealed class AdapterItem(@LayoutRes val viewType: Int) { } object PrivateBrowsingDescription : AdapterItem(PrivateBrowsingDescriptionViewHolder.LAYOUT_ID) object TorInfoBanner : AdapterItem(TorInfoBannerViewHolder.LAYOUT_ID) object NoCollectionsMessage : AdapterItem(NoCollectionsMessageViewHolder.LAYOUT_ID) object TorBootstrap : AdapterItem(TorBootstrapPagerViewHolder.LAYOUT_ID) Loading Loading @@ -182,6 +184,10 @@ class SessionControlAdapter( view, interactor ) TorInfoBannerViewHolder.LAYOUT_ID -> TorInfoBannerViewHolder( view, interactor ) TorBootstrapPagerViewHolder.LAYOUT_ID -> TorBootstrapPagerViewHolder( view, components, Loading app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlController.kt +13 −0 Original line number Diff line number Diff line Loading @@ -94,6 +94,11 @@ interface SessionControlController { */ fun handlePrivateBrowsingLearnMoreClicked() /** * @see [TabSessionInteractor.onTorInfoBannerLaunchClicked] */ fun handleTorInfoBannerLaunchClicked() /** * @see [TopSiteInteractor.onRenameTopSiteClicked] */ Loading Loading @@ -648,4 +653,12 @@ class DefaultSessionControlController( override fun handleTorNetworkSettingsClicked() { openTorNetworkSettings() } override fun handleTorInfoBannerLaunchClicked() { activity.openToBrowserAndLoad( searchTermOrURL = SupportUtils.TOR_INFO_BANNER_URL, newTab = true, from = BrowserDirection.FromHome ) } } app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlInteractor.kt +10 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,12 @@ interface TabSessionInteractor { * "Common myths about private browsing" link in private mode. */ fun onPrivateBrowsingLearnMoreClicked() /** * Shows the Info Banner web page in a new tab. Called when a user clicks on the * "Learn More" button. */ fun onTorInfoBannerLaunchClicked() } /** Loading Loading @@ -381,4 +387,8 @@ class SessionControlInteractor( override fun onTorBootstrapNetworkSettingsClicked() { controller.handleTorNetworkSettingsClicked() } override fun onTorInfoBannerLaunchClicked() { controller.handleTorInfoBannerLaunchClicked() } } app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlView.kt +1 −1 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ private fun showCollections( } } private fun privateModeAdapterItems() = listOf(AdapterItem.PrivateBrowsingDescription) private fun privateModeAdapterItems() = listOf(AdapterItem.TorInfoBanner) private fun bootstrapAdapterItems() = listOf(AdapterItem.TorBootstrap) Loading app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TorInfoBannerViewHolder.kt 0 → 100644 +40 −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.home.sessioncontrol.viewholders import android.graphics.Typeface import android.text.SpannableString import android.text.Spanned import android.text.style.StyleSpan import android.view.View import androidx.recyclerview.widget.RecyclerView import kotlinx.android.synthetic.main.tor_info_banner.view.* import org.mozilla.fenix.R import org.mozilla.fenix.home.sessioncontrol.TabSessionInteractor class TorInfoBannerViewHolder( view: View, private val interactor: TabSessionInteractor ) : RecyclerView.ViewHolder(view) { init { with(view.info_banner_launch_button) { setOnClickListener { interactor.onTorInfoBannerLaunchClicked() } } with(view.info_banner_description) { val spannedString: SpannableString = SpannableString(text) spannedString.setSpan(StyleSpan(Typeface.BOLD), 120, 138, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) setText(spannedString) } } companion object { const val LAYOUT_ID = R.layout.tor_info_banner } } Loading
app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt +6 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import org.mozilla.fenix.home.sessioncontrol.viewholders.CollectionViewHolder 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.TorInfoBannerViewHolder import org.mozilla.fenix.home.sessioncontrol.viewholders.TabInCollectionViewHolder import org.mozilla.fenix.home.sessioncontrol.viewholders.TopSitePagerViewHolder import org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding.ExperimentDefaultBrowserCardViewHolder Loading Loading @@ -81,6 +82,7 @@ sealed class AdapterItem(@LayoutRes val viewType: Int) { } object PrivateBrowsingDescription : AdapterItem(PrivateBrowsingDescriptionViewHolder.LAYOUT_ID) object TorInfoBanner : AdapterItem(TorInfoBannerViewHolder.LAYOUT_ID) object NoCollectionsMessage : AdapterItem(NoCollectionsMessageViewHolder.LAYOUT_ID) object TorBootstrap : AdapterItem(TorBootstrapPagerViewHolder.LAYOUT_ID) Loading Loading @@ -182,6 +184,10 @@ class SessionControlAdapter( view, interactor ) TorInfoBannerViewHolder.LAYOUT_ID -> TorInfoBannerViewHolder( view, interactor ) TorBootstrapPagerViewHolder.LAYOUT_ID -> TorBootstrapPagerViewHolder( view, components, Loading
app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlController.kt +13 −0 Original line number Diff line number Diff line Loading @@ -94,6 +94,11 @@ interface SessionControlController { */ fun handlePrivateBrowsingLearnMoreClicked() /** * @see [TabSessionInteractor.onTorInfoBannerLaunchClicked] */ fun handleTorInfoBannerLaunchClicked() /** * @see [TopSiteInteractor.onRenameTopSiteClicked] */ Loading Loading @@ -648,4 +653,12 @@ class DefaultSessionControlController( override fun handleTorNetworkSettingsClicked() { openTorNetworkSettings() } override fun handleTorInfoBannerLaunchClicked() { activity.openToBrowserAndLoad( searchTermOrURL = SupportUtils.TOR_INFO_BANNER_URL, newTab = true, from = BrowserDirection.FromHome ) } }
app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlInteractor.kt +10 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,12 @@ interface TabSessionInteractor { * "Common myths about private browsing" link in private mode. */ fun onPrivateBrowsingLearnMoreClicked() /** * Shows the Info Banner web page in a new tab. Called when a user clicks on the * "Learn More" button. */ fun onTorInfoBannerLaunchClicked() } /** Loading Loading @@ -381,4 +387,8 @@ class SessionControlInteractor( override fun onTorBootstrapNetworkSettingsClicked() { controller.handleTorNetworkSettingsClicked() } override fun onTorInfoBannerLaunchClicked() { controller.handleTorInfoBannerLaunchClicked() } }
app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlView.kt +1 −1 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ private fun showCollections( } } private fun privateModeAdapterItems() = listOf(AdapterItem.PrivateBrowsingDescription) private fun privateModeAdapterItems() = listOf(AdapterItem.TorInfoBanner) private fun bootstrapAdapterItems() = listOf(AdapterItem.TorBootstrap) Loading
app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TorInfoBannerViewHolder.kt 0 → 100644 +40 −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.home.sessioncontrol.viewholders import android.graphics.Typeface import android.text.SpannableString import android.text.Spanned import android.text.style.StyleSpan import android.view.View import androidx.recyclerview.widget.RecyclerView import kotlinx.android.synthetic.main.tor_info_banner.view.* import org.mozilla.fenix.R import org.mozilla.fenix.home.sessioncontrol.TabSessionInteractor class TorInfoBannerViewHolder( view: View, private val interactor: TabSessionInteractor ) : RecyclerView.ViewHolder(view) { init { with(view.info_banner_launch_button) { setOnClickListener { interactor.onTorInfoBannerLaunchClicked() } } with(view.info_banner_description) { val spannedString: SpannableString = SpannableString(text) spannedString.setSpan(StyleSpan(Typeface.BOLD), 120, 138, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) setText(spannedString) } } companion object { const val LAYOUT_ID = R.layout.tor_info_banner } }