Skip to content

Commit 6d8acec

Browse files
committed
Merge branch 'release/5.201.0' into main
2 parents 7a862b3 + 4ae5b70 commit 6d8acec

File tree

133 files changed

+2574
-206
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

133 files changed

+2574
-206
lines changed
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
name: Custom Tabs nightly tests
2+
3+
on:
4+
schedule:
5+
- cron: '0 5 * * *' # run at 5 AM UTC
6+
workflow_dispatch:
7+
8+
concurrency:
9+
group: ${{ github.workflow }}-${{ github.ref }}
10+
cancel-in-progress: true
11+
12+
jobs:
13+
instrumentation_tests:
14+
runs-on: ubuntu-latest
15+
name: Custom Tabs nightly tests
16+
17+
steps:
18+
- name: Checkout repository
19+
uses: actions/checkout@v3
20+
with:
21+
submodules: recursive
22+
23+
- name: Set up JDK 17
24+
uses: actions/setup-java@v3
25+
with:
26+
java-version: '17'
27+
distribution: 'adopt'
28+
29+
- name: Create folder
30+
if: always()
31+
run: mkdir apk
32+
33+
- name: Decode keys
34+
uses: davidSchuppa/base64Secret-toFile-action@v2
35+
with:
36+
secret: ${{ secrets.FAKE_RELEASE_PROPERTIES }}
37+
fileName: ddg_android_build.properties
38+
destination-path: $HOME/jenkins_static/com.duckduckgo.mobile.android/
39+
40+
- name: Decode key file
41+
uses: davidSchuppa/base64Secret-toFile-action@v2
42+
with:
43+
secret: ${{ secrets.FAKE_RELEASE_KEY }}
44+
fileName: android
45+
destination-path: $HOME/jenkins_static/com.duckduckgo.mobile.android/
46+
47+
- name: Assemble internal release APK
48+
uses: gradle/gradle-build-action@v2
49+
with:
50+
arguments: assembleInternalRelease -Pforce-default-variant -x lint
51+
52+
- name: Move APK to new folder
53+
if: always()
54+
run: find . -name "*.apk" -exec mv '{}' apk/release.apk \;
55+
56+
- name: Custom Tabs Flows
57+
uses: mobile-dev-inc/[email protected]
58+
with:
59+
api-key: ${{ secrets.MOBILE_DEV_API_KEY }}
60+
name: ${{ github.sha }}
61+
app-file: apk/release.apk
62+
android-api-level: 30
63+
workspace: .maestro
64+
include-tags: customTabsTest
65+
66+
- name: Create Asana task when workflow failed
67+
if: ${{ failure() }}
68+
id: create-failure-task
69+
uses: duckduckgo/[email protected]
70+
with:
71+
asana-pat: ${{ secrets.GH_ASANA_SECRET }}
72+
asana-project: ${{ vars.GH_ANDROID_APP_PROJECT_ID }}
73+
asana-section: ${{ vars.GH_ANDROID_APP_INCOMING_SECTION_ID }}
74+
asana-task-name: GH Workflow Failure - Custom Tabs Flows
75+
asana-task-description: The Custom Tabs nightly workflow has failed. See https://github.com/duckduckgo/Android/actions/runs/${{ github.run_id }}
76+
action: 'create-asana-task'

.maestro/bookmarks/open_bookmark_and_navigate_back.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,6 @@ tags:
4545
text: "Privacy Test Pages - Home"
4646
- assertVisible:
4747
text: "Privacy Test Pages"
48-
- tapOn: "back"
48+
- action: back
4949
- assertVisible:
5050
text: "Search engine"

.maestro/bookmarks/open_bookmark_in_folder_and_navigate_back.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,6 @@ tags:
157157
text: "Privacy Test Pages - Home"
158158
- assertVisible:
159159
text: "Privacy Test Pages"
160-
- tapOn: "back"
160+
- action: back
161161
- assertVisible:
162162
text: "Search engine"
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
appId: com.duckduckgo.mobile.android
2+
name: "Custom Tabs navigation"
3+
tags:
4+
- customTabsTest
5+
---
6+
- launchApp:
7+
clearState: true
8+
stopApp: true
9+
10+
- assertVisible:
11+
text: ".*Not to worry! Searching and browsing privately.*"
12+
- tapOn: "let's do it!"
13+
- runFlow:
14+
when:
15+
visible: "set as default"
16+
commands:
17+
- tapOn: "duckduckgo"
18+
- tapOn: "set as default"
19+
- assertVisible:
20+
text: ".*I'll also upgrade the security of your connection if possible.*"
21+
22+
- tapOn:
23+
id: "com.duckduckgo.mobile.android:id/browserMenuImageView"
24+
- tapOn:
25+
text: "settings"
26+
- scrollUntilVisible:
27+
element:
28+
text: "developer settings"
29+
direction: DOWN
30+
- tapOn:
31+
text: "developer settings"
32+
- scrollUntilVisible:
33+
element:
34+
text: "custom tabs"
35+
direction: DOWN
36+
- tapOn:
37+
text: "custom tabs"
38+
- tapOn:
39+
text: "add your url here"
40+
- inputText: "https://www.search-company.site"
41+
- tapOn:
42+
text: "load custom tab"
43+
- tapOn:
44+
id: "com.duckduckgo.mobile.android:id/browserMenuImageView"
45+
- assertVisible:
46+
text: "running in duckduckgo"
47+
- action: back
48+
- tapOn:
49+
text: "[Ad 1] SERP Ad (heuristic)"
50+
- action: back
51+
- tapOn:
52+
text: "[Ad 1] SERP Ad (heuristic)"
53+
- tapOn:
54+
id: "com.duckduckgo.mobile.android:id/browserMenuImageView"
55+
- tapOn:
56+
id: "com.duckduckgo.mobile.android:id/backMenuItem"
57+
- assertVisible:
58+
text: "Search engine"
59+
- tapOn:
60+
id: "com.duckduckgo.mobile.android:id/browserMenuImageView"
61+
- tapOn:
62+
id: "com.duckduckgo.mobile.android:id/forwardMenuItem"
63+
- assertVisible:
64+
text: "Publisher site"
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
appId: com.duckduckgo.mobile.android
2+
name: "Custom Tabs navigation in new tab"
3+
tags:
4+
- customTabsTest
5+
---
6+
- launchApp:
7+
clearState: true
8+
stopApp: true
9+
10+
- assertVisible:
11+
text: ".*Not to worry! Searching and browsing privately.*"
12+
- tapOn: "let's do it!"
13+
- runFlow:
14+
when:
15+
visible: "set as default"
16+
commands:
17+
- tapOn: "duckduckgo"
18+
- tapOn: "set as default"
19+
- assertVisible:
20+
text: ".*I'll also upgrade the security of your connection if possible.*"
21+
22+
- tapOn:
23+
id: "com.duckduckgo.mobile.android:id/browserMenuImageView"
24+
- tapOn:
25+
text: "settings"
26+
- scrollUntilVisible:
27+
element:
28+
text: "developer settings"
29+
direction: DOWN
30+
- tapOn:
31+
text: "developer settings"
32+
- scrollUntilVisible:
33+
element:
34+
text: "custom tabs"
35+
direction: DOWN
36+
- tapOn:
37+
text: "custom tabs"
38+
- tapOn:
39+
text: "add your url here"
40+
- inputText: "https://www.search-company.site"
41+
- tapOn:
42+
text: "load custom tab"
43+
- tapOn:
44+
id: "com.duckduckgo.mobile.android:id/browserMenuImageView"
45+
- assertVisible:
46+
text: "running in duckduckgo"
47+
- action: back
48+
- tapOn:
49+
text: "[Ad 2] Shopping Tab Ad (heuristic)"
50+
- assertVisible:
51+
text: "Publisher site"
52+
- action: back
53+
- tapOn:
54+
text: "[Ad 2] Shopping Tab Ad (heuristic)"
55+
- tapOn:
56+
text: "Red shoes"
57+
- assertVisible:
58+
text: "Checkout"
59+
- tapOn:
60+
id: "com.duckduckgo.mobile.android:id/browserMenuImageView"
61+
- tapOn:
62+
id: "com.duckduckgo.mobile.android:id/backMenuItem"
63+
- assertVisible:
64+
text: "Red shoes"
65+
- tapOn:
66+
id: "com.duckduckgo.mobile.android:id/browserMenuImageView"
67+
- tapOn:
68+
id: "com.duckduckgo.mobile.android:id/forwardMenuItem"
69+
- assertVisible:
70+
text: "Checkout"

app-tracking-protection/vpn-impl/build.gradle

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ dependencies {
6464
implementation project(':statistics')
6565
implementation project(':library-loader-api')
6666
implementation project(':network-protection-api')
67+
implementation project(':data-store-api')
6768

6869
implementation AndroidX.core.ktx
6970

@@ -80,10 +81,6 @@ dependencies {
8081

8182
// multi-process shared preferences
8283
implementation "com.frybits.harmony:harmony:_"
83-
implementation 'com.frybits.harmony:harmony-crypto:_'
84-
85-
// Security crypto
86-
implementation AndroidX.security.crypto
8784

8885
// Lottie
8986
implementation "com.airbnb.android:lottie:_"

app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/VpnFeaturesRegistryImpl.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import android.content.Context
2020
import android.content.SharedPreferences
2121
import androidx.core.content.edit
2222
import com.duckduckgo.common.utils.DispatcherProvider
23-
import com.duckduckgo.mobile.android.vpn.prefs.VpnSharedPreferencesProvider
23+
import com.duckduckgo.data.store.api.SharedPreferencesProvider
2424
import com.duckduckgo.mobile.android.vpn.service.TrackerBlockingVpnService
2525
import java.util.UUID
2626
import kotlinx.coroutines.sync.Mutex
@@ -32,7 +32,7 @@ private const val IS_INITIALIZED = "IS_INITIALIZED"
3232

3333
internal class VpnFeaturesRegistryImpl(
3434
private val vpnServiceWrapper: VpnServiceWrapper,
35-
private val sharedPreferencesProvider: VpnSharedPreferencesProvider,
35+
private val sharedPreferencesProvider: SharedPreferencesProvider,
3636
private val dispatcherProvider: DispatcherProvider,
3737
) : VpnFeaturesRegistry {
3838

app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/bugreport/NetworkTypeCollector.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ package com.duckduckgo.mobile.android.vpn.bugreport
1818

1919
import android.content.Context
2020
import android.content.SharedPreferences
21-
import android.net.*
2221
import android.os.SystemClock
2322
import com.duckduckgo.common.utils.DispatcherProvider
2423
import com.duckduckgo.di.scopes.ActivityScope

app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/cohort/CohortStore.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ import com.duckduckgo.appbuildconfig.api.AppBuildConfig
2323
import com.duckduckgo.appbuildconfig.api.isInternalBuild
2424
import com.duckduckgo.common.utils.DispatcherProvider
2525
import com.duckduckgo.common.utils.checkMainThread
26+
import com.duckduckgo.data.store.api.SharedPreferencesProvider
2627
import com.duckduckgo.di.scopes.AppScope
2728
import com.duckduckgo.di.scopes.VpnScope
2829
import com.duckduckgo.mobile.android.vpn.AppTpVpnFeature
2930
import com.duckduckgo.mobile.android.vpn.VpnFeaturesRegistry
30-
import com.duckduckgo.mobile.android.vpn.prefs.VpnSharedPreferencesProvider
3131
import com.duckduckgo.mobile.android.vpn.service.VpnServiceCallbacks
3232
import com.duckduckgo.mobile.android.vpn.state.VpnStateMonitor.VpnStopReason
3333
import com.squareup.anvil.annotations.ContributesBinding
@@ -61,7 +61,7 @@ interface CohortStore {
6161
boundType = VpnServiceCallbacks::class,
6262
)
6363
class RealCohortStore @Inject constructor(
64-
private val sharedPreferencesProvider: VpnSharedPreferencesProvider,
64+
private val sharedPreferencesProvider: SharedPreferencesProvider,
6565
private val vpnFeaturesRegistry: VpnFeaturesRegistry,
6666
private val dispatcherProvider: DispatcherProvider,
6767
private val appBuildConfig: AppBuildConfig,

app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/di/VpnAppModule.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@ import android.content.res.Resources
2121
import android.net.ConnectivityManager
2222
import androidx.room.Room
2323
import com.duckduckgo.common.utils.DispatcherProvider
24+
import com.duckduckgo.data.store.api.SharedPreferencesProvider
2425
import com.duckduckgo.di.scopes.AppScope
2526
import com.duckduckgo.mobile.android.vpn.Vpn
2627
import com.duckduckgo.mobile.android.vpn.VpnFeaturesRegistry
2728
import com.duckduckgo.mobile.android.vpn.VpnFeaturesRegistryImpl
2829
import com.duckduckgo.mobile.android.vpn.VpnServiceWrapper
29-
import com.duckduckgo.mobile.android.vpn.prefs.VpnSharedPreferencesProvider
3030
import com.duckduckgo.mobile.android.vpn.stats.AppTrackerBlockingStatsRepository
3131
import com.duckduckgo.mobile.android.vpn.stats.RealAppTrackerBlockingStatsRepository
3232
import com.duckduckgo.mobile.android.vpn.store.*
@@ -92,7 +92,7 @@ object VpnAppModule {
9292
@SingleInstanceIn(AppScope::class)
9393
fun provideVpnFeaturesRegistry(
9494
context: Context,
95-
sharedPreferencesProvider: VpnSharedPreferencesProvider,
95+
sharedPreferencesProvider: SharedPreferencesProvider,
9696
dispatcherProvider: DispatcherProvider,
9797
): VpnFeaturesRegistry {
9898
return VpnFeaturesRegistryImpl(VpnServiceWrapper(context, dispatcherProvider), sharedPreferencesProvider, dispatcherProvider)

0 commit comments

Comments
 (0)