Commit Graph

2091 Commits

Author SHA1 Message Date
Paul Jensen
c88b39b1d4 Fix missing NetworkCallbacks for NET_CAPABILITY_VALIDATED changes
Without this fix if a listening NetworkRequest with NET_CAPABILITY_VALIDATED
is submitted after a network has been validated but failed the most recent
validation attempt, the NetworkRequest will never receive callbacks.

Bug: 21343774
Change-Id: I6fa6d563c9a6f278b20e645776b707559033b249
2015-06-23 14:11:44 -04:00
Paul Jensen
53f089581a Add NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL
Bug: 21343774
Bug: 20898908
Change-Id: I23069a6cba346999d1b2eeaa445023bd6bf4ef94
2015-06-23 14:09:01 -04:00
Lorenzo Colitti
fd62bcfdca Merge "Re-hide onPreCheck and unhide NET_CAPABILITY_VALIDATED." into mnc-dev 2015-06-23 14:41:57 +00:00
Paul Jensen
9ec5a55412 Merge "Speed up network transition when WiFi disconnects" into mnc-dev 2015-06-20 01:15:35 +00:00
Paul Jensen
621b1b743b Speed up network transition when WiFi disconnects
Before falling back to cellular we used to first delete all the
network routing tables and rules for WiFi.  This isn't necessary
and can take significant time as it requires a lot of netd
shelling out to ip and ip[6]tables to flush routes and remove
the incoming packet mark rule.  Instead have netd delete all the
network routing tables and rules after we've either fallen back
to cellular or at least kicked off a cellular connection attempt.

Bug: 21932815
Change-Id: Iabac4a8b962492682df3073cc41a12e35bc9f1bb
2015-06-20 01:15:20 +00:00
Paul Jensen
d44e41088d Merge "Add ConnectivityManager.registerNetworkCallback(NetworkRequest, PendingIntent)" into mnc-dev 2015-06-20 01:13:18 +00:00
Paul Jensen
a43bca8377 Merge "Don't send spurious onAvailable NetworkCallbacks when rematching" into mnc-dev 2015-06-20 01:12:20 +00:00
Paul Jensen
65a1adba2f Don't send spurious onAvailable NetworkCallbacks when rematching
Bug:21762680
Change-Id: Ia701045dffc666fe75fba0e1771872147e37179a
2015-06-19 00:06:57 +00:00
Paul Jensen
c8873fcfe5 Add ConnectivityManager.registerNetworkCallback(NetworkRequest, PendingIntent)
Without this API we're more or less encouraging apps to have long running
processes (battery draining) to receive NetworkCallbacks for the stateful
NetworkCapabilities NET_CAPABILITIES_VALIDATED and
NET_CAPABILITIES_CAPTIVE_PORTAL.  With this API they can instead using
PendingIntents which outlive their apps.

Bug: 21343774
Change-Id: I168d0ac3757729acf7ca5546079846f575a0eedd
2015-06-18 20:00:44 -04:00
Erik Kline
0f0dbb8222 Carefully select which DNS servers to send to netd
Select only DNS servers that:
    - are reachable, according to routes in the LinkProperties, AND

    - have a "suitable" source address in the LinkProperites, meaning:
        - IPv4 DNS server:
            - only if LinkProperties has any IPv4 address
        - IPv6 link-local DNS server:
            - only if the server has a scopeId set
            - assume for now that LinkProperties has a suitable
              link-local address
        - IPv6 non-link-local DNS server:
            - only if LinkProperties has a global, preferred IPv6 address

Bug: 19470192
Bug: 20733156
Change-Id: Ibd95f3f7b33a4fb6c36d1cea4adb63c99068f657
2015-06-18 14:50:21 +09:00
Paul Jensen
278bc59082 Merge "Remove dead hidden ConnectivityManager and NetworkInfo APIs." into mnc-dev 2015-06-16 11:30:51 +00:00
Erik Kline
e1ee8c665f Merge "Add a test that Network#getNetworkHandle() behaves sanely." into mnc-dev 2015-06-16 03:43:56 +00:00
Paul Jensen
c6b3de1e4a Remove dead hidden ConnectivityManager and NetworkInfo APIs.
- There are no callers of
  NetworkInfo.setIsConnectedToProvisioningNetwork(), so remove all the
  code that deals with mIsConnectedToProvisioningNetwork being true,
  including the two ConnectiviyManager APIs.
- There are no callers of
  ConnectivityManager.getMobileRedirectedProvisioningUrl(), so remove
  the code that reads this URL.
- There are no callers of
  ConnectivityManager.captivePortalCheckCompleted(), so remove this
  API which is currently a no-op.

Change-Id: Ifa44c7553c7c45ebe261a2a124d9bf8d6f96c690
2015-06-16 02:07:36 +00:00
Paul Jensen
5cc5901463 Merge "Remove most sleep() calls from ConnectivityServiceTest" into mnc-dev 2015-06-15 13:35:48 +00:00
Erik Kline
cc00792876 Add a test that Network#getNetworkHandle() behaves sanely.
Additionally:
    - make zero more obvious for debugging, rather than emitting
      some inscrutable magic value.

Bug: 19537384
Change-Id: Iac9a3297a0dda1ba3d69fd01cf6de81f01fd837e
2015-06-15 15:18:38 +09:00
Paul Jensen
f98df17f98 Remove most sleep() calls from ConnectivityServiceTest
Change-Id: I90d2f6811ed1cb84614101200ac377e920bd864a
2015-06-12 10:31:09 -04:00
Chris Wren
cb43350ffd remove usage of deprecated method setLatestEventInfo
Bug: 18510449
Change-Id: I56a77991c729990e501f402e007dfa79ee57621e
2015-06-12 10:16:04 -04:00
Lorenzo Colitti
3a9df1a8cd Re-hide onPreCheck and unhide NET_CAPABILITY_VALIDATED.
The API review comments in http://b/21343774 point out that the
suggested use case for onPreCheck (captive portal login apps) is
not a good use case as it requires that the app always be
running.

Also, unhide NET_CAPABILITY_VALIDATED, which is useful to apps
that want to detect captive portals and network connectivity
failures.

Bug: 21343774
Change-Id: Iad7c839bcc136b0fa9581dccc5fd97a28efed4ab
2015-06-11 15:30:13 +09:00
Robert Greenwalt
ddb3d3aacc Merge "Remove network requests properly." into mnc-dev 2015-06-11 02:19:17 +00:00
Robert Greenwalt
8d2cfc2253 Remove network requests properly.
We used to only remove requests that we'd acted on but that's
just wrong.

Also adds test case which exposed the problem but passes with the fix.

bug:20731384
Change-Id: I581a005560cc71167b857abf2452769399a9e1b7
2015-06-10 14:44:34 -07:00
Paul Jensen
69f4bb15a9 Merge "Avoid overlapping NetIDs in ConnectivityServiceTest with real NetIDs" into mnc-dev 2015-06-10 17:59:54 +00:00
Paul Jensen
bd2f32f60b Avoid overlapping NetIDs in ConnectivityServiceTest with real NetIDs
Overlapping the NetIDs can cause the ConnectivityService instance under test
to inadvertently use real networks, for example when NetworkMonitor attempts
to validate a network.  This fixes test hangs when run on devices with
active internet connections.

Change-Id: I5e1898953f0117b9f75beccac4a52ae2db173567
2015-06-10 11:30:26 -04:00
Lorenzo Colitti
ccd85f3e29 Merge "When no Internet access is detected, display a notification first." into mnc-dev 2015-06-10 15:25:31 +00:00
Lorenzo Colitti
74baf41e0f When no Internet access is detected, display a notification first.
Previously, we displayed a dialog on top of whatever the user was
doing. Instead, display a notification that can take the user to
the dialog.

Because the notification is less intrusive, also enable it even
if the network without Internet access is already the system
default network. Previously we did not do this because in that
case the user might not have other useful options, and thus a
dialog would have been too intrusive.

Bug: 20081183
Bug: 20538448
Change-Id: I677be238d675c13a13dc0bae2dbb37cbe4f52cb6
2015-06-10 23:37:00 +09:00
Erik Kline
85a69cd4a6 Merge "initial revision of NetworkDiagnostics" into mnc-dev 2015-06-09 23:23:03 +00:00
Robin Lee
54d152cd12 Merge "Switch over to updated VPN warning strings" into mnc-dev 2015-06-09 23:13:38 +00:00
Robin Lee
06c0fff375 Switch over to updated VPN warning strings
These are more consistent and have placeholders for the description of
whatever VPN apps are actually active.

Bug: 20516964
Bug: 17474682
Change-Id: I37ff287b795f10bbbb192540f09f8100bb27b1a0
2015-06-09 12:04:23 -07:00
Erik Kline
9647f3807b initial revision of NetworkDiagnostics
Bug: 21449922
Change-Id: I6a66cfa98601d6ccfe38ff840b0dd49ed1538a41
2015-06-09 23:37:58 +09:00
Erik Kline
94fd615d1f Make public Network#bindSocket(FileDescriptor).
Code that uses android.system.Os to create sockets as FileDescriptors
should be able to bind them to networks.  Note that FileDescriptors
could already be marked as "protected from VPNs" via
NetworkUtils#protectFromVpn(), but heretofore were not easily bound
to any particular network.

Bug: 21449922
Change-Id: I4bb86db5d95d5a55bb2d7e245848d11eaa351e65
2015-06-09 16:19:24 +09:00
Lorenzo Colitti
50e554808b Merge "Remove "returning Blocked NetworkInfo" logspam." into mnc-dev 2015-06-05 07:50:44 +00:00
Lorenzo Colitti
f71cce4fb9 Remove "returning Blocked NetworkInfo" logspam.
Bug: 20006730
Change-Id: I2061127e3c7283c0a4899940d3fc224ca114f754
2015-06-05 10:58:17 +09:00
Feixiong Zhang
20ed3f9768 Merge "Fix the empty reason field in connectivity change intent." into mnc-dev 2015-06-04 18:54:49 +00:00
Feixiong Zhang
1f7f908de3 Fix the empty reason field in connectivity change intent.
The code set it to null instead of info.getReason.

Change-Id: I1b26ad040c23da7080dbfaeb5376181998115805
2015-06-04 11:38:41 -07:00
Paul Jensen
c5e1878d96 Merge "Revive ConnectivityServiceTest and add some tests." into mnc-dev 2015-06-04 13:11:34 +00:00
Paul Jensen
bb910e9bcd Revive ConnectivityServiceTest and add some tests.
Change-Id: I44740a7b21cff18ac2a67d09c4d0e597add19ee0
2015-06-04 09:09:36 -04:00
Lorenzo Colitti
a267d9c1f9 Merge "Disable mDefaultDns to see if we can remove it." into mnc-dev 2015-06-04 05:31:59 +00:00
Erik Kline
7cbc907b61 Delete unsed mDnsLock.
Bug: 21449922
Change-Id: I0c9f95c30eaa170d809e86f6505379f34a0a7603
2015-06-03 16:10:08 +09:00
Lorenzo Colitti
3b1ad969cf Make the dumpsys connectivity shorter and easier to read.
- Print NetworkFactories on one line.
- Only print LegacyTypeTracker networks if they are connected,
  and record supported network types on a separate summary line.
- Print all tethering upstreams on one line.
- Summarize the state of the transition wakelock on one line.
- Don't print Inet condition reports if there are none.
  (Currently there can never be any.)

Bug: 21449922
Change-Id: Ib4b29a7fd882e6c105839a255fffecf4f346cf7e
2015-06-03 11:29:41 +09:00
Stuart Scott
d198fe197b Network Reset should have a lockdown like Factory Reset.
bug:20332322
Change-Id: I7c61a011d11e89513757f112abf320bb2a785edb
(cherry picked from commit 94b038bbb291431a7b39611d72f206b07e839891)
2015-06-01 16:31:00 +00:00
Paul Jensen
16d8795df6 Merge "Add javadoc comments mentioning ConnectivityManager API permissions." into mnc-dev 2015-05-26 17:37:33 +00:00
Paul Jensen
f66991ceaf Merge "Null-check argument to ConnectivityManager.releaseNetworkRequest(PendingIntent)" into mnc-dev 2015-05-26 17:33:26 +00:00
Paul Jensen
6f94248ebf Null-check argument to ConnectivityManager.releaseNetworkRequest(PendingIntent)
Do this in ConnectivityService to prevent crashing framework.

Bug:21329396
Change-Id: Ifd9c970cd0da392d0bd5da9a9ae845fdf0b559b3
2015-05-21 08:15:08 -04:00
Erik Kline
04612b0692 LinkProperties function to compare provisioning and remove DNS servers
Adds:
    - enum ProvisioningChange
    - LinkProperties#compareProvisioning()
          return a ProvisioningChange value describing the delta in
          provisioning between two LinkProperties objects
    - LinkProperties#removeDnsServer()
    - make "@hide public" isIPv4Provisioned() and isIPv6Provisioned()

Bug: 18581716
Change-Id: I3df90b2b89617f693346f2dbe72e77c88ce91ffd
2015-05-21 20:43:47 +09:00
fenglu
c7830c6dcf Merge "LCE feature enhancement" into mnc-dev 2015-05-20 21:09:09 +00:00
Paul Jensen
60472854d2 Merge "Undeprecate android.net.ProxyInfo as it's still used." into mnc-dev 2015-05-20 10:49:04 +00:00
Lorenzo Colitti
892a7e1885 Merge "Add a hidden method to clear the capabilities of a NetworkRequest" into mnc-dev 2015-05-20 05:49:03 +00:00
fenglu
fcc8c9b5f4 LCE feature enhancement
- space pollLceData calls every 500ms
- cluster multiple pending pollLceData calls into one
- cherry pick from mwd to mnc-dev

Bug: 21307957
Change-Id: I04513011db3ae29af02bd54fe91cb8e0d4ab9f12
2015-05-19 17:08:00 -07:00
Paul Jensen
81c7260a93 Undeprecate android.net.ProxyInfo as it's still used.
It was deprecated as part of the Apache deprecation, however it is used
by ConnectivityManager.getLinkProperties() and .getDefaultProxy().
The alternatives (e.g. java.net.Proxy) do not offer a complete
replacement as they lack certain fields (e.g. PAC URL).

Bug:21274137
Change-Id: I99163a2611a738f337fb9907349ef6255dbed6d6
2015-05-19 15:09:17 -04:00
Paul Jensen
08f9dbbfa1 Add javadoc comments mentioning ConnectivityManager API permissions.
Also move permissions comments above @param and @return to fix indent.

bug:20499587
Change-Id: If82ff2367fdbce06e696e494439b31cb100d768f
2015-05-19 14:03:03 -04:00
Paul Jensen
1916861976 Merge "Query HTTP proxy for network via a new API to avoid permissions exceptions" into mnc-dev 2015-05-19 17:58:11 +00:00