| Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
The webview is added to the debug build type of the main app, but it's
current purpose is only to enable verification as part of e2e tests. One
example is to open the webview on the device while connected and verify
the results of the Mullvad Connection Check.
|
|
|
|
Adds a mechanism to remove all keys/devices of a specified account in
order to start all tests with a known state. This is achieved using a
simple http client included in the e2e test apk, which support login,
listing devices and removing devices.
Two account used for testing _must_ be specified either as gradle
properties or as runtime arguments to the test runner:
* Local properties (local.properties):
valid_test_account_token=XXXX
invalid_test_account_token=XXXX
* Gradle/CLI arguments:
./gradlew :e2e:assembleDebug -Pvalid_test_account_token=XXXX -Pinvalid_test_account_token=XXXX
* Runtime arguments:
am instrument -e valid_test_account_token XXXX -e invalid_test_account_token XXXX # ...
|
|
|
|
This rule will capture screenshot of any failed test and download it to
the host executing the test.
|
|
Most/all tests will inherit from this common base class that will hold
necessary setup steps to run various e2e test scenarios.
|
|
The purpose of this test module is to be able to trigger end-to-end
tests separately from the main app module, mainly because of the flaky
nature of end-to-end tests.
Tests are easiest executed by running the following gradle command:
./gradlew :e2e:connectedDebugAndroidTest
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Adds device state communication between the app and service with a
repository backed by a data source to add abstraction layers on the app
side.
Limitations:
* Expiration is not updated correctly.
* The login/creation flow has not been fully adapted to devices.
|
|
|
|
|
|
|
|
Android Studio and ktlint seem to agree on most styling except for
imports. Some settings can be changed in Android Studio, however it
seems to be hard to get lexicographical order (which ktlin wants).
Therefore ktlint should be ran after any formatting has been applied by
Android Studio (otherwise the CI workflow will complain).
|
|
The URL is a left-over after implementing in-app account creation via
the daemon.
|
|
Adapts the Android app to use the device login/logout functionality.
Limitations:
* State will not always be correctly propagated to all components of the
app (i.e. Settings). This will be fixed in later device commits.
* Some temporary error messages will be used in the Login view. These
will change in later commits and/or be replaced with new views (i.e.
when a user has too many devices registered).
|
|
|
|
Initial limited adaption of the daemon device changes. Makes it possible
to launch, login and connect. However, there are some limitiations:
* State is not properly handled thoughout the app.
* The app itself doesn't expose any device functionality to the user.
* The wireguard key actions are disabled (regenerate and verify).
* Accounts are not remembered across app restart.
|
|
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.
|
|
|