diff --git a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt
index 09aa67a5f..3e2ffceff 100644
--- a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt
+++ b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt
@@ -158,7 +158,8 @@ class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler {
title = session.title,
isSecured = session.securityInfo.secure,
sitePermissions = sitePermissions,
- gravity = getAppropriateLayoutGravity()
+ gravity = getAppropriateLayoutGravity(),
+ certificateName = session.securityInfo.issuer
)
nav(R.id.browserFragment, directions)
}
diff --git a/app/src/main/java/org/mozilla/fenix/customtabs/ExternalAppBrowserFragment.kt b/app/src/main/java/org/mozilla/fenix/customtabs/ExternalAppBrowserFragment.kt
index a3e234e77..48308f763 100644
--- a/app/src/main/java/org/mozilla/fenix/customtabs/ExternalAppBrowserFragment.kt
+++ b/app/src/main/java/org/mozilla/fenix/customtabs/ExternalAppBrowserFragment.kt
@@ -164,7 +164,8 @@ class ExternalAppBrowserFragment : BaseBrowserFragment(), UserInteractionHandler
title = session.title,
isSecured = session.securityInfo.secure,
sitePermissions = sitePermissions,
- gravity = getAppropriateLayoutGravity()
+ gravity = getAppropriateLayoutGravity(),
+ certificateName = session.securityInfo.issuer
)
nav(R.id.externalAppBrowserFragment, directions)
}
diff --git a/app/src/main/java/org/mozilla/fenix/settings/quicksettings/QuickSettingsFragmentStore.kt b/app/src/main/java/org/mozilla/fenix/settings/quicksettings/QuickSettingsFragmentStore.kt
index fb0923002..28e863e4b 100644
--- a/app/src/main/java/org/mozilla/fenix/settings/quicksettings/QuickSettingsFragmentStore.kt
+++ b/app/src/main/java/org/mozilla/fenix/settings/quicksettings/QuickSettingsFragmentStore.kt
@@ -71,18 +71,20 @@ class QuickSettingsFragmentStore(
* @param isSecured [Boolean] whether the connection is secured (TLS) or not.
* @param permissions [SitePermissions]? list of website permissions and their status.
* @param settings [Settings] application settings.
+ * @param certificateName [String] the certificate name of the current web page.
*/
@Suppress("LongParameterList")
fun createStore(
context: Context,
websiteUrl: String,
websiteTitle: String,
+ certificateName: String,
isSecured: Boolean,
permissions: SitePermissions?,
settings: Settings
) = QuickSettingsFragmentStore(
QuickSettingsFragmentState(
- webInfoState = createWebsiteInfoState(websiteUrl, websiteTitle, isSecured),
+ webInfoState = createWebsiteInfoState(websiteUrl, websiteTitle, isSecured, certificateName),
websitePermissionsState = createWebsitePermissionState(
context,
permissions,
@@ -104,13 +106,14 @@ class QuickSettingsFragmentStore(
fun createWebsiteInfoState(
websiteUrl: String,
websiteTitle: String,
- isSecured: Boolean
+ isSecured: Boolean,
+ certificateName: String
): WebsiteInfoState {
val (stringRes, iconRes, colorRes) = when (isSecured) {
true -> getSecuredWebsiteUiValues
false -> getInsecureWebsiteUiValues
}
- return WebsiteInfoState(websiteUrl, websiteTitle, stringRes, iconRes, colorRes)
+ return WebsiteInfoState(websiteUrl, websiteTitle, stringRes, iconRes, colorRes, certificateName)
}
/**
@@ -230,7 +233,8 @@ data class WebsiteInfoState(
val websiteTitle: String,
@StringRes val securityInfoRes: Int,
@DrawableRes val iconRes: Int,
- @ColorRes val iconTintRes: Int
+ @ColorRes val iconTintRes: Int,
+ val certificateName: String
) : State
/**
diff --git a/app/src/main/java/org/mozilla/fenix/settings/quicksettings/QuickSettingsSheetDialogFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/quicksettings/QuickSettingsSheetDialogFragment.kt
index 17f0f822e..fb1bdf0e2 100644
--- a/app/src/main/java/org/mozilla/fenix/settings/quicksettings/QuickSettingsSheetDialogFragment.kt
+++ b/app/src/main/java/org/mozilla/fenix/settings/quicksettings/QuickSettingsSheetDialogFragment.kt
@@ -65,7 +65,8 @@ class QuickSettingsSheetDialogFragment : AppCompatDialogFragment() {
websiteTitle = args.title,
isSecured = args.isSecured,
permissions = args.sitePermissions,
- settings = Settings.getInstance(context)
+ settings = Settings.getInstance(context),
+ certificateName = args.certificateName
)
quickSettingsController = DefaultQuickSettingsController(
diff --git a/app/src/main/java/org/mozilla/fenix/settings/quicksettings/WebsiteInfoView.kt b/app/src/main/java/org/mozilla/fenix/settings/quicksettings/WebsiteInfoView.kt
index 4190f29f7..14186c076 100644
--- a/app/src/main/java/org/mozilla/fenix/settings/quicksettings/WebsiteInfoView.kt
+++ b/app/src/main/java/org/mozilla/fenix/settings/quicksettings/WebsiteInfoView.kt
@@ -39,6 +39,7 @@ class WebsiteInfoView(
bindUrl(state.websiteUrl)
bindTitle(state.websiteTitle)
bindSecurityInfo(state.securityInfoRes, state.iconRes, state.iconTintRes)
+ bindCertificateName(state.certificateName)
}
private fun bindUrl(url: String) {
@@ -49,6 +50,11 @@ class WebsiteInfoView(
view.title.text = title
}
+ private fun bindCertificateName(cert: String) {
+ val certificateLabel = view.context.getString(R.string.verified_by) + " " + cert
+ view.certificateInfo.text = certificateLabel
+ }
+
private fun bindSecurityInfo(
@StringRes securityInfoRes: Int,
@DrawableRes iconRes: Int,
diff --git a/app/src/main/res/layout/quicksettings_website_info.xml b/app/src/main/res/layout/quicksettings_website_info.xml
index 1c1976a3d..b44120e3d 100644
--- a/app/src/main/res/layout/quicksettings_website_info.xml
+++ b/app/src/main/res/layout/quicksettings_website_info.xml
@@ -34,7 +34,22 @@
style="@style/QuickSettingsText.Icon"
android:layout_width="match_parent"
android:layout_height="@dimen/quicksettings_item_height"
+ android:paddingTop="8dp"
tools:drawableStart="@drawable/mozac_ic_lock"
tools:drawableTint="@color/photonGreen50"
tools:text="Secure connection" />
+
+
+
+
diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml
index fd65edd23..91d9b6a11 100644
--- a/app/src/main/res/navigation/nav_graph.xml
+++ b/app/src/main/res/navigation/nav_graph.xml
@@ -612,6 +612,10 @@
android:name="gravity"
android:defaultValue="80"
app:argType="integer" />
+
16dp
- 46dp
+ 28dp
48dp
64dp
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 0bb4436f2..04c29838f 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1199,4 +1199,6 @@
Are you sure you want to delete this bookmark?
+
+ Verified By:
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 517d314fb..b1e86be4f 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -294,6 +294,15 @@
- true
+
+
diff --git a/app/src/test/java/org/mozilla/fenix/settings/quicksettings/QuickSettingsFragmentStoreTest.kt b/app/src/test/java/org/mozilla/fenix/settings/quicksettings/QuickSettingsFragmentStoreTest.kt
index 003acc020..1e311c4dd 100644
--- a/app/src/test/java/org/mozilla/fenix/settings/quicksettings/QuickSettingsFragmentStoreTest.kt
+++ b/app/src/test/java/org/mozilla/fenix/settings/quicksettings/QuickSettingsFragmentStoreTest.kt
@@ -57,7 +57,7 @@ class QuickSettingsFragmentStoreTest {
val permissions = mockk(relaxed = true)
val store = QuickSettingsFragmentStore.createStore(
- context, "url", "Hello", true, permissions, settings
+ context, "url", "Hello", "issuer", true, permissions, settings
)
assertAll {
@@ -72,9 +72,10 @@ class QuickSettingsFragmentStoreTest {
fun `createWebsiteInfoState constructs a WebsiteInfoState with the right values for a secure connection`() {
val websiteUrl = "https://host.com/page1"
val websiteTitle = "Hello"
+ val certificateIssuer = "issuer"
val securedStatus = true
- val state = QuickSettingsFragmentStore.createWebsiteInfoState(websiteUrl, websiteTitle, securedStatus)
+ val state = QuickSettingsFragmentStore.createWebsiteInfoState(websiteUrl, websiteTitle, securedStatus, certificateIssuer)
assertAll {
assertThat(state).isNotNull()
@@ -90,9 +91,10 @@ class QuickSettingsFragmentStoreTest {
fun `createWebsiteInfoState constructs a WebsiteInfoState with the right values for an insecure connection`() {
val websiteUrl = "https://host.com/page1"
val websiteTitle = "Hello"
+ val certificateIssuer = "issuer"
val securedStatus = false
- val state = QuickSettingsFragmentStore.createWebsiteInfoState(websiteUrl, websiteTitle, securedStatus)
+ val state = QuickSettingsFragmentStore.createWebsiteInfoState(websiteUrl, websiteTitle, securedStatus, certificateIssuer)
assertAll {
assertThat(state).isNotNull()