Commit Graph

1436 Commits

Author SHA1 Message Date
Paul Hu
e3e9f5622b Merge "Rename onResolveStopped to onResolutionStopped" 2023-02-06 11:16:48 +00:00
Aaron Huang
c6d0770afc Merge "Make sure device is awake to verify the launcher is shown" 2023-02-06 06:47:23 +00:00
Aaron Huang
361e617b93 Make sure device is awake to verify the launcher is shown
If the screen is off while running the test, it will
cause test fail because the test cannot verify the
launcher is shown. Thus, wake up the device first to
verify if the launcher is shown or not.

Bug: 261860642
Test: this
Change-Id: Icda8a2c6fdc97caf1986bb812ca366d9c9fde03f
2023-02-06 12:13:26 +08:00
Remi NGUYEN VAN
e32490944b Merge "Allow Advertiser, DiscoveryManager runtime toggle" 2023-02-02 02:53:47 +00:00
Paul Hu
b2c0f3407f Rename onResolveStopped to onResolutionStopped
Rename the method onResolveStopped(NsdServiceInfo) to
onResolutionStopped(NsdServiceInfo) for consistency as API
review feedback.

Bug: 266811051
Test: atest FrameworksNetTests CtsNetTestCases
Change-Id: I788b5903ecaf78a9aa960dd3b7413a22f171c72f
2023-01-30 08:53:15 +00:00
Motomu Utsumi
9a9c11e33e Remove getVpnLockdownUidRanges test api
getVpnLockdownUidRanges acquire lock and access internal state of a
Handler-based class (PermissionMonitor), which is bad practice in
general.

getVpnLockdownUidRanges returns keySet of mVpnLockdownUidRanges.
PermissionMonitor call updateUidLockdownRule and update the bpf map
based on mVpnLockdownUidRanges.
PermissionMonitorTest verifies the args of updateUidLockdownRule call.

So, It's not necessary to verify the mVpnLockdownUidRanges which
is internal states of PermissionMonitor.

Test: atest PermissionMonitorTest
Bug: 262199762
Change-Id: I85b39ab2aff44dcbe809b39560d6bb87fbb0c084
2023-01-30 17:41:39 +09:00
Motomu Utsumi
ff12d34445 Remove getVpnInterfaceUidRanges test api
getVpnInterfaceUidRanges acquire lock and access internal state of a
Handler-based class (PermissionMonitor), which is bad practice in
general.

getVpnInterfaceUidRanges returns mVpnInterfaceUidRanges.
PermissionMonitor call add/removeUidInterfaceRules and update the bpf
map based on mVpnInterfaceUidRanges.
PermissionMonitorTest/ConnectivityServiceTest verifies the args of
add/removeUidInterfaceRules call.

So, It's not necessary to verify the mVpnInterfaceUidRanges which
is internal states of PermissionMonitor.

Test: atest ConnectivityServiceTest PermissionMonitorTest
Bug: 262199762
Change-Id: I31cbb9b1dd43eaf0354799a81c9df292fb5f6445
2023-01-30 17:41:34 +09:00
Remi NGUYEN VAN
a8a777bbbd Allow Advertiser, DiscoveryManager runtime toggle
Allow toggling MdnsAdvertiser and MdnsDiscoveryManager at runtime, by
always creating them in NsdService constructor, but only using them when
the flag is on when starting discovery, resolve or registration.

When stopping, based on the type of the stored request, stop the
corresponding backend.

Bug: 265891278
Test: atest NsdServiceTest
Change-Id: I7cb2f9fe9e1ed3dc77616689a8e3ffa00f5bc269
2023-01-27 19:37:04 +09:00
Sudheer Shanka
74fe7178af Add defer-until-active policy to CONNECTIVITY_ACTION.
This allows deferring the broadcast delivery to apps in
the Cached state.

Bug: 255545931
Test: TH
Change-Id: Idd94ad5f9dbabf88f6070108bdfc8e60f34304a6
2023-01-24 19:33:06 +00:00
Remi NGUYEN VAN
5fc52a4b2f Merge "Do not return found services on dummy0" 2023-01-24 04:10:58 +00:00
Remi NGUYEN VAN
643edb6715 Do not return found services on dummy0
When registering and advertising a service on the same device, it is
possible for NsdService to find the service on the dummy0 interface. It
is however unusable and not resolveable.

Skip callbacks on the dummy0 interface as they would confuse apps and
tests.

Bug: 266176036
Test: atest NsdServiceTest
Change-Id: I98cca0135e0f6936187d45707cbdad7a7f263ff1
2023-01-23 19:14:57 +09:00
Chalard Jean
e0abd52557 Fix a bug where adding a user doesn't update network allow lists
Even if there are no preferences, the allow list needs
to be updated upon adding a new user, because it's set
unconditionally when the network connects.

Adding all existing UIDs would address this issue too
and we probably want to do it, but immediately this
seems simpler.

Bug: 266136779
Test: new test for this
Change-Id: I77091a6c3d3ccf2b80ab0aaa01d09ef0df922501
2023-01-23 17:40:01 +09:00
Treehugger Robot
c795473a80 Merge "[DK2-2]Add flag to control dynamic keepalive mode" 2023-01-20 11:59:26 +00:00
chiachangwang
a38b723fb9 [DK2-2]Add flag to control dynamic keepalive mode
Add a flag to control dynamic keepalive mode so that this
feature could be dynamically enabled via flag push. Default
is enabled in KeepaliveTracker.

Bug: 259000745
Test: atest FrameworksNetTests
Change-Id: I438de9aefd22229669a9ae4da5fd109fdfa73b10
2023-01-20 17:47:11 +09:00
Remi NGUYEN VAN
3c42e517ac Merge "Implement conflict detection" 2023-01-20 06:00:54 +00:00
Remi NGUYEN VAN
c8db64bdb1 Implement conflict detection
On each received packet, query MdnsRecordRepository to detect any
conflicting service, and report it though onServiceConflict.

Implement restartProbingForConflict and renameServiceForConflict which
may be called when that callback is dispatched.

Bug: 266151066
Test: atest MndsInterfaceAdvertiserTest MdnsRecordRepositoryTest
Change-Id: I5434b00879e0c8f7fc1e4769455b688c3bd7a9b5
2023-01-20 12:53:32 +09:00
Remi NGUYEN VAN
93587f609b Merge "New API to listen service update" 2023-01-19 15:25:23 +00:00
Paul Hu
18aecccc9d New API to listen service update
Currently, the resolution is a one shot query, it only notifies
the first finding service information. There is no way to listen
the service update. Thus, add a new API that can register a
callback to listen to the service updates continuously.

Bug: 245369943
Test: atest FrameworksNetTests CtsNetTestCases
Change-Id: I0e9d92b9028375feb3e344ab6c4acb515c5b2be9
2023-01-19 20:16:03 +09:00
chiachangwang
3d60bacfa0 [DK2-0]Create AutomaticOnOffKeepaliveTracker
Add a new AutomaticOnOffKeepaliveTracker class between
ConnectivityService and KeepaliveTracker to handle the automatic
on/off keepalive. This commit only creates this new class and
move the TCP polling code to the new class as a preparation for
the following commit.

The original test file was created for testing the TCP polling
mechanism, so rename it to match the new class.

Bug: 259000745
Test: m ; atest FrameworksNetTests
Change-Id: I1b229f906283c0f5ef7a3efdb0572fcbfc5df72b
2023-01-19 13:17:54 +09:00
Remi NGUYEN VAN
fd02056713 Merge "New API to stop service resolution" 2023-01-19 01:51:50 +00:00
Treehugger Robot
55bb102b2d Merge "Optionally use MdnsAdvertiser for advertising" 2023-01-18 15:53:03 +00:00
Oli Lan
f738c40e8c Merge "Update VpnManagerServiceTest to work with lockdown VPN main user changes." 2023-01-18 15:32:14 +00:00
Remi NGUYEN VAN
5b9074cf7e Optionally use MdnsAdvertiser for advertising
Based on a flag, use MdnsAdvertiser for advertising instead of the
legacy mdnsresponder implementation.

Bug: 241738458
Test: atest NsdServiceTest
Change-Id: I2d5069097c11f2959e3792cac326d179a3116479
2023-01-18 23:23:43 +09:00
Paul Hu
b58deb706c New API to stop service resolution
Resolve service may take long time due to network issue or
using wrong service information, but users are not able to stop
it. They can only wait for the callback of resolveService to end,
which sometimes takes a long time. Thus, add the new API that
users can stop the service resolution.

Bug: 245369943
Test: atest FrameworksNetTests CtsNetTestCases
Change-Id: I6b6183c8c73f8db981b9afa51fbc73bf886d9ed3
2023-01-18 10:10:25 +00:00
Paul Hu
38f5d4661b Merge "Implement service resolved callback" 2023-01-18 01:43:28 +00:00
Remi NGUYEN VAN
aa15a8ea5d Merge changes I69128db9,I13db22f8
* changes:
  Implement onServiceConflict
  Add replying to queries
2023-01-18 01:13:35 +00:00
Remi NGUYEN VAN
fe73104cc1 Merge "Factor out response decoding into MdnsPacket" 2023-01-18 01:12:58 +00:00
Paul Hu
f71485f351 Merge changes I298816ac,I3f41b4fe,Ibd782029
* changes:
  Implement service lost callback
  Implement service found callback
  Use MdnsDiscoveryManager for discovery
2023-01-17 15:51:54 +00:00
Paul Hu
75069ed47e Implement service resolved callback
Service resolved should be notified when receive the
onServiceFound callbacks from MdnsServiceBrowserListener

Bug: 254166302
Test: atest FrameworksNetTests CtsNetTestCases
Change-Id: I681720065084bf3449c5b1ab44cd4ed6a659dcdb
2023-01-17 23:25:08 +08:00
Remi NGUYEN VAN
b1b7fab156 Implement onServiceConflict
Implement the onServiceConflict callback in MdnsAdvertiser, refactoring
the conflict detection to reuse it both in onServiceConflict (when a
conflict is detected on the network after add) and at service add time.

Bug: 241738458
Test: atest MdnsAdvertiserTest
Change-Id: I69128db936296bd2c5e90e9f00df19fd881e1748
2023-01-17 23:21:28 +09:00
Remi NGUYEN VAN
46676497eb Add replying to queries
MdnsInterfaceAdvertiser registers to receive incoming packets, and
sends replies to queries as built by MdnsRecordRepository.

Bug: 241738458
Test: atest
Change-Id: I13db22f8efc870b6e0747d105f6bc8f759910f81
2023-01-17 23:10:42 +09:00
Remi NGUYEN VAN
5fbaea55d8 Factor out response decoding into MdnsPacket
Factor out generic packet decoding into MdnsPacket, out from
MdnsResponseDecoder.

This allows reusing the same decoding code for replies, and other kinds
of MdnsPackets.

Bug: 241738458
Test: atest MdnsResponseDecoderTests MdnsPacketTest
Change-Id: I4380f80240ed5a367accfc1b0c595967ee475578
2023-01-17 23:00:34 +09:00
Paul Hu
319751a572 Implement service lost callback
Service lost should be notified when receive the
onServiceNameRemoved callbacks from
MdnsServiceBrowserListener.

Bug: 254166302
Test: atest FrameworksNetTests
Change-Id: I298816ac186efeda85cea4cd11f3beab6b341bc5
2023-01-17 21:26:26 +08:00
Chiachang Wang
c42f1adfd5 Merge "[DK1]Add TCP polling mechanism" 2023-01-17 13:04:04 +00:00
Paul Hu
019621e070 Implement service found callback
Service found should be notified when receives the
onServiceNameDiscovered callbacks from
MdnsServiceBrowserListener.

Bug: 254166302
Test: atest FrameworksNetTests CtsNetTestCases
Change-Id: I3f41b4fe85cd85ad356fa764663187a88914412c
2023-01-17 20:07:22 +08:00
Paul Hu
23fa202478 Use MdnsDiscoveryManager for discovery
Register/Unregister the listener to/from MdnsDiscoveryManager
when discovery started/stopped.

Bug: 254166302
Test: atest FrameworksNetTests CtsNetTestsCases
Change-Id: Ibd782029826ac5856c608165928cd942e46dd9a4
2023-01-17 19:16:50 +08:00
Jean Chalard
76ee573dda Merge "Rename mXXXNetworkAgent to mXXXAgent" 2023-01-17 08:12:31 +00:00
Aaron Huang
a3ed25924e Merge "Remove dev recorder from NetworkStatsService" 2023-01-17 07:27:35 +00:00
Treehugger Robot
6366d7c2db Merge "Import CallbackEntries in ConnectivityServiceTest" 2023-01-17 07:24:53 +00:00
chiachangwang
6a9f0db983 [DK1]Add TCP polling mechanism
Add TCP polling mechanism in KeepaliveTracker to understand if
there are any TCP sockets in the target network. This is a
preparation commit for dynamically control keepalive based on
the existence of TCP sockets. This is non-functional now since
there is no caller to retrieve the information now.

Bug: 259000745
Test: atest FrameworksNetTests
Test: Manually test by creating TCP sockets on the target network
      in device and check if deisgn works.
Change-Id: I355ac340cad2fac618bb9d65fb1b1539ea644959
2023-01-17 07:24:48 +00:00
Paul Hu
1b81be6de6 Merge "Create the MdnsDiscoveryManager" 2023-01-17 07:05:13 +00:00
Chalard Jean
dda2fd4883 Rename mXXXNetworkAgent to mXXXAgent
In the context of ConnectivityServiceTest this is plenty
clear, so terser is better.

Test: ConnectivityServiceTest
Change-Id: Id20afc8a81a6c00c932ffae3b8dbc2919773d35b
2023-01-17 14:44:31 +09:00
Chalard Jean
cc231ceed2 Import CallbackEntries in ConnectivityServiceTest
This is not ambiguous so less verbose is a lot simpler

Test: ConnectivityServiceTest
Change-Id: I47cc689441a20fa5409268e133f9e5ca59216a5d
2023-01-17 14:44:29 +09:00
Remi NGUYEN VAN
fa94865739 Merge changes I3b1ad1be,Id4c2e610
* changes:
  Implement exit announcements
  Implement announcements on probing success
2023-01-17 01:36:05 +00:00
Paul Hu
4bd98ef68e Create the MdnsDiscoveryManager
Create the MdnsDiscoveryManager for mdns discovery and resolution
if the feature is enable.

Bug: 254166302
Test: atest FrameworksNetTests CtsNetTestCases
Change-Id: I4d7591b50cb06f0efcc0dde9834b775c513cceff
2023-01-17 00:26:01 +08:00
Remi NGUYEN VAN
e4bd27f919 Implement exit announcements
Build ExitAnnouncementInfo in MdnsRecordRepository.exitService. Use a
separate class for AnnouncementInfo and ExitAnnouncementInfo, so
announcement callbacks can differentiate each case.

Bug: 241738458
Test: atest
Change-Id: I3b1ad1bef3dc1514479d7c789ef06b6a7de02e59
2023-01-16 19:20:36 +09:00
Remi NGUYEN VAN
bdc2d50c49 Implement announcements on probing success
Once probing succeeds, the advertiser sends announcements for its
records as per RFC6762 8.3.

Implement MdnsRecordRepository.onProbingSucceeded to return the
AnnouncementInfo which will be sent.

Bug: 241738458
Test: atest
Change-Id: Id4c2e610911fdf471a6d6ae08c2127fbf1530dc7
2023-01-16 17:33:54 +09:00
Aaron Huang
2500069488 Merge "Remove *_WILDCARD constants from NetworkTemplate" 2023-01-16 07:56:09 +00:00
Aaron Huang
99348b1664 Merge "Remove mSubscriberId from NetworkTemplate" 2023-01-16 07:55:26 +00:00
Paul Hu
2bb41be9d3 Merge "Move mDNS code to service-connectivity-t" 2023-01-13 12:33:28 +00:00