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