Commit Graph

1750 Commits

Author SHA1 Message Date
Hugo Benichi
6d2cb61e35 Network Switching Notifications: add unit tests am: 01f7228f5c am: 56f1281888 am: cf5f5785c9
am: 7ded0138f0

Change-Id: Idf4986df6f0f2b232aeaa5e43feb51615089dc71
2016-08-31 23:30:34 +00:00
Lorenzo Colitti
ff6b602a75 Don't notify on network switch if source network is validated. am: fde640e59d am: b301283d57 am: a0a41b1e3d
am: bed9b4583d

Change-Id: I150cbafb6ab3fce4800241bfacec4bf4ee73db31
2016-08-31 22:40:41 +00: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
4f1ea3a36b Support notifying network switches via notifications and toasts. am: ddc5fd88fe am: 4549d8b4aa am: 10acdf7ad1
am: 6881182916

Change-Id: Ic2031d00a24a6fd7ad1969a962360920fac9afd1
2016-08-26 22:21:10 +00: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
fe48243627 Refactor NetworkNotificationManager. am: c5391028ec am: a6dcb89e6d am: 4e0916b416
am: 2f063e3065

Change-Id: I1249d019ce449f8721541c138f89b98230a67b57
2016-08-23 18:34:58 +00:00
Lorenzo Colitti
da9b26fccf Move notification code out of ConnectivityService. am: 74c205f5ea am: 622b5fbbf5 am: 28707247f4
am: e207b2703b

Change-Id: I4263c2051e654588dab98e53e3015e59576fb987
2016-08-23 18:34:18 +00: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
TreeHugger Robot
f9e188bc2a Merge "Refactored NetworkStatsServiceTest to use Mockito instead of EasyMock." 2016-08-22 21:46:29 +00:00
Felipe Leme
de2a6f1b1d Refactored NetworkStatsServiceTest to use Mockito instead of EasyMock.
Test: m -j32 FrameworksServicesTests && adb install -r -g ${ANDROID_PRODUCT_OUT}/data/app/FrameworksServicesTests/FrameworksServicesTests.apk && adb shell am instrument -e class "com.android.server.net.NetworkStatsServiceTest" -w "com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner"

BUG: 30943463
Change-Id: I3fbdb0918f1d0e68f32afe07ca38d4ef217025df
2016-08-22 13:14:21 -07:00
Felipe Leme
a4dc2a7129 Use @Ignore to explicitly disable a @Test method.
BUG: 30839080
BUG: 31007021
Change-Id: Ia93f6b3c8fd1d2d2826c3b04b05f66339672a7e6
2016-08-22 09:02:12 -07:00
Felipe Leme
f96df4b298 Fixed NetworkStatsServiceTest and converted it to JUnit4.
Most tests were failing because due to a null NetworkCapabilities.
Example:

1) testNetworkStatsWifi(com.android.server.net.NetworkStatsServiceTest)
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.net.NetworkCapabilities.hasCapability(int)' on a null object reference
	at
	com.android.server.net.NetworkStatsService.updateIfacesLocked(NetworkStatsService.java:983)

BUG: 30839080

Change-Id: Ib81d81df2828fc573c40b26c23af9d80ae43d3f6
2016-08-18 15:45:09 -07:00
Erik Kline
155a59aa63 Support timeouts for requestNetwork() invocations.
(cherry-pick of 06c3ef1367e850746eef0a5462bdce8674d74c30)

Bug: 21414325
Change-Id: I08118be8e8cf92fc406d431e99a6c9191a863ff3
2016-08-15 10:19:45 -07:00
Winson
80835c79bc Defaulting wallpaper offset to edge of the screen. am: 4b4ba90d66 am: 18faeaa5fa
am: ef248f8ab6

Change-Id: I86d0616df8f938b1b80651be83802796a24250b9
2016-07-31 02:12:44 +00: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
4e6a83b21e resolve merge conflicts of bd0cc76 to nyc-mr1-dev-plus-aosp
am: 145bbc680a

Change-Id: Ia0a4544784592ac857e5bd652fee47eec621f3a0
2016-07-26 15:18:51 +00: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
2f1d7cabed Merge \"Merge \\"Add an isListen method to NetworkRequests.\\" into nyc-mr1-dev am: b5239329b1\" into nyc-mr1-dev-plus-aosp
am: 17450e41b3

Change-Id: Ic71a5722ee877de73e7ffd340a5ffb84a2d4910d
2016-07-18 15:15:33 +00: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
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
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
2010894591 ConnectivityService dump: add apps blocked logs am: d159fdd226
am: 111516c8d1

Change-Id: If0842e480b448cbbcb9fff3a03e6e9d84a385c89
2016-07-12 04:44:21 +00: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
Erik Kline
3e5de27d07 Support requesting async LinkProperties/NetworkCapabilities updates am: 0c04b74781
am: b2bdeca8e2

Change-Id: If177966a19c830a106ce689c7e07a7835bb2c1a1
2016-07-12 01:46:09 +00:00
Erik Kline
b2bdeca8e2 Support requesting async LinkProperties/NetworkCapabilities updates
am: 0c04b74781

Change-Id: Icc048323debbbe641941c5c0d993f4c9782c5d3e
2016-07-11 11:01:42 +00:00
Erik Kline
0c04b74781 Support requesting async LinkProperties/NetworkCapabilities updates
Bug: 9580643
Change-Id: I1d7ba7645c20d7d53f6eef777dfce43727940f13
2016-07-11 19:17:41 +09:00
Lorenzo Colitti
6ce4efc9b2 Merge \\"Rewrite lingering.\\" into nyc-mr1-dev am: 673bdd122b
am: 1ddf62c2a3

Change-Id: Ieff4a63ad1d5959760e69f68e832ca256ec2c2ae
2016-07-07 11:06:53 +00:00
Lorenzo Colitti
1ddf62c2a3 Merge \"Rewrite lingering.\" into nyc-mr1-dev
am: 673bdd122b

Change-Id: I62d69f20101318b42d4d333b104dcf4f64dc1725
2016-07-07 11:01:19 +00:00
Lorenzo Colitti
f408db9f15 Merge \\"Prepare to delete useless loop in handleReleaseNetworkRequest.\\" into nyc-mr1-dev am: ef9c83a171
am: f035567f74

Change-Id: I68c75cd5980075bdb2586ba5967fcb6ce20dc158
2016-07-07 07:49:13 +00:00
Lorenzo Colitti
f035567f74 Merge \"Prepare to delete useless loop in handleReleaseNetworkRequest.\" into nyc-mr1-dev
am: ef9c83a171

Change-Id: I8cd95575e7758ee94417ec15e407f396434f4c04
2016-07-07 07:40:46 +00:00
Lorenzo Colitti
79869eac2f Rewrite lingering.
The two major changes here are:

- Move lingering out of NetworkMonitor. The fact that lingering
  is currently its own state in NetworkMonitor complicates the
  logic there: while a network is lingering it cannot be in any
  other state, we have to take care not to leave LingeringState
  for the wrong reason, etc.
- Instead of keeping a single per-network boolean to indicate
  whether a network is lingered or not, keep a linger timer for
  every request. This allows us to fix various corner-case bugs
  in lingering.

The changes in behaviour compared to the current code can be seen
in the unit test changes. Specifically:

1. Bug fix: when a network is lingered, and a request is added
   and removed to it, the existing code tears the network down
   immediately. The new code just sends another CALLBACK_LOSING
   and resumes lingering with the original timeout.
2. Bug fix: if cell is unvalidated and wifi comes up and
   validates before cell does (as might happen on boot), the
   existing code immediately tears down cell. The new code
   lingers cell, which is correct because unvalidated cell was
   the default network, so an app might have been using it.
3. Correctness improvement: always send CALLBACK_AVAILABLE for
   the new network before sending CALLBACK_LOSING. This was not
   really an issue in practice, because the usual flow is:
    - Network A is the default.
    - Network B connects, CALLBACK_AVAILABLE.
    - Network B validates, CALLBACK_LOSING.

Bug: 23113288
Change-Id: I2f1e779ff6eb869e62921a95aa9d356f380cf30a
2016-07-07 16:18:57 +09:00
Lorenzo Colitti
a68fb676e6 Prepare to delete useless loop in handleReleaseNetworkRequest.
As explained in the TODO, the loop serves no purpose since only
one network can be satisfying a given request at a time.

Instead of looping, look up the nai in the mNetworkForRequestId
array that exists for this purpose.

Keep the loop around with an Slog.wtf statement on it so we can
see if we ever hit it, and add a TODO to delete it if we don't.

Bug: 23113288
Change-Id: I173de4bd45c5a4169b7a062a981f2ecccaa44143
2016-07-07 14:50:12 +09:00
Lorenzo Colitti
8fd1e19e45 Merge \"Make registerDefaultNetwork work on metered networks.\" into nyc-dev
am: 33cdc4d136

Change-Id: I0ad7b79f1af992dd556de5e17a6a1aae9c46e423
2016-07-06 20:45:09 +00:00
Lorenzo Colitti
fb9c76ffa7 Merge \\"Add test coverage for a bug in the lingering code.\\" into nyc-mr1-dev am: 833c839f0b
am: b2279bc09f

Change-Id: I19439c95167bf215edc67068fb5a6859ab845814
2016-07-05 03:54:35 +00:00
Lorenzo Colitti
b2279bc09f Merge \"Add test coverage for a bug in the lingering code.\" into nyc-mr1-dev
am: 833c839f0b

Change-Id: Ia09ba1e0a6e3ba9543a92ccf7f03f7a898f26fb1
2016-07-05 03:44:29 +00:00
TreeHugger Robot
833c839f0b Merge "Add test coverage for a bug in the lingering code." into nyc-mr1-dev 2016-07-05 03:35:40 +00:00