Commit Graph

106 Commits

Author SHA1 Message Date
Robin Lee
7f96c4c848 Update string: lockdown confirmation dialog title
The most common string shown previously was:
  "Set always-on VPN?"

It's now a different string:
  "Only allow connections through VPN?"

This makes more sense because the only way to get to this dialog in
stock Settings is by first enabling a specific VPN and afterwards
trying to set the same VPN to lockdown mode.

In this case the prompt should specifically refer to lockdown, not
having a VPN connection in general (because the user clearly already
has one).

Test: m Settings -j20, install a VPN, connect to it, open Settings > Network > Vpn > {VPN name} and select 'only allow connections through VPN'. Verify the title is now the one referred to in the commit message.
Fix: 34491069
Change-Id: Ic74a8b91eb8ae64fbe15723c173281f4ede52b06
2017-02-16 19:14:25 +00:00
Fan Zhang
c6ca314c0b Log source with visibility change
- Add a method in VisibilityLoggerMixin to log visible event using
  LogMaker, which allows logging additional FIELD_CONTEXT field.
- In Utils.startFragment, add current page's metricsCategory as an extra
  to next page.
- In next page's onResume(), extract the previous page's metricsCategory
  and send it to VisibilityLoggerMixin.visible()
- Update all caller with additional paramters

Change-Id: I8e1f2597fa465b7d3aa16fa1d21c052a3219694a
Fix: 35359289
Test: RunSettingsRoboTests
2017-02-15 17:17:19 -08:00
Fan Zhang
62e66c9ca4 Move GearPreference to widget package.
- This is step1 of making gear preference more flexible to use.

Bug: 33579296
Test: builds
Change-Id: I30ac6c75f7ad16ec5c732fbb93170e5fab0eacb7
2017-02-08 16:09:12 -08:00
Robin Lee
edfeaace61 resolve merge conflicts of cb1968148a to master
Test: make RunSettingsRoboTests
Change-Id: I436af9f0415b9ad7ea0ea53f4f68d337fdbaa0aa
2017-01-19 23:58:30 +00:00
insight.lee
03159e4c85 Clear VPN after Clear credentials if VPN is being established
1. There is no way to disconnect VPN after 'Clear credentials'
without removing whole Internet connection because VPN profile to
disconnect is removed when Clear credentials.

2. This commit checks whether VPN is being established or not when
Clear credentials and disconnect VPN if VPN is being established.
Lastly, this shows a toast message to inform VPN disconnected.

Test: manual - took a photo

Signed-off-by : Sungmin Lee <insight.lee@lge.com>
Bug: 29093779

Change-Id: Id5ea01c8731b3b0fca2a31d9d84e8c103952b377
2017-01-18 10:44:57 +09:00
Bartosz Fabianowski
0d22680807 Add global HTTP proxy to Privacy Settings page
This CL allows the user to see on the Enterprise Privacy Settings
page whether the admin set a global HTTP proxy.

Test: make RunSettingsRoboTests
Bug: 32692748

Change-Id: I3c7c46f806f39c90425fd8e098a749f3cc1e9278
2017-01-12 20:09:10 +01:00
Bartosz Fabianowski
fc018e4672 Add Always on VPN to Privacy Settings page
This CL adds information about always-on VPNs to the Enterprise
Privacy Settings page.

Test: make RunSettingsRoboTests
Bug: 32692748

Change-Id: I2b59e2ec4c55308b323aaa478cd9c847fe0b4b55
2017-01-12 20:04:56 +01:00
Robin Lee
d5afb5a60c resolve merge conflicts of 6446d2f to master
Change-Id: Ibf37d7fed8f8fbb32a601944f504494101c21a3e
2016-12-23 12:16:19 +00:00
insight.lee
7c4d52c570 Update VPN preference state after disallow configuring VPN policy has changed.
1. When Settings > More and change disallow configuring VPN policy
   and resume Settings, update VPN preference state.

2. When Settings > More > VPN and change disallow configuring VPN policy
   and resume VPN Settings, update its state.

Test: manual

Signed-off-by : Sungmin Lee <insight.lee@lge.com>

Change-Id: I4f3c85733ca6ba05cba46e2f4854f54a42b10c21
2016-12-22 16:14:48 +09:00
Robin Lee
e7347dd8c0 Implement always-on VPN separate lockdown setting
Allows Settings to control whether always-on VPN is required for the
connection to complete, or if it is offered on a best-efforts basis.

Change-Id: I5eb273a99e7559adc66b05e647c9130a819f99d4
Test: runtest -x tests/app/src/com/android/settings/vpn2/VpnTests.java
Fix: 32420810
2016-12-20 15:20:43 +00:00
Robin Lee
9c2758f407 VpnSettings PreferenceList tests
For validating that when VPNs are added / removed, the right set of
changes are made to the PreferenceGroup in which they are supposed to
be shown.

Bug: 30998549
Bug: 29093779
Test: runtest -x packages/apps/Settings/tests/unit/src/com/android/settings/vpn2/PreferenceListTest.java
Change-Id: I9394db0e78cc984ab62e3670aa0a7942ae767a66
2016-11-28 17:42:56 +00:00
Robin Lee
4f0a0d0a40 VpnSettings: slightly more robust callback context
Test: runtest -x com/android/settings/vpn2/VpnTests.java
Change-Id: I45fa0509c56211602f6abd55a2f44cdf76f28829
2016-11-28 17:42:43 +00:00
Robin Lee
393857be9c VpnSettings: show connected VPN even if deleted
So there's a way to disconnect from it, if someone deletes all the
keystore entries and the VPN doesn't actually exist any more (but
is still sitting around in memory somewhere keeping the connection
alive).

Bug: 29093779
Fix: 32880676
Test: runtest -x tests/app/src/com/android/settings/vpn2/VpnTests.java
Change-Id: I97671a74af746e5baaa5be0b5cff24e2b1766f53
2016-11-28 17:41:58 +00:00
Tamas Berghammer
265d3c2a0c Update package names to work with the proto3 compiler
Bug: b/28974522
Change-Id: I5f3adf4946ee4ba1e09e4f40afe83c151405972a
2016-11-08 14:06:17 +00:00
Robin Lee
b6f787c4df Show a disclaimer about enabling vpn lockdown
Lockdown is now the default option, not best-effort mode. It's easier
to shoot oneself in the foot now so we'll show a warning to explain that
before switching it on.

Bug: 29052115
Bug: 29076208
Test: com.android.settings.vpn2.AppSettingsTest
Change-Id: Ia6845e6a7d57baa5476b8a021fb1255fd74aabea
2016-10-07 16:27:27 +01:00
Fan Zhang
1e516287bd Add visibility metrics to dialogs.
Bug: 30681529
Test: adb logcat -b events | egrep "(sysui_|notification_)"
Change-Id: I199d2e1b2cb8588a562b46bb8128d8ece24952f0
2016-09-19 17:34:12 -07:00
Fan Zhang
6507613ebc Log visibility change for all fragments.
Bug: 30681771
Test: SettingsUnitTests

Refactor visibility logging from InstrumentedFragment into a mixin. And
apply mixin in remaining fragments.

Change-Id: Ibbb59904336254a3e4bb9e8c7d0b36e5a6bc2622
2016-08-18 14:04:13 -07:00
Robin Lee
23e53b39c4 Be more defensive on failure to disconnect legacy VPNs
Failing to disconnect but deleting the keystore entry anyway makes
it difficult to do anything about a still-running connection.

Also switching over from prepareVpn(x,x) to prepareVpn(null,x) which
helps avoid race conditions where in between the getLegacyVpnInfo and
prepareVpn calls a 3rd-party app started a connection, which would break
the disconnect but still register as success.

Bug: 23529835
Bug: 29032008
Change-Id: Iedce784cb0eafbf75fe015dd2b3d355fcd887abf
2016-08-12 15:59:01 +00:00
Robin Lee
ae8681dc65 Merge "VpnSettings stub unit tests" 2016-07-28 16:47:32 +00:00
Robin Lee
490849b391 VpnSettings stub unit tests
For:
 - enforcing minimum target SDK
 - enforcing that only actual vpn apps are shown

Bug: 30355704
Change-Id: I4fcbea8ce0d0417c089a637d999ea83299cea5d0
2016-07-28 12:45:03 +00:00
Robin Lee
7cd00a6623 Run VPN refresh on a HandlerThread
Bug: 28315317
Change-Id: I1aa4748b9454db5abf866b3ea71a9c46cceca82d
2016-07-27 18:48:18 +01:00
Victor Chang
9505b78e29 Merge "Fix always-on is not turned off when user forgets vpn" into nyc-mr1-dev 2016-07-11 13:56:08 +00:00
Victor Chang
fcb0d74a3c Fix always-on is not turned off when user forgets vpn
Change-Id: Iad285ff06abde71ef040cbb29f740bcf20c3bbb7
Fix: 29991174
2016-07-06 18:27:55 +01:00
Robin Lee
07127d83a6 Don't show always-on option connecting PPTP vpn
Support for this kind has been taken out so it shouldn't be an option
when connecting (it's already not an option when editing).

Bug: 28807474
Change-Id: Id3e7be390c6813d091e7f897ac82aaf29042beb8
(cherry picked from commit ca75deb7af)
2016-06-30 09:05:58 +00:00
Victor Chang
52247f69a5 Add explanatory text displayed when 'Always-on' switch is greyed-out for VPN apps w/targetSdk<24
Bug: 28413917
Change-Id: I3e7c079b4f91c02e5d0c0e8fda4ac6775dd0247b
2016-06-27 18:07:35 +01:00
Robin Lee
49be1c1b06 Respect DISALLOW_CONFIG_VPN for disconnect dialog
Change-Id: Idfe3899e81eec5efdbd5700bdc65921de6853898
Fix: 29265163
2016-06-13 15:08:32 +00:00
Robin Lee
cfc0fb02c1 Restrict Settings always-on to NYC+
Bug: 28413917
Change-Id: I1c40bdc94bb05d21daf589840adbbf04abe6c10f
2016-06-06 17:04:36 +00:00
Robin Lee
52541536d0 Disable restricted VPN actions onResume
Otherwise it's pretty easy to circumvent any future restrictions by
keeping VPN settings for a particular app open and continuing to use
it even after DISALLOW_CONFIG_VPN is applied.

Two checks:
 1) in onResume (catches almost every case)
 2) in setAlwaysOn (catches every remaining case)

Bug: 28733079
Change-Id: I1c67bb14891ef620df5ed65fbd32678e417b4a65
2016-06-01 11:32:32 +01:00
Robin Lee
dfd2fc6d06 Don't crash trying to disable lockdown VPN
Bug: 28624328
Change-Id: I2b726453da43feaf5f46d45679a702a52e6f4df0
2016-05-17 14:58:32 +01:00
Robin Lee
cdebe28c15 Add lockdownEnabled parameter to always-on VPN API
Allows callers to opt-out of blockading network traffic during boot and
on VPN app failure.

Bug: 26694104
Change-Id: Ic2c25b79d8a17917025eb37be7de929fe156e2a3
2016-05-03 13:27:05 +01:00
Robin Lee
2821067709 Change VPN failure notification to dialog
It's pointless, verging on antipattern, to pop up a notification that
points to the screen we're already on, especially when that notification
is telling us something really high-priority ("your connection failed").

Change-Id: Idf0c219adcefd64b235960f3239a70b059213f7d
Fix: 27374485
2016-04-22 15:04:43 +01:00
Robin Lee
c9bf2ac95e Update "you're already connected to VPN" strings
Change-Id: I0e64a612b47655a0d74880bc45987c8cd2272ea8
Fix: 28303500
(cherry picked from commit 3e293cb63f)
2016-04-22 13:59:44 +00:00
Robin Lee
b166ea2668 Be more aggressive caching Vpn preference attrs
As any change to the preference title will cause it to lose focus,
best not to do this too often.

Change-Id: Ibac27ee1de42fd7ca05f3e3685b84f37dac39517
Fix: 28191965
2016-04-21 18:04:42 +01:00
Robin Lee
e06d757a0c One updateSummary method called by all VPN prefs
Having multiple methods means inevitably when new features are added to
the preferences, the right calls aren't made so information on the
screen lags between updates.

Bug: 28257641
Change-Id: I336aeefd5941ccf808dc9070427209a7d2530032
(cherry picked from commit 903843e6f9)
2016-04-21 12:06:46 +01:00
Robin Lee
b3c4133a71 Allow disconnecting always-on VPNs
Bug: 28072644
Change-Id: If7595f7e17747867158368d95db5addf97d3a14c
2016-04-14 15:41:41 +01:00
Robin Lee
20ddd1c57b Include login/alwayson in legacy VPN editor dialog
A little more consistent with the new app VPNs' dialogs. To make this
work it was also necessary to restart the lockdown VPN every time it is
edited, which makes sense because the expected action after editing a
VPN is that it reconnects with the new settings.

Bug: 28072644
Change-Id: I4b6a6f0a6ed96d2ec6f62889fdae4abb60d0646c
2016-04-13 14:57:54 +01:00
Victor Chang
1b8855b211 Show notification when failing to turn on always-on vpn
- Notification icon is Settings icon
- VpnName is obtained as the same way as AppPreference
- Post notification as the current user with PendingIntent to VpnSettings to parent user
- Auto-cancel when user taps on the notification
- This implementation posts notification only when the failure happens sychronously
  (Assume ConnectivityService only unset always-on package immediately after calling setAlwaysOnVpnPackageForUser)

Bug:27374485
Change-Id: I0aee38498c8cc300dd8eb9687adcae5f9dc4f8af
2016-03-31 16:40:22 +01:00
Victor Chang
6005aefd44 Remove VPN Overflow menu
- Move always-on option for legacy vpn into the legacy vpn config page
- This implementation doesn't show dialogue when replacing existing always-on vpn
- Continue to disable lockdown option for legacy vpn when "persist.radio.imsregrequired" is true.
  Not applying to vpn app
- Force to save account info when legacy vpn is always-on
- When legacy vpn is always-on, don't try to connect. (Otherwise, an exception is thrown)

TODO: Remove EXTRA_PICK_LOCKDOWN in LockdownVpnTracker in framework

Bug: 26950700
Change-Id: Ia80669359c0b7cdb955c84937156c020ac6e9af5
2016-03-29 17:28:36 +01:00
Victor Chang
14c2ac4dcb Per vpn setting change in VPN list
- Show admin support details when user taps on a cell and user restriction is on
- Show always-on-vpn active status in preference summary
- User can still open non-configurable per-VPN info page even when user restriction is applied
- Rename ConfigPreference to LegacyVpnPreference
- Move summary String handling into ManageablePreference
- ManageablePreference inherits GearPreference to reuse the code
- Don't show disconnect dialog when always-on is enabled

BUG=26950700

Change-Id: I37b087879cf3b674df528e7787d7bb1eead3310f
2016-03-21 12:36:44 +00:00
Victor Chang
16da2aa450 Vpn settings per vpn
This CL adds a setting for each VPN
- When no_config_vpn user restriction is applied, user can't change anything in the page
- Launch the subsetting activity in the corresponding user to unlock keystore and force work challenge
- Show dialog when user replace always-on-VPN package
- When forget VPN, unset always-on-vpn

TODO: show per-VPN status in VPN list

Change-Id: Ica360ea44117db6a4ecfaed1eec6c188189c246c
2016-03-21 12:36:23 +00:00
Robin Lee
37b179fa8c vpn: check fragment is visible before adding prefs
As VPN settings listens to network events it may get woken up again
while it's in the background.

Bug: 23596799
Change-Id: If6e07493da447d7ded324ff86b6e7d57c5c615e3
2016-03-17 10:26:51 +00:00
Robin Lee
eb034eb65e Show "no vpns added" for empty vpn screen
Removed the left-alignment on restricted empty views which was
inherited from Bluetooth settings but inconsistent with normal
settings fragments.

Bug: 22685111
Change-Id: I3a36c47d523392b8925031d4cac2ab3ef681e360
2016-03-16 20:28:52 +00:00
Sudheer Shanka
7dbbe13168 Add disabled by policy empty views to more screens.
Bug: 27214401
Change-Id: I6cd4292a63610671070bf2134105e9e348c3ab32
2016-02-19 20:18:43 +00:00
Robin Lee
cac0dddd2a Disable VPN prefs for restriction or lockdown case
Change-Id: I2fcf84876bf23b92cdcd00ce93514106914d0c29
2016-02-02 14:50:57 +00:00
Chris Wren
9d1bfd1e8d port settings over to new metrics enum
Change-Id: I0b3efd2f4db773ccbc52bfe59ee8eb0dab9584fb
2016-01-27 10:58:58 -05:00
Robin Lee
003a4b563a Show app VPNs in always-on list
Bug: 22547950
Change-Id: I1b37f3b8d2a061f9f6fba3c8b9a95f3b7edcee64
2016-01-14 17:17:52 +00:00
Robin Lee
4c85639733 [VPN] save public legacy VPN details publicly
This does not include certificates, private keys etc. which are still
saved in the KeyStore with the encryption the user requested for them.

Makes connecting to lockdown vpn before user unlock possible.

Bug: 26108660
Change-Id: I56c1672c7a41e761c2791584b99900aff51b59e4
2016-01-05 18:48:46 +00:00
Robin Lee
7bf8654a5c Refactor VPN settings refresh to reuse preferences
The old way was garbage-heavy. To add to that some changes to the way
PreferenceScreens are redrawn was leading to some artifacts with items
fading in/out every tick.

Bug: 25588385
Change-Id: Idabf7546ab519bf196ad3b8582caa2ec6bf9e084
2015-12-08 15:31:32 +00:00
Robin Lee
8edd4c1f8d Merge "VPN settings: grey out policy-restricted menus" am: ee4808d37b am: 905829393d
am: 3ed65b90d0

* commit '3ed65b90d0348b60fc57c08e96986e03fef2fd4e':
  VPN settings: grey out policy-restricted menus
2015-11-13 14:14:09 +00:00
Robin Lee
905829393d Merge "VPN settings: grey out policy-restricted menus"
am: ee4808d37b

* commit 'ee4808d37b955299501e9b753cc7bb19877d4f83':
  VPN settings: grey out policy-restricted menus
2015-11-13 14:08:52 +00:00