Skip to content

Commit 3408264

Browse files
committed
Merge branch 'merge-app-and-service-modules-droid-1653'
2 parents b660c8c + 37f5d02 commit 3408264

File tree

90 files changed

+339
-521
lines changed

Some content is hidden

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

90 files changed

+339
-521
lines changed

android/app/build.gradle.kts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,14 +145,20 @@ android {
145145
create(Flavors.PROD) {
146146
dimension = FlavorDimensions.INFRASTRUCTURE
147147
isDefault = true
148+
buildConfigField("String", "API_ENDPOINT", "\"\"")
149+
buildConfigField("String", "API_IP", "\"\"")
148150
}
149151
create(Flavors.DEVMOLE) {
150152
dimension = FlavorDimensions.INFRASTRUCTURE
151153
applicationId = "net.mullvad.mullvadvpn.devmole"
154+
buildConfigField("String", "API_ENDPOINT", "\"api-app.devmole.eu\"")
155+
buildConfigField("String", "API_IP", "\"185.217.116.4\"")
152156
}
153157
create(Flavors.STAGEMOLE) {
154158
dimension = FlavorDimensions.INFRASTRUCTURE
155159
applicationId = "net.mullvad.mullvadvpn.stagemole"
160+
buildConfigField("String", "API_ENDPOINT", "\"api-app.stagemole.eu\"")
161+
buildConfigField("String", "API_IP", "\"185.217.116.132\"")
156162
}
157163
}
158164

@@ -230,6 +236,12 @@ android {
230236
"ENABLE_IN_APP_VERSION_NOTIFICATIONS",
231237
getBooleanProperty("mullvad.app.config.inAppVersionNotifications.enable").toString(),
232238
)
239+
val shouldRequireBundleRelayFile = isReleaseBuild() && !appVersion.isDev
240+
buildConfigField(
241+
"Boolean",
242+
"REQUIRE_BUNDLED_RELAY_FILE",
243+
shouldRequireBundleRelayFile.toString(),
244+
)
233245
}
234246

235247
applicationVariants.all {
@@ -425,8 +437,6 @@ dependencies {
425437
implementation(projects.lib.ui.theme)
426438
implementation(projects.lib.ui.util)
427439
implementation(projects.lib.usecase)
428-
implementation(projects.tile)
429-
implementation(projects.service)
430440
implementation(libs.androidx.profileinstaller)
431441

432442
// Baseline profile

android/app/proguard-rules.pro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
-keep class net.mullvad.talpid.** { *; }
55
# These are specific classes used in JNI calls with the daemon
66
-keep class net.mullvad.mullvadvpn.lib.endpoint.ApiEndpointOverride { *; }
7-
-keep class net.mullvad.mullvadvpn.service.MullvadDaemon { *; }
8-
-keep class net.mullvad.mullvadvpn.service.MullvadVpnService { *; }
7+
-keep class net.mullvad.mullvadvpn.app.service.MullvadDaemon { *; }
8+
-keep class net.mullvad.mullvadvpn.app.service.MullvadVpnService { *; }
99
# All classes that are used in JNI calls are subclasses of Parcelable
1010
-keep class android.os.Parcelable { *; }
1111
# Common java types used in JNI calls

android/app/src/debug/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@
1313
android:requestLegacyExternalStorage="true"
1414
android:allowBackup="false"
1515
android:banner="@mipmap/ic_banner"
16-
android:name=".MullvadApplication"
16+
android:name=".app.MullvadApplication"
1717
tools:ignore="DataExtractionRules,GoogleAppIndexingWarning"/>
1818
</manifest>

android/app/src/main/AndroidManifest.xml

Lines changed: 6 additions & 147 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
<!-- mobsf-ignore: android_task_hijacking2 -->
2-
<!-- This is added due to requiring launchMode="singleInstance" on activity aliases,
3-
but launchMode does nothing on activity aliases -->
41
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
5-
xmlns:tools="http://schemas.android.com/tools">
2+
xmlns:tools="http://schemas.android.com/tools"
3+
tools:ignore="MissingLeanbackLauncher">
64
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
75
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
86
<uses-permission android:name="android.permission.INTERNET" />
@@ -31,7 +29,7 @@
3129
<uses-feature android:glEsVersion="0x00020000"
3230
android:required="false" />
3331

34-
<application android:name=".MullvadApplication"
32+
<application android:name=".app.MullvadApplication"
3533
android:allowBackup="false"
3634
tools:targetApi="33"
3735
android:memtagMode="async"
@@ -66,7 +64,7 @@
6664
since after that it has been patched on a OS level.
6765
-->
6866
<activity
69-
android:name="net.mullvad.mullvadvpn.ui.MainActivity"
67+
android:name="net.mullvad.mullvadvpn.app.MainActivity"
7068
android:enableOnBackInvokedCallback="true"
7169
android:launchMode="singleInstance"
7270
android:screenOrientation="fullUser"
@@ -82,150 +80,11 @@
8280
<action android:name="net.mullvad.mullvadvpn.request_vpn_permission" />
8381
</intent-filter>
8482
</activity>
85-
<!-- Alternative icons names -->
86-
<!-- Default -->
87-
<activity-alias
88-
android:name="net.mullvad.mullvadvpn.ui.obfuscation.MainActivityAltDefault"
89-
android:enabled="true"
90-
android:exported="true"
91-
android:icon="@mipmap/ic_launcher"
92-
android:banner="@mipmap/ic_banner"
93-
android:label="@string/app_name"
94-
android:targetActivity="net.mullvad.mullvadvpn.ui.MainActivity"
95-
tools:ignore="DiscouragedApi,UnusedAttribute">
96-
<intent-filter>
97-
<action android:name="android.intent.action.MAIN" />
98-
99-
<category android:name="android.intent.category.LAUNCHER" />
100-
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
101-
</intent-filter>
102-
<intent-filter>
103-
<action android:name="android.service.quicksettings.action.QS_TILE_PREFERENCES" />
104-
</intent-filter>
105-
<intent-filter>
106-
<action android:name="net.mullvad.mullvadvpn.request_vpn_permission" />
107-
</intent-filter>
108-
</activity-alias>
109-
<!-- Game -->
110-
<activity-alias
111-
android:name="net.mullvad.mullvadvpn.ui.obfuscation.MainActivityAltGame"
112-
android:enabled="false"
113-
android:exported="true"
114-
android:icon="@mipmap/ic_launcher_game"
115-
android:banner="@mipmap/ic_banner_game"
116-
android:label="@string/app_name_game"
117-
android:targetActivity="net.mullvad.mullvadvpn.ui.MainActivity"
118-
tools:ignore="DiscouragedApi,UnusedAttribute">
119-
<intent-filter>
120-
<action android:name="android.intent.action.MAIN" />
121-
122-
<category android:name="android.intent.category.LAUNCHER" />
123-
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
124-
</intent-filter>
125-
<intent-filter>
126-
<action android:name="android.service.quicksettings.action.QS_TILE_PREFERENCES" />
127-
</intent-filter>
128-
<intent-filter>
129-
<action android:name="net.mullvad.mullvadvpn.request_vpn_permission" />
130-
</intent-filter>
131-
</activity-alias>
132-
<!-- Weather -->
133-
<activity-alias
134-
android:name="net.mullvad.mullvadvpn.ui.obfuscation.MainActivityAltWeather"
135-
android:enabled="false"
136-
android:exported="true"
137-
android:icon="@mipmap/ic_launcher_weather"
138-
android:banner="@mipmap/ic_banner_weather"
139-
android:label="@string/app_name_weather"
140-
android:targetActivity="net.mullvad.mullvadvpn.ui.MainActivity"
141-
tools:ignore="DiscouragedApi,UnusedAttribute">
142-
<intent-filter>
143-
<action android:name="android.intent.action.MAIN" />
144-
145-
<category android:name="android.intent.category.LAUNCHER" />
146-
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
147-
</intent-filter>
148-
<intent-filter>
149-
<action android:name="android.service.quicksettings.action.QS_TILE_PREFERENCES" />
150-
</intent-filter>
151-
<intent-filter>
152-
<action android:name="net.mullvad.mullvadvpn.request_vpn_permission" />
153-
</intent-filter>
154-
</activity-alias>
155-
<!-- Notes -->
156-
<activity-alias
157-
android:name="net.mullvad.mullvadvpn.ui.obfuscation.MainActivityAltNotes"
158-
android:enabled="false"
159-
android:exported="true"
160-
android:icon="@mipmap/ic_launcher_notes"
161-
android:banner="@mipmap/ic_banner_notes"
162-
android:label="@string/app_name_notes"
163-
android:targetActivity="net.mullvad.mullvadvpn.ui.MainActivity"
164-
tools:ignore="DiscouragedApi,UnusedAttribute">
165-
<intent-filter>
166-
<action android:name="android.intent.action.MAIN" />
167-
168-
<category android:name="android.intent.category.LAUNCHER" />
169-
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
170-
</intent-filter>
171-
<intent-filter>
172-
<action android:name="android.service.quicksettings.action.QS_TILE_PREFERENCES" />
173-
</intent-filter>
174-
<intent-filter>
175-
<action android:name="net.mullvad.mullvadvpn.request_vpn_permission" />
176-
</intent-filter>
177-
</activity-alias>
178-
<!-- Ninja -->
179-
<activity-alias
180-
android:name="net.mullvad.mullvadvpn.ui.obfuscation.MainActivityAltNinja"
181-
android:enabled="false"
182-
android:exported="true"
183-
android:icon="@mipmap/ic_launcher_ninja"
184-
android:banner="@mipmap/ic_banner_ninja"
185-
android:label="@string/app_name_ninja"
186-
android:targetActivity="net.mullvad.mullvadvpn.ui.MainActivity"
187-
tools:ignore="DiscouragedApi,UnusedAttribute">
188-
<intent-filter>
189-
<action android:name="android.intent.action.MAIN" />
190-
191-
<category android:name="android.intent.category.LAUNCHER" />
192-
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
193-
</intent-filter>
194-
<intent-filter>
195-
<action android:name="android.service.quicksettings.action.QS_TILE_PREFERENCES" />
196-
</intent-filter>
197-
<intent-filter>
198-
<action android:name="net.mullvad.mullvadvpn.request_vpn_permission" />
199-
</intent-filter>
200-
</activity-alias>
201-
<!-- Browser -->
202-
<activity-alias
203-
android:name="net.mullvad.mullvadvpn.ui.obfuscation.MainActivityAltBrowser"
204-
android:enabled="false"
205-
android:exported="true"
206-
android:icon="@mipmap/ic_launcher_browser"
207-
android:banner="@mipmap/ic_banner_browser"
208-
android:label="@string/app_name_browser"
209-
android:targetActivity="net.mullvad.mullvadvpn.ui.MainActivity"
210-
tools:ignore="DiscouragedApi,UnusedAttribute">
211-
<intent-filter>
212-
<action android:name="android.intent.action.MAIN" />
213-
214-
<category android:name="android.intent.category.LAUNCHER" />
215-
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
216-
</intent-filter>
217-
<intent-filter>
218-
<action android:name="android.service.quicksettings.action.QS_TILE_PREFERENCES" />
219-
</intent-filter>
220-
<intent-filter>
221-
<action android:name="net.mullvad.mullvadvpn.request_vpn_permission" />
222-
</intent-filter>
223-
</activity-alias>
22483
<!--
22584
foregroundServiceType="systemExempted" is required in Android 14+
22685
https://developer.android.com/guide/components/fg-service-types#system-exempted
22786
-->
228-
<service android:name="net.mullvad.mullvadvpn.service.MullvadVpnService"
87+
<service android:name="net.mullvad.mullvadvpn.app.service.MullvadVpnService"
22988
android:exported="false"
23089
android:foregroundServiceType="systemExempted"
23190
android:permission="android.permission.BIND_VPN_SERVICE"
@@ -249,7 +108,7 @@
249108
Tile services must be exported and protected by the bind tile permission
250109
(android.permission.BIND_QUICK_SETTINGS_TILE).
251110
-->
252-
<service android:name="net.mullvad.mullvadvpn.tile.MullvadTileService"
111+
<service android:name="net.mullvad.mullvadvpn.app.tile.MullvadTileService"
253112
android:exported="true"
254113
android:icon="@drawable/small_logo_black"
255114
android:label="@string/toggle_vpn"

android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt renamed to android/app/src/main/kotlin/net/mullvad/mullvadvpn/app/MainActivity.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package net.mullvad.mullvadvpn.ui
1+
package net.mullvad.mullvadvpn.app
22

33
import android.content.Intent
44
import android.graphics.Color
@@ -21,7 +21,6 @@ import kotlinx.coroutines.flow.callbackFlow
2121
import kotlinx.coroutines.flow.filter
2222
import kotlinx.coroutines.flow.first
2323
import kotlinx.coroutines.launch
24-
import net.mullvad.mullvadvpn.compose.screen.MullvadApp
2524
import net.mullvad.mullvadvpn.di.paymentModule
2625
import net.mullvad.mullvadvpn.di.uiModule
2726
import net.mullvad.mullvadvpn.lib.common.constant.KEY_REQUEST_VPN_PROFILE
@@ -37,10 +36,9 @@ import net.mullvad.mullvadvpn.lib.model.Prepared
3736
import net.mullvad.mullvadvpn.lib.repository.SplashCompleteRepository
3837
import net.mullvad.mullvadvpn.lib.repository.UserPreferencesRepository
3938
import net.mullvad.mullvadvpn.lib.ui.theme.AppTheme
40-
import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionManager
41-
import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionState
39+
import net.mullvad.mullvadvpn.serviceconnection.ServiceConnectionManager
40+
import net.mullvad.mullvadvpn.serviceconnection.ServiceConnectionState
4241
import net.mullvad.mullvadvpn.util.BackstackObserver
43-
import net.mullvad.mullvadvpn.viewmodel.MullvadAppViewModel
4442
import org.koin.android.ext.android.inject
4543
import org.koin.android.scope.AndroidScopeComponent
4644
import org.koin.androidx.scope.activityScope

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/MullvadApp.kt renamed to android/app/src/main/kotlin/net/mullvad/mullvadvpn/app/MullvadApp.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
@file:Suppress("MatchingDeclarationName")
22

3-
package net.mullvad.mullvadvpn.compose.screen
3+
package net.mullvad.mullvadvpn.app
44

55
import androidx.compose.animation.ExperimentalSharedTransitionApi
66
import androidx.compose.animation.SharedTransitionLayout
@@ -92,8 +92,6 @@ import com.ramcosta.composedestinations.utils.rememberDestinationsNavigator
9292
import net.mullvad.mullvadvpn.common.compose.LocalSharedTransitionScope
9393
import net.mullvad.mullvadvpn.common.compose.accessibilityDataSensitive
9494
import net.mullvad.mullvadvpn.util.BackstackObserver
95-
import net.mullvad.mullvadvpn.viewmodel.DaemonScreenEvent
96-
import net.mullvad.mullvadvpn.viewmodel.MullvadAppViewModel
9795
import org.koin.androidx.compose.koinViewModel
9896

9997
@NavHostGraph

android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/MullvadAppViewModel.kt renamed to android/app/src/main/kotlin/net/mullvad/mullvadvpn/app/MullvadAppViewModel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package net.mullvad.mullvadvpn.viewmodel
1+
package net.mullvad.mullvadvpn.app
22

33
import androidx.lifecycle.Lifecycle
44
import androidx.lifecycle.LifecycleEventObserver

android/app/src/main/kotlin/net/mullvad/mullvadvpn/MullvadApplication.kt renamed to android/app/src/main/kotlin/net/mullvad/mullvadvpn/app/MullvadApplication.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package net.mullvad.mullvadvpn
1+
package net.mullvad.mullvadvpn.app
22

33
import android.app.Application
44
import androidx.compose.runtime.Composer
@@ -9,6 +9,8 @@ import co.touchlab.kermit.Severity
99
import java.io.IOException
1010
import kotlinx.coroutines.CoroutineScope
1111
import kotlinx.coroutines.launch
12+
import net.mullvad.mullvadvpn.BuildConfig
13+
import net.mullvad.mullvadvpn.app.util.FileLogWriter
1214
import net.mullvad.mullvadvpn.di.ApplicationScope
1315
import net.mullvad.mullvadvpn.di.KERMIT_FILE_LOG_DIR_NAME
1416
import net.mullvad.mullvadvpn.di.appModule
@@ -18,7 +20,6 @@ import net.mullvad.mullvadvpn.lib.pushnotification.ScheduleNotificationAlarmUseC
1820
import net.mullvad.mullvadvpn.lib.pushnotification.accountexpiry.AccountExpiryNotificationProvider
1921
import net.mullvad.mullvadvpn.lib.usecase.AccountExpiryNotificationActionUseCase
2022
import net.mullvad.mullvadvpn.lib.usecase.NotificationAction
21-
import net.mullvad.mullvadvpn.util.FileLogWriter
2223
import org.koin.android.ext.android.getKoin
2324
import org.koin.android.ext.koin.androidContext
2425
import org.koin.core.context.loadKoinModules

android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/util/ContextExtensions.kt renamed to android/app/src/main/kotlin/net/mullvad/mullvadvpn/app/service/ContextExtensions.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package net.mullvad.mullvadvpn.service.util
1+
package net.mullvad.mullvadvpn.app.service
22

33
import android.content.Context
44
import co.touchlab.kermit.Logger

android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/DaemonConfig.kt renamed to android/app/src/main/kotlin/net/mullvad/mullvadvpn/app/service/DaemonConfig.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package net.mullvad.mullvadvpn.service
1+
package net.mullvad.mullvadvpn.app.service
22

33
import java.io.File
44
import net.mullvad.mullvadvpn.lib.endpoint.ApiEndpointOverride

0 commit comments

Comments
 (0)