Commit Graph

117 Commits

Author SHA1 Message Date
Charles He
fc1ce57b13 Disable always-on VPN options if an app has opted out.
The user can turn on / off always-on for individual VPN apps in
Settings > Network > VPN. Now that we're providing an opt-out of the
always-on feature for VPN apps, we should disabled the toggles if the
VPN app has an explicit opt-out.

Related unit tests are also removed as the check is now performed in the
frameworks, not in Settings.

Bug: 36650087
Test: CTS Verifier

Change-Id: I486fec14a1f8b86e7120dbdbfed3885801ab4dd7
2017-06-27 14:14:31 +01:00
Lorenzo Colitti
b6245156f6 Add a "sign into network" button to the wifi details page.
Bug: 36203355
Test: manually signed into captive portal
Test: make -j64 RunSettingsRoboTests
Change-Id: I3242ef30125ddfdaaac9b80ead4f8ac14ea6d364
2017-05-03 22:14:08 +09:00
Fan Zhang
62dfc300ed Update vpn icon from setting gear to vpn key.
Change-Id: Ic135d5e28a0547e949c8170f985e4de26e05ad51
Fix: 37781101
Test: visual
2017-04-29 19:48:06 +00:00
Fan Zhang
b0509b48c6 Don't show vpn info box when we don't have anything useful
Change-Id: I12a71b38486cab8a6a188c299e90a7674926dc98
Fix: 36068109
Test: make RunSettingsRoboTests -j40
2017-04-11 12:02:29 -07:00
Charles He
1b5015cae6 VPN settings: add missing string resource
Previously, a string resource was deleted by mistake in commit
cce4e61260. This bug went uncaught by
local and presubmit build checks. We add the missing string back to
strings.xml to fix the build. The affected string is referenced in
ManageablePreference.java.

Apologies for any inconvenience.

Test: make SettingsRoboTests; manually navigate through VPN settings
Bug: 36815998
Change-Id: Ibc2ef9ad43cad73ef5f078714faf5c52bc7198c6
2017-04-01 18:37:10 +00:00
Robin Lee
b8b310df17 VPN: uncheck lockdown if always-on is off
Change-Id: I00933e0c8567997d800f9f31f78c7b19922a52b8
Fix: 36713605
Test: make RunSettingsRoboTests -j30
2017-03-30 16:01:02 +00:00
Robin Lee
b26ce1e13b resolve merge conflicts of 90f009ebb5 to master
Test: make RunSettingsRoboTests
Change-Id: I7f0eece61918c29d33316fa755eca2e8f4deba46
2017-03-27 17:35:57 +01:00
Charles He
cce4e61260 VPN settings: update strings for always-on VPN
To conform with UX guidelines and conventions, the following changes are
made to the UI of app VPN's PreferenceFragment:
(1. Always-on toggle title stays the same)
2. Always-on toggle subtext changes from "active"/"inactive" to an
explanation of the feature
3. Lockdown toggle title is shortened
4. Lockdown toggle subtext is removed completely

And the following changes are made to the legacy VPN's ConfigDialog:
5. Error message that is displayed below the "Always-on VPN" checkbox
6. Replacing \u2019 with \'

Bug: 36382729
Test: manually navigate through VPN settings
Test: make SettingsRoboTests
Change-Id: If1b4faec8743dfbf6e3f8062b53190ad63700d25
2017-03-24 16:02:57 +00:00
liurong
2710b99d2f [VpnSettings]Crash when activity has been recycled
This is a case we found in monkey test, the main thread handles message while the activity has been recycled. It will raise a NullPointerException when we use getActivity() in following lines.
Assumpt the situation is: settings run in background and activity been recycled quickly, but handler still in the process.

Test: NA

Change-Id: I19db4f13e13294618ec8e42e4d9c54ce23504344
Signed-off-by: liurong <liurong@xiaomi.com>
2017-03-24 15:21:23 +00:00
Charles He
ad828f1551 VPN settings: gray out always-on checkbox dynamically
In the ConfigDialog for legacy VPNs, many configurations do not support
Always-on VPN. Previously, when a user entered an unsupported set of
settings, the Always-on VPN checkbox could still be ticked, and the
Save or Connect action buttons would be disabled. This was not intuitive
as the user could not easily figure out which part of the settings was
incompatible that grayed out the action buttons.

With this change, we disable the Always-on VPN checkbox immediately as
the user enters any incompatible setting. We also display the reason why
Always-on VPN is disabled. This will make it more straightforward for
the users to understand which setting is conflicting with the Always-on
feature.

This change is also the first step towards refactoring the ConfigDialog
for legacy VPNs with PreferenceFragment.

Test: manual
Bug: 29208008
Bug: 28072644
Change-Id: I1e6d32a1069ca0b936513f4985ffb9a9412b249c
2017-03-22 20:29:46 +00:00
Fan Zhang
b43bc628d8 VPN screen clean up
Fix: 35960168
Fix: 35856128
Test: visual
- Increase new vpn dialog padding
- Update VPN icon

Change-Id: Ibc7f4fc5b9eff24693a25542e7d3481fbe3c393d
2017-03-07 16:21:38 -08:00
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