Commit Graph

178 Commits

Author SHA1 Message Date
Arc Wang
994929ecc7 Hide 'Share' button and 'Add device' preference for a Passpoint Wi-Fi network
Passpoint provisioning is much different from other Wi-Fi networks and ZXing
does not support a QR code format to share a passpoint Wi-Fi network. We
should not show any button to share a passpoint Wi-Fi network.

Bug: 130609037
Test: manual
Change-Id: Ie2538ed9e030e5aa2e88452b50b6592223ca46a8
2019-04-16 16:51:04 +08:00
Arc Wang
982e46fe6c Merge "Fix can't share WEP Wi-Fi network via Wi-Fi QR code generator" into qt-dev 2019-04-12 02:36:21 +00:00
Arc Wang
2ef2ed66b6 Fix can't share WEP Wi-Fi network via Wi-Fi QR code generator
For a WEP Wi-Fi network, we should get the password from
WifiConfiguration#wepKeys instead of WifiConfiguration#preSharedKey.

Bug: 130204717
Test: manual
Change-Id: I766a767f3d605c7fbf0b71d263fd111f159c7cde
2019-04-10 13:59:20 +08:00
Arc Wang
e2b4bccbf1 Should not decode Wi-Fi QR code after onPause
Bug: 130141694
Test: manual
      atest WifiDppQrCodeScannerFragmentTest

Change-Id: I412fb7c06220c23bddc7b3c448fcc72a00bdecc3
2019-04-09 13:30:59 +08:00
Arc Wang
4a5ff58511 Supports to share Wi-Fi networks of WPA3 security SAE & OWE via QR code generator
When scanned a no password ZXing QR code, add both open network &
enhanced open network to configured Wi-Fi network list because this kind
of QR code may refer to a open network or an enhanced open network.

Bug: 124131581
Test: manual
Change-Id: Id9f85ef8dcdf72347be8106938437aecd0eed9f5
2019-04-09 10:36:07 +08:00
Arc Wang
cb1c9fceb8 Play vibration when Wi-Fi QR code scanner recognize a valid QR code
Bug: 127377350
Test: manual
Change-Id: I9bfcb6f4d1d4dee45d2cacdedfc07d2f4eccd758
2019-04-03 10:27:32 +08:00
TreeHugger Robot
76ff2b4291 Merge "Hide Wi-Fi QR code scan button for unsupported Wi-Fi networks" 2019-03-29 08:57:29 +00:00
Arc Wang
dae6c695ca Hide Wi-Fi QR code scan button for unsupported Wi-Fi networks
Wi-Fi QR code scan button only shows for the Wi-Fi network which
supports Wi-Fi Easy Connect or ZXing Wi-Fi config format.

Bug: 128847959
Test: manual
Change-Id: If6460ce88748e7b06893bf62060418a8727d3134
2019-03-29 10:17:44 +08:00
Arc Wang
3f2298c4fd Merge "Fix Wi-Fi Easy Connect QR code scanner problems" 2019-03-29 01:57:35 +00:00
TreeHugger Robot
ade1e095e7 Merge "List reachable access points on top of the list in WifiNetworkListFragment" 2019-03-27 12:17:23 +00:00
Arc Wang
b661549b81 List reachable access points on top of the list in WifiNetworkListFragment
Bug: 128942314
Test: manual
Change-Id: I036bf09c066da3a68d6e2fc4685313ccf16bff03
2019-03-27 15:24:51 +08:00
Arc Wang
8ae9717226 Fix Wi-Fi Easy Connect QR code scanner problems
1. When camera area overlaps display cutout, it's onLayout size is 0/0.
   To fix it, use ConstraintLayout to specify width and height in layout file.

2. When scanned a QR code and there is an error, set camera area frame line
   back to unfocused color.

Bug: 124399763
Test: manual test
Change-Id: I7575efd0ccfb58d114acc3dcca6978d68b801f91
2019-03-26 16:07:02 +08:00
Arc Wang
8a9ccfd8d9 Add a different Wi-Fi Easy Connect entry point
To separate it further from Wi-Fi sharing as it was
causing some confusion.

Bug: 129031195
Test: manual test
Change-Id: Ia55e3ed91e92c3ec36ae6a9401897c5c960762da
2019-03-26 09:55:38 +08:00
Arc Wang
7599de43f7 Check if enrolled Wi-Fi network is reachable in WifiManager#connect onSuccess callback
WifiManager#connect may callback onSuccess even if the Wi-Fi network is not reachable,
it confuses users.

In onSuccess callback, if the Wi-Fi network is unreachable, shows error message.

Bug: 127980127
Test: manual test
Change-Id: I503d6c77c1f1fcab3a1240d904f1c60aaef63aa1
2019-03-22 10:48:27 +08:00
Arc Wang
abfd8ab726 Improve Wi-Fi Easy Connect lock screen UI information
1. Change lock screen title and remove description
2. In QR code generator screen, change summary and show password under QR code picture

Bug: 128920152
Bug: 128576809
Test: manual test
Change-Id: Id096d7f417308df14ffe50c618644750aa991df8
2019-03-21 14:09:22 +08:00
Arc Wang
d0ceb83c95 Improve UX of WifiDppChooseSavedWifiNetworkFragment
In WifiDppChooseSavedWifiNetworkFragment, it does not show the saved Wi-Fi
network which is not reachable, users may be confused about why their saved
Wi-Fi network not on the list. This change shows saved networks regardless
of signal reachable or not.

Fix WifiDppChooseSavedWifiNetworkFragment UI overlap problem, remove redundant
ScrollView and adjust ConstraintLayout parameters.

Bug: 124129645
Test: manual test
Change-Id: I86637e8722bb8f40a3b995a617dc1e22b2ae324a
2019-03-20 10:06:40 +08:00
Arc Wang
70e3580f5d Fix [a11y] Wi-Fi Easy Connect Talkback issues
1. Remove android:contentDescription from ButtonPreference layout file
   'wifi_button_preference_widget.xml' because it should be a more
   general purpose component. Add ButtonPreference#setButtonContentDescription
   for this change.
2. Add a LinearLayout to group title & summary for better Talkback UX
3. Set android:contentDescription for Wi-Fi enrollee scan button
4. setTitle for Talkback actionbar back button of WifiDppQrCodeGeneratorFragment &
   WifiDppQrCodeScannerFragment
5. Auto trigger Talkback to speak title & summary in WifiDppAddDeviceFragment &
   WifiDppChooseSavedWifiNetworkFragment
6. Auto trigger Talkback to speak summary change in WifiDppAddDeviceFragment
7. Auto trigger Talkback to speak error message in WifiDppQrCodeScannerFragment

Bug: 126007405
Bug: 124424996
Bug: 124424445
Test: manual test

Change-Id: I54a3f033bb8871c47be12115ae8f97691fd83302
2019-03-08 12:05:50 +08:00
Arc Wang
b249fb7d13 Support to share Wi-Fi hotspot via QR code
1. QR code scanner (Wi-Fi Easy Connect) does not support sharing Wi-Fi hotspot
   at current stage
2. Wi-Fi hotspot QR code button only shows when Wi-Fi hotspot is enabled
3. The QR code has the security string "WPA" for hotspot's WPA2_PSK

Bug: 123151660
Test: atest WifiTetherSSIDPreferenceControllerTest
            WifiQrCodeTest WifiDppConfiguratorActivityTest
            WifiDppEnrolleeActivityTest
            WifiDppQrCodeGeneratorFragmentTest
            WifiDppQrCodeScannerFragmentTest
            WifiNetworkListFragmentTest
            WifiDppChooseSavedWifiNetworkFragmentTest

Change-Id: I2e89450180b82cc841ee3b15be52bfc6f9f6164d
2019-03-08 11:48:12 +08:00
TreeHugger Robot
0fa2651d3f Merge "Change Easy Connect intent naming" 2019-03-03 16:17:33 +00:00
TreeHugger Robot
6e245f4736 Merge "Fix Settings crash after clicking 'Share Wi-Fi' button" 2019-02-27 07:06:38 +00:00
Arc Wang
730a6c0f5e Fix Settings crash after clicking 'Share Wi-Fi' button
When connecting to an open network, Settings crash after
scanning Wi-Fi DPP QR code and clicking 'Share Wi-Fi' button.

When choosing default network for configurator usage, should
make sure if it supports Wi-Fi DPP or not.

Bug: 126456582
Test: manual test
      atest WifiQrCodeTest
            WifiDppConfiguratorActivityTest
            WifiDppEnrolleeActivityTest
            WifiDppQrCodeGeneratorFragmentTest
            WifiDppQrCodeScannerFragmentTest
            WifiNetworkListFragmentTest
            WifiDppChooseSavedWifiNetworkFragmentTest

Change-Id: I66ee9b01314b84213ecb3016e6e72ff71af8dfc7
2019-02-27 11:33:43 +08:00
Arc Wang
c1036df9b8 Change Easy Connect intent naming
1. From ACTION_PROCESS_WIFI_EASY_CONNECT_QR_CODE to ACTION_PROCESS_WIFI_EASY_CONNECT_URI
2. Remove EXTRA_QR_CODE and use data Uri to specify Easy Connect bootstrapping information string

Bug: 125874365
Test: atest AvailableIntentsTest
      WifiDppChooseSavedWifiNetworkFragmentTest
      WifiDppConfiguratorActivityTest
      WifiNetworkListFragmentTest

Change-Id: I706513520daa10197a27f596fa08ca58980205d8
2019-02-27 10:06:04 +08:00
TreeHugger Robot
6dcb6a35c3 Merge "Update strings for Wi-Fi DPP handshake running state" 2019-02-26 07:15:27 +00:00
TreeHugger Robot
9d741c4f47 Merge "Improve UX of Wi-Fi QR code scanner enrollee flow" 2019-02-26 05:48:56 +00:00
Arc Wang
957ce7f7aa Update strings for Wi-Fi DPP handshake running state
Bug: 125987679
Test: manual test
Change-Id: I55eddee5f3c0c28d1be23b5b9d8c0b56280be797
2019-02-25 15:06:16 +08:00
Arc Wang
13f37337ed Improve UX of Wi-Fi QR code scanner enrollee flow
1. Do not start WifiSettings after enrollee success
2. Return WifiConfiguration to the calling object after enrollee success
3. In WifiDialog, do not show scan button if Save button is not visible to users
4. Fix scanner button may not respond problem by setting listener for scanner
   button of ssid field and password field
5. If SSID is assigned, only allow to enrollee for the network of assigned SSID

Bug: 124416152
Test: manual test
Change-Id: Ic5241c4767eaa8ea01782817d8302d8b0572ab36
2019-02-23 11:59:53 +08:00
Arc Wang
8826721803 Add progress bar for Wi-Fi DPP handshaking
Bug: 124127483
Test: manual test
Change-Id: I1c3da5bab98da57ca8cf10509f339e99b01ebdbf
2019-02-22 11:42:08 +08:00
Arc Wang
ffae615d25 Fix camera stop forever after error occurs while sharing or adding network
Restart QrCamera decoding task after Wi-Fi DPP handshake fail or
Wi-Fi connection fail.

Bug: 124128539
Test: manual test
Change-Id: I6d916ed1378f50038089e2c1e2870915ca083d68
2019-02-20 14:29:08 +08:00
Arc Wang
7bdcadbe72 Handle different error codes in DPP
Show error message for corresponding Wi-Fi DPP error code. And

1. To update error message only from each fragment,
   remove some callbacks which calls from fragment to activity.
2. After clicking 'Share Wi-Fi' button, hide it before Wi-Fi DPP handshake completes.
3. Show 'Done' button for some error codes.
4. Use ViewModel to call startEasyConnectAsConfiguratorInitiator and
   startEasyConnectAsEnrolleeInitiator because a lifecycle object
   does not receive an Executor callback after configurator change.
5. In WifiDppQrCodeScannerFragment, show an error message for 10s instead of 2s
   since new added error messages may carry more information.
6. Show a different error message for enrollee handshake success but Wi-Fi
   connection fail case.
7. stop camera when scanned a Wi-Fi DPP QR code for enrollee.
8. In QR code scanner fragment, support to show error message after
    configuration change.

Bug: 124247872
Bug: 124491247
Test: manual test
      atest WifiQrCodeTest
      atest WifiDppConfiguratorActivityTest
      atest WifiDppEnrolleeActivityTest
      atest WifiDppQrCodeGeneratorFragmentTest
      atest WifiDppQrCodeScannerFragmentTest
      atest WifiNetworkListFragmentTest
      atest WifiDppChooseSavedWifiNetworkFragmentTest

Change-Id: Id130215e9ddafac8bc4c68238deda48ce99b4255
2019-02-20 14:28:52 +08:00
Johnson Lu
3a5d9020e8 Remove feature flags of WiFi Sharing feature
Bug: 120744414
Test: Manual
Change-Id: I655ebb8d149d0976063845478bc667cc4d72d96d
2019-02-15 16:14:54 +08:00
Arc Wang
9d33313735 Fix Wi-Fi DPP fragment back stack problems
1. When a Wi-Fi network connected and receiving
   intent android.settings.PROCESS_WIFI_EASY_CONNECT_QR_CODE,
   show WifiDppAddDeviceFragment from WifiDppConfiguratorActivity
   instead of WifiNetworkListFragment

2. Only handle intent when savedInstanceState is null

3. To show a fragment
   I. do nothing when a fragment is already visible on screen,
   II. pop back stack if it's in back stack, we can do this because
   current fragment transactions are arranged in an order

Bug: 124194531
Test: atest WifiQrCodeTest
      atest WifiDppConfiguratorActivityTest
      atest WifiDppEnrolleeActivityTest
      atest WifiDppQrCodeGeneratorFragmentTest
      atest WifiDppQrCodeScannerFragmentTest
      atest WifiNetworkListFragmentTest
      atest WifiDppChooseSavedWifiNetworkFragmentTest

Change-Id: I1d44eeb3bdc7bfb2ec2e4d81efaab64b066651ad
2019-02-11 11:42:21 +08:00
Arc Wang
8de242ada6 Wi-Fi DPP code refine
1. call Activity#setResult only for RESULT_OK case
2. refine @VisibleForTesting usage
     remove redundant assignment otherwise = PRIVATE
     set all @VisibleForTesting annotated methods package scope
3. rename WifiQrCode#SECURITY_WPA to WifiQrCode#SECURITY_WPA_PSK

Bug: 120645817
Test: atest WifiQrCodeTest
      atest WifiDppConfiguratorActivityTest
      atest WifiDppEnrolleeActivityTest
      atest WifiDppQrCodeGeneratorFragmentTest
      atest WifiDppQrCodeScannerFragmentTest
      atest WifiNetworkListFragmentTest
      atest WifiDppChooseSavedWifiNetworkFragmentTest

Change-Id: Id5de7eadc73185716422fc0d197f82bdd025ce45
2019-01-29 17:33:45 +08:00
Arc Wang
4ab826ac5b Set Wi-Fi DPP fragment icons.
1. set fragment icon for WifiDppChooseSavedWifiNetworkFragment
2. set fragment icon of success for WifiDppAddDeviceFragment

All Wi-Fi DPP fragment icons are VectorDrawable of instinct size
24dp draw on a 48dp canvas. Except for ic_devices_check_circle_green,
it's a LayerDrawable of different size. I dynamically change ImageView
layout width & height between these 2 different kind of drawable.

Bug: 122982132
Test: manual test
Change-Id: Idab8cd8b0798363e447da00dc6bc68a86498b8be
2019-01-29 17:02:14 +08:00
Salvador Martinez
2611190def Update configurator intent to be public
This updates the settings code to use the public intent instead.

Test: tests still pass
Bug: WIP
Change-Id: Id40f60b4c2209073aef8747faa5de4e7ff9692ae
2019-01-28 12:33:30 +08:00
TreeHugger Robot
b764fac7c1 Merge "Filter out unsupported security type for DPP configuration." 2019-01-25 08:42:29 +00:00
Arc Wang
cfa78006a0 Filter out unsupported security type for DPP configuration.
There is different Wi-Fi security support between ZXing's Wi-Fi QR code
format and Wi-Fi DPP QR code format.

  ZXing's Wi-Fi QR code format: supports WEP / WPA / none security
  Wi-Fi DPP: supports WPA / SAE

So we will have different UI behavior for different security.

  WEP & none security: only support QR code generator
  WPA: supports both QR code generator & scanner
  SAE: only supports QR code scanner
  others: don't support. The share button is invisible

Bug: 123212410
Test: manual test
Change-Id: I87962d730282fc2c1b96223dca6feb79235fe5a1
2019-01-25 14:22:08 +08:00
TreeHugger Robot
403efc9c1b Merge "Implement WifiNetworkListFragment - Part 3" 2019-01-25 02:46:39 +00:00
Johnson Lu
17fc3ec944 Implement WifiNetworkListFragment - Part 3
Remove unnecessary message by UX review.

Bug: 118794978
Test: manual
Change-Id: I9ed210e1a15ba251f1015ca5f14296c5cb3a92eb
2019-01-23 09:40:08 +08:00
TreeHugger Robot
d3be363004 Merge "Add icons of WifiDppAddDeviceFragment." 2019-01-22 11:11:30 +00:00
Arc Wang
bf1fb10999 Add icons of WifiDppAddDeviceFragment.
Bug: 118797202
Test: manual test
Change-Id: Ia2ef9db3526f98b1c697a864cec34e1d4dcfc400
2019-01-22 16:27:23 +08:00
Arc Wang
cb64510ff7 Control UI behavior according to different Wi-Fi DPP intents.
When it's a configurator from Settings, the cancel button of WifiDppChooseSavedWifiNetworkFragment
should pop back stack. When it's a configurator from a camera app, the cancel button of
WifiDppChooseSavedWifiNetworkFragment should finish host activity.

Bug: 120517242
Test: manual test
Change-Id: Ia0fb0daf16c94ecd62aa6d357405fcd529935d2f
2019-01-22 13:45:27 +08:00
TreeHugger Robot
32d561653c Merge "Add a picture for Wi-Fi DPP add device fragment." 2019-01-21 04:58:35 +00:00
TreeHugger Robot
61447c7b88 Merge "Check whether the device support DPP for public intent" 2019-01-21 03:06:12 +00:00
TreeHugger Robot
abd732a308 Merge "Update parameter for Easy Connect API in WiFi DPP flow" 2019-01-19 04:33:21 +00:00
Johnson Lu
e69dc5cc6c Check whether the device support DPP for public intent
Check PROCESS_WIFI_EASY_CONNECT_QR_CODE intent.

Bug: 122331217
Test: manual test
Change-Id: I9bc4007f8c01d11a186640e8ef59be6329350dc9
2019-01-18 08:12:58 +08:00
Johnson Lu
1e8a21f258 Update parameter for Easy Connect API in WiFi DPP flow
Due to API changes, uses Executor instead of Handler for Easy Connect
API.

Test: manual test
Bug: 122331217
Change-Id: Iddda3e6c9079e2bba814be6a0097d60ee349a504
2019-01-18 07:17:55 +08:00
Arc Wang
e05fae643c Add a picture for Wi-Fi DPP add device fragment.
Bug: 122429170
Test: manual
Change-Id: I8a2e9feab238aa2636be25959988145ac8633c24
2019-01-17 23:04:37 +00:00
Fan Zhang
31b210017b Migrate all MetricsProto enums to SettingsEnums
Bug: 122855168
Test: rebuild
Change-Id: I962d9a71179f86b7cae9dc5e9a00e0aa1557dc76
2019-01-17 14:55:42 -08:00
Hai Shalom
8466751a79 Merge "[DPP] Fix usage of "DPP" public API to "Easy Connect"" 2019-01-15 20:46:44 +00:00
Johnson Lu
98bc9e5384 Implement WifiNetworkListFragment - Part 2
Uses connected access point to start DPP in Configurator-Initiator role directly.

Bug: 118794978
Test: RunSettingsRoboTests
Change-Id: Ie2d5661fdef3588bb597d4a7e4dfe5f981737c84
2019-01-15 13:27:47 +08:00