From afb46c6da22a9a165d023c219cb502d41cec4e72 Mon Sep 17 00:00:00 2001
From: Marco Castelluccio <mcastelluccio@mozilla.com>
Date: Thu, 6 Jun 2024 11:32:35 +0000
Subject: [PATCH] [fenix] For
 https://github.com/mozilla-mobile/fenix/issues/18453 - Show SUMO for default
 browser deeplink on Android <N

Lower Android versions don't offer the possibility of opening system settings
at a specific preference. In this cases we already shown a sumo article
detailing the manual steps each user is expected to perform to change the
system set default browser.

UltraBlame original commit: 9b58a0a1d44dfd68f784f0a607cc320c8e857793
---
 .../home/intent/DeepLinkIntentProcessor.kt    |  62 +++++++
 .../intent/DeepLinkIntentProcessorTest.kt     | 159 ++++++++++++++++++
 mobile/android/fenix/docs/mma.md              |  24 ++-
 3 files changed, 236 insertions(+), 9 deletions(-)

diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/intent/DeepLinkIntentProcessor.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/intent/DeepLinkIntentProcessor.kt
index d9f3b2b8e266c..02a7e39b770e9 100644
--- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/intent/DeepLinkIntentProcessor.kt
+++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/intent/DeepLinkIntentProcessor.kt
@@ -208,6 +208,30 @@ fenix
 ext
 .
 alreadyOnDestination
+import
+org
+.
+mozilla
+.
+fenix
+.
+home
+.
+intent
+.
+DeepLinkIntentProcessor
+.
+DeepLinkVerifier
+import
+org
+.
+mozilla
+.
+fenix
+.
+settings
+.
+SupportUtils
 /
 *
 *
@@ -681,6 +705,44 @@ startActivity
 settingsIntent
 )
 }
+else
+{
+activity
+.
+openToBrowserAndLoad
+(
+searchTermOrURL
+=
+SupportUtils
+.
+getSumoURLForTopic
+(
+activity
+SupportUtils
+.
+SumoTopic
+.
+SET_AS_DEFAULT_BROWSER
+)
+newTab
+=
+true
+from
+=
+BrowserDirection
+.
+FromGlobal
+flags
+=
+EngineSession
+.
+LoadUrlFlags
+.
+external
+(
+)
+)
+}
 }
 "
 open
diff --git a/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/home/intent/DeepLinkIntentProcessorTest.kt b/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/home/intent/DeepLinkIntentProcessorTest.kt
index c251edc6a73ce..f491520f34840 100644
--- a/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/home/intent/DeepLinkIntentProcessorTest.kt
+++ b/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/home/intent/DeepLinkIntentProcessorTest.kt
@@ -79,6 +79,36 @@ net
 .
 Uri
 import
+android
+.
+os
+.
+Build
+.
+VERSION_CODES
+.
+M
+import
+android
+.
+os
+.
+Build
+.
+VERSION_CODES
+.
+N
+import
+android
+.
+os
+.
+Build
+.
+VERSION_CODES
+.
+P
+import
 androidx
 .
 core
@@ -242,6 +272,24 @@ fenix
 helpers
 .
 FenixRobolectricTestRunner
+import
+org
+.
+mozilla
+.
+fenix
+.
+settings
+.
+SupportUtils
+import
+org
+.
+robolectric
+.
+annotation
+.
+Config
 RunWith
 (
 FenixRobolectricTestRunner
@@ -1447,11 +1495,84 @@ Called
 }
 }
 Test
+Config
+(
+minSdk
+=
+N
+maxSdk
+=
+P
+)
+fun
+process
+make_default_browser
+deep
+link
+for
+above
+API
+23
+(
+)
+{
+assertTrue
+(
+processor
+.
+process
+(
+testIntent
+(
+"
+make_default_browser
+"
+)
+navController
+out
+)
+)
+verify
+{
+activity
+.
+startActivity
+(
+any
+(
+)
+)
+}
+verify
+{
+navController
+wasNot
+Called
+}
+verify
+{
+out
+wasNot
+Called
+}
+}
+Test
+Config
+(
+maxSdk
+=
+M
+)
 fun
 process
 make_default_browser
 deep
 link
+for
+API
+23
+and
+below
 (
 )
 {
@@ -1473,6 +1594,44 @@ out
 )
 verify
 {
+activity
+.
+openToBrowserAndLoad
+(
+searchTermOrURL
+=
+SupportUtils
+.
+getSumoURLForTopic
+(
+activity
+SupportUtils
+.
+SumoTopic
+.
+SET_AS_DEFAULT_BROWSER
+)
+newTab
+=
+true
+from
+=
+BrowserDirection
+.
+FromGlobal
+flags
+=
+EngineSession
+.
+LoadUrlFlags
+.
+external
+(
+)
+)
+}
+verify
+{
 navController
 wasNot
 Called
diff --git a/mobile/android/fenix/docs/mma.md b/mobile/android/fenix/docs/mma.md
index f287da62f8400..3e32ee1c36967 100644
--- a/mobile/android/fenix/docs/mma.md
+++ b/mobile/android/fenix/docs/mma.md
@@ -4817,18 +4817,24 @@ apps
 settings
 screen
 .
-*
-*
-Only
-works
-on
+If
 Android
 API
->
+<
 =
-24
-*
-*
+23
+opens
+tab
+to
+support
+page
+defined
+in
+SupportUtils
+.
+SumoTopic
+.
+SET_AS_DEFAULT_BROWSER
 <
 /
 td