Commit Graph

42 Commits

Author SHA1 Message Date
Tsung-Mao Fang
e1f72b7f3c Wi-Fi panel doesn't need to check permission
Prior to this cl, we use #getPackagesForUid()
to get a list of calling package names and
pick up 1st package name in the list as target
calling package. And then go to check the
Wi-Fi permission.

This implementation is ok for most apps without
sharing system uid. However, this may not work
if the caller is set as sharing system ui.
In this case, we get a list of packages
and we don't know which one is caller. So, if we
decide to choose the 1st package of list as our
calling package, then it could fail to pass
permission check since that package could not
a calling package.

In this cl, we skip permission check for those
packages running with system uid. So, it can resolve
this Wi-Fi Panel problem since Wi-Fi panel running
on settings process and also promise the security
issue at the same time.

Test: 1. adb shell am start -a android.settings.panel.action.WIFI
2. Verify on assistant app and system ui launcher and search app.
Bug: 240531998

Change-Id: Ia825853dde2e966e3d390cecfbe1a99f6439d31e
2022-08-11 16:07:42 +08:00
Weng Su
5f421125ab Restrict WifiSlice functionality for guest user
- Hide Wi-Fi toggle and show Wi-Fi status only if the user is a guest.

Bug: 232798363
Test: manual test
make RunSettingsRoboTests ROBOTEST_FILTER=WifiSliceTest

Change-Id: I35418477808eb5082f4651f5689f018dbb8e42ac
2022-06-09 06:07:55 +08:00
Tsung-Mao Fang
cb641fa6eb Show slice without toggle when there's no wifi permission
When the presenter app doesn't have certain permissions,
it's safer to go with a generic fallback slice
which just redirects user to the actual settings page.

Test: test on the presenter app. robo test
Fix: 178014725
Change-Id: I6f5358af2e00cb2fedba0b3f1474a026135986c6
2022-05-05 12:05:38 +08:00
Weng Su
2d3d9b9305 Hide Wi-Fi toggle in the Wi-Fi slice
- Hide Wi-Fi toggle and show restriction message in the Wi-Fi slice if Wi-Fi state is disallowed to change

- See the result screenshot in b/203168097#comment30

Bug: 203168097
Test: manual test
make RunSettingsRoboTests ROBOTEST_FILTER=WifiSliceTest

Change-Id: I09ccb6349dadf64a2f903245ba203ce77c86d1e1
2022-05-04 10:26:50 +08:00
Tsung-Mao Fang
821608c5be Do not expose wifi slice when no permission
Prior to this cl, slice provider always exposes wifi slice
to calling package without confirming any wifi permissions.

For current solution, we will check calling package's permission state
and decide whether slice provider should expose wifi slice or not.

Because settings search is a part of settings app,
this permission checker won't be applied to settings intelligence.

Test: manual, robotest, cts
Also run manul
Bug: 178014725

Change-Id: I2770b5b43366a5aa65c7519efc4243d350a21b26
2022-04-19 08:07:35 +00:00
Weng Su
64cc3bf9a4 Mock WifiManager.class for Roboletric test-cases
Bug: 214938188
Test: manual test
make RunSettingsRoboTests ROBOTEST_FILTER=AddNetworkFragmentTest
make RunSettingsRoboTests ROBOTEST_FILTER=ConfigureWifiEntryFragmentTest
make RunSettingsRoboTests ROBOTEST_FILTER=ContextualWifiSliceTest
make RunSettingsRoboTests ROBOTEST_FILTER=WifiConfigControllerTest
make RunSettingsRoboTests ROBOTEST_FILTER=WifiSliceTest

Change-Id: I96873c48b36ed11b30e32bba1b98b6328ad17bb7
2022-01-21 07:17:37 +00:00
Tsung-Mao Fang
8498760b07 Ignore broken tests related to wifi tracker lib
Test: Run entire robo tests
Bug: 214938188
Change-Id: Ic23c758737786c2294c400fd2746583fef426f2f
2022-01-17 21:27:25 +08:00
Chiachang Wang
6a78464406 Replace clearAll with withoutDefaultCapabilities
Replace the API as the feedback from API review.

Bug: 184735772
Test: make RunSettingsRoboTests \
ROBOTEST_FILTER=WifiDetailPreferenceController2Test
Test: make RunSettingsRoboTests \
ROBOTEST_FILTER=ContextualWifiSliceTest

Change-Id: I18f0776b6522489bf7e88f984bc44f23d8c9edc4
2021-05-14 15:08:00 +08:00
TreeHugger Robot
b8f0a8e2dc Merge "[Provider Model] Carrie Wi-Fi offload toggle request (panel)" into sc-dev 2021-04-21 08:19:23 +00:00
Weng Su
a320fb12a1 [Provider Model] Carrie Wi-Fi offload toggle request (panel)
- Do not set Carrier Network together when setting Mobile Data, if
carrner network provision enabled.

Bug: 182324921
Test: manual test
atest -c ProviderModelSliceTest
make RunSettingsRoboTests ROBOTEST_FILTER=WifiScanWorkerTest

Change-Id: Ic8b77fd7b43372f077ba1c8be8fd9a7c3bcff197
2021-04-20 22:36:04 +08:00
lucaslin
09bbb51d29 Replace the hidden API to public API or other alternatives
Some of connectivity related files are going to be a part of
mainline module, so the external callers cannot call its hidden
API.
Replace the hidden API to public API or other alternatives from
the callers side.

Bug: 182859030
Test: 1. Remove "framework-connectivity.impl"
      2. atest SettingsUnitTests:InternetUpdaterTest
      3. atest SettingsUnitTests:ProviderModelSliceHelperTest
      4. atest SettingsUnitTests:MobileNetworkUtilsTest
      5. make RunSettingsRoboTests \
         ROBOTEST_FILTER=AppDataUsagePreferenceControllerTest
      6. make RunSettingsRoboTests \
         ROBOTEST_FILTER=TetherPreferenceControllerTest
      7. make RunSettingsRoboTests \
         ROBOTEST_FILTER=WifiDetailPreferenceController2Test
      8. make RunSettingsRoboTests \
         ROBOTEST_FILTER=ContextualWifiSliceTest
Change-Id: Idd1ca57d8f2790070e9c401936c5af2a05bcfe9d
2021-04-14 11:36:54 +00:00
Weng Su
74b18587fb [Provider Model] Implement the carrner network selection
- Add primaryAction for connecting carrier network

- User toggles carrier network On/Off
  - Calls MergedCarrierEntry#setEnabled(true/false)

- User taps on carrier network
  - Calls MergedCarrierEntry#connect()

Bug: 175761096
Test:
- Manual Test
- atest ProviderModelSliceTest
- atest ProviderModelSliceHelperTest
- make RunSettingsRoboTests ROBOTEST_FILTER=WifiScanWorkerTest

Change-Id: I07cb6c142a2f4e9cbdbab1f77afdc367728b4e3f
2020-12-28 13:23:24 +00:00
Arc Wang
0496d2c142 [Wi-Fi] Apply WifiTrackerLib objects in Wi-Fi Slice
This change uses WifiTrackerLib's WifiPickerTracker & WifiEntry
to replace SettingLib's WifiTracker & AccessPoint.

This change includes

1. WifiScanWorker has the callbacks similar to a lifecycle component
   but it's not a lifecycle component. Let WifiScanWorker implements
   LifecycleOwner and provides #getLifecycle() for WifiPickerTracker.

2. Remove captive portal related code because WifiEntry#connect will
   handle captive portal login if it's necessary.

3. Create WifiSliceItem to wrap WifiEntry because WifiEntry is an
   abstract object and it does not provide copy constructor.
   Without copy construcor, Wi-Fi Slice may show unexpected information
   when a WifiEntry is updated.

Bug: 155613549
Bug: 152571756
Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.wifi.slice
      make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.wifi
Change-Id: I2d66ea4905daca3244ec4cf8f2935cda817480b1
2020-07-22 07:53:18 +00:00
Greg Kaiser
9e9255fb2a Revert "[Wi-Fi] Apply WifiTrackerLib objects in Wi-Fi Slice"
This reverts commit 7b1aded2a6.

Reason for revert: Settings is crashing for WiFi selection in SetupWizard on wembley

Bug: 161434533
Change-Id: I1d90e9bae1b31862fba674db0d7497e43f987a7f
Test: Locally reverted, reflashed, and was able to select WiFi without Settings crashing.
Exempt-From-Owner-Approval: Revert to clear up P0 while all owners are outside of work hours
2020-07-16 14:47:31 +00:00
Arc Wang
7b1aded2a6 [Wi-Fi] Apply WifiTrackerLib objects in Wi-Fi Slice
This change uses WifiTrackerLib's WifiPickerTracker & WifiEntry
to replace SettingLib's WifiTracker & AccessPoint.

This change includes

1. WifiScanWorker has the callbacks similar to a lifecycle component
   but it's not a lifecycle component. Let WifiScanWorker implements
   LifecycleOwner and provides #getLifecycle() for WifiPickerTracker.

2. Remove captive portal related code because WifiEntry#connect will
   handle captive portal login if it's necessary.

3. Create WifiSliceItem to wrap WifiEntry because WifiEntry is an
   abstract object and it does not provide copy constructor.
   Without copy construcor, Wi-Fi Slice may show unexpected information
   when a WifiEntry is updated.

4. Use WifiTrackerLib's NetworkDetailsTracker & WifiEntry in
   WifiDialogActivity because it gets a WifiEntry key from Wi-Fi Slice.
   NetworkDetailsTracker can get the WifiEntry of th key.

Bug: 155613549
Bug: 152571756
Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.wifi.slice
      make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.wifi
Change-Id: I0718f4647cea007a9b701922f3121a388dd43918
2020-07-16 15:56:42 +08:00
Jason Chiu
0625bb4815 Fix the overlapping problem of the burst of slice updates
Implement a throttle in SliceBackgroundWorker to control slice updates.

Test: robotest
Fixes: 152366832
Change-Id: I8b65d1b57973e036b932172627aca506f4fae3a4
2020-06-18 02:18:38 +08:00
Jason Chiu
dd1fbd68d0 Wifi slice improvement
- always show toggle

Bug: 149666241
Test: robotest
Change-Id: I602d26abf2dfa631a939ee79e9adc63bed44ade0
2020-02-20 17:38:01 +08:00
David Su
fa6e9f7283 Rename WifiConfiguration.getHasEverConnected()
Renamed to hasEverConnected() to conform to API
guidelines.

Bug: 146046526
Test: make RunSettingsRoboTests -j40
Change-Id: Ie88945326977ea11a05721e40a81c338fee61cb6
2020-01-30 20:36:30 -08:00
Jason Chiu
fbf3d7574a Implement new design of Wi-Fi card
- always show Wi-Fi card
- collapse the card in the new UI session when connecting to a stable
  network
- hide toggle, show a level icon and subtext in the new collapsed mode
- show loading row when the AP list is not full

Test: robotest
Fixes: 147473096
Change-Id: I893064ef04d40d8e7cb8e62c1e72a2cb5e97f6ac
2020-01-21 17:26:29 +08:00
David Su
6768f057b0 SettingsRoboTests: Remove @hide Wifi API usages
Constructors are @hide, instead use Mockito to
create mock objects.

Bug: 138801922
Test: atest SettingsRoboTests
Change-Id: I3fb22ffd7b04fd62649b42f455230c6372beef26
2020-01-07 17:28:43 -08:00
TreeHugger Robot
8bc21da216 Merge "Remove On/Off subtext next to the Wi-Fi toggle" into qt-dev 2019-05-14 04:44:27 +00:00
Jason Chiu
2c3e6c6434 Fix automatically directing the user to the captive portal in Wi-Fi Slice
The feature failed after the CL "Force the adapter to rebind cards with
a toggle".

Because toggle slices have been forced to rebind after starting another
activity and when any slice is updating. This unpins Wi-Fi slice and
stops WifiScanWorker and then clears the saved clicked network.

Solution:
1. Change ConnectToWifiHandler from activity to receiver and send
   broadcasts to it with FLAG_RECEIVER_FOREGROUND, so Wi-Fi slice won't
   be forced to rebind.
2. Seperate Wi-Fi scan worker and contextual Wi-Fi scan worker. Keep the
   original logic for the generic one, and then add the logic below to
   the contextual one.
3. Do not clear the saved clicked network when slice is unppined because
   it happens frequently in contextual homepage.
4. Introduce a static long in ContextualWifiScanWorker that updates once
   in every visible UI session. A session is when the screen is visible
   to user.
5. Use session token to determine whether auto-starting captive portal
   is needed.

Fixes: 128056349
Test: robotest, visual in homepage and network panel
Change-Id: I9e03c379806e124fa7253b2a635574b2433f6afc
2019-05-11 03:26:57 +00:00
Jason Chiu
46294872c7 Remove On/Off subtext next to the Wi-Fi toggle
Fixes: 132312797
Test: robotest, visual
Change-Id: I2c3b39e8deda211d23be0b2a73426778dbbf53db
2019-05-09 15:19:02 +08:00
Jason Chiu
6a6787cdc0 Add subtext for Wi-Fi items on Wi-Fi slice
- Sync the Wi-Fi slice items subtexts with Wi-Fi page, and add
  "Not connected" when the returned subtext is empty
- Wi-Fi slice header subtext just simply reveals on/off state
- Add a placeholder to the loading row to sync its height with other
  rows
- Show contextual Wi-Fi slice when the connected network is captive
  portal, is invalidated, or has limited connectivity

Bug: 130751985
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.wifi
Change-Id: I0b2715295f00edc8dd7d6d75b7fdc18263675797
2019-05-03 16:18:42 +08:00
Jason Chiu
a73d7715d1 Automatically direct the user to the captive portal in Wi-Fi Slice
Save the SSID when the user clicks the network, and then automatically
start login page when the network gets the captive portal capability.

Fixes: 128056349
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.wifi
Change-Id: Ia25241a8243d7d6aae604f341b512350404d9fd1
2019-04-23 12:07:20 +08:00
Jason Chiu
8f6c06974c Add prompt to sign in at captive portal to Wi-Fi Slice
- Support signing in captive portal APs in WifiSlice
- Show ContextualWifiSlice when signing in is required
- Generifies SliceBackgroundWorker.getInstance() to return <T extends SliceBackgroundWorker>

Fixes: 128056349
Test: make RunSettingsRoboTests -j
Change-Id: Ib4d3942591a65e81018389e4c0bbddfea6854dbc
(cherry picked from commit dd9f92280b)
2019-04-04 16:51:02 +00:00
Jason Chiu
1b5f5ef510 Add Wi-Fi connect listener in ConnectToWifiHandler
- Extract the connect listener from WifiSettings
- Add a listener to display a toast on failure to connect in ConnectToWifiHandler
- Also for the new AccessPoint.startOsuProvisioning() which accepts a connect listener

Bug: 123697580
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.wifi
Change-Id: I29b2c1e2c58312d692675ecabf2818b4bbed3b51
2019-04-02 13:44:08 +08:00
Quang Luong
619211cd9e Merge "Added connect listener to startOsuProvisioning()" 2019-04-01 17:55:36 +00:00
Jason Chiu
53d147dd5c Refactor WifiScanWorker
Extracted WifiScanWorker from WifiSlice

Bug: 128056349
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.wifi
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.slices
Change-Id: I9b3c809ee6c2b7466c959631840b257b91b49d88
2019-04-01 16:40:59 +08:00
Quang Luong
1859a19302 Added connect listener to startOsuProvisioning()
Updated AccessPoint.startOsuProvisioning() call to accept a connect
listener to display a toast on failure to connect.

Bug: 123697580
Test: build
Change-Id: I0f29b2f5ccc8f2d4b8137639725dca1bcb106b26
2019-03-28 13:09:37 -07:00
Jason Chiu
5b15c6748e Fix broken tests in WifiSliceTest
Fixes: 129293669
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.wifi.slice
Change-Id: I70bbeb1fcf01ff0569c937c5dd5c9cfa2e8f9b3c
2019-03-26 14:29:41 +08:00
jackqdyulei
4dbcdd632f Fix broken settings tests
1. Mark a few as Ignore with bug number
2. Remove some tests since it is covered in other places
3. Fix some tests

I think we should make tests at least green asap.

Bug: 129159331
Test: RunSettingsRoboTests
Change-Id: I90971b416806e4e9be249b06ad5abfb73d9d7c23
2019-03-25 15:54:47 -07:00
Jason Chiu
d4ab14969f Merge "Fix the bug of "Connecting" is rarely appearing on Wi-Fi slice" 2019-03-18 10:13:56 +00:00
Jason Chiu
4e42f53896 Fix the bug of "Connecting" is rarely appearing on Wi-Fi slice
- AccessPoint treats connected and connecting as equal so slice doesn't
refresh in this case
- Add a new method to determine if two lists are the same in SliceBackgroundWorker
- WifiScanWorker overrides this method to check the access point states

Fixes: 123941320
Test: robotest
Change-Id: I78d610da4b6b1d40f5785ba6701fb71b987fe31c
2019-03-18 16:01:48 +08:00
Fan Zhang
4cb2727989 Tie ContextualWifiSlice to UI instead of garbage collector
- Introduce a static long in SliceFeatureProvider that updates once
  every "session". A session is when user is in an UI (screen rotation,
  going to subpage, etc does not break the continuation of session).

- Use session token in ContextualWifiSlice to determine when to refresh,
  instead of relying on WeakHashMap from CustomSliceManager.
  WeakHashMap can be cleaned up at any time by gc so it doesn't match
  what we want on the UI.

- Also as a side fix, merged CustomSliceManager into
  SliceFeatureProvider.

Fixes: 123937830
Test: robo
Change-Id: I199bceceb208b99a32f3f08e624787b5a03e73a9
2019-03-14 14:45:59 -07:00
Jason Chiu
6bbe6e2362 Leverage the behavior of showing the searching message in wifi slice
Fixes: 124823973
Test: robotest
Change-Id: Id89ec5ef09f05f83e019a6f4488cacf2ab4e635b
2019-02-27 12:20:11 +08:00
Jason Chiu
dcedd4e2e2 WiFi Slice Polish - Searching for WiFi state
1. Change the font color to be secondary
2. Align the left to the AP list title
3. Update the font for Wi-Fi list to be body font - Roboto regular 14dp

Fixes: 124468947
Test: robotest
Change-Id: I9f41925f7e3938bdf3f444b09eab33d6bf479f57
2019-02-25 17:35:16 +08:00
Yi-Ling Chuang
45ee7c2aac Dynamically return the uri of WifiSlice.
WifiSlice is used by both ContextualWifiSlice and WifiSlice itself.
In contextual homepage, we provide contextual_wifi slice for the
homepage. So in our slice pre-check, contextual_wifi slice will gets
pinned and bound. But when it comes to the state where wifi is on but
not connected, it actually returns wifi slice instead of contextual_wifi
slice, which will hit slice not pinned exception as wifi slice never
gets pinned.

Thus, we have to dynamically return the corresponding uri to  avoid this.

Fixes: 124627340
Test: robotests
Change-Id: I54ba255871628bb8eb814442f990a5d1149461e0
2019-02-21 16:14:29 +08:00
Jason Chiu
da2ca2f092 Connect to network while clicking open or saved networks on slice
Test: make RunSettingsRoboTests -j
Fixes: 121342770
Change-Id: I0ffb925628dd271d054f990b9b176eb10372e6a3
2019-01-30 16:15:41 +08:00
Jason Chiu
36b37de9d6 Fix the consistency of connection status displayed on Wi-Fi card
- Refresh slice in WifiTracker.onConnectedChanged
- Only expose notifySliceChange to child in SliceBackgroundWorker

Fixes: 123270015
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.wifi.slice
Change-Id: Id5540ebae2746e58e14924665c5e62bf437ebcf0
2019-01-24 14:56:04 +08:00
Yanting Yang
1c9b97d537 Clean up assertion methods in SliceTester
Fixes: 120592507
Test: robotests
Change-Id: Ic20fa96aa500d9ab50ef2adcb59f48c328989ec8
2018-12-27 17:24:36 +08:00
Fan Zhang
0db4ead2b3 Hide wifi card sometimes.
When there is a connected wifi, we now hide the wifi slice card.

However, if we initially shows this card but later wifi is connected
while the card is visible, we keep showing this card to avoid janky
animation. The card will be gone if user nagivates to a different UI and
comes back.

- Create a new slice ContextualWifiSlice for homepage use case, all
  special logic for homepage are added here.
- Change reference for WIFI_SLICE to CONTEXTUAL_WIFI_SLICE where make
  sense.

Change-Id: Ibd87f88058f357aabef0f7d68a5bf48350d75b06
Fixes: 121040746
Test: robotests
2018-12-18 10:18:08 -08:00