From 8e580952c3c5c7f3ea6e756d15893f83ce75047f Mon Sep 17 00:00:00 2001 From: Arc Wang Date: Thu, 3 Jan 2019 18:09:06 +0800 Subject: [PATCH] Change action WIFI_DPP_CONFIGURATOR_CHOOSE_SAVED_WIFI_NETWORK to PROCESS_WIFI_DPP_QR_CODE for more intuitive naming. This change also caches the Wi-Fi DPP QR code in activity for fragment to use. Bug: 118794978 Test: manual test Change-Id: I4bdb021883cb21ce7cc56edf656d1eee079359e5 --- AndroidManifest.xml | 2 +- .../wifi/dpp/WifiDppConfiguratorActivity.java | 40 ++++++++++++++++--- .../dpp/WifiDppConfiguratorActivityTest.java | 7 +++- 3 files changed, 41 insertions(+), 8 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 871f6092ca7..0634ff11a30 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -3050,7 +3050,7 @@ - + diff --git a/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivity.java b/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivity.java index e89ebaa9a65..c34bfd314aa 100644 --- a/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivity.java +++ b/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivity.java @@ -44,7 +44,7 @@ import com.android.settings.R; * {@code WifiDppUtils.EXTRA_WIFI_PRE_SHARED_KEY} * {@code WifiDppUtils.EXTRA_WIFI_HIDDEN_SSID} * - * For intent action {@code ACTION_CONFIGURATOR_CHOOSE_SAVED_WIFI_NETWORK}, specify Wi-Fi (DPP) + * For intent action {@code ACTION_PROCESS_WIFI_DPP_QR_CODE}, specify Wi-Fi (DPP) * QR code in {@code WifiDppUtils.EXTRA_QR_CODE} */ public class WifiDppConfiguratorActivity extends InstrumentedActivity implements @@ -58,8 +58,8 @@ public class WifiDppConfiguratorActivity extends InstrumentedActivity implements "android.settings.WIFI_DPP_CONFIGURATOR_QR_CODE_SCANNER"; public static final String ACTION_CONFIGURATOR_QR_CODE_GENERATOR = "android.settings.WIFI_DPP_CONFIGURATOR_QR_CODE_GENERATOR"; - public static final String ACTION_CONFIGURATOR_CHOOSE_SAVED_WIFI_NETWORK = - "android.settings.WIFI_DPP_CONFIGURATOR_CHOOSE_SAVED_WIFI_NETWORK"; + public static final String ACTION_PROCESS_WIFI_DPP_QR_CODE = + "android.settings.PROCESS_WIFI_DPP_QR_CODE"; private FragmentManager mFragmentManager; @@ -72,6 +72,9 @@ public class WifiDppConfiguratorActivity extends InstrumentedActivity implements /** The information from Wi-Fi DPP QR code */ private String mInformation; + /** The Wi-Fi DPP QR code from intent ACTION_PROCESS_WIFI_DPP_QR_CODE */ + private WifiQrCode mWifiDppQrCode; + @Override public int getMetricsCategory() { return MetricsProto.MetricsEvent.SETTINGS_WIFI_DPP_CONFIGURATOR; @@ -115,8 +118,14 @@ public class WifiDppConfiguratorActivity extends InstrumentedActivity implements showQrCodeGeneratorFragment(); } break; - case ACTION_CONFIGURATOR_CHOOSE_SAVED_WIFI_NETWORK: - showChooseSavedWifiNetworkFragment(/* addToBackStack */ false); + case ACTION_PROCESS_WIFI_DPP_QR_CODE: + String qrCode = intent.getStringExtra(WifiDppUtils.EXTRA_QR_CODE); + mWifiDppQrCode = getValidWiFiDppQrCodeOrNull(qrCode); + if (mWifiDppQrCode == null) { + cancelActivity = true; + } else { + showChooseSavedWifiNetworkFragment(/* addToBackStack */ false); + } break; default: cancelActivity = true; @@ -199,6 +208,21 @@ public class WifiDppConfiguratorActivity extends InstrumentedActivity implements fragmentTransaction.commit(); } + private WifiQrCode getValidWiFiDppQrCodeOrNull(String qrCode) { + WifiQrCode wifiQrCode; + try { + wifiQrCode = new WifiQrCode(qrCode); + } catch(IllegalArgumentException e) { + return null; + } + + if (WifiQrCode.SCHEME_DPP.equals(wifiQrCode.getScheme())) { + return wifiQrCode; + } + + return null; + } + @Override public WifiNetworkConfig getWifiNetworkConfig() { return mWifiNetworkConfig; @@ -212,6 +236,10 @@ public class WifiDppConfiguratorActivity extends InstrumentedActivity implements return mInformation; } + public WifiQrCode getWifiDppQrCode() { + return mWifiDppQrCode; + } + @Override public boolean setWifiNetworkConfig(WifiNetworkConfig config) { if(!WifiNetworkConfig.isValidConfig(config)) { @@ -223,7 +251,7 @@ public class WifiDppConfiguratorActivity extends InstrumentedActivity implements } @Override - public boolean onNavigateUp(){ + public boolean onNavigateUp() { Fragment fragment = mFragmentManager.findFragmentById(R.id.fragment_container); if (fragment instanceof WifiDppQrCodeGeneratorFragment) { setResult(Activity.RESULT_CANCELED); diff --git a/tests/unit/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivityTest.java b/tests/unit/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivityTest.java index 61033e96cbd..8e64f5fd22c 100644 --- a/tests/unit/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivityTest.java +++ b/tests/unit/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivityTest.java @@ -38,6 +38,7 @@ public class WifiDppConfiguratorActivityTest { Intent intent = new Intent(WifiDppConfiguratorActivity.ACTION_CONFIGURATOR_QR_CODE_SCANNER); intent.putExtra(WifiDppUtils.EXTRA_WIFI_SECURITY, "WEP"); intent.putExtra(WifiDppUtils.EXTRA_WIFI_SSID, "GoogleGuest"); + intent.putExtra(WifiDppUtils.EXTRA_WIFI_PRE_SHARED_KEY, "password"); mActivityRule.launchActivity(intent); @@ -50,6 +51,7 @@ public class WifiDppConfiguratorActivityTest { WifiDppConfiguratorActivity.ACTION_CONFIGURATOR_QR_CODE_GENERATOR); intent.putExtra(WifiDppUtils.EXTRA_WIFI_SECURITY, "WEP"); intent.putExtra(WifiDppUtils.EXTRA_WIFI_SSID, "GoogleGuest"); + intent.putExtra(WifiDppUtils.EXTRA_WIFI_PRE_SHARED_KEY, "password"); mActivityRule.launchActivity(intent); @@ -59,7 +61,10 @@ public class WifiDppConfiguratorActivityTest { @Test public void launchActivity_chooseSavedWifiNetwork_shouldNotAutoFinish() { Intent intent = new Intent( - WifiDppConfiguratorActivity.ACTION_CONFIGURATOR_CHOOSE_SAVED_WIFI_NETWORK); + WifiDppConfiguratorActivity.ACTION_PROCESS_WIFI_DPP_QR_CODE); + String qrCode = "DPP:I:SN=4774LH2b4044;M:010203040506;K:MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcD" + + "IgADURzxmttZoIRIPWGoQMV00XHWCAQIhXruVWOz0NjlkIA=;;"; + intent.putExtra(WifiDppUtils.EXTRA_QR_CODE, qrCode); mActivityRule.launchActivity(intent);