| Age | Commit message (Collapse) | Author | Files | Lines |
|
Adds a Gradle task that checks whether the JNI directory used for
Mullvad native libs exist. The task is set to run before the pre-build
task.
|
|
|
|
The CVE (CVE-2022-24329) only affects "Multiplatform Gradle Projects"
according to the CVE description, which this is not, and therefore it's
considered a false positive.
|
|
|
|
|
|
|
|
|
|
Adds a new build type which can be used to identify memory leaks by
using the Leak Canary dependency/tool.
|
|
F-Droid requires the metadata to be present in a specific location which
isn't compatible with our mono-repo structure, therefore this change
moves the Gradle Play Publisher (GPP) directories to a location
compatible with F-Droid and adds a symlink at the location GPP expects,
which leads to the F-Droid location.
The reason for doing it this way rather than symlinking the other way
around is that we don't use GPP itself atm. Even if we start using it,
it's still easier to make sure everything is working (in regards to the
symlink) in the GPP build environment compared to the F-Droid build
environment.
|
|
Fixes tile service crash that occurred when the tile service tries to
unbind even though there are no binding or pending binding.
|
|
As releases usually are built from release branches, the current
strategy will be to keep this file empty on master.
|
|
The main activity and tv activity are both designed to be running as
singleTask and the app would crash if both were started. This would not
be common, but possible, on a phone or tablet, however this can
potentially occur frequently on Android TV (perhaps depending on OEM),
as both categories LAUNCHER and LEANBACK_LAUNCHER are used. E.g.the tv
launcher would use LEANBACK_LAUNCHER whereas the settings app would use
LAUNCHER.
As the tv activity isn't used for any customization atm, this was fixed
by simply removing the tv activity and adding the LEANBACK_LAUNCHER
category to the main activity.
|
|
Default vibration behavior:
* Vibration enabled for account expiration notification.
* Vibration disabled for tunnel state notification.
These defaults can be overridden in system settings.
|
|
The tunnel state notification is hidden from the lock screen by using
the Android notification visibility mechanism.
|
|
|
|
Remove the tunnel state notification if the task is removed (app swiped
away from recent apps) while the tunnel is disconnected.
|
|
Skip creating/updating the tunnel state notification when the vpn
service is killed.
|
|
By default in Android, a service will be automatically killed if it
belongs to a task that was removed (i.e. from recent apps) without a
chance to run any cleanup logic.
In this case, the lack of cleanup would lead to a crash and auto-restart
(triggered by the system) resulting in a auto-connect. To fix this, a
graceful stop will be ran if the task is removed while the tunnel is
disconnected (service not running as foreground). However if the tunnel
is in other states than disconnected (service running as foreground),
the service should continue to run as it's bound by the system.
|
|
|
|
Fixes an issue with url buttons keeping an old reference to service
dependent instances, even after the service connection is no longer
available. The fix ensures that the reference is updated once there
is a new service connection.
|
|
Extracts Android dependency names/versions/repos to Kotlin constants in
source code. The purpose of this change is to minimize duplication,
unify versions and prepare the project to be split into multiple
sub-projects/modules.
|
|
|
|
|
|
|
|
|
|
|
|
Fixes the invalid path to 'keystore.properties' introduced in the
previous split of the android/root project and app module.
|
|
Adds the OWASP Dependency-Check tool to the project to detect
potentially vulnerable dependencies.
Gradle is configured to skip the lintClassPath configuration, which
relies on many dependencies that has been flagged to have CVEs, as it's
related to the lint tooling rather than the project's compilation class
path. The alternative would be to suppress specific CVEs, however that
could potentially result in suppressed CVEs in project compilation
class path.
|
|
Change Android tile title/label to "Toggle VPN" to better inform the
user about the tile action. Also set the subtitle (on Android Q and
above) to match the state shown in the notification.
|
|
The purpose of this is to:
* Comply better with the default Android project structure
(see https://developer.android.com/studio/build).
* Avoid conflicts between project and app dependencies and plugins.
|
|
Fixes an issue with the custom dns toggle and server list not not
working after the app is resumed, due to the logic not being aware
of new service connections.
The issue was fixed by moving some responsibility from the adapter
to the fragment and making sure new service connections triggers new
data subscriptions to be set up.
|
|
Fixes the automatic back navigation when the Android app is resumed by
simplifying the state handling (redudant state removed).
|
|
|
|
If the connection from the MullvadTileService
to the MullvadVpnService has been lost,
the tile service will now detect this and both
change the tile state as well as try to reconnect.
|
|
This change removes the delete intent from
the connection state notification, which
means that the service will no longer be
killed by swiping the notification
(when it's not in foreground).
|
|
|
|
This change makes the Android service (MullvadVpnService)
only run in foreground when connected, compared to previously
when it also ran in foreground when the app/ui was in foreground.
This change reduces the amount of potential states after the
previous work of splitting the app/ui and service into separate
processes. It also makes the app/service better aligned with the
Android platform, as foreground services only should be used for
ongoing operations/work.
|
|
Removes SDK checks for non-supported versions (below version 26).
|
|
|
|
|
|
|
|
|
|
Fixes scrolling behavior and adds a scrollbar.
|
|
Android 8/API level 26 or later is now required.
|
|
|
|
|
|
|
|
|
|
When the user adds a custom dns, the input field hint
will say "Enter IP" rather than "e.g. 10.0.0.4" to avoid
confusion.
|
|
Fixes an issue with the app automatically reconnecting
each time it's resumed from the background.
The issue was caused by the app and service being out-of-sync
in terms of split tunneling state during app resume, which was
fixed by comparing the new and old state in the service before
notifying other components.
|