Skip to content

Commit 42ec90d

Browse files
authored
Fix privacy pro not launching from ppro url (#5916)
### Description This PR adds the missing SettingsScreenNoParams annotation to enable launching the Settings screen with the GlobalActivityStarter. A release Maestro test has been added to verify that launching Privacy Pro from a special URL works correctly. I've also moved to using GlobalActivityStarter to launch Settings via the Browser screen so this becomes more obvious if it happens again. ### Steps to test this PR _Privacy Pro URL Test_ - [x] Use a playRelease build - [x] Launch the app and navigate to the search bar - [x] Enter "https://duckduckgo.com/pro" and press Enter - [x] Verify that the Privacy Pro page appears with "Privacy Pro" and "Subscribe to Privacy Pro" text visible - [x] Click back _Open settings_ - [x] Click browser overflow menu button - [x] Click "Settings" - [x] Settings screen should open _Maestro test_ - [x] Run `maestro test .maestro/ppro/launch_privacy_pro_from_special_url.yaml` - [x] Test should pass ### UI changes No UI changes in this PR.
1 parent 4bb8c3a commit 42ec90d

File tree

3 files changed

+38
-2
lines changed

3 files changed

+38
-2
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
appId: com.duckduckgo.mobile.android
2+
name: "ReleaseTest: Launch Privacy Pro from special URL is working"
3+
tags:
4+
- releaseTest
5+
---
6+
- retry:
7+
maxRetries: 3
8+
commands:
9+
- launchApp:
10+
clearState: true
11+
12+
- runFlow: ../shared/skip_all_onboarding.yaml
13+
14+
- tapOn:
15+
text: "search or type URL"
16+
- inputText: "https://duckduckgo.com/pro"
17+
- pressKey: Enter
18+
- runFlow:
19+
when:
20+
visible:
21+
text: "Privacy Pro"
22+
commands:
23+
- assertVisible:
24+
text: "Subscribe to Privacy Pro"
25+
- runFlow:
26+
when:
27+
visible:
28+
id: "com.duckduckgo.mobile.android:id/omnibarIconContainer"
29+
commands:
30+
- copyTextFrom:
31+
id: "omnibarTextInput"
32+
- assertTrue: ${maestro.copiedText == "https://duckduckgo.com/pro"}
33+

app/src/main/java/com/duckduckgo/app/browser/BrowserActivity.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ import com.duckduckgo.app.global.view.renderIfChanged
7474
import com.duckduckgo.app.onboarding.ui.page.DefaultBrowserPage
7575
import com.duckduckgo.app.pixels.AppPixelName
7676
import com.duckduckgo.app.pixels.AppPixelName.FIRE_DIALOG_CANCEL
77-
import com.duckduckgo.app.settings.SettingsActivity
7877
import com.duckduckgo.app.settings.db.SettingsDataStore
7978
import com.duckduckgo.app.statistics.pixels.Pixel
8079
import com.duckduckgo.app.tabs.TabManagerFeatureFlags
@@ -83,6 +82,7 @@ import com.duckduckgo.app.tabs.ui.TabSwitcherSnackbar
8382
import com.duckduckgo.appbuildconfig.api.AppBuildConfig
8483
import com.duckduckgo.autofill.api.emailprotection.EmailProtectionLinkVerifier
8584
import com.duckduckgo.browser.api.ui.BrowserScreens.BookmarksScreenNoParams
85+
import com.duckduckgo.browser.api.ui.BrowserScreens.SettingsScreenNoParams
8686
import com.duckduckgo.common.ui.DuckDuckGoActivity
8787
import com.duckduckgo.common.ui.experiments.visual.store.VisualDesignExperimentDataStore
8888
import com.duckduckgo.common.ui.view.dialog.TextAlertDialogBuilder
@@ -703,7 +703,7 @@ open class BrowserActivity : DuckDuckGoActivity() {
703703
}
704704

705705
fun launchSettings() {
706-
startActivity(SettingsActivity.intent(this))
706+
globalActivityStarter.start(this, SettingsScreenNoParams)
707707
}
708708

709709
fun launchSitePermissionsSettings() {

app/src/main/java/com/duckduckgo/app/settings/SettingsActivity.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import androidx.core.view.isVisible
2424
import androidx.lifecycle.Lifecycle
2525
import androidx.lifecycle.flowWithLifecycle
2626
import androidx.lifecycle.lifecycleScope
27+
import com.duckduckgo.anvil.annotations.ContributeToActivityStarter
2728
import com.duckduckgo.anvil.annotations.InjectWith
2829
import com.duckduckgo.app.about.AboutScreenNoParams
2930
import com.duckduckgo.app.about.FeedbackContract
@@ -70,6 +71,7 @@ import com.duckduckgo.appbuildconfig.api.AppBuildConfig
7071
import com.duckduckgo.autoconsent.impl.ui.AutoconsentSettingsActivity
7172
import com.duckduckgo.autofill.api.AutofillScreens.AutofillSettingsScreen
7273
import com.duckduckgo.autofill.api.AutofillSettingsLaunchSource
74+
import com.duckduckgo.browser.api.ui.BrowserScreens.SettingsScreenNoParams
7375
import com.duckduckgo.common.ui.DuckDuckGoActivity
7476
import com.duckduckgo.common.ui.view.gone
7577
import com.duckduckgo.common.ui.view.listitem.DaxListItem.IconSize.Small
@@ -98,6 +100,7 @@ import timber.log.Timber
98100
private const val OTHER_PLATFORMS_URL = "https://duckduckgo.com/app"
99101

100102
@InjectWith(ActivityScope::class)
103+
@ContributeToActivityStarter(SettingsScreenNoParams::class, screenName = "settings")
101104
class SettingsActivity : DuckDuckGoActivity() {
102105

103106
private val viewModel: SettingsViewModel by bindViewModel()

0 commit comments

Comments
 (0)