From 7c00a1ad6b5d730eacdcf1678a0036ff53ae576c Mon Sep 17 00:00:00 2001 From: Kate Glazko Date: Fri, 31 Jan 2020 04:27:48 -0800 Subject: [PATCH] For #5073: View Site Cert --- .../org/mozilla/fenix/browser/BrowserFragment.kt | 3 ++- .../customtabs/ExternalAppBrowserFragment.kt | 3 ++- .../quicksettings/QuickSettingsFragmentStore.kt | 12 ++++++++---- .../QuickSettingsSheetDialogFragment.kt | 3 ++- .../settings/quicksettings/WebsiteInfoView.kt | 6 ++++++ .../res/layout/quicksettings_website_info.xml | 15 +++++++++++++++ app/src/main/res/navigation/nav_graph.xml | 4 ++++ app/src/main/res/values/dimens.xml | 2 +- app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/values/styles.xml | 9 +++++++++ .../QuickSettingsFragmentStoreTest.kt | 8 +++++--- 11 files changed, 56 insertions(+), 11 deletions(-) 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()