Verified Commit a39fcc21 authored by Matthew Finkel's avatar Matthew Finkel Committed by boklm
Browse files

Bug 40165: Announce v2 onion service deprecation on about:tor

parent cedfec81
Pipeline #6830 failed with stages
......@@ -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
......@@ -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)
......@@ -182,6 +184,10 @@ class SessionControlAdapter(
view,
interactor
)
TorInfoBannerViewHolder.LAYOUT_ID -> TorInfoBannerViewHolder(
view,
interactor
)
TorBootstrapPagerViewHolder.LAYOUT_ID -> TorBootstrapPagerViewHolder(
view,
components,
......
......@@ -94,6 +94,11 @@ interface SessionControlController {
*/
fun handlePrivateBrowsingLearnMoreClicked()
/**
* @see [TabSessionInteractor.onTorInfoBannerLaunchClicked]
*/
fun handleTorInfoBannerLaunchClicked()
/**
* @see [TopSiteInteractor.onRenameTopSiteClicked]
*/
......@@ -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
)
}
}
......@@ -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()
}
/**
......@@ -381,4 +387,8 @@ class SessionControlInteractor(
override fun onTorBootstrapNetworkSettingsClicked() {
controller.handleTorNetworkSettingsClicked()
}
override fun onTorInfoBannerLaunchClicked() {
controller.handleTorInfoBannerLaunchClicked()
}
}
......@@ -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)
......
/* 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
}
}
......@@ -40,6 +40,7 @@ object SupportUtils {
const val DONATE_URL = "https://donate.torproject.org/"
const val TB_MANUAL_URL = "https://tb-manual.torproject.org/mobile-tor"
const val TOR_RELEASES = "https://www.torproject.org/releases/"
const val TOR_INFO_BANNER_URL = "https://support.torproject.org/onionservices/#v2-deprecation"
enum class SumoTopic(internal val topicStr: String) {
FENIX_MOVING("sync-delist"),
......
<?xml version="1.0" encoding="utf-8"?><!-- 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/. -->
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/info_banner_padded_background_color">
<item
android:bottom="6dp"
android:top="6dp">
<shape android:shape="rectangle">
<corners android:radius="4dp" />
</shape>
</item>
</ripple>
......@@ -94,7 +94,8 @@
android:textColor="#DEFFFFFF"
android:textSize="40sp"
android:lineSpacingMultiplier="1.1"
app:layout_scrollFlags="scroll" />
app:layout_scrollFlags="scroll"
android:visibility="gone" />
</com.google.android.material.appbar.AppBarLayout>
......
<?xml version="1.0" encoding="utf-8"?>
<!-- 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/. -->
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/info_banner_wrapper"
style="@style/OnboardingCardLightWithPadding"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipChildren="false"
android:clipToPadding="false">
<LinearLayout
android:id="@+id/info_banner_header_wrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:importantForAccessibility="no">
<ImageView
android:id="@+id/tor_info_banner_icon"
android:layout_width="wrap_content"
android:layout_height="32dp"
android:layout_marginEnd="10dp"
android:adjustViewBounds="true"
android:clickable="false"
android:focusable="false"
android:importantForAccessibility="no"
app:srcCompat="@drawable/tor_banner_warning_icon"/>
<TextView
android:id="@+id/info_banner_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="none"
android:lineSpacingExtra="6dp"
android:paddingHorizontal="4dp"
android:paddingTop="4dp"
android:scrollHorizontally="false"
android:textAlignment="viewStart"
android:textColor="?primaryText"
android:textSize="20sp"
android:text="" />
</LinearLayout>
<TextView
android:id="@+id/info_banner_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="none"
android:lineSpacingExtra="6dp"
android:paddingHorizontal="4dp"
android:paddingTop="4dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/info_banner_header_wrapper"
android:scrollHorizontally="false"
android:textAlignment="viewStart"
android:textColor="?primaryText"
android:textSize="16sp"
android:text="Tor is ending its support for version 2 (v2) Onion Services, and v2 onion sites have since been deprecated. If you're a site administrator, upgrade to a v3 onion service immediately." />
<Button
style="@style/PositiveButton"
android:id="@+id/info_banner_launch_button"
android:text="Learn More"
android:layout_marginTop="16dp"
android:textSize="18dp"
android:textColor="@android:color/black"
android:background="@drawable/info_banner_padded_background"
android:fontFamily="Roboto-Medium"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/info_banner_description" />
</androidx.constraintlayout.widget.ConstraintLayout>
......@@ -425,4 +425,7 @@
<!-- Toolbar menu icon colors -->
<color name="toolbar_menu_transparent">@android:color/transparent</color>
<!-- Tor -->
<color name="info_banner_padded_background_color">#A76FFA</color>
</resources>
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment