Commit Graph

3270 Commits

Author SHA1 Message Date
Lorenzo Colitti
b62007a830 Unit tests for avoid bad wifi networks setting. am: 83633c897a am: 26b930e3c7
am: f131f80e0a

Change-Id: I1c0f4549545ff9f1836154ef65661395835ad756
2016-09-15 16:20:27 +00:00
Lorenzo Colitti
f23aa46f08 Support displaying a dialog when wifi becomes unvalidated. am: 199ecfc79f am: 2b5b0e027b
am: 56e32083b5

Change-Id: Id908683dce15ffbafc042d506a38ec26d5e9a6ee
2016-09-15 16:18:42 +00:00
Lorenzo Colitti
26b930e3c7 Unit tests for avoid bad wifi networks setting.
am: 83633c897a

Change-Id: I6491f1a93f93f222e23ef6e5e437631556637e44
2016-09-15 16:05:45 +00:00
Lorenzo Colitti
2b5b0e027b Support displaying a dialog when wifi becomes unvalidated.
am: 199ecfc79f

Change-Id: I8b8e2b652510ca75407a9ad3c29ed111367941e0
2016-09-15 16:04:03 +00:00
Hugo Benichi
b2229c7168 Support ignoring penalty for bad wifi networks am: c9048bc556 am: 6630a620f9
am: edabb8e617

Change-Id: Ib9a60eb528eb62ebf26d5d5a1941bfed0bb21163
2016-09-15 15:36:58 +00:00
Lorenzo Colitti
9321342942 resolve merge conflicts of bbc1519 to nyc-mr1-dev am: 8121c2d0aa
am: 886df309be

Change-Id: I0fd163898bb51e11bc2a21ae8ba7761691a737ce
2016-09-15 15:30:24 +00:00
Hugo Benichi
6630a620f9 Support ignoring penalty for bad wifi networks
am: c9048bc556

Change-Id: I6666ee45e9a08c02444c6268b2232bbe8aa2adec
2016-09-15 15:23:57 +00:00
Lorenzo Colitti
83633c897a Unit tests for avoid bad wifi networks setting.
Bug: 31075769
Change-Id: I21ba20df59ddce5731ef1ebe8846b3f00578a674
2016-09-15 23:45:07 +09:00
Lorenzo Colitti
199ecfc79f Support displaying a dialog when wifi becomes unvalidated.
Bug: 31075769
Change-Id: I7a6e7580769365bea930f638bd44edcaa28df134
2016-09-15 23:33:34 +09:00
Lorenzo Colitti
8121c2d0aa resolve merge conflicts of bbc1519 to nyc-mr1-dev
Change-Id: Ib1294563c6ae20454e44bfa5fc9fb2797864b8f5
2016-09-15 22:47:08 +09:00
Hugo Benichi
c9048bc556 Support ignoring penalty for bad wifi networks
This patch adds a way to configure devices so that a validated network
that becomes unvalidated is not penalized in the network scoring and
selection logic.

The intent is to prevent devices configured to do so from switching to a
lower scoring network such as cellular networks when a higher scoring
network such as wifi networks loses internet connectivity.

Bug: 31075769
Change-Id: Ie7e0f2607d214a178367fedfbef6c44768fa00a4
2016-09-15 18:34:13 +09:00
Hugo Benichi
bbc15194de Explicitly pass old score to updateCapabilities
This allows simplification of getCurrentScore function in
NetworkAgentInfo and its return value to depend on everValidated and
lastValidated.

Bug: 31075769
Change-Id: I0b3c85e3a61b006733e900e0a231424878317476
2016-09-15 18:33:23 +09:00
Lorenzo Colitti
620562c61c Add test coverage for background networks. am: d8a23ad61f
am: 815bbf5678

Change-Id: Ib73537c95107b1b8d0a223abc053794ad24fcbf5
2016-09-14 03:29:48 +00:00
Lorenzo Colitti
aabaa907de Add a NET_CAPABILITY_FOREGROUND capability. am: 0f04220ffe
am: aaec66110d

Change-Id: I78d6aa21f8e4c6bbd9cefb4a36f1b77f4bbe4104
2016-09-13 16:23:10 +00:00
Lorenzo Colitti
d8a23ad61f Add test coverage for background networks.
Bug: 23113288
Change-Id: Idad62f5f025825f99007ccf7b20f530dc3cf6daa
2016-09-13 12:02:13 +09:00
Lorenzo Colitti
0f04220ffe Add a NET_CAPABILITY_FOREGROUND capability.
Bug: 23113288
Change-Id: I90cb9ffb5751f0d9ec822933f37680c401e49966
2016-09-13 12:02:13 +09:00
Lorenzo Colitti
350a2fef4a Add a background NetworkRequest type for mobile data always on. am: 2666be8ae7
am: 9396da4e10

Change-Id: I4b0e05e8bb87e37bf2564fd255b8be7a2b20118a
2016-09-12 13:48:53 +00:00
Lorenzo Colitti
1506251e93 Rematch requests first and listens second. am: 0c38d7c8cd
am: 836a5db809

Change-Id: Ia57cd548b2920efaee733f5cb0df66139a6e55e6
2016-09-12 13:46:48 +00:00
Lorenzo Colitti
2666be8ae7 Add a background NetworkRequest type for mobile data always on.
Like a normal (foreground) request, a background request is only
satisfied by one network and will keep that network up. Unlike a
foreground request, when a network only has background requests,
it will linger, and after lingering is complete, it will become
a background network.

Future CLs will cause the system to treat background networks
differently, e.g., by requiring different permissions.

Bug: 23113288
Change-Id: I40f735269dad1042eb04fea15e64584fc903ccb3
2016-09-09 18:49:24 +09:00
Lorenzo Colitti
0c38d7c8cd Rematch requests first and listens second.
This CL splits rematching in two parts: first rematch requests,
then rematch listens. This will allow us to change a network's
capabilities depending on what requests are on that network, and
properly dispatch callbacks depending on those capabilities.

The behaviour changes are as follows:

- Before this CL, callbacks for requests and listens were sent
  intermingled. After this CL, all request callbacks will be
  grouped together, and all listen callbacks will be grouped
  together.
- Before this CL, the order was:
    1. Send onLost callbacks.
    2. If applicable, switch the default network.
    3. Send onAvailable callbacks.
  After this CL, the order is:
    1. Send onLost callbacks for requests.
    2. If applicable, switch the default network.
    3. Send onLost callbacks for listens.
    4. Send onAvailable callbacks for listens.
    5. Send onAvailable callbacks for requests.

These changes shouldn't affect any apps because:

1. The order of callbacks continues to be first all onLost,
   then all onAvailable.
2. Both the old and the new code send callbacks in no particular
   order. Thus, the possible ordering combinations of callbacks
   in the new code are a strict subset of the possible ordering
   combinations of the old code.
3. The default network is switched before any onAvailable
   callback is sent.
4. Even though the new code does not send all onLost callbacks
   before switching the default network, even before this CL
   there was no guarantee that those callbacks would be received
   before the default network switch anyway, because callbacks
   are asynchronous.

Bug: 23113288
Change-Id: Ia08900c50db9ff43895047e2f4f36b6c6c31a1f9
2016-09-09 18:28:00 +09:00
Etan Cohen
4ba6a728a7 [NAN] Add transport type for NAN. [DO NOT MERGE] am: e7395027cf -s ours am: e3efe944fd -s ours
am: 0890f0175a

Change-Id: Ie40c480b45fcb5a660335eb42a71afcf8a8cebb5
2016-09-07 04:38:37 +00:00
Etan Cohen
0890f0175a [NAN] Add transport type for NAN. [DO NOT MERGE] am: e7395027cf -s ours
am: e3efe944fd  -s ours

Change-Id: I439ed5ac5b70f6e693a441d8b6000f208351a3f7
2016-09-07 04:33:21 +00:00
Etan Cohen
e7395027cf [NAN] Add transport type for NAN. [DO NOT MERGE]
Add TRANSPORT_WIFI_NAN - specifies a peer-to-peer Wi-Fi NAN data
connectivity request.

While NAN uses Wi-Fi L1 PHY and part of the MAC - it is a different
protocol and constitutes a different transport.

(cherry-pick of commit 7473bc20ad)

Bug: 26564277
Change-Id: I975ebc72d8f97a592d18038b3d6465b7a40efa75
2016-09-06 15:54:10 -07:00
Lorenzo Colitti
e6c813b201 Network switch notifications: rate & daily limits am: 9bf6fef270 am: 858499b2c0
am: 2c535a4f7c

Change-Id: I166dd693345ed9a63411f5f1ed6bdf33015b1957
2016-08-30 20:32:52 +00:00
Hugo Benichi
7ded0138f0 Network Switching Notifications: add unit tests am: 01f7228f5c am: 56f1281888
am: cf5f5785c9

Change-Id: I978e49ba1302ca3d791c59555b5a143cefb62c06
2016-08-30 20:31:34 +00:00
Lorenzo Colitti
9bf6fef270 Network switch notifications: rate & daily limits
This patch adds a daily limit to the maximum number of notifications
shown when switching networks.

It also adds a rate limit to prevent rapid successive notifications in
flapping scenarios.

Bug: 31132499
Change-Id: Iccb6d0899646ea6df3cfad32a421922263e0eb85
2016-08-31 00:36:11 +09:00
Hugo Benichi
01f7228f5c Network Switching Notifications: add unit tests
BUG: 31132499
Change-Id: I9c50a59fe48efdcb51d2517f0a756691700c3ebe
2016-08-31 00:35:16 +09:00
Lorenzo Colitti
bed9b4583d Don't notify on network switch if source network is validated. am: fde640e59d am: b301283d57
am: a0a41b1e3d

Change-Id: I047a0040798223c163d333996e6bc06e206129a0
2016-08-30 11:02:33 +00:00
Lorenzo Colitti
fde640e59d Don't notify on network switch if source network is validated.
Sometimes we switch away from a network to another (e.g., wifi to
cell data) not because the old network is unvalidated, but
because the score is lowered by a low signal strength.

In this case, don't notify the user of a network switch.

Bug: 31132499
Change-Id: I996a6e00096f8cb864fa9b00b36921725a4edb53
2016-08-29 16:30:21 +09:00
Lorenzo Colitti
6881182916 Support notifying network switches via notifications and toasts. am: ddc5fd88fe am: 4549d8b4aa
am: 10acdf7ad1

Change-Id: I0324cfdb7c070464c2caa73fa5fad8d1031c1e76
2016-08-25 09:36:13 +00:00
Lorenzo Colitti
ddc5fd88fe Support notifying network switches via notifications and toasts.
Bug: 31025214
Change-Id: If1578f422f38a1dcfaec529882aed01ae5e8d53c
2016-08-25 18:14:18 +09:00
Lorenzo Colitti
2f063e3065 Refactor NetworkNotificationManager. am: c5391028ec am: a6dcb89e6d
am: 4e0916b416

Change-Id: I548b311ab8dc1d7e08f17a6b31573262c8a4518e
2016-08-23 17:21:39 +00:00
Lorenzo Colitti
e207b2703b Move notification code out of ConnectivityService. am: 74c205f5ea am: 622b5fbbf5
am: 28707247f4

Change-Id: I6e3290891f322c1caca3ff70a3aa39dd140d6256
2016-08-23 17:20:59 +00:00
Lorenzo Colitti
c5391028ec Refactor NetworkNotificationManager.
1. Move from deprecated network types to transport types.
2. Rename and simplify (by passing in a NetworkAgentInfo object)
   the call signature of the method that displays notifications.
3. Add a method to clear notification, and unindent lots of code.
4. Move the legacy DcTracker-issued notification code to
   NetworkNotificationManager.

Bug: 31025214
Change-Id: Ie49c60126d0ed5bac620bc47e84fe038791b2d6c
2016-08-23 17:57:46 +09:00
Lorenzo Colitti
74c205f5ea Move notification code out of ConnectivityService.
Bug: 31025214
Change-Id: I4190be6b57f92298b79bea8868f1876ecbfd2d75
2016-08-23 15:31:59 +09:00
Hugo Benichi
ef248f8ab6 IpConnectivityMetrics: no metrics upload in tests am: 208c01039f
am: ae048d8363

Change-Id: I4171f72e27f39f2c10e4607b84934676337c1b4e
2016-07-29 09:34:35 +00:00
Hugo Benichi
208c01039f IpConnectivityMetrics: no metrics upload in tests
Similarly to ApfTest, this patch changes ConnectivityServiceTest to use
a mock object instead of IpConnectivityLog so that running
ConnectivityServiceTest does not generate android.net.metrics events.

Bug: 30450301
Change-Id: Ibc0479f381f26e60baefbae15407c62aecbf6666
2016-07-29 16:58:35 +09:00
Hugo Benichi
145bbc680a resolve merge conflicts of bd0cc76 to nyc-mr1-dev-plus-aosp
Change-Id: Ib1c01241fece36f660d27f3450ba8059b3b2809f
2016-07-26 13:08:14 +09:00
Hugo Benichi
bd0cc763ae Add CONNECTIVITY_USE_RESTRICTED_NETWORKS permission
This patch creates a new permission used by ConnectivityService to give
access to restricted networks without the NET_CAPABILITY_NOT_RESTRICTED
capability bit on.

Bug: 24497316
Change-Id: I5b6c8a9ef14395b2f1ab26cb17b24d7876ec79f1
2016-07-25 10:24:42 +09:00
Lorenzo Colitti
d160a5b13a Merge \"Add an isListen method to NetworkRequests.\" into nyc-mr1-dev
am: b5239329b1

Change-Id: Ib712c3c7b44d3a623d5f5facf0c7f6844c3ebb82
2016-07-18 15:08:54 +00:00
Lorenzo Colitti
3ed97e63bb Add an isListen method to NetworkRequests.
This allows simplification of the ConnectivityService code.

Bug: 23113288
Change-Id: I124544b99c5a920124e9a3d31cda8c6d2abc21fd
2016-07-18 18:42:26 +09:00
Erik Kline
4875f44794 Add IPv6 tethering coordinator
am: 6f0405308b

Change-Id: Icf8034276d4edc7167ad03ff8860ac8e3d05c464
2016-07-13 04:57:17 +00:00
Erik Kline
6f0405308b Add IPv6 tethering coordinator
Add an IPv6TetheringCoordinator to TetheringMaster StateMachine, which
receives and processes NetworkState updates and passes the necessary IPv6
information to the revelant TetherInterfaceStateMachine.

Add an IPv6TetheringInterfaceServices to TetherInterfaceStateMachine, which
is responsible for adding local network routes and managing an IPv6
RouterAdvertisementDaemon.

Bug: 9580643
Change-Id: I3eaae460b80752e2115359d7bde873a1e9ea515a
2016-07-13 12:08:06 +09:00
Hugo Benichi
e34be01a79 Merge \\\"Fix unsafe concurrent access in LegacyTypeTracker\\\" am: 02a0bce25a am: 5f8aae1831
am: 064d6efe21

Change-Id: I4986b4646220b9be53f8063f2d5a41a763011a96
2016-07-12 13:26:15 +00:00
Hugo Benichi
064d6efe21 Merge \\"Fix unsafe concurrent access in LegacyTypeTracker\\" am: 02a0bce25a
am: 5f8aae1831

Change-Id: I20a3426002ebe6f4db9de7edf7c4072d0a27dbdc
2016-07-12 13:20:56 +00:00
Hugo Benichi
5f8aae1831 Merge \"Fix unsafe concurrent access in LegacyTypeTracker\"
am: 02a0bce25a

Change-Id: I928b2c6ef8e20e197425c214242287185a9daa06
2016-07-12 13:15:41 +00:00
Treehugger Robot
02a0bce25a Merge "Fix unsafe concurrent access in LegacyTypeTracker" 2016-07-12 13:08:21 +00:00
Hugo Benichi
ea37259312 Fix unsafe concurrent access in LegacyTypeTracker
This patch adds synchronization inside LegacyTypeTracker so that
getNetworkForType() can safely run concurrently with remove().

Without synchronization if remove() removes the last network for a
given type while getNetworkForType() runs for the same type, it is
possible that getNetworkForType tries to access the head of an empty
list, resulting in a runtime exception.

This issue was found by zoran.jovanovic@sonymobile.com who proposed a
fix in AOSP (Change-Id: Ia963662edb9d643790e8d9439e4dbdcac4c2187b).

This patch differs from the fix proposed by the bug reporter and tries
instead to do the minimum amount of locking to make getNetworkForType
safe.

Bug: 29030387

(cherry picked from commit 389633f8d2)

Change-Id: I915aac527fc8828b32bf35fee870add2dfb11d8d
2016-07-12 21:56:40 +09:00
Hugo Benichi
111516c8d1 ConnectivityService dump: add apps blocked logs
am: d159fdd226

Change-Id: I50c87dc35ef219844a5337768ec2526aeff4f1ca
2016-07-12 04:39:05 +00:00
Hugo Benichi
d159fdd226 ConnectivityService dump: add apps blocked logs
This patch adds NetworkInfo BLOCKED/UNBLOCKED status of apps to
ConnectivityService's dump logs.

The BLOCKED or UNBLOCKED status of an app is logged with the app uid
when the app calls getActiveNetworkInfo().

Examples:
mNetworkInfoBlockingLogs (most recent first):
  07-11 11:04:43.139 - BLOCKED 10060
  07-11 11:04:39.056 - UNBLOCKED 10061
  07-11 11:04:38.851 - BLOCKED 10061

Bug: 29981766
Change-Id: I6e2fde446702b92b0964ed894409b5d733d8f8a7
2016-07-12 11:39:48 +09:00