Commit Graph

1161 Commits

Author SHA1 Message Date
Felipe Leme
2e9555bced Merge "Added a onRestrictBackgroundBlacklistChanged() callback." into nyc-dev am: 54bc88cdbc am: 3b91df7ccf
am: e81819c43e

* commit 'e81819c43e0e304cc5dc330784b62bd4e0292774':
  Added a onRestrictBackgroundBlacklistChanged() callback.

Change-Id: Ieb58dda8f4749ccf5218be5913beb488fd3247cf
2016-05-17 19:07:18 +00:00
Felipe Leme
e81819c43e Merge "Added a onRestrictBackgroundBlacklistChanged() callback." into nyc-dev am: 54bc88cdbc
am: 3b91df7ccf

* commit '3b91df7ccf7ee4adf9914ffcdcbf220eb9f9fd08':
  Added a onRestrictBackgroundBlacklistChanged() callback.

Change-Id: Idb223f33d6c5b1d4054bd41f4b9b9672c507986c
2016-05-17 18:47:41 +00:00
TreeHugger Robot
54bc88cdbc Merge "Added a onRestrictBackgroundBlacklistChanged() callback." into nyc-dev 2016-05-17 18:28:22 +00:00
Robin Lee
dd58655f81 Merge "Make some of the UID-based VPN code reusable" into nyc-dev am: b0f3016b64 am: a7cc7c5b4e
am: 1cd027befe

* commit '1cd027befe8206fe4c33b1efff2bebb0584c138c':
  Make some of the UID-based VPN code reusable

Change-Id: I75d9871f8039d14f8d83be4696c3c4d4e864f9c0
2016-05-17 17:59:59 +00:00
Robin Lee
a7cc7c5b4e Merge "Make some of the UID-based VPN code reusable" into nyc-dev
am: b0f3016b64

* commit 'b0f3016b64552674681dbc742667203d36c4c86d':
  Make some of the UID-based VPN code reusable

Change-Id: I3f1b1a08059aa58cb76db6cdd070b103024b9bf3
2016-05-17 17:36:43 +00:00
TreeHugger Robot
b0f3016b64 Merge "Make some of the UID-based VPN code reusable" into nyc-dev 2016-05-17 17:30:01 +00:00
Felipe Leme
81fb728ce4 Added a onRestrictBackgroundBlacklistChanged() callback.
When an UID is added / removed to the Data Saver blacklist, it's
necessary to notify internal components such as the Settings UI (which
was erroneously listening to UID rules changes instead).

BUG: 28743623
BUG: 28791717

Change-Id: I11c85e141dfe074ad390fd324309d2412bfbbd45
2016-05-16 13:30:57 -07:00
Felipe Leme
eb8d471630 Merge "Fixed connectivity state in some power saving scenarios." into nyc-dev am: 942ee1159f am: cc02a95cbd
am: 3d079f210c

* commit '3d079f210cce78d6d87220b289a68de97ae263b4':
  Fixed connectivity state in some power saving scenarios.

Change-Id: Idd27e581b208a0d80d8fa6a4d7cf75eac82a32fd
2016-05-13 17:31:58 +00:00
Felipe Leme
3d079f210c Merge "Fixed connectivity state in some power saving scenarios." into nyc-dev am: 942ee1159f
am: cc02a95cbd

* commit 'cc02a95cbd694927cd70d7b0d7921d3f10300b38':
  Fixed connectivity state in some power saving scenarios.

Change-Id: I9ce60e8520c041e1345960a51394f8477c4ac49e
2016-05-13 17:26:29 +00:00
Felipe Leme
6f582ae1d4 Merge "Fixed connectivity state in some power saving scenarios." into nyc-dev
am: 942ee1159f

* commit '942ee1159f45c13029c28dc7846d6773571f6cda':
  Fixed connectivity state in some power saving scenarios.

Change-Id: I7ebe3864657d2147034ffae400312e94deb5ef35
2016-05-13 17:23:24 +00:00
TreeHugger Robot
942ee1159f Merge "Fixed connectivity state in some power saving scenarios." into nyc-dev 2016-05-13 17:14:13 +00:00
Robin Lee
6b78f4f48b Make some of the UID-based VPN code reusable
By changing some member refs into arguments and having one of the
functions create the UID range instead of adding to mVpnUsers.

This will be useful for other layers of UID filtering like having
UIDs explicitly blocked from the VPN.

Deleted one broken line of code that cleared the status intent when
a restricted profile is removed. Other than that, this commit shouldn't
change any behaviour. If it does, that's a bug.

Bug: 26694104
Change-Id: Ieb656835d3282a8ba63cc3f12a80bfae166bcf44
2016-05-13 16:03:11 +00:00
Paul Jensen
30c3ad8d61 Merge "ApfFilter unit test" into nyc-dev am: cf12d6140b am: 83e6bff540
am: 6f62c8df0f

* commit '6f62c8df0f0771cc6301c1b40c7757f3c8b6e5f8':
  ApfFilter unit test

Change-Id: Ide959b34cd6bd97620b2c14812bd362d203fd85f
2016-05-13 14:43:06 +00:00
Paul Jensen
83e6bff540 Merge "ApfFilter unit test" into nyc-dev
am: cf12d6140b

* commit 'cf12d6140b923c3049f26b4e57bd64003c5885c9':
  ApfFilter unit test

Change-Id: I97bdf703c24c8c3008113c09f5f441cd1d74bc81
2016-05-13 14:38:13 +00:00
Paul Jensen
cf12d6140b Merge "ApfFilter unit test" into nyc-dev 2016-05-13 14:33:25 +00:00
Felipe Leme
35bfb4616b Fixed connectivity state in some power saving scenarios.
NetworkPolicyManagerService (NPMS) manages 4 type of network restriction
when apps are running on background:

- Data Saver Mode (data usage restriction on metered-networks)
- Battery Saver Mode (power restriction on all networks)
- Doze Mode (power restriction on all networks)
- App Idle (power restriction on all networks)

These restrictions affects 2 parts of the system:

- Internal framework state on NPMS which is propagated to other internal
  classes.
- External firewall rules (managed by netd).

Although each of the power-related restrictions have their own external firewall
rules, internally apps are whitelisted to them through the same
whitelist, and the current code is only updating the internal state (and
notifying the internal listeners) when Battery Saver Mode is on.

As a consequence of this problem, there are scenarios where an app
correctly does not have internet access (because the firewall rules are
properly set), but the NetworkInfo state returns the wrong state (like
CONNECTED / CONNECTED).

This CL fixes this problem by splitting the power-related logic from
updateRulesForRestrictBackgroundLocked() into its own
method (updateRulesForPowerRestrictionsLocked()), and making sure such
method is called whenever the firewall rules are updated.

Externally to this change, the CTS tests were also improved to verify
the apps get the proper connection state; it can be verified by running:

cts-tradefed run commandAndExit cts -m CtsHostsideNetworkTests \
    -t com.android.cts.net.HostsideRestrictBackgroundNetworkTests

BUG: 28521946
Change-Id: Id5187eb7a59c549ef30e2b17627ae2d734afa789
2016-05-12 12:33:23 -07:00
Antonio Cansado
39485fcdfc Merge "Addressing API council comments on NetworkStatsManager." into nyc-dev am: dc5f558640 am: 860924860a
am: 1f186ce13b

* commit '1f186ce13bf383be39bd4b610bcb3e69f2882899':
  Addressing API council comments on NetworkStatsManager.

Change-Id: Ie6455799758f0bdb67440f72c266effaf412e22f
2016-05-10 21:14:09 +00:00
Antonio Cansado
860924860a Merge "Addressing API council comments on NetworkStatsManager." into nyc-dev
am: dc5f558640

* commit 'dc5f558640da8785fabc274167ec37a0fda30cd6':
  Addressing API council comments on NetworkStatsManager.

Change-Id: I952e69e7cfbd8cebcbac7c3b19ede300e26777e8
2016-05-10 21:05:17 +00:00
Antonio Cansado
3bbf833ff4 Addressing API council comments on NetworkStatsManager.
Callbacks
 - DataUsageCallback renamed to UsageCallback
 - DataUsagePolicy removed; passing in params directly to register method
 - making it an abstract class
 - passing in (networkType, subscriberId) that reached its threshold
 - renaming onLimitReached to onThresholdReached to match existing naming
 - only monitor single network,subscriberId
 - no monitoring of specific uids; using device or user wide instead

Tags
 - only owner uid can read its tags
 - exposing only TAG_NONE to match service side

BUG: 27530098

Change-Id: I2b2664da71806868a1e937d2bf4d1f234637509b
2016-05-10 13:24:16 -07:00
Paul Jensen
97d1682d07 ApfFilter unit test
Bug: 26238573

Change-Id: I5171038228782bd54e91f5bcc663cc529d2c1150
2016-05-10 11:54:42 -04:00
Felipe Leme
6fca287f50 Merge "Fixed connectivity state in some restricted network scenarios." into nyc-dev am: 638a6e8140 am: 87d20317bf
am: d9c0f5c6a1

* commit 'd9c0f5c6a1e2c16b61ed0d87b5533aed295273c9':
  Fixed connectivity state in some restricted network scenarios.

Change-Id: I1bc51c4a06dad9245ce0ed884707855b2c04edf1
2016-05-06 23:48:47 +00:00
Felipe Leme
d9c0f5c6a1 Merge "Fixed connectivity state in some restricted network scenarios." into nyc-dev am: 638a6e8140
am: 87d20317bf

* commit '87d20317bf26e87ef58798d3c5aafb81aa163788':
  Fixed connectivity state in some restricted network scenarios.

Change-Id: Ifeb332fbf00c554b78d0ad724b34e3a8ebfc9894
2016-05-06 23:43:55 +00:00
Felipe Leme
f39d22efcf Merge "Fixed connectivity state in some restricted network scenarios." into nyc-dev
am: 638a6e8140

* commit '638a6e8140a22a0ddb5d5dacb02173795073bd1a':
  Fixed connectivity state in some restricted network scenarios.

Change-Id: I0fd66b16c83680940f294ea8e117443ffd8a50cd
2016-05-06 23:38:59 +00:00
Felipe Leme
f280431d39 Merge "Refactored NetworkPolicyManagerService mUidRules." into nyc-dev am: de66540fd3 am: de4c468267
am: 877112035d

* commit '877112035dedb3aa66ec10023d93ca76afd35dfb':
  Refactored NetworkPolicyManagerService mUidRules.

Change-Id: I0b348dc47666d563d368d82aa9633dcfe56992a0
2016-05-06 22:03:18 +00:00
Felipe Leme
b414e6f2a3 Fixed connectivity state in some restricted network scenarios.
NetworkPolicyManagerService (NMPS) keeps an internal list of uid
rules (mUidRules) for network restrictions, and when these rules
changes it needs to notify external listeners (such as
ConnectivityService / CS).

Prior to Android N, both Data Saver mode (the feature previously known
as "Restrict Baground Data") and Battery Save mode used the same set of
firewall rules to implement their restrictions: when Battery Saver mode
NPMS would mark all networks as metered and set the proper firewall
rules externally.

Recently, these 2 modes were split in 2 distinct firewall rules and
NMPS.updateRuleForRestrictBackgroundLocked() was changed to update
the mUidRules logic based on the Data Saver firewall (since the Battery
Saver firewall changes are handled externally, on
updateRuleForRestrictPowerLocked()). As such, CS was not notified when
the power-related changes were made, which would cause apps to get a
state of CONNECTED / CONNECTED when querying its active connection.

Another scenario that is not properly handled is when a UID whitelisted
for Data Saver is brought back to foreground: although the proper
firewall rules are set, CS is not notified, and the apps state would be
DISCONNECTED / BLOCKED.

This CL introduces many changes that fix this issue:

- Fixed updateRuleForRestrictBackgroundLocked() to invoke
  onUidRulesChanged() when the Battery Saver status changed.
- Fixed updateRuleForRestrictBackgroundLocked() to invoke
  onUidRulesChanged() when an app whitelisted for Data Saver is brought
  back to the foreground.
- Added a new API (onRestrictPowerChanged() and getRestrictPower())
  to notify external services about Battery Saver mode changes.
- Fixed CS logic to properly handle the Battery Saver changes.

Externally to this change, the CTS tests were also improved to verify
the apps get the proper connection state; they can be verified running:

cts-tradefed run commandAndExit cts -m CtsHostsideNetworkTests \
    -t com.android.cts.net.HostsideRestrictBackgroundNetworkTests

BUG: 28521946

Change-Id: I8eaccd39968eb4b8c6b34f462fbc541e5daf55f1
2016-05-06 14:53:50 -07:00
Felipe Leme
de4c468267 Merge "Refactored NetworkPolicyManagerService mUidRules." into nyc-dev
am: de66540fd3

* commit 'de66540fd3f73937c3cfbe1d50e575aa69acc474':
  Refactored NetworkPolicyManagerService mUidRules.

Change-Id: I25d2520eafcf8c45b80b94908a3b5bfa04315f76
2016-05-06 21:53:39 +00:00
Felipe Leme
b30ef31381 Refactored NetworkPolicyManagerService mUidRules.
NetworkPolicyManagerService (NMPS) keeps an internal list of uid
rules (mUidRules) for network restrictions, and when these rules
changes it needs to notify external listeners (such as
ConnectivityService / CS).

Prior to Android N, both Data Saver mode (the feature previously known
as "Restrict Baground Data") and Battery Save mode used the same set of
firewall rules to implement their restrictions: when Battery Saver mode
NPMS would mark all networks as metered and set the proper firewall
rules externally.

Recently, these 2 modes were split in 2 distinct firewall rules and
NMPS.updateRuleForRestrictBackgroundLocked() was changed to update
the mUidRules logic based on the Data Saver firewall (since the Battery
Saver firewall changes are handled externally, on
updateRuleForRestrictPowerLocked()). As such, CS was not notified when
the power-related changes were made, which would cause apps to get a
state of CONNECTED / CONNECTED when querying its active connection.

This change refactores the mUidRules to use bitmasks, in preparation for
another change that will fix the issue.

It also fixes a minor bug that was preventing removed packages to be
removed from the whitelist.

BUG: 28521946
Change-Id: I9f0e1509a6192cad403f740c1cd76a6b7dab7d26
2016-05-06 17:58:40 +00:00
Robin Lee
865deed1df Merge "Merge "Add lockdownEnabled parameter to always-on VPN API" into nyc-dev am: 4c2242b254 am: 78d0888e8c" into nyc-mr1-dev-plus-aosp
am: 062a28b6a4

* commit '062a28b6a403a48d6f5f88e109a899c9c60581c1':
  Add lockdownEnabled parameter to always-on VPN API

Change-Id: I9ebd6221451ee10649a1f340031d62c6483832f1
2016-05-04 22:04:40 +00:00
Robin Lee
e823566924 Merge "Merge changes I31d5260d,Ied92f558 into nyc-dev am: 9677633814 am: 31b3676cce" into nyc-mr1-dev-plus-aosp
am: fbde3272fd

* commit 'fbde3272fd4e49ab269920339793bc40d0cb9628':
  Start VPN as early as possible during startup
  Split network agent created state from connected state

Change-Id: I6e1d6a1977db342f45a1a9114a56c181540e12bf
2016-05-04 22:03:54 +00:00
Robin Lee
7c540243de Merge "Add lockdownEnabled parameter to always-on VPN API" into nyc-dev am: 4c2242b254
am: 78d0888e8c

* commit '78d0888e8c9358681a6f564b30b2cc35bbe72a45':
  Add lockdownEnabled parameter to always-on VPN API

Change-Id: I7ec39775980ec839aa814cf284ea352789aa788f
2016-05-04 21:41:23 +00:00
Robin Lee
1054057e75 Merge changes I31d5260d,Ied92f558 into nyc-dev am: 9677633814
am: 31b3676cce

* commit '31b3676ccec847b1e86c23b2f5073dc1cc83abf4':
  Start VPN as early as possible during startup
  Split network agent created state from connected state

Change-Id: I6bb605a83b96a3efab36ab6a7bdb5859e1eafea8
2016-05-04 21:40:46 +00:00
Robin Lee
7f13b648df Merge "Add lockdownEnabled parameter to always-on VPN API" into nyc-dev
am: 4c2242b254

* commit '4c2242b254668caa96abc59e9f6c08eef7dc3784':
  Add lockdownEnabled parameter to always-on VPN API

Change-Id: Ibc69bb988ba0d1e641ee48fb5a844dc414f58e07
2016-05-04 18:55:54 +00:00
Robin Lee
adab05fdfc Merge changes I31d5260d,Ied92f558 into nyc-dev
am: 9677633814

* commit '9677633814868394f11097c549cea65155f80c29':
  Start VPN as early as possible during startup
  Split network agent created state from connected state

Change-Id: I55167ad8f3cde11407a2d35b0f859c263c0fbbec
2016-05-04 18:55:11 +00:00
Robin Lee
4c2242b254 Merge "Add lockdownEnabled parameter to always-on VPN API" into nyc-dev 2016-05-04 18:38:30 +00:00
Robin Lee
9677633814 Merge changes I31d5260d,Ied92f558 into nyc-dev
* changes:
  Start VPN as early as possible during startup
  Split network agent created state from connected state
2016-05-04 18:35:19 +00:00
Robin Lee
3cc9ba48ef Start VPN as early as possible during startup
- Switch from USER_STARTING to USER_STARTED which is the foreground
  version of the broadcast

- Set the new VPN network as CONNECTING initially to avoid spamming
  apps with useless notifications ahead of the network being fully
  available

Bug: 26694104
Fix: 28335277
Change-Id: I31d5260dda62ff440c31c44eb0aa5c891e2717e5
2016-05-04 17:46:10 +01:00
Robin Lee
bc024e5d66 Split network agent created state from connected state
Network creation setup sometimes involves extra steps after actually
calling into netd to create the underlying network, rules & routes &
to begin allowing sockets bound to it.

For example, VPN networks can set a UID whitelist or blacklist. This
should happen:

  - AFTER there is a netID & network created in netd as
    network-specific rules will need to be tied to / point at it. Those
    rules are tied to the lifecycle of netd's network which is tracked
    by `NetworkAgentInfo.created` on the frameworks side.

  - BEFORE the CONNECTED broadcast and network callbacks have been sent
    out so that we don't create a race condition between clients that
    want to use the network and the server actually having the network
    ready

The race condition existed prior to this change and required any client
making use of network callbacks to sleep for a short amount of time after
receiving to actually be able to use the network.

Among other things, that race condition is now fixed.

Bug: 26694104
Change-Id: Ied92f5588a98c3e97f456bc98b676bf201ab5472
2016-05-04 16:24:46 +00:00
Robin Lee
ab2788acbc 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: Ibfbd43ad09a25f2e38053fcd6306df3711f8bde2
2016-05-03 13:24:42 +01:00
Pierre Imai
f20c9a7024 Merge changes I86257bc8,I5c2221c5 into nyc-dev am: 8925ef3257 am: d35f90b205
am: cd8cf492fe

* commit 'cd8cf492feeaddf20f61696e6f6c1e093842c5ac':
  Use Netd's binder interface to set resolver configuration.
  Add Gservices settings for resolver configuration.

Change-Id: I83cb2668c50e910a7ce3a4dede7414b4c2bfa8d9
2016-05-02 13:08:34 +00:00
Pierre Imai
d35f90b205 Merge changes I86257bc8,I5c2221c5 into nyc-dev
am: 8925ef3257

* commit '8925ef3257d71dfb9dc383706f2aa611cfcbd9dd':
  Use Netd's binder interface to set resolver configuration.
  Add Gservices settings for resolver configuration.

Change-Id: I80fdc381bd3ff33a8efa6624d7115c346789ca17
2016-05-02 13:00:13 +00:00
Lorenzo Colitti
8925ef3257 Merge changes I86257bc8,I5c2221c5 into nyc-dev
* changes:
  Use Netd's binder interface to set resolver configuration.
  Add Gservices settings for resolver configuration.
2016-05-02 12:49:19 +00:00
Pierre Imai
5b5fe390dd Use Netd's binder interface to set resolver configuration.
BUG: 25731675
Change-Id: I86257bc84371832466161e5357ae173c305a7d18
2016-05-02 08:29:21 +00:00
Jeff Sharkey
ba27db0800 Merge "Flag to mark foreground jobs, fix data saver." into nyc-dev am: 9a977b7d45 am: cb8bc7c3f9
am: a410ef9790

* commit 'a410ef97906acf76554948cb44981af4563c1198':
  Flag to mark foreground jobs, fix data saver.

Change-Id: Id863d0ff4f8e7f13049231298feaab9839b4667c
2016-04-29 23:04:05 +00:00
Jeff Sharkey
cb8bc7c3f9 Merge "Flag to mark foreground jobs, fix data saver." into nyc-dev
am: 9a977b7d45

* commit '9a977b7d45df0d3d59c5eec7f9534c3bd5fcd91d':
  Flag to mark foreground jobs, fix data saver.

Change-Id: I908d725a84e9590d0da38a586b066a63473d4f28
2016-04-29 22:59:31 +00:00
Jeff Sharkey
833c35b354 Flag to mark foreground jobs, fix data saver.
When a job will eventually run in the foreground, the internal
scheduling needs to ignore any background network restrictions when
satisfying constraints.  This also means the job should ignore the
current device doze state, since the requesting app could get the
same behavior by starting their own foreground service.

Always dispatch network policy changes to ConnectivityService first
to ensure that it has up-to-date information.  Fix bugs around data
saver that were causing networks to not be marked as BLOCKED for
background apps; before this fix apps would have been spinning in
internal connectivity loops, thinking that the network was actually
connected when the kernel was actually blocking their traffic.

Offer new ConnectivityService method overloads to ignore the blocked
state for a specific UID.

Print unsatisfied job constraints to aid debugging.

Bug: 26571724
Change-Id: Iaaa17933e6dc1bf6d3dff26d0bfc12222e51e241
2016-04-29 13:44:07 -06:00
Amith Yamasani
b7f0a8467c Merge "Stop user faster and clear stale broadcasts" into nyc-dev am: ec6faca007 am: 390636bf45
am: 4f3e0055b1

* commit '4f3e0055b1754e33cfbed95af257d5938b279254':
  Stop user faster and clear stale broadcasts

Change-Id: I5b69b7432f7cedd92f6891734643809e0170b3cc
2016-04-29 01:01:26 +00:00
Amith Yamasani
390636bf45 Merge "Stop user faster and clear stale broadcasts" into nyc-dev
am: ec6faca007

* commit 'ec6faca0078263dfbf2b41d11cdb14586e40fd75':
  Stop user faster and clear stale broadcasts

Change-Id: I36eeb177791730a26077542606559e3e4428b87e
2016-04-29 00:56:43 +00:00
Amith Yamasani
f786dbf65c Stop user faster and clear stale broadcasts
Moved several USER_STOPPING registered receivers to listen
to USER_STOPPED, since they don't need to be blocking the
shutdown of the user.

Clear all stale broadcasts when stopping a user, so that we
don't unnecessarily start up processes and deliver stale
broadcasts. This was causing code to run when the user was
already stopped and resulted in crashes when other providers
and services couldn't be started anymore. Hopefully this fixes
many of those races.

Bug: 28371487
Change-Id: Ic35a7a23fa8fe009a53f8bf7545d4dad5fa34134
2016-04-28 10:02:44 -07:00
Felipe Leme
05711141a9 Merge "Tethering and Data Saver: There Can Be Only One!" into nyc-dev am: eee5866 am: 4844eaf
am: 5449c0b

* commit '5449c0b3e6ef394e990ef66dafdb34f54b82a108':
  Tethering and Data Saver: There Can Be Only One!

Change-Id: I184d03847abe86dd2f5e10c10bd12f90f7cc14d8
2016-04-28 00:52:46 +00:00
Felipe Leme
4844eafcca Merge "Tethering and Data Saver: There Can Be Only One!" into nyc-dev
am: eee5866

* commit 'eee58665f3732fb0b2fbf8a49f0d3df582d33ca4':
  Tethering and Data Saver: There Can Be Only One!

Change-Id: I876c9a30e9451b1c346296c233068bdfb579f584
2016-04-27 23:31:49 +00:00