summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcyberta <cyberta@riseup.net>2020-03-17 08:15:56 -0700
committercyberta <cyberta@riseup.net>2020-03-17 08:15:56 -0700
commite0fb2a88c633908bba9e465e1bf1e19a4a5686e6 (patch)
tree781613cce835be44ea86178f8af6cb60a84a703e
parent05205190ee65a5fa14f18d12f86f5427368bea44 (diff)
parentcea55aaaab23a74dc790afca12671303fc344f97 (diff)
Merge branch 'androidx' into 'master'
Androidx See merge request leap/bitmask_android!103
-rw-r--r--app/build.gradle27
-rw-r--r--app/src/androidTest/assets/eip-service-test.json69
-rw-r--r--app/src/androidTest/assets/gateway.json1
-rw-r--r--app/src/androidTest/assets/riseup.net.json37
-rw-r--r--app/src/androidTest/assets/riseup.net.pem32
-rw-r--r--app/src/androidTest/assets/secrets.json1
-rw-r--r--app/src/androidTest/java/se/leap/bitmaskclient/test/StartActivityDrawerTest.java181
-rw-r--r--app/src/insecure/java/se/leap/bitmaskclient/ProviderApiManager.java6
-rw-r--r--app/src/insecure/java/se/leap/bitmaskclient/ProviderListActivity.java2
-rw-r--r--app/src/main/java/de/blinkt/openvpn/VpnProfile.java4
-rw-r--r--app/src/main/java/de/blinkt/openvpn/core/ConfigParser.java2
-rw-r--r--app/src/main/java/de/blinkt/openvpn/core/ExtAuthHelper.java6
-rw-r--r--app/src/main/java/de/blinkt/openvpn/core/NetworkSpace.java2
-rw-r--r--app/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java2
-rw-r--r--app/src/main/java/de/blinkt/openvpn/core/OpenVPNStatusService.java2
-rw-r--r--app/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java7
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/AbstractProviderDetailActivity.java6
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/AddProviderBaseActivity.java4
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/BitmaskApp.java4
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/ButterKnifeActivity.java2
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/ConfigWizardBaseActivity.java14
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/CustomProviderSetupActivity.java4
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/EipFragment.java16
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/EipSetupObserver.java2
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/FragmentManagerEnhanced.java6
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/LoginActivity.java2
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/MainActivity.java12
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/MainActivityErrorDialog.java8
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/OkHttpClientGenerator.java2
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/Provider.java4
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/ProviderAPI.java2
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/ProviderApiConnector.java2
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/ProviderApiManagerBase.java2
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/ProviderCredentialsBaseActivity.java14
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java4
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/ProviderManager.java2
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/ProviderSetupBaseActivity.java8
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/ProviderSetupFailedDialog.java6
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/SignupActivity.java3
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/StartActivity.java4
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/VpnNotificationManager.java13
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java24
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/eip/EIP.java10
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/eip/EipCommand.java8
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/eip/EipResultBroadcast.java2
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java2
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/eip/Gateway.java2
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/eip/VpnConfigGenerator.java2
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/fragments/AboutFragment.java2
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/fragments/AlwaysOnDialog.java10
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/fragments/DonationReminderDialog.java8
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/fragments/ExcludeAppsFragment.java2
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/fragments/LogFragment.java4
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/fragments/TetheringDialog.java12
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/pluggableTransports/Dispatcher.java2
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/tethering/TetheringObservable.java2
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/tethering/TetheringStateManager.java2
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/utils/Cmd.java2
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/utils/ConfigHelper.java6
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/utils/PreferenceHelper.java2
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/utils/ViewHelper.java5
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/views/IconCheckboxEntry.java8
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/views/IconSwitchEntry.java11
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/views/IconTextEntry.java8
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/views/IconTextView.java2
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/views/ProviderHeaderView.java10
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/views/VpnStateImage.java4
-rw-r--r--app/src/main/res/layout-xlarge-port/a_add_provider.xml14
-rw-r--r--app/src/main/res/layout-xlarge-port/a_custom_provider_setup.xml14
-rw-r--r--app/src/main/res/layout-xlarge-port/a_provider_credentials.xml14
-rw-r--r--app/src/main/res/layout-xlarge-port/a_provider_detail.xml14
-rw-r--r--app/src/main/res/layout-xlarge-port/a_provider_list.xml14
-rw-r--r--app/src/main/res/layout-xlarge/a_add_provider.xml14
-rw-r--r--app/src/main/res/layout-xlarge/a_custom_provider_setup.xml14
-rw-r--r--app/src/main/res/layout-xlarge/a_provider_credentials.xml14
-rw-r--r--app/src/main/res/layout-xlarge/a_provider_detail.xml14
-rw-r--r--app/src/main/res/layout-xlarge/a_provider_list.xml14
-rw-r--r--app/src/main/res/layout-xlarge/f_eip.xml22
-rw-r--r--app/src/main/res/layout-xlarge/v_loading_screen.xml4
-rw-r--r--app/src/main/res/layout-xlarge/v_provider_header.xml4
-rw-r--r--app/src/main/res/layout-xlarge/v_switch_list_item.xml4
-rw-r--r--app/src/main/res/layout/a_add_provider.xml6
-rw-r--r--app/src/main/res/layout/a_add_provider_tablet_scrollview.xml6
-rw-r--r--app/src/main/res/layout/a_main.xml8
-rw-r--r--app/src/main/res/layout/a_provider_credentials.xml2
-rw-r--r--app/src/main/res/layout/a_provider_credentials_tablet_linear_layout.xml2
-rw-r--r--app/src/main/res/layout/a_provider_detail.xml2
-rw-r--r--app/src/main/res/layout/a_provider_detail_tablet_linear_layout.xml2
-rw-r--r--app/src/main/res/layout/d_checkbox_confirm.xml4
-rw-r--r--app/src/main/res/layout/d_list_selection.xml6
-rw-r--r--app/src/main/res/layout/donation_reminder_dialog.xml4
-rw-r--r--app/src/main/res/layout/f_drawer_main.xml4
-rw-r--r--app/src/main/res/layout/f_eip.xml22
-rw-r--r--app/src/main/res/layout/v_add_provider.xml4
-rw-r--r--app/src/main/res/layout/v_icon_select_text_list_item.xml4
-rw-r--r--app/src/main/res/layout/v_loading_screen.xml4
-rw-r--r--app/src/main/res/layout/v_main_button.xml32
-rw-r--r--app/src/main/res/layout/v_provider_credentials.xml20
-rw-r--r--app/src/main/res/layout/v_provider_header.xml4
-rw-r--r--app/src/main/res/layout/v_switch_list_item.xml4
-rw-r--r--app/src/production/java/se/leap/bitmaskclient/AddProviderActivity.java5
-rw-r--r--app/src/production/java/se/leap/bitmaskclient/ProviderApiManager.java2
-rw-r--r--app/src/production/java/se/leap/bitmaskclient/ProviderListActivity.java2
-rw-r--r--app/src/test/java/se/leap/bitmaskclient/testutils/MockHelper.java2
-rw-r--r--app/src/test/java/se/leap/bitmaskclient/testutils/MockSharedPreferences.java2
-rw-r--r--gradle.properties2
106 files changed, 335 insertions, 673 deletions
diff --git a/app/build.gradle b/app/build.gradle
index f8ee9d3a..34111828 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -42,7 +42,7 @@ android {
buildConfigField "String", "customProviderIp", '""'
buildConfigField "String", "customProviderApiIp", '""'
- testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
dexOptions {
jumboMode true
multiDexEnabled true
@@ -297,9 +297,9 @@ dependencies {
testImplementation group: 'com.tngtech.java', name: 'junit-dataprovider', version: '1.10.0'
androidTestImplementation 'org.mockito:mockito-core:2.8.9'
- androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
- androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.2'
- androidTestImplementation 'com.android.support.test.espresso:espresso-intents:3.0.2'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
+ androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.1.0'
+ androidTestImplementation 'androidx.test.espresso:espresso-intents:3.1.0'
//TODO: remove that library
androidTestImplementation 'com.jayway.android.robotium:robotium-solo:5.6.3'
testImplementation 'junit:junit:4.12'
@@ -316,15 +316,16 @@ dependencies {
implementation 'com.intellij:annotations:12.0'
implementation 'com.google.code.gson:gson:2.8.2'
implementation 'com.squareup.okhttp3:okhttp:3.9.0'
- implementation "com.android.support:support-core-utils:28.0.0"
- implementation 'com.android.support:support-annotations:28.0.0'
- implementation 'com.android.support:support-v4:28.0.0'
- implementation 'com.android.support:appcompat-v7:28.0.0'
- implementation 'com.android.support:design:28.0.0'
- implementation 'com.android.support:support-fragment:28.0.0'
- implementation 'com.android.support.constraint:constraint-layout:1.1.3'
- implementation 'com.android.support:multidex:1.0.3'
- implementation 'com.android.support:cardview-v7:28.0.0'
+ implementation 'androidx.legacy:legacy-support-core-utils:1.0.0'
+ implementation 'androidx.annotation:annotation:1.0.0'
+ implementation 'androidx.legacy:legacy-support-v4:1.0.0'
+ implementation 'androidx.appcompat:appcompat:1.0.0'
+ implementation 'com.google.android.material:material:1.0.0'
+ implementation 'androidx.fragment:fragment:1.0.0'
+ implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
+ implementation 'androidx.multidex:multidex:2.0.0'
+ implementation 'androidx.cardview:cardview:1.0.0'
+ implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
implementation project(path: ':shapeshifter')
}
diff --git a/app/src/androidTest/assets/eip-service-test.json b/app/src/androidTest/assets/eip-service-test.json
deleted file mode 100644
index 78b49bae..00000000
--- a/app/src/androidTest/assets/eip-service-test.json
+++ /dev/null
@@ -1,69 +0,0 @@
-{
- "gateways": [
- {
- "capabilities": {
- "adblock": false,
- "filter_dns": false,
- "limited": false,
- "ports": [
- "443"
- ],
- "protocols": [
- "tcp",
- "udp"
- ],
- "transport": [
- "openvpn"
- ],
- "user_ips": false
- },
- "host": "millipede.demo.bitmask.net",
- "ip_address": "198.252.153.84",
- "location": "seattle__wa"
- },
- {
- "capabilities": {
- "adblock": false,
- "filter_dns": false,
- "limited": false,
- "ports": [
- "443"
- ],
- "protocols": [
- "tcp",
- "udp"
- ],
- "transport": [
- "openvpn"
- ],
- "user_ips": false
- },
- "host": "otter.demo.bitmask.net",
- "ip_address": "46.165.242.169",
- "location": "frankfurt"
- }
- ],
- "locations": {
- "frankfurt": {
- "country_code": "DE",
- "hemisphere": "N",
- "name": "Frankfurt",
- "timezone": "+1"
- },
- "seattle__wa": {
- "country_code": "US",
- "hemisphere": "N",
- "name": "Seattle, WA",
- "timezone": "-7"
- }
- },
- "openvpn_configuration": {
- "auth": "SHA1",
- "cipher": "AES-128-CBC",
- "keepalive": "10 30",
- "tls-cipher": "DHE-RSA-AES128-SHA",
- "tun-ipv6": true
- },
- "serial": 1,
- "version": 1
-} \ No newline at end of file
diff --git a/app/src/androidTest/assets/gateway.json b/app/src/androidTest/assets/gateway.json
deleted file mode 100644
index 51a19ec9..00000000
--- a/app/src/androidTest/assets/gateway.json
+++ /dev/null
@@ -1 +0,0 @@
-{"location":"seattle__wa","ip_address":"198.252.153.84","capabilities":{"limited":false,"ports":["443"],"adblock":false,"transport":["openvpn"],"filter_dns":false,"protocols":["tcp","udp"],"user_ips":false},"host":"millipede.demo.bitmask.net"}
diff --git a/app/src/androidTest/assets/riseup.net.json b/app/src/androidTest/assets/riseup.net.json
deleted file mode 100644
index 9a5ec79e..00000000
--- a/app/src/androidTest/assets/riseup.net.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "api_uri": "https://api.black.riseup.net:443",
- "api_version": "1",
- "ca_cert_fingerprint": "SHA256: a5244308a1374709a9afce95e3ae47c1b44bc2398c0a70ccbf8b3a8a97f29494",
- "ca_cert_uri": "https://black.riseup.net/ca.crt",
- "default_language": "en",
- "description": {
- "en": "Riseup is a non-profit collective in Seattle that provides online communication tools for people and groups working toward liberatory social change."
- },
- "domain": "riseup.net",
- "enrollment_policy": "open",
- "languages": [
- "en"
- ],
- "name": {
- "en": "Riseup Networks"
- },
- "service": {
- "allow_anonymous": false,
- "allow_free": true,
- "allow_limited_bandwidth": false,
- "allow_paid": false,
- "allow_registration": true,
- "allow_unlimited_bandwidth": true,
- "bandwidth_limit": 102400,
- "default_service_level": 1,
- "levels": {
- "1": {
- "description": "Please donate.",
- "name": "free"
- }
- }
- },
- "services": [
- "openvpn"
- ]
-} \ No newline at end of file
diff --git a/app/src/androidTest/assets/riseup.net.pem b/app/src/androidTest/assets/riseup.net.pem
deleted file mode 100644
index c890aff4..00000000
--- a/app/src/androidTest/assets/riseup.net.pem
+++ /dev/null
@@ -1,32 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIFjTCCA3WgAwIBAgIBATANBgkqhkiG9w0BAQ0FADBZMRgwFgYDVQQKDA9SaXNl
-dXAgTmV0d29ya3MxGzAZBgNVBAsMEmh0dHBzOi8vcmlzZXVwLm5ldDEgMB4GA1UE
-AwwXUmlzZXVwIE5ldHdvcmtzIFJvb3QgQ0EwHhcNMTQwNDI4MDAwMDAwWhcNMjQw
-NDI4MDAwMDAwWjBZMRgwFgYDVQQKDA9SaXNldXAgTmV0d29ya3MxGzAZBgNVBAsM
-Emh0dHBzOi8vcmlzZXVwLm5ldDEgMB4GA1UEAwwXUmlzZXVwIE5ldHdvcmtzIFJv
-b3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC76J4ciMJ8Sg0m
-TP7DF2DT9zNe0Csk4myoMFC57rfJeqsAlJCv1XMzBmXrw8wq/9z7XHv6n/0sWU7a
-7cF2hLR33ktjwODlx7vorU39/lXLndo492ZBhXQtG1INMShyv+nlmzO6GT7ESfNE
-LliFitEzwIegpMqxCIHXFuobGSCWF4N0qLHkq/SYUMoOJ96O3hmPSl1kFDRMtWXY
-iw1SEKjUvpyDJpVs3NGxeLCaA7bAWhDY5s5Yb2fA1o8ICAqhowurowJpW7n5ZuLK
-5VNTlNy6nZpkjt1QycYvNycffyPOFm/Q/RKDlvnorJIrihPkyniV3YY5cGgP+Qkx
-HUOT0uLA6LHtzfiyaOqkXwc4b0ZcQD5Vbf6Prd20Ppt6ei0zazkUPwxld3hgyw58
-m/4UIjG3PInWTNf293GngK2Bnz8Qx9e/6TueMSAn/3JBLem56E0WtmbLVjvko+LF
-PM5xA+m0BmuSJtrD1MUCXMhqYTtiOvgLBlUm5zkNxALzG+cXB28k6XikXt6MRG7q
-hzIPG38zwkooM55yy5i1YfcIi5NjMH6A+t4IJxxwb67MSb6UFOwg5kFokdONZcwj
-shczHdG9gLKSBIvrKa03Nd3W2dF9hMbRu//STcQxOailDBQCnXXfAATj9pYzdY4k
-ha8VCAREGAKTDAex9oXf1yRuktES4QIDAQABo2AwXjAdBgNVHQ4EFgQUC4tdmLVu
-f9hwfK4AGliaet5KkcgwDgYDVR0PAQH/BAQDAgIEMAwGA1UdEwQFMAMBAf8wHwYD
-VR0jBBgwFoAUC4tdmLVuf9hwfK4AGliaet5KkcgwDQYJKoZIhvcNAQENBQADggIB
-AGzL+GRnYu99zFoy0bXJKOGCF5XUXP/3gIXPRDqQf5g7Cu/jYMID9dB3No4Zmf7v
-qHjiSXiS8jx1j/6/Luk6PpFbT7QYm4QLs1f4BlfZOti2KE8r7KRDPIecUsUXW6P/
-3GJAVYH/+7OjA39za9AieM7+H5BELGccGrM5wfl7JeEz8in+V2ZWDzHQO4hMkiTQ
-4ZckuaL201F68YpiItBNnJ9N5nHr1MRiGyApHmLXY/wvlrOpclh95qn+lG6/2jk7
-3AmihLOKYMlPwPakJg4PYczm3icFLgTpjV5sq2md9bRyAg3oPGfAuWHmKj2Ikqch
-Td5CHKGxEEWbGUWEMP0s1A/JHWiCbDigc4Cfxhy56CWG4q0tYtnc2GMw8OAUO6Wf
-Xu5pYKNkzKSEtT/MrNJt44tTZWbKV/Pi/N2Fx36my7TgTUj7g3xcE9eF4JV2H/sg
-tsK3pwE0FEqGnT4qMFbixQmc8bGyuakr23wjMvfO7eZUxBuWYR2SkcP26sozF9PF
-tGhbZHQVGZUTVPyvwahMUEhbPGVerOW0IYpxkm0x/eaWdTc4vPpf/rIlgbAjarnJ
-UN9SaWRlWKSdP4haujnzCoJbM7dU9bjvlGZNyXEekgeT0W2qFeGGp+yyUWw8tNsp
-0BuC1b7uW/bBn/xKm319wXVDvBgZgcktMolak39V7DVO
------END CERTIFICATE----- \ No newline at end of file
diff --git a/app/src/androidTest/assets/secrets.json b/app/src/androidTest/assets/secrets.json
deleted file mode 100644
index 36ba5977..00000000
--- a/app/src/androidTest/assets/secrets.json
+++ /dev/null
@@ -1 +0,0 @@
-{"ca_cert":"-----BEGIN CERTIFICATE-----\nMIIFbzCCA1egAwIBAgIBATANBgkqhkiG9w0BAQ0FADBKMRgwFgYDVQQDDA9CaXRt\nYXNrIFJvb3QgQ0ExEDAOBgNVBAoMB0JpdG1hc2sxHDAaBgNVBAsME2h0dHBzOi8v\nYml0bWFzay5uZXQwHhcNMTIxMTA2MDAwMDAwWhcNMjIxMTA2MDAwMDAwWjBKMRgw\nFgYDVQQDDA9CaXRtYXNrIFJvb3QgQ0ExEDAOBgNVBAoMB0JpdG1hc2sxHDAaBgNV\nBAsME2h0dHBzOi8vYml0bWFzay5uZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw\nggIKAoICAQC1eV4YvayaU+maJbWrD4OHo3d7S1BtDlcvkIRS1Fw3iYDjsyDkZxai\ndHp4EUasfNQ+EVtXUvtk6170EmLco6Elg8SJBQ27trE6nielPRPCfX3fQzETRfvB\n7tNvGw4Jn2YKiYoMD79kkjgyZjkJ2r\/bEHUSevmR09BRp86syHZerdNGpXYhcQ84\nCA1+V+603GFIHnrP+uQDdssW93rgDNYu+exT+Wj6STfnUkugyjmPRPjL7wh0tzy+\nznCeLl4xiV3g9sjPnc7r2EQKd5uaTe3j71sDPF92KRk0SSUndREz+B1+Dbe\/RGk4\nMEqGFuOzrtsgEhPIX0hplhb0Tgz\/rtug+yTT7oJjBa3u20AAOQ38\/M99EfdeJvc4\nlPFF1XBBLh6X9UKF72an2NuANiX6XPySnJgZ7nZ09RiYZqVwu\/qt3DfvLfhboq+0\nbQvLUPXrVDr70onv5UDjpmEA\/cLmaIqqrduuTkFZOym65\/PfAPvpGnt7crQj\/Ibl\nDEDYZQmP7AS+6zBjoOzNjUGE5r40zWAR1RSi7zliXTu+yfsjXUIhUAWmYR6J3KxB\nlfsiHBQ+8dn9kC3YrUexWoOqBiqJOAJzZh5Y1tqgzfh+2nmHSB2dsQRs7rDRRlyy\nYMbkpzL9ZsOUO2eTP1mmar6YjCN+rggYjRrX71K2SpBG6b1zZxOG+wIDAQABo2Aw\nXjAdBgNVHQ4EFgQUuYGDLL2sswnYpHHvProt1JU+D48wDgYDVR0PAQH\/BAQDAgIE\nMAwGA1UdEwQFMAMBAf8wHwYDVR0jBBgwFoAUuYGDLL2sswnYpHHvProt1JU+D48w\nDQYJKoZIhvcNAQENBQADggIBADeG67vaFcbITGpi51264kHPYPEWaXUa5XYbtmBl\ncXYyB6hY5hv\/YNuVGJ1gWsDmdeXEyj0j2icGQjYdHRfwhrbEri+h1EZOm1cSBDuY\nk\/P5+ctHyOXx8IE79DBsZ6IL61UKIaKhqZBfLGYcWu17DVV6+LT+AKtHhOrv3TSj\nRnAcKnCbKqXLhUPXpK0eTjPYS2zQGQGIhIy9sQXVXJJJsGrPgMxna1Xw2JikBOCG\nhtD\/JKwt6xBmNwktH0GI\/LVtVgSp82Clbn9C4eZN9E5YbVYjLkIEDhpByeC71QhX\nEIQ0ZR56bFuJA\/CwValBqV\/G9gscTPQqd+iETp8yrFpAVHOW+YzSFbxjTEkBte1J\naF0vmbqdMAWLk+LEFPQRptZh0B88igtx6tV5oVd+p5IVRM49poLhuPNJGPvMj99l\nmlZ4+AeRUnbOOeAEuvpLJbel4rhwFzmUiGoeTVoPZyMevWcVFq6BMkS+jRR2w0jK\nG6b0v5XDHlcFYPOgUrtsOBFJVwbutLvxdk6q37kIFnWCd8L3kmES5q4wjyFK47Co\nJa8zlx64jmMZPg\/t3wWqkZgXZ14qnbyG5\/lGsj5CwVtfDljrhN0oCWK1FZaUmW3d\n69db12\/g4f6phldhxiWuGC\/W6fCW5kre7nmhshcltqAJJuU47iX+DarBFiIj816e\nyV8e\n-----END CERTIFICATE-----\n","cert":"-----BEGIN CERTIFICATE-----\nMIIEjDCCAnSgAwIBAgIQG6MBp\/cd9DlY+7cdvp3R3jANBgkqhkiG9w0BAQsFADBmMRAwDgYDVQQK\nDAdCaXRtYXNrMRwwGgYDVQQLDBNodHRwczovL2JpdG1hc2submV0MTQwMgYDVQQDDCtCaXRtYXNr\nIFJvb3QgQ0EgKGNsaWVudCBjZXJ0aWZpY2F0ZXMgb25seSEpMB4XDTE0MTIwNTAwMDAwMFoXDTE1\nMDMwNTAwMDAwMFowLTErMCkGA1UEAwwiVU5MSU1JVEVEZDBwZDdkMzE4eTNtOHNkeXllaTFqYmZl\neDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANRNhZ4aCwdL5+OKObOKeI2rDqEwGnIr\nhL9wzo\/FXbwLfdW45Y9Mxwhh6xy2NkA1YUKCB8VNBKNXlBrGr1QriLbu1rItsJ2VVLqGluVV\/gO4\njcaPU+\/Wu0hMFKG28J\/dPvIGeNbjBWk6mxQAA5WIpRK9RTeQ88wVaGIZDDzIdivza2zpcyiPAyii\ndbkyXh7sLsKvbZB6wLrert6Y1ylR3SlkZP0LfdGAMAdkMyuXKOjgcSnUltR8HSBuZcSUlsTVM11n\nrYeGCYyPNNQ3UYatDW33UASgRDBorrmjhhKP7IW\/opdlnPk5ZrP3i0qI32\/boRe0EWZGXJvr4P3K\ndJ30uCECAwEAAaNvMG0wHQYDVR0OBBYEFK8bMVAM4GBB5sHptoIOAaIvlYueMAsGA1UdDwQEAwIH\ngDATBgNVHSUEDDAKBggrBgEFBQcDAjAJBgNVHRMEAjAAMB8GA1UdIwQYMBaAFId+E7bsWFsUWah9\nvZuPvZ7O+aJsMA0GCSqGSIb3DQEBCwUAA4ICAQAQOX81csVhvP422NKkZH7+g3npBpl+sEHedaGR\nxYPOu4HrA4TVF9h44sljRoRJyenGNdBZCXcLKHg889eePTf8Z5K3lTojp6hvwyA6tgxOMHT1kESW\nPfqnRw8mHfHJuE3g+4YNUMwggzwc\/VZATdV\/7M33sarVN9AUOHou9n9BizgCC+UnYlS+F2POumE3\nFbOhKo5uubI02MwBYlN2JVO2TBt1Q20w8wc6cU07Xi5Epp+1mkgFiOShkNtPcJmEyBWJhxDtSDOW\n2doqWYNqH2kq7B5R\/kyyfcpFJqAnBTV7xs+C5rTS1mW7LpxfdCUMbYuLCpyxpO3A\/DhAm8n47tUH\nlBtmo8Avdb8VdFpYiGBpB0o9kTFcsWFb2GkWFBduGfSEB8jUI7QtqhgZqocAKK\/cweSRV8FwyUcn\nR0prRm3QEi9fbXqEddzjSY9y\/lqWYzT7u+IOAQpKroeZ4wzgYperDNOUFuYk1rP7yuvjP2pV5rcN\nyPoBP60TPVWMRM4WJm6nTogAz2qBrFsf\/XwT\/ajzbsjT6HNB7QbRE+wkFkqspoXG5Agp7KQ8lW3L\nSKCDGOQJz7VIE85pD0tg7QEXBEw8oaRZtMjQ0Gvs25mxXAKka4wGasaWfYH6d0E+iKYcWn86V1rH\nK2ZoknT+Nno5jgjFuUR3fZseNizEfx7BteooKQ==\n-----END CERTIFICATE-----","Constants.PRIVATE_KEY":"-----BEGIN RSA PRIVATE KEY-----\nMIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQDUTYWeGgsHS+fjijmziniNqw6h\nMBpyK4S\/cM6PxV28C33VuOWPTMcIYesctjZANWFCggfFTQSjV5Qaxq9UK4i27tayLbCdlVS6hpbl\nVf4DuI3Gj1Pv1rtITBShtvCf3T7yBnjW4wVpOpsUAAOViKUSvUU3kPPMFWhiGQw8yHYr82ts6XMo\njwMoonW5Ml4e7C7Cr22QesC63q7emNcpUd0pZGT9C33RgDAHZDMrlyjo4HEp1JbUfB0gbmXElJbE\n1TNdZ62HhgmMjzTUN1GGrQ1t91AEoEQwaK65o4YSj+yFv6KXZZz5OWaz94tKiN9v26EXtBFmRlyb\n6+D9ynSd9LghAgMBAAECggEBANPHLRXkhsHVj1EkzqBx7gXr8CEMmiTvknFh9zvltrZhhDoRQjWr\nchPDkcRHY2Cznvy4N0YyqQDD2ULIlZdSAgPxxothFoBruWSD47yMBmLx08ORsDpcqt\/YvPAATJI8\nIpFNsXcyaXBp\/M57oRemgnxp\/8UJPJmFdWX99H4hvffh\/jdj7POgYiWUaAl37XTYZKZ4nzKU2wpL\nEDLj9RKPz9gG7CYp2zrLC9LaAsrXVrKwPBw6g+XwbClaqFj97db3mrY4lr6mTo89qmus1AU+fBDH\n3Xlpmc8JwB+30TvhRNKrpLx9cEjuEj7K1gm8Y4dWCjPi+lNbtAyUBcgPJFa\/81ECgYEA7pLoBU\/Y\nZYjyHFca8FvDBcBh6haHfqJr9doXWtgjDrbi3o2n5wHqfKhFWOH6vPEQozkOVeX1ze6HOiRmGBpW\nr+r7x8TD25L7I6HJw3M351RWOAfkF0w\/RTVdetcTgduQtfN1u6BDhYSVceXMjyQYx7MhfETWI8Gh\nKSYm8OEDYiUCgYEA489fmbrCcUnXzpTsbswJ5NmSoEXbcX8cLxnQuzE0z9GHhQdrMjOpXR76reTW\n6jcuudarNcwRUYSWWhjCDKHhpx4HhasWPaHgr7jIzcRw8yZSJRSxKr8sl1qh6g7s47JcmfXOMWLt\nyuyE933XrT19Th4ODZHY40Uv35mPjMi9d00CgYEAyRNAQtndBRa7GG\/B4Ls2T+6pl+aNJIo4e+no\nrURlp800wWabEPRocdBRQmyULBLxduBr2LIMzhgwGSz8b2wji\/l9ZA3PFY135bxClVzSzUIjuO3N\nrGUzHl2wAAyuAFDSUshzfkPBJRNt8aVBF5PQ3t93ZYmPAmv8LPZe875yX5ECgYEAsUEcwK\/ZNW7g\ndQPZR4iJNkC4Xu6cBZ6Cnn92swBheEYvLSoNlX0vDZ7aLE3\/jzQqrjzC8NP8sbH5jtbuvgeDXZX3\nAmGRp5j6C6A61ihAPmEVz3ZfN8SSfJ3vl\/\/PAIg6lyz0J+cy4Q7RkwSeuVQ72Hl4M8TEvmmKC3Af\nispy6Y0CgYEAgl1o2lo+ACyk+oVQPaaPqK3d7WOBFp4eR2nXFor\/vsx9igQOlZUgzRDQsR8jo1o9\nefOSBf87igrZGgssys89pWa2dnXnz5PMmzkKr6bw4D9Ez6u6Puc9UZhGw\/8wDYg6fSosdB9utspm\nM698ycef7jBNMDgmhpSvfw5GctoNQ4s=\n-----END RSA PRIVATE KEY-----"}
diff --git a/app/src/androidTest/java/se/leap/bitmaskclient/test/StartActivityDrawerTest.java b/app/src/androidTest/java/se/leap/bitmaskclient/test/StartActivityDrawerTest.java
deleted file mode 100644
index 31247e0a..00000000
--- a/app/src/androidTest/java/se/leap/bitmaskclient/test/StartActivityDrawerTest.java
+++ /dev/null
@@ -1,181 +0,0 @@
-package se.leap.bitmaskclient.test;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.espresso.contrib.DrawerActions;
-import android.support.test.rule.ActivityTestRule;
-import android.support.test.runner.AndroidJUnit4;
-
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.io.IOException;
-
-import se.leap.bitmaskclient.BuildConfig;
-import se.leap.bitmaskclient.MainActivity;
-import se.leap.bitmaskclient.Provider;
-import se.leap.bitmaskclient.R;
-import se.leap.bitmaskclient.testutils.TestSetupHelper;
-
-import static android.support.test.InstrumentationRegistry.getInstrumentation;
-import static android.support.test.espresso.Espresso.onData;
-import static android.support.test.espresso.Espresso.onView;
-import static android.support.test.espresso.action.ViewActions.click;
-import static android.support.test.espresso.assertion.ViewAssertions.matches;
-import static android.support.test.espresso.contrib.DrawerMatchers.isClosed;
-import static android.support.test.espresso.contrib.DrawerMatchers.isOpen;
-import static android.support.test.espresso.matcher.RootMatchers.isDialog;
-import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
-import static android.support.test.espresso.matcher.ViewMatchers.withId;
-import static android.support.test.espresso.matcher.ViewMatchers.withText;
-import static org.hamcrest.Matchers.anything;
-import static se.leap.bitmaskclient.Constants.FIRST_TIME_USER_DATE;
-import static se.leap.bitmaskclient.Constants.LAST_DONATION_REMINDER_DATE;
-import static se.leap.bitmaskclient.Constants.SHARED_PREFERENCES;
-import static se.leap.bitmaskclient.MainActivity.ACTION_SHOW_VPN_FRAGMENT;
-import static se.leap.bitmaskclient.R.id.aboutLayout;
-import static se.leap.bitmaskclient.R.id.accountList;
-import static se.leap.bitmaskclient.R.id.drawer_layout;
-import static se.leap.bitmaskclient.R.id.eipServiceFragment;
-import static se.leap.bitmaskclient.R.id.log_layout;
-import static se.leap.bitmaskclient.R.id.provider_list_layout;
-import static se.leap.bitmaskclient.R.id.settingsList;
-
-/**
- * Created by cyberta on 19.01.18.
- */
-
-@RunWith(AndroidJUnit4.class)
-public class StartActivityDrawerTest {
-
- Intent intent;
- SharedPreferences preferences;
- SharedPreferences.Editor preferencesEditor;
-
- @Rule
- public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(
- MainActivity.class,
- true,
- false); // Activity is not launched immediately
-
- @Before
- public void setUp() throws IOException {
- intent = new Intent(ACTION_SHOW_VPN_FRAGMENT);
- Context context = getInstrumentation().getTargetContext();
-
- preferences = context.getSharedPreferences(SHARED_PREFERENCES, Context.MODE_PRIVATE);
- preferencesEditor = preferences.edit();
- preferencesEditor.putString(Provider.KEY, TestSetupHelper.getInputAsString(InstrumentationRegistry.getContext().getAssets().open("riseup.net.json")))
- .putString(Provider.CA_CERT, TestSetupHelper.getInputAsString(InstrumentationRegistry.getContext().getAssets().open("riseup.net.pem")))
- .putString(LAST_DONATION_REMINDER_DATE, null)
- .putString(FIRST_TIME_USER_DATE, null).commit();
-
- }
-
-
- @Test
- public void testDisplayDrawer_isOpenUntilUserManuallyOpendDrawerOnce() {
- preferencesEditor.putBoolean("navigation_drawer_learned", false).commit();
- mActivityRule.launchActivity(intent);
- onView(withId(drawer_layout)).check(matches(isOpen()));
- onView(withId(drawer_layout)).perform(DrawerActions.close());
- mActivityRule.finishActivity();
-
- mActivityRule.launchActivity(intent);
- onView(withId(drawer_layout)).check(matches(isOpen()));
- onView(withId(drawer_layout)).perform(DrawerActions.close());
- onView(withId(drawer_layout)).perform(DrawerActions.open());
- mActivityRule.finishActivity();
-
- mActivityRule.launchActivity(intent);
- onView(withId(drawer_layout)).check(matches(isClosed()));
- }
-
- @Test
- public void testClickProviderName_closeDrawerAndShowEipFragment() throws InterruptedException {
- preferencesEditor.putBoolean("navigation_drawer_learned", true).commit();
- mActivityRule.launchActivity(intent);
- onView(withId(drawer_layout)).check(matches(isClosed()));
- onView(withId(drawer_layout)).perform(DrawerActions.open());
- onView(withId(drawer_layout)).check(matches(isOpen()));
- onData(anything()).inAdapterView(withId(accountList)).atPosition(0).perform(click());
- onView(withId(drawer_layout)).check(matches(isClosed()));
- onView(withId(eipServiceFragment)).check(matches(isDisplayed()));
- }
-
- @Test
- public void testSaveBattery_closeDrawerAndShowSaveBatteryDialog() throws InterruptedException {
- preferencesEditor.putBoolean("navigation_drawer_learned", true).commit();
- mActivityRule.launchActivity(intent);
- onView(withId(drawer_layout)).check(matches(isClosed()));
- onView(withId(drawer_layout)).perform(DrawerActions.open());
- onView(withId(drawer_layout)).check(matches(isOpen()));
- onData(anything()).inAdapterView(withId(settingsList)).atPosition(0).perform(click());
- onView(withText(R.string.save_battery_message))
- .inRoot(isDialog())
- .check(matches(isDisplayed()));
- }
-
- @Test
- public void testAlwaysOnVPN_closeDrawerAndShowDialog() throws InterruptedException {
- preferencesEditor.putBoolean("navigation_drawer_learned", true).commit();
- mActivityRule.launchActivity(intent);
- onView(withId(drawer_layout)).check(matches(isClosed()));
- onView(withId(drawer_layout)).perform(DrawerActions.open());
- onView(withId(drawer_layout)).check(matches(isOpen()));
- onData(anything()).inAdapterView(withId(settingsList)).atPosition(1).perform(click());
- onView(withText(R.string.always_on_vpn_user_message))
- .inRoot(isDialog())
- .check(matches(isDisplayed()));
- }
-
- @Test
- public void testClickSwitchProvider_closeDrawerAndShowProviderListView() throws InterruptedException {
- if (BuildConfig.FLAVOR_branding.equals("custom")) {
- return;
- }
- preferencesEditor.putBoolean("navigation_drawer_learned", true).commit();
- mActivityRule.launchActivity(intent);
- onView(withId(drawer_layout)).check(matches(isClosed()));
- onView(withId(drawer_layout)).perform(DrawerActions.open());
- onView(withId(drawer_layout)).check(matches(isOpen()));
-
- onData(anything()).inAdapterView(withId(settingsList)).atPosition(2).perform(click());
- onView(withId(provider_list_layout)).check(matches(isDisplayed()));
- }
-
- @Test
- public void testClickLog_closeDrawerAndShowLogFragment() throws InterruptedException {
- preferencesEditor.putBoolean("navigation_drawer_learned", true).commit();
- mActivityRule.launchActivity(intent);
- onView(withId(drawer_layout)).check(matches(isClosed()));
- onView(withId(drawer_layout)).perform(DrawerActions.open());
- onView(withId(drawer_layout)).check(matches(isOpen()));
-
- onData(anything()).inAdapterView(withId(settingsList)).atPosition(getPositionBasedOnFlavor(2, 3)).perform(click());
- onView(withId(log_layout)).check(matches(isDisplayed()));
- }
-
- @Test
- public void testClickAbout_closeDrawerAndShowAboutFragment() throws InterruptedException {
- preferencesEditor.putBoolean("navigation_drawer_learned", true).commit();
- mActivityRule.launchActivity(intent);
- onView(withId(drawer_layout)).check(matches(isClosed()));
- onView(withId(drawer_layout)).perform(DrawerActions.open());
- onView(withId(drawer_layout)).check(matches(isOpen()));
- onData(anything()).inAdapterView(withId(settingsList)).atPosition(getPositionBasedOnFlavor(4,5)).perform(click());
- onView(withId(aboutLayout)).check(matches(isDisplayed()));
- }
-
- private int getPositionBasedOnFlavor(int custom, int defaultNumber) {
- if (BuildConfig.FLAVOR_branding.equals("custom")) {
- return custom;
- } else {
- return defaultNumber;
- }
- }
-}
diff --git a/app/src/insecure/java/se/leap/bitmaskclient/ProviderApiManager.java b/app/src/insecure/java/se/leap/bitmaskclient/ProviderApiManager.java
index e86ab8ea..b67f6fa5 100644
--- a/app/src/insecure/java/se/leap/bitmaskclient/ProviderApiManager.java
+++ b/app/src/insecure/java/se/leap/bitmaskclient/ProviderApiManager.java
@@ -144,7 +144,7 @@ public class ProviderApiManager extends ProviderApiManagerBase {
if(providerDefinition.length() == 0 || caCert.isEmpty())
providerDotJsonString = downloadWithCommercialCA(providerMainUrl + "/provider.json", dangerOn);
else
- providerDotJsonString = downloadFromApiUrlWithProviderCA("/provider.json", caCert, providerDefinition, dangerOn);
+ providerDotJsonString = downloadFromApiUrlWithProviderCA("/provider.json", caCert, provider, dangerOn);
if (ConfigHelper.checkErroneousDownload(providerDotJsonString) || !isValidJson(providerDotJsonString)) {
setErrorResult(result, malformed_url, null);
@@ -291,10 +291,10 @@ public class ProviderApiManager extends ProviderApiManagerBase {
return responseString;
}
- private String downloadFromApiUrlWithProviderCA(String path, String caCert, JSONObject providerDefinition, boolean dangerOn) {
+ private String downloadFromApiUrlWithProviderCA(String path, String caCert, Provider provider, boolean dangerOn) {
String responseString;
JSONObject errorJson = new JSONObject();
- String baseUrl = getApiUrl(providerDefinition);
+ String baseUrl = provider.getApiUrlString();
OkHttpClient okHttpClient = clientGenerator.initSelfSignedCAHttpClient(caCert, errorJson);
if (okHttpClient == null) {
return errorJson.toString();
diff --git a/app/src/insecure/java/se/leap/bitmaskclient/ProviderListActivity.java b/app/src/insecure/java/se/leap/bitmaskclient/ProviderListActivity.java
index dfadaf05..d151c987 100644
--- a/app/src/insecure/java/se/leap/bitmaskclient/ProviderListActivity.java
+++ b/app/src/insecure/java/se/leap/bitmaskclient/ProviderListActivity.java
@@ -17,7 +17,7 @@
package se.leap.bitmaskclient;
import android.os.Bundle;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
import static se.leap.bitmaskclient.Constants.DANGER_ON;
import static se.leap.bitmaskclient.ProviderAPI.SET_UP_PROVIDER;
diff --git a/app/src/main/java/de/blinkt/openvpn/VpnProfile.java b/app/src/main/java/de/blinkt/openvpn/VpnProfile.java
index 50362085..519c2106 100644
--- a/app/src/main/java/de/blinkt/openvpn/VpnProfile.java
+++ b/app/src/main/java/de/blinkt/openvpn/VpnProfile.java
@@ -15,8 +15,8 @@ import android.os.Build;
import android.preference.PreferenceManager;
import android.security.KeyChain;
import android.security.KeyChainException;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import android.text.TextUtils;
import android.util.Base64;
diff --git a/app/src/main/java/de/blinkt/openvpn/core/ConfigParser.java b/app/src/main/java/de/blinkt/openvpn/core/ConfigParser.java
index 5ccd83dd..c6240bd0 100644
--- a/app/src/main/java/de/blinkt/openvpn/core/ConfigParser.java
+++ b/app/src/main/java/de/blinkt/openvpn/core/ConfigParser.java
@@ -6,7 +6,7 @@
package de.blinkt.openvpn.core;
import android.os.Build;
-import android.support.v4.util.Pair;
+import androidx.core.util.Pair;
import android.text.TextUtils;
import java.io.BufferedReader;
diff --git a/app/src/main/java/de/blinkt/openvpn/core/ExtAuthHelper.java b/app/src/main/java/de/blinkt/openvpn/core/ExtAuthHelper.java
index 166bce12..a62a4c62 100644
--- a/app/src/main/java/de/blinkt/openvpn/core/ExtAuthHelper.java
+++ b/app/src/main/java/de/blinkt/openvpn/core/ExtAuthHelper.java
@@ -13,9 +13,9 @@ import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.*;
import android.security.KeyChainException;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.SpinnerAdapter;
diff --git a/app/src/main/java/de/blinkt/openvpn/core/NetworkSpace.java b/app/src/main/java/de/blinkt/openvpn/core/NetworkSpace.java
index 0c54b050..860897db 100644
--- a/app/src/main/java/de/blinkt/openvpn/core/NetworkSpace.java
+++ b/app/src/main/java/de/blinkt/openvpn/core/NetworkSpace.java
@@ -6,7 +6,7 @@
package de.blinkt.openvpn.core;
import android.os.Build;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
import java.math.BigInteger;
import java.net.Inet6Address;
diff --git a/app/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java b/app/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java
index 67d3c4f2..61969769 100644
--- a/app/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java
+++ b/app/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java
@@ -24,7 +24,7 @@ import android.os.IBinder;
import android.os.Message;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
-import android.support.annotation.RequiresApi;
+import androidx.annotation.RequiresApi;
import android.system.OsConstants;
import android.text.TextUtils;
import android.util.Log;
diff --git a/app/src/main/java/de/blinkt/openvpn/core/OpenVPNStatusService.java b/app/src/main/java/de/blinkt/openvpn/core/OpenVPNStatusService.java
index b52e39a2..0f4d54b7 100644
--- a/app/src/main/java/de/blinkt/openvpn/core/OpenVPNStatusService.java
+++ b/app/src/main/java/de/blinkt/openvpn/core/OpenVPNStatusService.java
@@ -14,7 +14,7 @@ import android.os.Message;
import android.os.ParcelFileDescriptor;
import android.os.RemoteCallbackList;
import android.os.RemoteException;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import android.util.Pair;
import java.io.DataOutputStream;
diff --git a/app/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java b/app/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java
index 787d2b1b..00147828 100644
--- a/app/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java
+++ b/app/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java
@@ -12,17 +12,15 @@ import android.net.LocalSocket;
import android.net.LocalSocketAddress;
import android.os.Build;
import android.os.Handler;
-import android.os.Looper;
import android.os.ParcelFileDescriptor;
-import android.support.annotation.NonNull;
-import android.support.annotation.RequiresApi;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
import android.system.Os;
import android.util.Log;
import de.blinkt.openvpn.core.connection.Connection;
import se.leap.bitmaskclient.R;
import de.blinkt.openvpn.VpnProfile;
-import se.leap.bitmaskclient.utils.ConfigHelper;
import java.io.FileDescriptor;
import java.io.IOException;
@@ -32,7 +30,6 @@ import java.lang.reflect.Method;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.util.*;
-import java.util.logging.Logger;
public class OpenVpnManagementThread implements Runnable, OpenVPNManagement {
diff --git a/app/src/main/java/se/leap/bitmaskclient/AbstractProviderDetailActivity.java b/app/src/main/java/se/leap/bitmaskclient/AbstractProviderDetailActivity.java
index 28e5f5af..a9f156a2 100644
--- a/app/src/main/java/se/leap/bitmaskclient/AbstractProviderDetailActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/AbstractProviderDetailActivity.java
@@ -2,11 +2,9 @@ package se.leap.bitmaskclient;
import android.content.Intent;
import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.AppCompatTextView;
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.AppCompatTextView;
import android.util.Log;
-import android.view.View;
-import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
diff --git a/app/src/main/java/se/leap/bitmaskclient/AddProviderBaseActivity.java b/app/src/main/java/se/leap/bitmaskclient/AddProviderBaseActivity.java
index ca848f2e..e0bb0061 100644
--- a/app/src/main/java/se/leap/bitmaskclient/AddProviderBaseActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/AddProviderBaseActivity.java
@@ -2,8 +2,8 @@ package se.leap.bitmaskclient;
import android.content.Intent;
import android.os.Bundle;
-import android.support.design.widget.TextInputEditText;
-import android.support.design.widget.TextInputLayout;
+import com.google.android.material.textfield.TextInputEditText;
+import com.google.android.material.textfield.TextInputLayout;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
diff --git a/app/src/main/java/se/leap/bitmaskclient/BitmaskApp.java b/app/src/main/java/se/leap/bitmaskclient/BitmaskApp.java
index 48910fb5..bde5114b 100644
--- a/app/src/main/java/se/leap/bitmaskclient/BitmaskApp.java
+++ b/app/src/main/java/se/leap/bitmaskclient/BitmaskApp.java
@@ -2,8 +2,8 @@ package se.leap.bitmaskclient;
import android.content.Context;
import android.content.SharedPreferences;
-import android.support.multidex.MultiDexApplication;
-import android.support.v7.app.AppCompatDelegate;
+import androidx.multidex.MultiDexApplication;
+import androidx.appcompat.app.AppCompatDelegate;
import com.squareup.leakcanary.LeakCanary;
import com.squareup.leakcanary.RefWatcher;
diff --git a/app/src/main/java/se/leap/bitmaskclient/ButterKnifeActivity.java b/app/src/main/java/se/leap/bitmaskclient/ButterKnifeActivity.java
index 41164463..0ef77e2b 100644
--- a/app/src/main/java/se/leap/bitmaskclient/ButterKnifeActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/ButterKnifeActivity.java
@@ -1,6 +1,6 @@
package se.leap.bitmaskclient;
-import android.support.v7.app.AppCompatActivity;
+import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import butterknife.ButterKnife;
diff --git a/app/src/main/java/se/leap/bitmaskclient/ConfigWizardBaseActivity.java b/app/src/main/java/se/leap/bitmaskclient/ConfigWizardBaseActivity.java
index 7aa50add..2d163859 100644
--- a/app/src/main/java/se/leap/bitmaskclient/ConfigWizardBaseActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/ConfigWizardBaseActivity.java
@@ -5,13 +5,13 @@ import android.graphics.PorterDuff;
import android.graphics.Rect;
import android.os.Build;
import android.os.Bundle;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-import android.support.constraint.ConstraintLayout;
-import android.support.constraint.Guideline;
-import android.support.v4.content.ContextCompat;
-import android.support.v7.widget.AppCompatTextView;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+import androidx.constraintlayout.widget.ConstraintLayout;
+import androidx.constraintlayout.widget.Guideline;
+import androidx.core.content.ContextCompat;
+import androidx.appcompat.widget.AppCompatTextView;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
diff --git a/app/src/main/java/se/leap/bitmaskclient/CustomProviderSetupActivity.java b/app/src/main/java/se/leap/bitmaskclient/CustomProviderSetupActivity.java
index b3ee44ca..8f17d482 100644
--- a/app/src/main/java/se/leap/bitmaskclient/CustomProviderSetupActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/CustomProviderSetupActivity.java
@@ -18,8 +18,8 @@ package se.leap.bitmaskclient;
import android.content.Intent;
import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import static se.leap.bitmaskclient.Constants.REQUEST_CODE_CONFIGURE_LEAP;
import static se.leap.bitmaskclient.ProviderAPI.SET_UP_PROVIDER;
diff --git a/app/src/main/java/se/leap/bitmaskclient/EipFragment.java b/app/src/main/java/se/leap/bitmaskclient/EipFragment.java
index a6f8040f..b8883f77 100644
--- a/app/src/main/java/se/leap/bitmaskclient/EipFragment.java
+++ b/app/src/main/java/se/leap/bitmaskclient/EipFragment.java
@@ -27,14 +27,14 @@ import android.graphics.ColorMatrixColorFilter;
import android.os.Bundle;
import android.os.IBinder;
import android.os.Vibrator;
-import android.support.annotation.NonNull;
-import android.support.v4.app.DialogFragment;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentTransaction;
-import android.support.v7.app.AlertDialog;
-import android.support.v7.widget.AppCompatButton;
-import android.support.v7.widget.AppCompatImageView;
-import android.support.v7.widget.AppCompatTextView;
+import androidx.annotation.NonNull;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentTransaction;
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.widget.AppCompatButton;
+import androidx.appcompat.widget.AppCompatImageView;
+import androidx.appcompat.widget.AppCompatTextView;
import android.text.TextUtils;
import android.util.Log;
import android.view.Gravity;
diff --git a/app/src/main/java/se/leap/bitmaskclient/EipSetupObserver.java b/app/src/main/java/se/leap/bitmaskclient/EipSetupObserver.java
index 84516ee3..ee7e7ef5 100644
--- a/app/src/main/java/se/leap/bitmaskclient/EipSetupObserver.java
+++ b/app/src/main/java/se/leap/bitmaskclient/EipSetupObserver.java
@@ -6,7 +6,7 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.os.Bundle;
-import android.support.v4.content.LocalBroadcastManager;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import android.util.Log;
import org.json.JSONObject;
diff --git a/app/src/main/java/se/leap/bitmaskclient/FragmentManagerEnhanced.java b/app/src/main/java/se/leap/bitmaskclient/FragmentManagerEnhanced.java
index d567277d..4d0d4785 100644
--- a/app/src/main/java/se/leap/bitmaskclient/FragmentManagerEnhanced.java
+++ b/app/src/main/java/se/leap/bitmaskclient/FragmentManagerEnhanced.java
@@ -16,9 +16,9 @@
*/
package se.leap.bitmaskclient;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentTransaction;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentTransaction;
public class FragmentManagerEnhanced {
diff --git a/app/src/main/java/se/leap/bitmaskclient/LoginActivity.java b/app/src/main/java/se/leap/bitmaskclient/LoginActivity.java
index 00ede1a6..15166c67 100644
--- a/app/src/main/java/se/leap/bitmaskclient/LoginActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/LoginActivity.java
@@ -1,7 +1,7 @@
package se.leap.bitmaskclient;
import android.os.Bundle;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import butterknife.OnClick;
diff --git a/app/src/main/java/se/leap/bitmaskclient/MainActivity.java b/app/src/main/java/se/leap/bitmaskclient/MainActivity.java
index 39c4a8f1..4239a3e4 100644
--- a/app/src/main/java/se/leap/bitmaskclient/MainActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/MainActivity.java
@@ -20,12 +20,12 @@ package se.leap.bitmaskclient;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
-import android.support.annotation.StringRes;
-import android.support.v4.app.DialogFragment;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentTransaction;
-import android.support.v7.app.ActionBar;
-import android.support.v7.app.AppCompatActivity;
+import androidx.annotation.StringRes;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentTransaction;
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AppCompatActivity;
import android.util.Log;
import org.json.JSONException;
diff --git a/app/src/main/java/se/leap/bitmaskclient/MainActivityErrorDialog.java b/app/src/main/java/se/leap/bitmaskclient/MainActivityErrorDialog.java
index 4548e79e..7e9bad22 100644
--- a/app/src/main/java/se/leap/bitmaskclient/MainActivityErrorDialog.java
+++ b/app/src/main/java/se/leap/bitmaskclient/MainActivityErrorDialog.java
@@ -19,10 +19,10 @@ package se.leap.bitmaskclient;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.DialogFragment;
-import android.support.v7.app.AlertDialog;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.DialogFragment;
+import androidx.appcompat.app.AlertDialog;
import org.json.JSONObject;
diff --git a/app/src/main/java/se/leap/bitmaskclient/OkHttpClientGenerator.java b/app/src/main/java/se/leap/bitmaskclient/OkHttpClientGenerator.java
index 9d1168aa..7b9874e0 100644
--- a/app/src/main/java/se/leap/bitmaskclient/OkHttpClientGenerator.java
+++ b/app/src/main/java/se/leap/bitmaskclient/OkHttpClientGenerator.java
@@ -20,7 +20,7 @@ package se.leap.bitmaskclient;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.os.Build;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
import org.json.JSONException;
import org.json.JSONObject;
diff --git a/app/src/main/java/se/leap/bitmaskclient/Provider.java b/app/src/main/java/se/leap/bitmaskclient/Provider.java
index 11d685f5..4dd7c76e 100644
--- a/app/src/main/java/se/leap/bitmaskclient/Provider.java
+++ b/app/src/main/java/se/leap/bitmaskclient/Provider.java
@@ -18,7 +18,7 @@ package se.leap.bitmaskclient;
import android.os.Parcel;
import android.os.Parcelable;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
import com.google.gson.Gson;
@@ -30,8 +30,6 @@ import java.net.MalformedURLException;
import java.net.URL;
import java.util.Locale;
-import se.leap.bitmaskclient.utils.IPAddress;
-
import static de.blinkt.openvpn.core.connection.Connection.TransportType.OBFS4;
import static se.leap.bitmaskclient.Constants.CAPABILITIES;
import static se.leap.bitmaskclient.Constants.GATEWAYS;
diff --git a/app/src/main/java/se/leap/bitmaskclient/ProviderAPI.java b/app/src/main/java/se/leap/bitmaskclient/ProviderAPI.java
index 0e27592b..57bea0d3 100644
--- a/app/src/main/java/se/leap/bitmaskclient/ProviderAPI.java
+++ b/app/src/main/java/se/leap/bitmaskclient/ProviderAPI.java
@@ -20,7 +20,7 @@ import android.annotation.SuppressLint;
import android.app.IntentService;
import android.content.Intent;
import android.content.SharedPreferences;
-import android.support.v4.content.LocalBroadcastManager;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import static se.leap.bitmaskclient.Constants.SHARED_PREFERENCES;
diff --git a/app/src/main/java/se/leap/bitmaskclient/ProviderApiConnector.java b/app/src/main/java/se/leap/bitmaskclient/ProviderApiConnector.java
index af79a95e..84f21343 100644
--- a/app/src/main/java/se/leap/bitmaskclient/ProviderApiConnector.java
+++ b/app/src/main/java/se/leap/bitmaskclient/ProviderApiConnector.java
@@ -17,7 +17,7 @@
package se.leap.bitmaskclient;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
import android.util.Pair;
import java.io.IOException;
diff --git a/app/src/main/java/se/leap/bitmaskclient/ProviderApiManagerBase.java b/app/src/main/java/se/leap/bitmaskclient/ProviderApiManagerBase.java
index 7577f098..1fb6bf48 100644
--- a/app/src/main/java/se/leap/bitmaskclient/ProviderApiManagerBase.java
+++ b/app/src/main/java/se/leap/bitmaskclient/ProviderApiManagerBase.java
@@ -22,7 +22,7 @@ import android.content.SharedPreferences;
import android.content.res.Resources;
import android.os.Bundle;
import android.os.ResultReceiver;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
import android.util.Base64;
import android.util.Log;
import android.util.Pair;
diff --git a/app/src/main/java/se/leap/bitmaskclient/ProviderCredentialsBaseActivity.java b/app/src/main/java/se/leap/bitmaskclient/ProviderCredentialsBaseActivity.java
index 55a1da93..c61caead 100644
--- a/app/src/main/java/se/leap/bitmaskclient/ProviderCredentialsBaseActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/ProviderCredentialsBaseActivity.java
@@ -23,13 +23,13 @@ import android.content.IntentFilter;
import android.os.Build;
import android.os.Build.VERSION_CODES;
import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-import android.support.design.widget.TextInputEditText;
-import android.support.design.widget.TextInputLayout;
-import android.support.v4.content.LocalBroadcastManager;
-import android.support.v7.widget.AppCompatButton;
-import android.support.v7.widget.AppCompatTextView;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+import com.google.android.material.textfield.TextInputEditText;
+import com.google.android.material.textfield.TextInputLayout;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+import androidx.appcompat.widget.AppCompatButton;
+import androidx.appcompat.widget.AppCompatTextView;
import android.text.Editable;
import android.text.Html;
import android.text.TextWatcher;
diff --git a/app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java b/app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java
index 56edd534..7c45c921 100644
--- a/app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java
@@ -19,13 +19,11 @@ package se.leap.bitmaskclient;
import android.content.Intent;
import android.os.Bundle;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
import android.widget.ListView;
import com.pedrogomez.renderers.Renderer;
-import java.net.MalformedURLException;
-import java.net.URL;
import java.util.ArrayList;
import java.util.List;
diff --git a/app/src/main/java/se/leap/bitmaskclient/ProviderManager.java b/app/src/main/java/se/leap/bitmaskclient/ProviderManager.java
index ab165450..6d074a7a 100644
--- a/app/src/main/java/se/leap/bitmaskclient/ProviderManager.java
+++ b/app/src/main/java/se/leap/bitmaskclient/ProviderManager.java
@@ -1,7 +1,7 @@
package se.leap.bitmaskclient;
import android.content.res.AssetManager;
-import android.support.annotation.VisibleForTesting;
+import androidx.annotation.VisibleForTesting;
import com.pedrogomez.renderers.AdapteeCollection;
diff --git a/app/src/main/java/se/leap/bitmaskclient/ProviderSetupBaseActivity.java b/app/src/main/java/se/leap/bitmaskclient/ProviderSetupBaseActivity.java
index b1bb3b07..396b8b26 100644
--- a/app/src/main/java/se/leap/bitmaskclient/ProviderSetupBaseActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/ProviderSetupBaseActivity.java
@@ -20,10 +20,10 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.os.Handler;
-import android.support.annotation.Nullable;
-import android.support.v4.app.DialogFragment;
-import android.support.v4.app.FragmentTransaction;
-import android.support.v4.content.LocalBroadcastManager;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.FragmentTransaction;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import android.util.Log;
import org.jetbrains.annotations.NotNull;
diff --git a/app/src/main/java/se/leap/bitmaskclient/ProviderSetupFailedDialog.java b/app/src/main/java/se/leap/bitmaskclient/ProviderSetupFailedDialog.java
index e2f3e173..d64f34d8 100644
--- a/app/src/main/java/se/leap/bitmaskclient/ProviderSetupFailedDialog.java
+++ b/app/src/main/java/se/leap/bitmaskclient/ProviderSetupFailedDialog.java
@@ -21,9 +21,9 @@ import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.DialogFragment;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.DialogFragment;
import org.json.JSONObject;
diff --git a/app/src/main/java/se/leap/bitmaskclient/SignupActivity.java b/app/src/main/java/se/leap/bitmaskclient/SignupActivity.java
index 4a16351a..abd3d224 100644
--- a/app/src/main/java/se/leap/bitmaskclient/SignupActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/SignupActivity.java
@@ -17,8 +17,7 @@
package se.leap.bitmaskclient;
import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.view.View;
+import androidx.annotation.Nullable;
import butterknife.OnClick;
diff --git a/app/src/main/java/se/leap/bitmaskclient/StartActivity.java b/app/src/main/java/se/leap/bitmaskclient/StartActivity.java
index b89363b2..b6ace6db 100644
--- a/app/src/main/java/se/leap/bitmaskclient/StartActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/StartActivity.java
@@ -21,8 +21,8 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.os.Bundle;
-import android.support.annotation.IntDef;
-import android.support.annotation.Nullable;
+import androidx.annotation.IntDef;
+import androidx.annotation.Nullable;
import android.util.Log;
import java.lang.annotation.Retention;
diff --git a/app/src/main/java/se/leap/bitmaskclient/VpnNotificationManager.java b/app/src/main/java/se/leap/bitmaskclient/VpnNotificationManager.java
index b276a402..290a9aa9 100644
--- a/app/src/main/java/se/leap/bitmaskclient/VpnNotificationManager.java
+++ b/app/src/main/java/se/leap/bitmaskclient/VpnNotificationManager.java
@@ -27,12 +27,11 @@ import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Build;
import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v4.app.NotificationCompat;
-import android.support.v4.app.NotificationManagerCompat;
+import androidx.annotation.NonNull;
+import androidx.core.app.NotificationCompat;
+import androidx.core.app.NotificationManagerCompat;
import android.text.Spannable;
import android.text.SpannableString;
-import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.text.style.StyleSpan;
import android.widget.RemoteViews;
@@ -43,9 +42,9 @@ import de.blinkt.openvpn.core.OpenVPNService;
import se.leap.bitmaskclient.eip.VoidVpnService;
import static android.os.Build.VERSION_CODES.O;
-import static android.support.v4.app.NotificationCompat.PRIORITY_HIGH;
-import static android.support.v4.app.NotificationCompat.PRIORITY_MAX;
-import static android.support.v4.app.NotificationCompat.PRIORITY_MIN;
+import static androidx.core.app.NotificationCompat.PRIORITY_HIGH;
+import static androidx.core.app.NotificationCompat.PRIORITY_MAX;
+import static androidx.core.app.NotificationCompat.PRIORITY_MIN;
import static android.text.TextUtils.isEmpty;
import static de.blinkt.openvpn.core.ConnectionStatus.LEVEL_NONETWORK;
import static de.blinkt.openvpn.core.ConnectionStatus.LEVEL_WAITING_FOR_USER_INPUT;
diff --git a/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java b/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java
index 715d278d..fabaa7c3 100644
--- a/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java
+++ b/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java
@@ -25,18 +25,18 @@ import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
-import android.support.annotation.NonNull;
-import android.support.annotation.StringRes;
-import android.support.v4.app.DialogFragment;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentTransaction;
-import android.support.v4.view.GravityCompat;
-import android.support.v4.widget.DrawerLayout;
-import android.support.v7.app.ActionBar;
-import android.support.v7.app.ActionBarDrawerToggle;
-import android.support.v7.app.AlertDialog;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.Toolbar;
+import androidx.annotation.NonNull;
+import androidx.annotation.StringRes;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentTransaction;
+import androidx.core.view.GravityCompat;
+import androidx.drawerlayout.widget.DrawerLayout;
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.ActionBarDrawerToggle;
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
diff --git a/app/src/main/java/se/leap/bitmaskclient/eip/EIP.java b/app/src/main/java/se/leap/bitmaskclient/eip/EIP.java
index 1186b54f..511a33bc 100644
--- a/app/src/main/java/se/leap/bitmaskclient/eip/EIP.java
+++ b/app/src/main/java/se/leap/bitmaskclient/eip/EIP.java
@@ -26,11 +26,11 @@ import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.os.ResultReceiver;
-import android.support.annotation.NonNull;
-import android.support.annotation.StringRes;
-import android.support.annotation.WorkerThread;
-import android.support.v4.app.JobIntentService;
-import android.support.v4.content.LocalBroadcastManager;
+import androidx.annotation.NonNull;
+import androidx.annotation.StringRes;
+import androidx.annotation.WorkerThread;
+import androidx.core.app.JobIntentService;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import android.util.Log;
import org.json.JSONException;
diff --git a/app/src/main/java/se/leap/bitmaskclient/eip/EipCommand.java b/app/src/main/java/se/leap/bitmaskclient/eip/EipCommand.java
index d2667e42..1f5b3741 100644
--- a/app/src/main/java/se/leap/bitmaskclient/eip/EipCommand.java
+++ b/app/src/main/java/se/leap/bitmaskclient/eip/EipCommand.java
@@ -4,15 +4,13 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.ResultReceiver;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.content.ContextCompat;
+import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
+import androidx.core.content.ContextCompat;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import se.leap.bitmaskclient.Provider;
-
import static se.leap.bitmaskclient.Constants.EIP_ACTION_CHECK_CERT_VALIDITY;
import static se.leap.bitmaskclient.Constants.EIP_ACTION_CONFIGURE_TETHERING;
import static se.leap.bitmaskclient.Constants.EIP_ACTION_START;
diff --git a/app/src/main/java/se/leap/bitmaskclient/eip/EipResultBroadcast.java b/app/src/main/java/se/leap/bitmaskclient/eip/EipResultBroadcast.java
index e1efb375..92d1338c 100644
--- a/app/src/main/java/se/leap/bitmaskclient/eip/EipResultBroadcast.java
+++ b/app/src/main/java/se/leap/bitmaskclient/eip/EipResultBroadcast.java
@@ -4,7 +4,7 @@ import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.ResultReceiver;
-import android.support.v4.content.LocalBroadcastManager;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import android.util.Log;
import static android.content.Intent.CATEGORY_DEFAULT;
diff --git a/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java b/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java
index 684bd646..ad84ec5a 100644
--- a/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java
+++ b/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java
@@ -18,7 +18,7 @@ package se.leap.bitmaskclient.eip;
import android.content.Context;
import android.os.AsyncTask;
-import android.support.annotation.VisibleForTesting;
+import androidx.annotation.VisibleForTesting;
import android.util.Log;
import java.util.Observable;
diff --git a/app/src/main/java/se/leap/bitmaskclient/eip/Gateway.java b/app/src/main/java/se/leap/bitmaskclient/eip/Gateway.java
index aae622b8..66c9fe84 100644
--- a/app/src/main/java/se/leap/bitmaskclient/eip/Gateway.java
+++ b/app/src/main/java/se/leap/bitmaskclient/eip/Gateway.java
@@ -17,7 +17,7 @@
package se.leap.bitmaskclient.eip;
import android.content.Context;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
import com.google.gson.Gson;
diff --git a/app/src/main/java/se/leap/bitmaskclient/eip/VpnConfigGenerator.java b/app/src/main/java/se/leap/bitmaskclient/eip/VpnConfigGenerator.java
index 075aac71..08e219c7 100644
--- a/app/src/main/java/se/leap/bitmaskclient/eip/VpnConfigGenerator.java
+++ b/app/src/main/java/se/leap/bitmaskclient/eip/VpnConfigGenerator.java
@@ -16,7 +16,7 @@
*/
package se.leap.bitmaskclient.eip;
-import android.support.annotation.VisibleForTesting;
+import androidx.annotation.VisibleForTesting;
import org.json.JSONArray;
import org.json.JSONException;
diff --git a/app/src/main/java/se/leap/bitmaskclient/fragments/AboutFragment.java b/app/src/main/java/se/leap/bitmaskclient/fragments/AboutFragment.java
index 1a2e2df0..b7743a75 100644
--- a/app/src/main/java/se/leap/bitmaskclient/fragments/AboutFragment.java
+++ b/app/src/main/java/se/leap/bitmaskclient/fragments/AboutFragment.java
@@ -3,7 +3,7 @@ package se.leap.bitmaskclient.fragments;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
-import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
diff --git a/app/src/main/java/se/leap/bitmaskclient/fragments/AlwaysOnDialog.java b/app/src/main/java/se/leap/bitmaskclient/fragments/AlwaysOnDialog.java
index 09817b78..cb26e685 100644
--- a/app/src/main/java/se/leap/bitmaskclient/fragments/AlwaysOnDialog.java
+++ b/app/src/main/java/se/leap/bitmaskclient/fragments/AlwaysOnDialog.java
@@ -4,11 +4,11 @@ import android.app.Dialog;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v7.app.AlertDialog;
-import android.support.v7.app.AppCompatDialogFragment;
-import android.support.v7.widget.AppCompatTextView;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.app.AppCompatDialogFragment;
+import androidx.appcompat.widget.AppCompatTextView;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.CheckBox;
diff --git a/app/src/main/java/se/leap/bitmaskclient/fragments/DonationReminderDialog.java b/app/src/main/java/se/leap/bitmaskclient/fragments/DonationReminderDialog.java
index 66db9bc8..d2454d77 100644
--- a/app/src/main/java/se/leap/bitmaskclient/fragments/DonationReminderDialog.java
+++ b/app/src/main/java/se/leap/bitmaskclient/fragments/DonationReminderDialog.java
@@ -5,10 +5,10 @@ import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v7.app.AlertDialog;
-import android.support.v7.app.AppCompatDialogFragment;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.app.AppCompatDialogFragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
diff --git a/app/src/main/java/se/leap/bitmaskclient/fragments/ExcludeAppsFragment.java b/app/src/main/java/se/leap/bitmaskclient/fragments/ExcludeAppsFragment.java
index 9dc838c6..9559978b 100644
--- a/app/src/main/java/se/leap/bitmaskclient/fragments/ExcludeAppsFragment.java
+++ b/app/src/main/java/se/leap/bitmaskclient/fragments/ExcludeAppsFragment.java
@@ -11,7 +11,7 @@ import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
-import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
diff --git a/app/src/main/java/se/leap/bitmaskclient/fragments/LogFragment.java b/app/src/main/java/se/leap/bitmaskclient/fragments/LogFragment.java
index 64d199dc..19787dc3 100644
--- a/app/src/main/java/se/leap/bitmaskclient/fragments/LogFragment.java
+++ b/app/src/main/java/se/leap/bitmaskclient/fragments/LogFragment.java
@@ -19,8 +19,8 @@ import android.os.Handler;
import android.os.Handler.Callback;
import android.os.Message;
import android.preference.PreferenceManager;
-import android.support.annotation.Nullable;
-import android.support.v4.app.ListFragment;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.ListFragment;
import android.text.SpannableString;
import android.text.format.DateFormat;
import android.view.LayoutInflater;
diff --git a/app/src/main/java/se/leap/bitmaskclient/fragments/TetheringDialog.java b/app/src/main/java/se/leap/bitmaskclient/fragments/TetheringDialog.java
index 77acb657..24e3c814 100644
--- a/app/src/main/java/se/leap/bitmaskclient/fragments/TetheringDialog.java
+++ b/app/src/main/java/se/leap/bitmaskclient/fragments/TetheringDialog.java
@@ -7,12 +7,12 @@ import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.v7.app.AlertDialog;
-import android.support.v7.app.AppCompatDialogFragment;
-import android.support.v7.widget.AppCompatTextView;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.app.AppCompatDialogFragment;
+import androidx.appcompat.widget.AppCompatTextView;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.method.LinkMovementMethod;
diff --git a/app/src/main/java/se/leap/bitmaskclient/pluggableTransports/Dispatcher.java b/app/src/main/java/se/leap/bitmaskclient/pluggableTransports/Dispatcher.java
index 8e787b57..210c94b6 100644
--- a/app/src/main/java/se/leap/bitmaskclient/pluggableTransports/Dispatcher.java
+++ b/app/src/main/java/se/leap/bitmaskclient/pluggableTransports/Dispatcher.java
@@ -17,7 +17,7 @@
package se.leap.bitmaskclient.pluggableTransports;
import android.content.Context;
-import android.support.annotation.WorkerThread;
+import androidx.annotation.WorkerThread;
import android.text.TextUtils;
import android.util.Log;
diff --git a/app/src/main/java/se/leap/bitmaskclient/tethering/TetheringObservable.java b/app/src/main/java/se/leap/bitmaskclient/tethering/TetheringObservable.java
index 9bca25e9..a25f8c85 100644
--- a/app/src/main/java/se/leap/bitmaskclient/tethering/TetheringObservable.java
+++ b/app/src/main/java/se/leap/bitmaskclient/tethering/TetheringObservable.java
@@ -16,7 +16,7 @@
*/
package se.leap.bitmaskclient.tethering;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
import java.util.Observable;
diff --git a/app/src/main/java/se/leap/bitmaskclient/tethering/TetheringStateManager.java b/app/src/main/java/se/leap/bitmaskclient/tethering/TetheringStateManager.java
index 0af4c357..44e9da6e 100644
--- a/app/src/main/java/se/leap/bitmaskclient/tethering/TetheringStateManager.java
+++ b/app/src/main/java/se/leap/bitmaskclient/tethering/TetheringStateManager.java
@@ -18,7 +18,7 @@ package se.leap.bitmaskclient.tethering;
import android.content.Context;
import android.content.IntentFilter;
-import android.support.annotation.VisibleForTesting;
+import androidx.annotation.VisibleForTesting;
import java.net.Inet4Address;
import java.net.InterfaceAddress;
diff --git a/app/src/main/java/se/leap/bitmaskclient/utils/Cmd.java b/app/src/main/java/se/leap/bitmaskclient/utils/Cmd.java
index d033ed24..7b97add2 100644
--- a/app/src/main/java/se/leap/bitmaskclient/utils/Cmd.java
+++ b/app/src/main/java/se/leap/bitmaskclient/utils/Cmd.java
@@ -17,7 +17,7 @@
package se.leap.bitmaskclient.utils;
-import android.support.annotation.WorkerThread;
+import androidx.annotation.WorkerThread;
import java.io.IOException;
import java.io.InputStreamReader;
diff --git a/app/src/main/java/se/leap/bitmaskclient/utils/ConfigHelper.java b/app/src/main/java/se/leap/bitmaskclient/utils/ConfigHelper.java
index d4a640bb..2748c944 100644
--- a/app/src/main/java/se/leap/bitmaskclient/utils/ConfigHelper.java
+++ b/app/src/main/java/se/leap/bitmaskclient/utils/ConfigHelper.java
@@ -20,9 +20,9 @@ import android.content.Context;
import android.content.res.Resources;
import android.os.Build;
import android.os.Looper;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
import org.json.JSONException;
import org.json.JSONObject;
diff --git a/app/src/main/java/se/leap/bitmaskclient/utils/PreferenceHelper.java b/app/src/main/java/se/leap/bitmaskclient/utils/PreferenceHelper.java
index 238b00a1..669b7f8e 100644
--- a/app/src/main/java/se/leap/bitmaskclient/utils/PreferenceHelper.java
+++ b/app/src/main/java/se/leap/bitmaskclient/utils/PreferenceHelper.java
@@ -2,7 +2,7 @@ package se.leap.bitmaskclient.utils;
import android.content.Context;
import android.content.SharedPreferences;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
import org.json.JSONException;
import org.json.JSONObject;
diff --git a/app/src/main/java/se/leap/bitmaskclient/utils/ViewHelper.java b/app/src/main/java/se/leap/bitmaskclient/utils/ViewHelper.java
index 86af3479..5f4fc2a6 100644
--- a/app/src/main/java/se/leap/bitmaskclient/utils/ViewHelper.java
+++ b/app/src/main/java/se/leap/bitmaskclient/utils/ViewHelper.java
@@ -1,9 +1,8 @@
package se.leap.bitmaskclient.utils;
import android.content.Context;
-import android.content.res.Resources;
-import android.support.annotation.DimenRes;
-import android.util.DisplayMetrics;
+
+import androidx.annotation.DimenRes;
/**
* Created by cyberta on 29.06.18.
diff --git a/app/src/main/java/se/leap/bitmaskclient/views/IconCheckboxEntry.java b/app/src/main/java/se/leap/bitmaskclient/views/IconCheckboxEntry.java
index ca44592e..efe20b4c 100644
--- a/app/src/main/java/se/leap/bitmaskclient/views/IconCheckboxEntry.java
+++ b/app/src/main/java/se/leap/bitmaskclient/views/IconCheckboxEntry.java
@@ -3,10 +3,10 @@ package se.leap.bitmaskclient.views;
import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.drawable.Drawable;
-import android.support.annotation.Nullable;
-import android.support.v4.content.ContextCompat;
-import android.support.v4.graphics.drawable.DrawableCompat;
-import android.support.v7.widget.AppCompatImageView;
+import androidx.annotation.Nullable;
+import androidx.core.content.ContextCompat;
+import androidx.core.graphics.drawable.DrawableCompat;
+import androidx.appcompat.widget.AppCompatImageView;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
diff --git a/app/src/main/java/se/leap/bitmaskclient/views/IconSwitchEntry.java b/app/src/main/java/se/leap/bitmaskclient/views/IconSwitchEntry.java
index b41f3a50..c9b6024d 100644
--- a/app/src/main/java/se/leap/bitmaskclient/views/IconSwitchEntry.java
+++ b/app/src/main/java/se/leap/bitmaskclient/views/IconSwitchEntry.java
@@ -4,16 +4,15 @@ import android.annotation.TargetApi;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-import android.support.v7.widget.AppCompatImageView;
-import android.support.v7.widget.SwitchCompat;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+import androidx.appcompat.widget.AppCompatImageView;
+import androidx.appcompat.widget.SwitchCompat;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.CompoundButton;
-import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
diff --git a/app/src/main/java/se/leap/bitmaskclient/views/IconTextEntry.java b/app/src/main/java/se/leap/bitmaskclient/views/IconTextEntry.java
index cd151885..7a1717e9 100644
--- a/app/src/main/java/se/leap/bitmaskclient/views/IconTextEntry.java
+++ b/app/src/main/java/se/leap/bitmaskclient/views/IconTextEntry.java
@@ -4,10 +4,10 @@ import android.annotation.TargetApi;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
-import android.support.annotation.ColorRes;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
+import androidx.annotation.ColorRes;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
diff --git a/app/src/main/java/se/leap/bitmaskclient/views/IconTextView.java b/app/src/main/java/se/leap/bitmaskclient/views/IconTextView.java
index 0af33c68..29c70859 100644
--- a/app/src/main/java/se/leap/bitmaskclient/views/IconTextView.java
+++ b/app/src/main/java/se/leap/bitmaskclient/views/IconTextView.java
@@ -4,7 +4,7 @@ package se.leap.bitmaskclient.views;
import android.content.Context;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
-import android.support.v7.widget.AppCompatTextView;
+import androidx.appcompat.widget.AppCompatTextView;
import android.text.Spannable;
import android.text.style.ImageSpan;
import android.util.AttributeSet;
diff --git a/app/src/main/java/se/leap/bitmaskclient/views/ProviderHeaderView.java b/app/src/main/java/se/leap/bitmaskclient/views/ProviderHeaderView.java
index ab5d6bc8..4fa3771b 100644
--- a/app/src/main/java/se/leap/bitmaskclient/views/ProviderHeaderView.java
+++ b/app/src/main/java/se/leap/bitmaskclient/views/ProviderHeaderView.java
@@ -1,11 +1,11 @@
package se.leap.bitmaskclient.views;
import android.content.Context;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.RequiresApi;
-import android.support.annotation.StringRes;
-import android.support.v7.widget.AppCompatImageView;
-import android.support.v7.widget.AppCompatTextView;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.RequiresApi;
+import androidx.annotation.StringRes;
+import androidx.appcompat.widget.AppCompatImageView;
+import androidx.appcompat.widget.AppCompatTextView;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
diff --git a/app/src/main/java/se/leap/bitmaskclient/views/VpnStateImage.java b/app/src/main/java/se/leap/bitmaskclient/views/VpnStateImage.java
index 86761642..c0432edc 100644
--- a/app/src/main/java/se/leap/bitmaskclient/views/VpnStateImage.java
+++ b/app/src/main/java/se/leap/bitmaskclient/views/VpnStateImage.java
@@ -17,8 +17,8 @@
package se.leap.bitmaskclient.views;
import android.content.Context;
-import android.support.constraint.ConstraintLayout;
-import android.support.v7.widget.AppCompatImageView;
+import androidx.constraintlayout.widget.ConstraintLayout;
+import androidx.appcompat.widget.AppCompatImageView;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
diff --git a/app/src/main/res/layout-xlarge-port/a_add_provider.xml b/app/src/main/res/layout-xlarge-port/a_add_provider.xml
index 67aef3d6..2ec2f1b7 100644
--- a/app/src/main/res/layout-xlarge-port/a_add_provider.xml
+++ b/app/src/main/res/layout-xlarge-port/a_add_provider.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
style="@style/BitmaskActivity"
@@ -7,35 +7,35 @@
android:layout_height="match_parent"
tools:context=".ProviderCredentialsBaseActivity">
- <android.support.v7.widget.AppCompatImageView
+ <androidx.appcompat.widget.AppCompatImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:srcCompat="@drawable/background_main"
android:scaleType="centerCrop"
/>
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.2" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.8" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.275" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_bottom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -43,4 +43,4 @@
app:layout_constraintGuide_percent="0.725" />
<include layout="@layout/a_add_provider_tablet_scrollview"/>
-</android.support.constraint.ConstraintLayout> \ No newline at end of file
+</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout-xlarge-port/a_custom_provider_setup.xml b/app/src/main/res/layout-xlarge-port/a_custom_provider_setup.xml
index f32cdd65..1f285968 100644
--- a/app/src/main/res/layout-xlarge-port/a_custom_provider_setup.xml
+++ b/app/src/main/res/layout-xlarge-port/a_custom_provider_setup.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/provider_list_layout"
@@ -8,35 +8,35 @@
android:layout_height="match_parent"
tools:context=".CustomProviderSetupActivity">
- <android.support.v7.widget.AppCompatImageView
+ <androidx.appcompat.widget.AppCompatImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:srcCompat="@drawable/background_main"
android:scaleType="centerCrop"
/>
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.2" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.8" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.275" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_bottom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -45,4 +45,4 @@
<include layout="@layout/a_custom_provider_setup_tablet_linear_layout" />
-</android.support.constraint.ConstraintLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/app/src/main/res/layout-xlarge-port/a_provider_credentials.xml b/app/src/main/res/layout-xlarge-port/a_provider_credentials.xml
index ab140a2e..73c2131c 100644
--- a/app/src/main/res/layout-xlarge-port/a_provider_credentials.xml
+++ b/app/src/main/res/layout-xlarge-port/a_provider_credentials.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
style="@style/BitmaskActivity"
@@ -7,35 +7,35 @@
android:layout_height="match_parent"
tools:context=".ProviderCredentialsBaseActivity">
- <android.support.v7.widget.AppCompatImageView
+ <androidx.appcompat.widget.AppCompatImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:srcCompat="@drawable/background_main"
android:scaleType="centerCrop"
/>
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.2" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.8" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.275" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_bottom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -43,4 +43,4 @@
app:layout_constraintGuide_percent="0.725" />
<include layout="@layout/a_provider_credentials_tablet_linear_layout"/>
-</android.support.constraint.ConstraintLayout> \ No newline at end of file
+</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout-xlarge-port/a_provider_detail.xml b/app/src/main/res/layout-xlarge-port/a_provider_detail.xml
index dac21eaf..cb2045c9 100644
--- a/app/src/main/res/layout-xlarge-port/a_provider_detail.xml
+++ b/app/src/main/res/layout-xlarge-port/a_provider_detail.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/provider_list_layout"
@@ -8,35 +8,35 @@
tools:context=".ProviderDetailActivity"
style="@style/BitmaskActivity">
- <android.support.v7.widget.AppCompatImageView
+ <androidx.appcompat.widget.AppCompatImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:srcCompat="@drawable/background_main"
android:scaleType="centerCrop"
/>
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.2" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.8" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.275" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_bottom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -44,4 +44,4 @@
app:layout_constraintGuide_percent="0.725" />
<include layout="@layout/a_provider_detail_tablet_linear_layout" />
-</android.support.constraint.ConstraintLayout> \ No newline at end of file
+</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout-xlarge-port/a_provider_list.xml b/app/src/main/res/layout-xlarge-port/a_provider_list.xml
index 61ea6882..94829b42 100644
--- a/app/src/main/res/layout-xlarge-port/a_provider_list.xml
+++ b/app/src/main/res/layout-xlarge-port/a_provider_list.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/provider_list_layout"
@@ -8,35 +8,35 @@
android:layout_height="match_parent"
tools:context=".ProviderListActivity">
- <android.support.v7.widget.AppCompatImageView
+ <androidx.appcompat.widget.AppCompatImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:srcCompat="@drawable/background_main"
android:scaleType="centerCrop"
/>
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.2" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.8" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.275" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_bottom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -44,4 +44,4 @@
app:layout_constraintGuide_percent="0.725" />
<include layout="@layout/a_provider_list_tablet_linear_layout" />
-</android.support.constraint.ConstraintLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/app/src/main/res/layout-xlarge/a_add_provider.xml b/app/src/main/res/layout-xlarge/a_add_provider.xml
index 4e6abd3d..8cfd43c5 100644
--- a/app/src/main/res/layout-xlarge/a_add_provider.xml
+++ b/app/src/main/res/layout-xlarge/a_add_provider.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
style="@style/BitmaskActivity"
@@ -7,35 +7,35 @@
android:layout_height="match_parent"
tools:context=".ProviderCredentialsBaseActivity">
- <android.support.v7.widget.AppCompatImageView
+ <androidx.appcompat.widget.AppCompatImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:srcCompat="@drawable/background_main"
android:scaleType="centerCrop"
/>
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.2" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.8" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.15" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_bottom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -43,4 +43,4 @@
app:layout_constraintGuide_percent="0.85" />
<include layout="@layout/a_add_provider_tablet_scrollview"/>
-</android.support.constraint.ConstraintLayout> \ No newline at end of file
+</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout-xlarge/a_custom_provider_setup.xml b/app/src/main/res/layout-xlarge/a_custom_provider_setup.xml
index a6578c2a..7c9a1798 100644
--- a/app/src/main/res/layout-xlarge/a_custom_provider_setup.xml
+++ b/app/src/main/res/layout-xlarge/a_custom_provider_setup.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/provider_list_layout"
@@ -8,35 +8,35 @@
android:layout_height="match_parent"
tools:context=".CustomProviderSetupActivity">
- <android.support.v7.widget.AppCompatImageView
+ <androidx.appcompat.widget.AppCompatImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:srcCompat="@drawable/background_main"
android:scaleType="centerCrop"
/>
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.2" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.8" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.15" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_bottom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -45,4 +45,4 @@
<include layout="@layout/a_custom_provider_setup_tablet_linear_layout" />
-</android.support.constraint.ConstraintLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/app/src/main/res/layout-xlarge/a_provider_credentials.xml b/app/src/main/res/layout-xlarge/a_provider_credentials.xml
index 02ad25f9..2cf9e16a 100644
--- a/app/src/main/res/layout-xlarge/a_provider_credentials.xml
+++ b/app/src/main/res/layout-xlarge/a_provider_credentials.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
style="@style/BitmaskActivity"
@@ -7,35 +7,35 @@
android:layout_height="match_parent"
tools:context=".ProviderCredentialsBaseActivity">
- <android.support.v7.widget.AppCompatImageView
+ <androidx.appcompat.widget.AppCompatImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:srcCompat="@drawable/background_main"
android:scaleType="centerCrop"
/>
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.2" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.8" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.15" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_bottom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -43,4 +43,4 @@
app:layout_constraintGuide_percent="0.85" />
<include layout="@layout/a_provider_credentials_tablet_linear_layout"/>
-</android.support.constraint.ConstraintLayout> \ No newline at end of file
+</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout-xlarge/a_provider_detail.xml b/app/src/main/res/layout-xlarge/a_provider_detail.xml
index 75aa8bbd..bead7d92 100644
--- a/app/src/main/res/layout-xlarge/a_provider_detail.xml
+++ b/app/src/main/res/layout-xlarge/a_provider_detail.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/provider_list_layout"
@@ -8,35 +8,35 @@
tools:context=".ProviderDetailActivity"
style="@style/BitmaskActivity">
- <android.support.v7.widget.AppCompatImageView
+ <androidx.appcompat.widget.AppCompatImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:srcCompat="@drawable/background_main"
android:scaleType="centerCrop"
/>
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.2" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.8" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.15" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_bottom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -44,4 +44,4 @@
app:layout_constraintGuide_percent="0.85" />
<include layout="@layout/a_provider_detail_tablet_linear_layout" />
-</android.support.constraint.ConstraintLayout> \ No newline at end of file
+</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout-xlarge/a_provider_list.xml b/app/src/main/res/layout-xlarge/a_provider_list.xml
index 7bdcba9e..58d75246 100644
--- a/app/src/main/res/layout-xlarge/a_provider_list.xml
+++ b/app/src/main/res/layout-xlarge/a_provider_list.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/provider_list_layout"
@@ -8,35 +8,35 @@
android:layout_height="match_parent"
tools:context=".ProviderListActivity">
- <android.support.v7.widget.AppCompatImageView
+ <androidx.appcompat.widget.AppCompatImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:srcCompat="@drawable/background_main"
android:scaleType="centerCrop"
/>
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.2" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.8" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.15" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_bottom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -44,4 +44,4 @@
app:layout_constraintGuide_percent="0.85" />
<include layout="@layout/a_provider_list_tablet_linear_layout" />
-</android.support.constraint.ConstraintLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/app/src/main/res/layout-xlarge/f_eip.xml b/app/src/main/res/layout-xlarge/f_eip.xml
index 1c355d58..fdaab8ca 100644
--- a/app/src/main/res/layout-xlarge/f_eip.xml
+++ b/app/src/main/res/layout-xlarge/f_eip.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
@@ -7,7 +7,7 @@
android:id="@+id/eipServiceFragment"
>
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_horizontal_top"
android:layout_width="0dp"
android:layout_height="0dp"
@@ -17,7 +17,7 @@
app:layout_constraintGuide_percent="0.3"
/>
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_vertical_left"
android:layout_width="0dp"
android:layout_height="0dp"
@@ -27,7 +27,7 @@
/>
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_horizontal_bottom"
android:layout_width="0dp"
android:layout_height="0dp"
@@ -37,7 +37,7 @@
app:layout_constraintGuide_percent="0.7"
/>
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_vertical_right"
android:layout_width="0dp"
android:layout_height="0dp"
@@ -46,7 +46,7 @@
app:layout_constraintGuide_percent="0.7"
/>
- <android.support.v7.widget.AppCompatImageView
+ <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/background"
android:layout_width="match_parent"
android:layout_height="match_parent"
@@ -54,7 +54,7 @@
app:srcCompat="@drawable/background_eip" />
- <android.support.v7.widget.AppCompatTextView
+ <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/eipLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -80,7 +80,7 @@
app:layout_constraintTop_toTopOf="@+id/guideline_horizontal_top"
app:layout_constraintDimensionRatio="1:1" />
- <android.support.v7.widget.AppCompatButton
+ <androidx.appcompat.widget.AppCompatButton
android:id="@+id/vpn_main_button"
android:layout_width="wrap_content"
android:layout_height="40dp"
@@ -101,7 +101,7 @@
style="@style/BitmaskButtonBlack"
/>
- <android.support.v7.widget.AppCompatTextView
+ <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/routed_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -116,7 +116,7 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/eipLabel" />
- <android.support.v7.widget.AppCompatTextView
+ <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/vpn_route"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -129,4 +129,4 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/routed_text" />
-</android.support.constraint.ConstraintLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/app/src/main/res/layout-xlarge/v_loading_screen.xml b/app/src/main/res/layout-xlarge/v_loading_screen.xml
index 2af6b411..a002665f 100644
--- a/app/src/main/res/layout-xlarge/v_loading_screen.xml
+++ b/app/src/main/res/layout-xlarge/v_loading_screen.xml
@@ -7,7 +7,7 @@
android:orientation="vertical"
android:visibility="gone">
- <android.support.v7.widget.AppCompatImageView
+ <androidx.appcompat.widget.AppCompatImageView
android:layout_width="32dp"
android:layout_height="32dp"
android:adjustViewBounds="true"
@@ -17,7 +17,7 @@
android:layout_marginBottom="@dimen/loading_screen_icon_vertical_margin"
/>
- <android.support.v7.widget.AppCompatTextView
+ <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/progressbar_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout-xlarge/v_provider_header.xml b/app/src/main/res/layout-xlarge/v_provider_header.xml
index cbd5813c..6d826783 100644
--- a/app/src/main/res/layout-xlarge/v_provider_header.xml
+++ b/app/src/main/res/layout-xlarge/v_provider_header.xml
@@ -4,14 +4,14 @@
android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto" >
- <android.support.v7.widget.AppCompatImageView
+ <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/provider_header_logo"
android:layout_width="@dimen/bitmask_logo"
android:layout_height="@dimen/bitmask_logo"
android:adjustViewBounds="true"
app:srcCompat="@drawable/logo" />
- <android.support.v7.widget.AppCompatTextView
+ <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/provider_header_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout-xlarge/v_switch_list_item.xml b/app/src/main/res/layout-xlarge/v_switch_list_item.xml
index 8ad83650..3fa2ac7d 100644
--- a/app/src/main/res/layout-xlarge/v_switch_list_item.xml
+++ b/app/src/main/res/layout-xlarge/v_switch_list_item.xml
@@ -5,7 +5,7 @@
android:layout_width="match_parent"
>
- <android.support.v7.widget.AppCompatImageView
+ <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/material_icon"
android:layout_width="?android:attr/listPreferredItemHeight"
android:layout_height="?android:attr/listPreferredItemHeight"
@@ -54,7 +54,7 @@
android:layout_toRightOf="@+id/material_icon"
/>
- <android.support.v7.widget.SwitchCompat
+ <androidx.appcompat.widget.SwitchCompat
android:id="@+id/option_switch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/a_add_provider.xml b/app/src/main/res/layout/a_add_provider.xml
index c1322bef..eab1693e 100644
--- a/app/src/main/res/layout/a_add_provider.xml
+++ b/app/src/main/res/layout/a_add_provider.xml
@@ -23,7 +23,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
- <android.support.design.widget.TextInputLayout
+ <com.google.android.material.textfield.TextInputLayout
android:id="@+id/text_uri_error"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -31,14 +31,14 @@
android:hint="@string/new_provider_uri"
app:errorEnabled="true">
- <android.support.design.widget.TextInputEditText
+ <com.google.android.material.textfield.TextInputEditText
android:id="@+id/text_uri"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="text" />
- </android.support.design.widget.TextInputLayout>
+ </com.google.android.material.textfield.TextInputLayout>
<RelativeLayout
android:layout_width="match_parent"
diff --git a/app/src/main/res/layout/a_add_provider_tablet_scrollview.xml b/app/src/main/res/layout/a_add_provider_tablet_scrollview.xml
index 4510af7d..31c8d07c 100644
--- a/app/src/main/res/layout/a_add_provider_tablet_scrollview.xml
+++ b/app/src/main/res/layout/a_add_provider_tablet_scrollview.xml
@@ -28,7 +28,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
- <android.support.design.widget.TextInputLayout
+ <com.google.android.material.textfield.TextInputLayout
android:id="@+id/text_uri_error"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -36,14 +36,14 @@
android:hint="@string/new_provider_uri"
app:errorEnabled="true">
- <android.support.design.widget.TextInputEditText
+ <com.google.android.material.textfield.TextInputEditText
android:id="@+id/text_uri"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="text" />
- </android.support.design.widget.TextInputLayout>
+ </com.google.android.material.textfield.TextInputLayout>
<RelativeLayout
android:layout_width="match_parent"
diff --git a/app/src/main/res/layout/a_main.xml b/app/src/main/res/layout/a_main.xml
index 0344e5af..1977be74 100644
--- a/app/src/main/res/layout/a_main.xml
+++ b/app/src/main/res/layout/a_main.xml
@@ -1,5 +1,5 @@
<!-- A DrawerLayout is intended to be used as the top-level content view using match_parent for both width and height to consume the full space available. -->
-<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
@@ -15,7 +15,7 @@
android:layout_height="match_parent"
android:orientation="vertical">
- <android.support.v7.widget.Toolbar
+ <androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:minHeight="?attr/actionBarSize"
android:layout_width="match_parent"
@@ -23,7 +23,7 @@
app:titleTextColor="@color/colorActionBarTitleFont"
app:subtitleTextColor="@color/colorActionBarSubtitleFont"
android:background="?attr/colorPrimary">
- </android.support.v7.widget.Toolbar>
+ </androidx.appcompat.widget.Toolbar>
<FrameLayout
android:id="@+id/main_container"
@@ -40,4 +40,4 @@
android:layout_gravity="start"
tools:layout="@layout/f_drawer_main" />
-</android.support.v4.widget.DrawerLayout>
+</androidx.drawerlayout.widget.DrawerLayout>
diff --git a/app/src/main/res/layout/a_provider_credentials.xml b/app/src/main/res/layout/a_provider_credentials.xml
index 99287cfe..93f44208 100644
--- a/app/src/main/res/layout/a_provider_credentials.xml
+++ b/app/src/main/res/layout/a_provider_credentials.xml
@@ -37,7 +37,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content" />
- <android.support.v7.widget.AppCompatButton
+ <androidx.appcompat.widget.AppCompatButton
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/a_provider_credentials_tablet_linear_layout.xml b/app/src/main/res/layout/a_provider_credentials_tablet_linear_layout.xml
index 486d0419..bf022d51 100644
--- a/app/src/main/res/layout/a_provider_credentials_tablet_linear_layout.xml
+++ b/app/src/main/res/layout/a_provider_credentials_tablet_linear_layout.xml
@@ -43,7 +43,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content" />
- <android.support.v7.widget.AppCompatButton
+ <androidx.appcompat.widget.AppCompatButton
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/a_provider_detail.xml b/app/src/main/res/layout/a_provider_detail.xml
index 11f4957d..840d60df 100644
--- a/app/src/main/res/layout/a_provider_detail.xml
+++ b/app/src/main/res/layout/a_provider_detail.xml
@@ -20,7 +20,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content" />
- <android.support.v7.widget.AppCompatTextView
+ <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/provider_detail_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/a_provider_detail_tablet_linear_layout.xml b/app/src/main/res/layout/a_provider_detail_tablet_linear_layout.xml
index 14400672..51c5ab0f 100644
--- a/app/src/main/res/layout/a_provider_detail_tablet_linear_layout.xml
+++ b/app/src/main/res/layout/a_provider_detail_tablet_linear_layout.xml
@@ -28,7 +28,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
- <android.support.v7.widget.AppCompatTextView
+ <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/provider_detail_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/d_checkbox_confirm.xml b/app/src/main/res/layout/d_checkbox_confirm.xml
index a9a84c0e..b2b61eca 100644
--- a/app/src/main/res/layout/d_checkbox_confirm.xml
+++ b/app/src/main/res/layout/d_checkbox_confirm.xml
@@ -10,7 +10,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical">
- <android.support.v7.widget.AppCompatTextView
+ <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tvTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -36,7 +36,7 @@
android:textSize="17sp"
/>
- <android.support.v7.widget.AppCompatTextView
+ <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/block_vpn_user_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/d_list_selection.xml b/app/src/main/res/layout/d_list_selection.xml
index ef963303..d9a1b013 100644
--- a/app/src/main/res/layout/d_list_selection.xml
+++ b/app/src/main/res/layout/d_list_selection.xml
@@ -10,7 +10,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical">
- <android.support.v7.widget.AppCompatTextView
+ <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tvTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -23,7 +23,7 @@
android:textStyle="bold"
/>
- <android.support.v7.widget.AppCompatTextView
+ <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/user_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -34,7 +34,7 @@
android:textSize="17sp"
/>
- <android.support.v7.widget.RecyclerView
+ <androidx.recyclerview.widget.RecyclerView
android:id="@+id/selection_list_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/donation_reminder_dialog.xml b/app/src/main/res/layout/donation_reminder_dialog.xml
index 7a41474a..dc16906b 100644
--- a/app/src/main/res/layout/donation_reminder_dialog.xml
+++ b/app/src/main/res/layout/donation_reminder_dialog.xml
@@ -32,7 +32,7 @@
android:gravity="center"
android:text="@string/donate_message" />
- <android.support.v7.widget.CardView
+ <androidx.cardview.widget.CardView
android:layout_width="120dp"
android:layout_height="120dp"
android:innerRadius="0dp"
@@ -44,7 +44,7 @@
android:layout_height="match_parent"
android:scaleType="centerCrop"
app:srcCompat="@drawable/donation_img" />
- </android.support.v7.widget.CardView>
+ </androidx.cardview.widget.CardView>
<Button
diff --git a/app/src/main/res/layout/f_drawer_main.xml b/app/src/main/res/layout/f_drawer_main.xml
index 7e6291b7..5a0977da 100644
--- a/app/src/main/res/layout/f_drawer_main.xml
+++ b/app/src/main/res/layout/f_drawer_main.xml
@@ -20,7 +20,7 @@
android:layout_width="match_parent"
android:layout_height="150dp">
- <android.support.v7.widget.AppCompatImageView
+ <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/background"
android:layout_width="match_parent"
android:layout_height="match_parent"
@@ -29,7 +29,7 @@
android:scaleType="fitXY"
app:srcCompat="@drawable/background_drawer" />
- <android.support.v7.widget.AppCompatImageView
+ <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/foreground"
android:layout_width="match_parent"
android:layout_height="match_parent"
diff --git a/app/src/main/res/layout/f_eip.xml b/app/src/main/res/layout/f_eip.xml
index 960c6fca..01feb0cd 100644
--- a/app/src/main/res/layout/f_eip.xml
+++ b/app/src/main/res/layout/f_eip.xml
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/eipServiceFragment">
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_horizontal_top"
android:layout_width="0dp"
android:layout_height="0dp"
@@ -16,7 +16,7 @@
app:layout_constraintGuide_percent="0.225"
/>
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_vertical_left"
android:layout_width="0dp"
android:layout_height="0dp"
@@ -26,7 +26,7 @@
/>
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_horizontal_bottom"
android:layout_width="0dp"
android:layout_height="0dp"
@@ -36,7 +36,7 @@
app:layout_constraintGuide_percent="0.775"
/>
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_vertical_right"
android:layout_width="0dp"
android:layout_height="0dp"
@@ -45,7 +45,7 @@
app:layout_constraintGuide_percent="0.775"
/>
- <android.support.v7.widget.AppCompatImageView
+ <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/background"
android:layout_width="match_parent"
android:layout_height="match_parent"
@@ -53,7 +53,7 @@
app:srcCompat="@drawable/background_eip" />
- <android.support.v7.widget.AppCompatTextView
+ <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/eipLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -82,7 +82,7 @@
app:layout_constraintDimensionRatio="1:1"
/>
- <android.support.v7.widget.AppCompatButton
+ <androidx.appcompat.widget.AppCompatButton
android:id="@+id/vpn_main_button"
android:layout_width="wrap_content"
android:layout_height="32dp"
@@ -103,7 +103,7 @@
style="@style/BitmaskButtonBlack"
/>
- <android.support.v7.widget.AppCompatTextView
+ <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/routed_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -119,7 +119,7 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/eipLabel" />
- <android.support.v7.widget.AppCompatTextView
+ <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/vpn_route"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -132,4 +132,4 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/routed_text" />
-</android.support.constraint.ConstraintLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/app/src/main/res/layout/v_add_provider.xml b/app/src/main/res/layout/v_add_provider.xml
index 44146fb5..afcae4af 100644
--- a/app/src/main/res/layout/v_add_provider.xml
+++ b/app/src/main/res/layout/v_add_provider.xml
@@ -7,7 +7,7 @@
android:orientation="vertical"
android:visibility="gone">
- <android.support.v7.widget.AppCompatImageView
+ <androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
@@ -17,7 +17,7 @@
android:layout_marginBottom="@dimen/loading_screen_icon_vertical_margin"
/>
- <android.support.v7.widget.AppCompatTextView
+ <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/progressbar_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/v_icon_select_text_list_item.xml b/app/src/main/res/layout/v_icon_select_text_list_item.xml
index 2fa56b46..f38bac6e 100644
--- a/app/src/main/res/layout/v_icon_select_text_list_item.xml
+++ b/app/src/main/res/layout/v_icon_select_text_list_item.xml
@@ -5,7 +5,7 @@
android:orientation="horizontal"
xmlns:tools="http://schemas.android.com/tools">
- <android.support.v7.widget.AppCompatImageView
+ <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/material_icon"
android:layout_width="?android:attr/listPreferredItemHeightSmall"
android:layout_height="?android:attr/listPreferredItemHeightSmall"
@@ -31,7 +31,7 @@
android:layout_toRightOf="@+id/material_icon"
/>
- <android.support.v7.widget.AppCompatImageView
+ <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/checked_icon"
android:layout_width="?android:attr/listPreferredItemHeightSmall"
android:layout_height="?android:attr/listPreferredItemHeightSmall"
diff --git a/app/src/main/res/layout/v_loading_screen.xml b/app/src/main/res/layout/v_loading_screen.xml
index f4c7eb95..a3498e97 100644
--- a/app/src/main/res/layout/v_loading_screen.xml
+++ b/app/src/main/res/layout/v_loading_screen.xml
@@ -7,7 +7,7 @@
android:orientation="vertical"
android:visibility="gone">
- <android.support.v7.widget.AppCompatImageView
+ <androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
@@ -17,7 +17,7 @@
android:layout_marginBottom="@dimen/loading_screen_icon_vertical_margin"
/>
- <android.support.v7.widget.AppCompatTextView
+ <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/progressbar_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/v_main_button.xml b/app/src/main/res/layout/v_main_button.xml
index 06504f3c..d8ae211c 100644
--- a/app/src/main/res/layout/v_main_button.xml
+++ b/app/src/main/res/layout/v_main_button.xml
@@ -1,33 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout
+<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/vpn_btn_guideline_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.125" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/vpn_btn_guideline_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.875" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/vpn_btn_guideline_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.125" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/vpn_btn_guideline_bottom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -35,56 +35,56 @@
app:layout_constraintGuide_percent="0.875" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/icn_guideline_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.2" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/icn_guideline_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.8" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/icn_guideline_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.2" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/icn_guideline_bottom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.8" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/border_guideline_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.025" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/border_guideline_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.975" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/border_guideline_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.025" />
- <android.support.constraint.Guideline
+ <androidx.constraintlayout.widget.Guideline
android:id="@+id/border_guideline_bottom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -109,7 +109,7 @@
android:indeterminateBehavior="cycle"
/>
- <android.support.v7.widget.AppCompatImageView
+ <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/circle"
android:layout_width="0dp"
android:layout_height="0dp"
@@ -119,7 +119,7 @@
app:layout_constraintTop_toTopOf="@+id/vpn_btn_guideline_top"
app:srcCompat="@drawable/black_circle" />
- <android.support.v7.widget.AppCompatImageView
+ <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/vpn_state_key"
android:layout_width="0dp"
android:layout_height="0dp"
@@ -129,4 +129,4 @@
app:layout_constraintTop_toTopOf="@id/icn_guideline_top"
app:srcCompat="@drawable/vpn_connected" />
-</android.support.constraint.ConstraintLayout> \ No newline at end of file
+</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout/v_provider_credentials.xml b/app/src/main/res/layout/v_provider_credentials.xml
index 65f554aa..be40c233 100644
--- a/app/src/main/res/layout/v_provider_credentials.xml
+++ b/app/src/main/res/layout/v_provider_credentials.xml
@@ -2,7 +2,7 @@
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
- <android.support.v7.widget.AppCompatTextView
+ <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/provider_credentials_user_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -11,7 +11,7 @@
android:linksClickable="true"
/>
- <android.support.design.widget.TextInputLayout
+ <com.google.android.material.textfield.TextInputLayout
android:id="@+id/provider_credentials_username_error"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -20,16 +20,16 @@
android:layout_marginTop="@dimen/standard_margin"
app:errorTextAppearance="@style/error_appearance">
- <android.support.design.widget.TextInputEditText
+ <com.google.android.material.textfield.TextInputEditText
android:id="@+id/provider_credentials_username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="text" />
- </android.support.design.widget.TextInputLayout>
+ </com.google.android.material.textfield.TextInputLayout>
- <android.support.design.widget.TextInputLayout
+ <com.google.android.material.textfield.TextInputLayout
android:id="@+id/provider_credentials_password_error"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -38,16 +38,16 @@
app:errorEnabled="true"
app:errorTextAppearance="@style/error_appearance">
- <android.support.design.widget.TextInputEditText
+ <com.google.android.material.textfield.TextInputEditText
android:id="@+id/provider_credentials_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
/>
- </android.support.design.widget.TextInputLayout>
+ </com.google.android.material.textfield.TextInputLayout>
- <android.support.design.widget.TextInputLayout
+ <com.google.android.material.textfield.TextInputLayout
android:id="@+id/provider_credentials_password_verification_error"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -57,7 +57,7 @@
android:visibility="gone"
app:errorTextAppearance="@style/error_appearance">
- <android.support.design.widget.TextInputEditText
+ <com.google.android.material.textfield.TextInputEditText
android:id="@+id/provider_credentials_password_verification"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -65,5 +65,5 @@
android:visibility="gone"
/>
- </android.support.design.widget.TextInputLayout>
+ </com.google.android.material.textfield.TextInputLayout>
</merge> \ No newline at end of file
diff --git a/app/src/main/res/layout/v_provider_header.xml b/app/src/main/res/layout/v_provider_header.xml
index 823f3163..e0961ea6 100644
--- a/app/src/main/res/layout/v_provider_header.xml
+++ b/app/src/main/res/layout/v_provider_header.xml
@@ -4,14 +4,14 @@
android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto" >
- <android.support.v7.widget.AppCompatImageView
+ <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/provider_header_logo"
android:layout_width="@dimen/bitmask_logo"
android:layout_height="@dimen/bitmask_logo"
android:adjustViewBounds="true"
app:srcCompat="@drawable/logo" />
- <android.support.v7.widget.AppCompatTextView
+ <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/provider_header_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/v_switch_list_item.xml b/app/src/main/res/layout/v_switch_list_item.xml
index 6a2e4a8d..b595e7ce 100644
--- a/app/src/main/res/layout/v_switch_list_item.xml
+++ b/app/src/main/res/layout/v_switch_list_item.xml
@@ -5,7 +5,7 @@
android:layout_width="match_parent"
>
- <android.support.v7.widget.AppCompatImageView
+ <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/material_icon"
android:layout_width="?android:attr/listPreferredItemHeightSmall"
android:layout_height="?android:attr/listPreferredItemHeightSmall"
@@ -54,7 +54,7 @@
android:layout_toRightOf="@+id/material_icon"
/>
- <android.support.v7.widget.SwitchCompat
+ <androidx.appcompat.widget.SwitchCompat
android:id="@+id/option_switch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/app/src/production/java/se/leap/bitmaskclient/AddProviderActivity.java b/app/src/production/java/se/leap/bitmaskclient/AddProviderActivity.java
index 32c78c38..ed076d3f 100644
--- a/app/src/production/java/se/leap/bitmaskclient/AddProviderActivity.java
+++ b/app/src/production/java/se/leap/bitmaskclient/AddProviderActivity.java
@@ -1,11 +1,6 @@
package se.leap.bitmaskclient;
-import android.content.Intent;
import android.os.Bundle;
-import android.support.design.widget.TextInputEditText;
-import android.support.design.widget.TextInputLayout;
-import android.text.Editable;
-import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
diff --git a/app/src/production/java/se/leap/bitmaskclient/ProviderApiManager.java b/app/src/production/java/se/leap/bitmaskclient/ProviderApiManager.java
index 6f1e3034..ceaeebc0 100644
--- a/app/src/production/java/se/leap/bitmaskclient/ProviderApiManager.java
+++ b/app/src/production/java/se/leap/bitmaskclient/ProviderApiManager.java
@@ -20,7 +20,7 @@ package se.leap.bitmaskclient;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.os.Bundle;
-import android.support.multidex.BuildConfig;
+import androidx.multidex.BuildConfig;
import android.util.Pair;
import org.json.JSONException;
diff --git a/app/src/production/java/se/leap/bitmaskclient/ProviderListActivity.java b/app/src/production/java/se/leap/bitmaskclient/ProviderListActivity.java
index 7c617e29..cf327791 100644
--- a/app/src/production/java/se/leap/bitmaskclient/ProviderListActivity.java
+++ b/app/src/production/java/se/leap/bitmaskclient/ProviderListActivity.java
@@ -16,7 +16,7 @@
*/
package se.leap.bitmaskclient;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
import static se.leap.bitmaskclient.ProviderAPI.SET_UP_PROVIDER;
import static se.leap.bitmaskclient.ProviderSetupInterface.ProviderConfigState.SETTING_UP_PROVIDER;
diff --git a/app/src/test/java/se/leap/bitmaskclient/testutils/MockHelper.java b/app/src/test/java/se/leap/bitmaskclient/testutils/MockHelper.java
index c0fc6531..1c205c83 100644
--- a/app/src/test/java/se/leap/bitmaskclient/testutils/MockHelper.java
+++ b/app/src/test/java/se/leap/bitmaskclient/testutils/MockHelper.java
@@ -9,7 +9,7 @@ import android.content.res.Resources;
import android.os.Bundle;
import android.os.Parcelable;
import android.os.ResultReceiver;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
import android.text.TextUtils;
import org.json.JSONException;
diff --git a/app/src/test/java/se/leap/bitmaskclient/testutils/MockSharedPreferences.java b/app/src/test/java/se/leap/bitmaskclient/testutils/MockSharedPreferences.java
index af35af31..be0cf41f 100644
--- a/app/src/test/java/se/leap/bitmaskclient/testutils/MockSharedPreferences.java
+++ b/app/src/test/java/se/leap/bitmaskclient/testutils/MockSharedPreferences.java
@@ -18,7 +18,7 @@
package se.leap.bitmaskclient.testutils;
import android.content.SharedPreferences;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import java.util.HashMap;
import java.util.Map;
diff --git a/gradle.properties b/gradle.properties
index 8fe20ee3..9a2223a5 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1 +1,3 @@
+android.enableJetifier=true
+android.useAndroidX=true
org.gradle.jvmargs=-Xmx4096m