Commit graph android_packages_modules_Co.../services
Message SHA1
Merge "Replace the permission of internal connectivity checks"
Paul Hu   authored and   Android (Google) Code Review   commited 2019-12-04 05:52:01 +00:00
dd32fc08e7
Replace the permission of internal connectivity checks
A number of connectivity checks that protect system-only methods
check for CONNECTIVITY_INTERNAL, but CONNECTIVITY_INTERNAL is a
signature|privileged permission. We should audit the permission
checks, and convert checks that protect code that should not be
called outside the system to a signature permission. So replace
all CONNECTIVITY_INTERNAL to other proper permissions.

Bug: 32963470
Test: atest FrameworksNetTests NetworkPolicyManagerServiceTest
Change-Id: I8f2dd1cd0609056494eaf612d39820e273ae093f

paulhu   commited 2019-12-04 11:45:51 +08:00
ec0a963cea
Merge changes I720a1feb,I9539b8cc,Ib79b777b
* changes:
  [NS A17] Update linger state after rematching.
  [NS A16] Cleanup
  [NS A15] Move legacy default broadcasts out of the loop

Chalard Jean   authored and   Gerrit Code Review   commited 2019-12-02 09:40:44 +00:00
230687643c
Merge changes I0613c23f,Ibeab8d0a,I8bd668ad,I7d3a16be
* changes:
  [NS A14] Move code notifying battery stats in its right place
  [NS A13] Move legacy broadcast handling after rematch.
  [NS A12] Move some legacy type tracker handling to a function
  Add tests for ConnectivityService → BatteryStats messages

Chalard Jean   authored and   Gerrit Code Review   commited 2019-12-02 05:17:39 +00:00
604c2121a4
[NS A17] Update linger state after rematching.
Test: FrameworksNetTests NetworkStackTests
Change-Id: I720a1feb89088aa123201ef5867de444234343e8

Chalard Jean   commited 2019-12-02 13:02:41 +09:00
41bae5c936
[NS A16] Cleanup
Move LegacyTypeTracker work into a function for readability.

Test: FrameworksNetTests NetworkStackTests
Change-Id: I9539b8cc4422b3a0cc1d3d9b3a44d59dc1905b44

Chalard Jean   commited 2019-12-02 13:02:41 +09:00
4005aeb760
[NS A15] Move legacy default broadcasts out of the loop
Test: FrameworksNetTests NetworkStackTests
Change-Id: Ib79b777b5efda3a4c85c30055f1a6d03d5d04c25

Chalard Jean   commited 2019-12-02 13:02:41 +09:00
76b041667a
[NS A14] Move code notifying battery stats in its right place
This should be done once every time an interface comes online.
Doing this in updateLinkProperties guarantees this happens every
time a new interface comes online, but it doesn't do it more
often than needed.

Test: FrameworksNetTests NetworkStackTests
Change-Id: I0613c23f44192944266d76107308da8d1c541d1c

Chalard Jean   commited 2019-12-02 13:02:38 +09:00
e55503198b
Merge changes from topic "tether_migrate"
* changes:
  [Tether10]Remove UserManagerInternal usage in Tethering
  [Tether07] Migrate Tethering into module
  [Tether07] Clean up build rule for libtetheroffloadjni

Mark Chien   authored and   Gerrit Code Review   commited 2019-11-30 12:17:47 +00:00
254a71dd7b
[Tether07] Migrate Tethering into module
Now tethering would be run in dedicated service.
TetheringManager is the interface used to communicate with
TetheringService. The new call flow would be: ConnectivityManager
-> ConnectivityService -> TetheringManager -> TetheringService.
Note: the return value of #tether(), #untether() and #setUsbTethering()
APIs would always be no error. Client can use #getLastTetherError()
or #getTetheredIfaces or listen tether state change to check
status of corresponding interface.

Bug: 136040414
Bug: 144742179
Test: -build, flash, boot
      -atest TetheringTests
      -atest FrameworksNetTests

Change-Id: I7e78c0e0a3e70f940a749ba2a39ece7c7ec5b9b3
Merged-In: I7e78c0e0a3e70f940a749ba2a39ece7c7ec5b9b3

markchien   authored and   Mark Chien   commited 2019-11-30 10:03:08 +00:00
497a062e04
[NS A13] Move legacy broadcast handling after rematch.
As opposed to other patches in this series, there is a logic change
here. This will send all necessary legacy broadcasts after all
matches have been done.

This should be fine because the callbacks and the broadcasts are
unordered anyway, and the broadcasts are still sent in the same
order as before ; there should not be an observable change from
apps besides some jitter.

Bug: 113554781
Test: ConnectivityServiceTest
Change-Id: Ibeab8d0a9106c5198228888ac33084238c0a4a1a

Chalard Jean   commited 2019-11-29 16:59:31 +09:00
dc623310c4
[NS A12] Move some legacy type tracker handling to a function
It's fine to do this out of the if() clause because :
• If the network newly satisfies a request it is sure to have
  it in the list of requests it satisfies
• If it does not newly satisfy a request and there is still
  a request with a legacy type that it satisfies, then it
  is already remembered by LegacyTypeTracker

As for the VPN, the code always enters the condition anyway.

Test: ConnectivityServiceTest
Change-Id: I8bd668ad27043d6a5036b1b3c52fa5a3146abcfa

Chalard Jean   commited 2019-11-29 16:59:31 +09:00
9fdd38a21a
Add tests for ConnectivityService → BatteryStats messages
Test: ConnectivityServiceTest
Bug: 113554781
Change-Id: I7d3a16be76f606872f8edb84647b9ef94f36cba1

Chalard Jean   commited 2019-11-29 16:59:30 +09:00
c63c19ddce
Merge "[NS A11] Small refactor"
Chalard Jean   authored and   Gerrit Code Review   commited 2019-11-25 08:55:19 +00:00
39a3f236b6
Merge "Fix hasUseBackgroundNetworksPermission issue."
Paul Hu   authored and   Gerrit Code Review   commited 2019-11-25 08:41:05 +00:00
bc582ab167
Merge "Fix title of PRIVATE_DNS_BROKEN notification when connecting VPN"
Lucas Lin   authored and   Gerrit Code Review   commited 2019-11-25 08:14:09 +00:00
acac9a269b
Merge "Adjust PermissionMonitor#startMonitoring in ConnectivityService"
Treehugger Robot   authored and   Gerrit Code Review   commited 2019-11-24 15:21:43 +00:00
ac53988b48
Fix hasUseBackgroundNetworksPermission issue.
PermissionMonitor#hasUseBackgroundNetworksPermission only uses
the first package name of the uid for checking permission.
This is incorrect since each package declared different
permissions. So using the mApps which already checked both
network and using restricted network permissions. If uid is in
the mApps list that means uid has one of permission at least.

Bug: 135897744
Test: atest FrameworksNetTests
Change-Id: I3500a03ce06b5b822311ad0c67b606ce4039216a

paulhu   commited 2019-11-24 22:27:32 +08:00
121b2fb600
Fix title of PRIVATE_DNS_BROKEN notification when connecting VPN
NetworkNotificationManager will only get the first transport
type from the NetworkCapabilities of network, and if the device
connects to a VPN and its underlying network is wifi, then the
first finding transport type will be TRANSPORT_WIFI. So, if the
private DNS is broken when device connected to VPN,
NetworkNotificationManager will try to get the SSID for the
title of notification but failed. For this kind of case, the
title of PRIVATE_DNS_BROKEN notification will show
"null has no internet access".

Bug: 143340533
Test: 1. Build pass.
      2. Connect to VPN and let private DNS to be broken, check
      title of PRIVATE_DNS_BROKEN notification.
      3. atest FrameworksNetTests

Change-Id: I1ed018cc8774d4fce4b94854f8e8703a28818463

lucaslin   commited 2019-11-22 12:46:32 +08:00
78bfa8c92d
[NS A11] Small refactor
Test: ConnectivityServiceTest
Change-Id: I9c4247e0ed67c76d10575bd1a8fb5ff7780a1206

Chalard Jean   commited 2019-11-20 20:42:41 +09:00
463056b14f
[NS A10] Cleanup
Reap networks after all networks have been rematched.

Bug: 113554781
Test: ConnectivityServiceTest
Change-Id: I195d894e702f1c738ea25596704ea73a3ae55031

Chalard Jean   commited 2019-11-20 20:42:41 +09:00
a03df69114
[NS A09] Always rematch all networks to requests
This is a regression in performance but it is necessary for
the sake of refactoring ; when the refactoring is over, the
performance will be improved back.

Test: ConnectivityServiceTest
Change-Id: I7069c11193dccb7dce6af65cfb731c0f4ad93629

Chalard Jean   commited 2019-11-20 20:42:40 +09:00
6090209bc1
[NS A08] Tiny refactoring
Test: ConnectivityServiceTest
Change-Id: I52f70756003cef61b450e9c1e9e57dc70f3091d5

Chalard Jean   commited 2019-11-20 20:32:57 +09:00
3a990e150b
[NS A07] Move the last side effects out of the decision loop.
This is a no-op. Reviewers : please scrutinize this for behavior
changes.

Test: ConnectivityServiceTest
Change-Id: Icc621f0a64a72dae0192843e6b6587ec4e31ea4d

Chalard Jean   commited 2019-11-20 20:32:57 +09:00
962d7fa543
[NS A06] Move more side effects out of the decision loop
This is a no-op.

Bug: 113554781
Test: ConnectivityServiceTest
Change-Id: I493b969c278097a289a1ef689ca268606227ae79

Chalard Jean   commited 2019-11-20 20:32:57 +09:00
f791454420
[NS A05] Move some side effects out of the network decision loop
This moves the side effects done by the decision loop when a
network stops satisfying a request to outside the decision loop.

Bug: 113554781
Test: ConnectivityServiceTest
Change-Id: I7b7594250d5c04362c699e065d30a1181effed09

Chalard Jean   commited 2019-11-20 20:32:57 +09:00
b1d1cb83fe
[NS A04] Store changes in rematchNetworkAndRequests in a map
This is a preliminary change to move the code that chooses what
network gets assigned to what request out of ConnectivityService.

By storing the list of changes first, it becomes possible to move
the changes with side-effects to a later part of the code, after
the decisions have been made. This move is implemented in a later
change.

Bug: 113554781
Test: ConnectivityServiceTest
Change-Id: I60fe318a8eabf13d1c07b144367ca92cf07e734e

Chalard Jean   commited 2019-11-20 20:32:56 +09:00
9fe3ecafc4
[NS A03] Remove mNetworkForRequestId
The goal of doing this is to remove the locks. Locking imposes
an ordering that is parallel to the program sequence ; often
it is what is needed, but the refactoring in progress needs to
change the traversal order of the requests without having
observable side-effects (or at least, very controlled ones).
The order is difficult enough to maintain when there is
only one. In this case, it is easy to remove the locks, and it
will simplify vastly the complexity of the refactoring by
removing the parallel ordering that would have to be maintained.

Bug: 113554781
Test: ConnectivityServiceTest
Change-Id: Ie4ae6a97053559e6cbac8230f2db3d35000b35a9

Chalard Jean   commited 2019-11-20 20:32:45 +09:00
2883eaffb4
[NS A02] Move the contents of mNetworkForRequestId to NRIs
The member will be removed in a subsequent change

Bug: 113554781
Test: ConnectivityServiceTest
Change-Id: I2379e47b1a97fb939b8558c01547d3d704f0f628

Chalard Jean   commited 2019-11-19 22:41:09 +09:00
e8cf3bf724
[NS A01] Add checks for the handler thread
This is a preliminary step to removing mNetworkForRequestId, whose
role could be better managed by storing the network inside the NRI.
This serves two purposes :
1. It is a sanity check. Those functions should never be called out
of the handler thread, and if they are it's a bug.
2. It will serve to prove the followup changes are correct.

Bug: 113554781
Test: ConnectivityServiceTest
Change-Id: If29066839ad640121d33f231abdd4f37d0ad3fd5

Chalard Jean   commited 2019-11-19 22:41:09 +09:00
4deee63037
Adjust PermissionMonitor#startMonitoring in ConnectivityService
Let PermissionMonitor#startMonitoring() running in the beginning
of the ConnectivityService#systemReady() before
MultipathPolicyTracker.start(). Since mApps in PermissionMonitor
needs to be populated first to ensure that listening network
request which is sent by MultipathPolicyTracker won't be added
NET_CAPABILITY_FOREGROUND capability.

Bug: 135897744
Test: atest FrameworksNetTests
Change-Id: Ibef8e7b0017a77384630d34c9edc6c40875f773e

paulhu   commited 2019-11-19 17:55:31 +08:00
bad5559a74
[NS01] Create NetworkScore
It's the first patch for refounding network selection. The new
network selection will try to compare the networks by more
factors, and will try to choose the best network after doing
the evaluation of trade-off.
Create the object that will serve to represent network quality
for more comprehensive ranking.

Bug: 143676287
Test: 1. Build pass.
      2. atest FrameworksNetTests

Change-Id: I4b6071d14365aa84d06be9802516fedf527e70f7

lucaslin   commited 2019-11-07 16:47:56 +08:00
fe4c578d6e
Better notification to user when DNS-over-TLS is broken
Provide a specifc notification to let users know that device
has no internet is because it really doesn't have internet access
or it's caused by private DNS resolution failed.

Bug: 113242081
Test: atest FrameworksNetTests
Change-Id: I710c88a4742f5fd56c39fc797d7fa3ad36dba553

lucaslin   commited 2019-10-22 18:27:33 +08:00
8cf57f5cd5
Remove the network capabilities which are added twice
Remove the network capabilities which are added twice in
createDefaultNetworkCapabilitiesForUid() and
createDefaultInternetRequestForTransport(). In the constructor
of NetworkCapabilities, it will add the DEFAULT_CAPABILITIES
which includes the NOT_RESTRICTED.

Bug: 142370233
Test: 1. Build pass.
      2. atest FrameworksNetTests
Change-Id: I7159909aec8faa7f25cef94195bdaea0fea55840

lucaslin   commited 2019-10-15 17:13:45 +08:00
cc85ff9fa3
Merge "API to detect which network interfaces support wake-on-lan"
Iavor-Valentin Iftime   authored and   Gerrit Code Review   commited 2019-10-08 15:08:18 +00:00
1d47b3ab03
API to detect which network interfaces support wake-on-lan
Add a new method in LinkProperties, isWakeOnLanEnabled() which returns
true if network interface is defined in config_wakeonlan_enabled_interfaces
string-array (config.xml)

Bug: 132705025
Test: atest LinkPropertiesTest & atest ConnectivityServiceTest
Change-Id: I3f7803aafd2f8eaf8aa18419b21339e15d4b7a0b

Valentin Iftime   commited 2019-10-08 13:03:30 +02:00
a039e57ead
Merge "ConnectivityService: Grant networkstack uid extra privileges"
Treehugger Robot   authored and   Gerrit Code Review   commited 2019-10-08 03:12:58 +00:00
0bb25f4be7
ConnectivityService: Grant networkstack uid extra privileges
The wifi network factories/agents are going to run in the network stack
process for devices which accept wifi mainline module. Allow these
factories/agents to perform privileged operations.

Bug: 142115344
Test: ACTS test
Change-Id: I2dd412ac5c6b67f52c87113fcda345e1f531f9c4
WifiNetworkRequestTest:test_connect_failure_user_rejected passes now.
(cherry-picked from c7580b1d59ee126cd6867cb6fe4485a69e2b4622)

Roshan Pius   commited 2019-10-06 14:32:19 -07:00
111b1b00cc
Opportunistic cleanup
Test: FrameworksNetTests NetworkStackTests
Change-Id: I370ad15fb0d8301f9720caf5296365c04aebeb62

Chalard Jean   commited 2019-09-30 19:12:25 +09:00
bb3e64fdc5
Merge "DO NOT MERGE - Merge Android 10 into master"
Xin Li   authored and   Gerrit Code Review   commited 2019-09-05 16:53:23 +00:00
3e350bb864
Add NetIdManagerTest
Add a simple test to verify that IDs loop correctly, that they skip used
IDs correctly, and throw when there is no remaining ID.

Test: atest com.android.server.NetIdManagerTest
Change-Id: I4c9518c725156d743286e062fd2eec1423a0459e

Remi NGUYEN VAN   commited 2019-09-04 15:57:58 +09:00
f3ba3cd27b
Add ConnectivityServiceIntegrationTest
This test exercises the Connectivity <-> NetworkMonitor integration.
This CL only contains a simple test (network validates), but more
generally it sets up a test package that contains both services.jar
classes and NetworkStack classes, and runs NetworkStack components in
another process (using TestNetworkStackService).

ConnectivityServiceIntegrationTest runs in the test process and binds to
TestNetworkStackService to obtain TestNetworkStackConnector and to
NetworkStackInstrumentationService to obtain
NetworkStackInstrumentationConnector. That last connector allows the
test to mock NetworkMonitor HTTP Requests.

Test: atest FrameworksNetIntegrationTests
Change-Id: Ieca18e273609044cf6b1870d2f0dba33ca7b38d3

Remi NGUYEN VAN   commited 2019-09-04 15:57:47 +09:00
ebe5298d84
Merge "Fix LockdownVpnTracker deadlock when resetting legacy Always-On VPN"
am: c07aed0fd4

Change-Id: If5b3f6f1d397d3ac35b509a2e634a60933f2df6c

junyulai   authored and   android-build-merger   commited 2019-08-30 08:30:10 -07:00
2e15c3578a
Fix LockdownVpnTracker deadlock when resetting legacy Always-On VPN
When resetting legacy Always-On VPN, the intent is handled by
main thread. And it will also initialize VPN shutdown process,
which will cause networkInfo changed event on
ConnectivityService internal thread. These two events need to
hold their corresponding lock and ask for the other one, which
causes the deadlock.

This patch move the event handling to the same thread to prevent
such deadlock, and cleanup some unused variables.

Change-Id: I5b656c0d0381acb4e33409a11f502db9b180296c
Fix: 139122208
Test: atest FrameworksNetTests, manual test

junyulai   commited 2019-08-30 19:56:59 +08:00
2bdd029792
Merge "Run callbacks on ConnectivityService thread"
am: 1ef61592b8

Change-Id: I7a8d035ec7453c5351eb2646c631c19964cb0f88

Remi NGUYEN VAN   authored and   android-build-merger   commited 2019-08-30 03:36:26 -07:00
ab507d4e34
Merge "Run callbacks on ConnectivityService thread"
Treehugger Robot   authored and   Gerrit Code Review   commited 2019-08-30 10:18:28 +00:00
1ef61592b8
Run callbacks on ConnectivityService thread
Run MultinetworkPolicyTracker and DataConnectionStats callbacks on the
ConnectivityService handler thread.

Previously the callbacks would be using the SystemServer foreground
thread (Looper.myLooper()), or the broadcast thread for the
MultinetworkPolicyTracker BroadcastReceiver. This is error-prone, can
cause threading issues and makes it difficult to test the components.

Test: atest FrameworksNetTests
Change-Id: I189213dd363004abed294659165bf5430d153bba

Remi NGUYEN VAN   commited 2019-08-28 10:10:04 +09:00
6f7ef3f258
Merge changes I69cdbb16,I6975e0b7
am: d889cb5098

Change-Id: I3c8ddf7809a0d443587c1c4c06ef56ac302fc80f

Lorenzo Colitti   authored and   android-build-merger   commited 2019-08-27 03:31:02 -07:00
5fecd24f17
notify netd about uid internet permission changes when package replaced
1. If a previous version of an app doesn't declare internet permission;
2. The User upgraded it to a new version and the new one does declare the
internet permission;
3. The new app are not allowed to access the internet until next boot

Bug: 137864893
Test: Manual, just make sure the onPackageChanged would be executed on package changes
Change-Id: I69cdbb16a027a9c4e974b32371b1f64a23a51a23
Signed-off-by: wangmingming1 <wangmingming1@xiaomi.com>

wangmingming1   authored and   Lorenzo Colitti   commited 2019-08-26 09:30:59 +09:00
b020abc61c
Merge "Extract test utilities for ConnectivityService"
am: 4b9f5ddda5

Change-Id: I0ac2a480f961bb6fd1d83dedad6a7942ee03858f

Remi NGUYEN VAN   authored and   android-build-merger   commited 2019-08-06 14:58:43 -07:00
dafaf4472f