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 1aa5c5a6e..09aa67a5f 100644
--- a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt
+++ b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt
@@ -155,6 +155,7 @@ class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler {
BrowserFragmentDirections.actionBrowserFragmentToQuickSettingsSheetDialogFragment(
sessionId = session.id,
url = session.url,
+ title = session.title,
isSecured = session.securityInfo.secure,
sitePermissions = sitePermissions,
gravity = getAppropriateLayoutGravity()
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 f7c81714b..a3e234e77 100644
--- a/app/src/main/java/org/mozilla/fenix/customtabs/ExternalAppBrowserFragment.kt
+++ b/app/src/main/java/org/mozilla/fenix/customtabs/ExternalAppBrowserFragment.kt
@@ -161,6 +161,7 @@ class ExternalAppBrowserFragment : BaseBrowserFragment(), UserInteractionHandler
.actionExternalAppBrowserFragmentToQuickSettingsSheetDialogFragment(
sessionId = session.id,
url = session.url,
+ title = session.title,
isSecured = session.securityInfo.secure,
sitePermissions = sitePermissions,
gravity = getAppropriateLayoutGravity()
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 5ced2fde5..fb0923002 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
@@ -67,6 +67,7 @@ class QuickSettingsFragmentStore(
*
* @param context [Context] used for access to various Android resources.
* @param websiteUrl [String] the URL of the current web page.
+ * @param websiteTitle [String] the title of the current web page.
* @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.
@@ -75,12 +76,13 @@ class QuickSettingsFragmentStore(
fun createStore(
context: Context,
websiteUrl: String,
+ websiteTitle: String,
isSecured: Boolean,
permissions: SitePermissions?,
settings: Settings
) = QuickSettingsFragmentStore(
QuickSettingsFragmentState(
- webInfoState = createWebsiteInfoState(websiteUrl, isSecured),
+ webInfoState = createWebsiteInfoState(websiteUrl, websiteTitle, isSecured),
websitePermissionsState = createWebsitePermissionState(
context,
permissions,
@@ -101,13 +103,14 @@ class QuickSettingsFragmentStore(
@VisibleForTesting
fun createWebsiteInfoState(
websiteUrl: String,
+ websiteTitle: String,
isSecured: Boolean
): WebsiteInfoState {
val (stringRes, iconRes, colorRes) = when (isSecured) {
true -> getSecuredWebsiteUiValues
false -> getInsecureWebsiteUiValues
}
- return WebsiteInfoState(websiteUrl, stringRes, iconRes, colorRes)
+ return WebsiteInfoState(websiteUrl, websiteTitle, stringRes, iconRes, colorRes)
}
/**
@@ -217,12 +220,14 @@ data class QuickSettingsFragmentState(
* [State] to be rendered by [WebsiteInfoView] indicating whether the connection is secure or not.
*
* @param websiteUrl [String] the URL of the current web page.
+ * @param websiteTitle [String] the title of the current web page.
* @param securityInfoRes [StringRes] for the connection description.
* @param iconRes [DrawableRes] image indicating the connection status.
* @param iconTintRes [ColorRes] icon color.
*/
data class WebsiteInfoState(
val websiteUrl: String,
+ val websiteTitle: String,
@StringRes val securityInfoRes: Int,
@DrawableRes val iconRes: Int,
@ColorRes val iconTintRes: Int
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 148ca4f0b..f30c5d899 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
@@ -67,6 +67,7 @@ class QuickSettingsSheetDialogFragment : AppCompatDialogFragment() {
quickSettingsStore = QuickSettingsFragmentStore.createStore(
context = context,
websiteUrl = args.url,
+ websiteTitle = args.title,
isSecured = args.isSecured,
permissions = args.sitePermissions,
settings = Settings.getInstance(context)
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 914933659..4190f29f7 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
@@ -37,6 +37,7 @@ class WebsiteInfoView(
*/
fun update(state: WebsiteInfoState) {
bindUrl(state.websiteUrl)
+ bindTitle(state.websiteTitle)
bindSecurityInfo(state.securityInfoRes, state.iconRes, state.iconTintRes)
}
@@ -44,6 +45,10 @@ class WebsiteInfoView(
view.url.text = url
}
+ private fun bindTitle(title: String) {
+ view.title.text = title
+ }
+
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 a1f5eef58..1c1976a3d 100644
--- a/app/src/main/res/layout/quicksettings_website_info.xml
+++ b/app/src/main/res/layout/quicksettings_website_info.xml
@@ -12,15 +12,21 @@
android:layout_height="wrap_content"
android:orientation="vertical">
+
+
diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml
index 4d798eec2..71447aaf2 100644
--- a/app/src/main/res/navigation/nav_graph.xml
+++ b/app/src/main/res/navigation/nav_graph.xml
@@ -582,6 +582,9 @@
+
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 47ad85d9c..003acc020 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", true, permissions, settings
+ context, "url", "Hello", true, permissions, settings
)
assertAll {
@@ -71,13 +71,15 @@ class QuickSettingsFragmentStoreTest {
@Test
fun `createWebsiteInfoState constructs a WebsiteInfoState with the right values for a secure connection`() {
val websiteUrl = "https://host.com/page1"
+ val websiteTitle = "Hello"
val securedStatus = true
- val state = QuickSettingsFragmentStore.createWebsiteInfoState(websiteUrl, securedStatus)
+ val state = QuickSettingsFragmentStore.createWebsiteInfoState(websiteUrl, websiteTitle, securedStatus)
assertAll {
assertThat(state).isNotNull()
assertThat(state.websiteUrl).isSameAs(websiteUrl)
+ assertThat(state.websiteTitle).isSameAs(websiteTitle)
assertThat(state.securityInfoRes).isEqualTo(secureStringRes)
assertThat(state.iconRes).isEqualTo(secureDrawableRes)
assertThat(state.iconTintRes).isEqualTo(secureColorRes)
@@ -87,13 +89,15 @@ class QuickSettingsFragmentStoreTest {
@Test
fun `createWebsiteInfoState constructs a WebsiteInfoState with the right values for an insecure connection`() {
val websiteUrl = "https://host.com/page1"
+ val websiteTitle = "Hello"
val securedStatus = false
- val state = QuickSettingsFragmentStore.createWebsiteInfoState(websiteUrl, securedStatus)
+ val state = QuickSettingsFragmentStore.createWebsiteInfoState(websiteUrl, websiteTitle, securedStatus)
assertAll {
assertThat(state).isNotNull()
assertThat(state.websiteUrl).isSameAs(websiteUrl)
+ assertThat(state.websiteTitle).isSameAs(websiteTitle)
assertThat(state.securityInfoRes).isEqualTo(insecureStringRes)
assertThat(state.iconRes).isEqualTo(insecureDrawableRes)
assertThat(state.iconTintRes).isEqualTo(insecureColorRes)