From 5097783e6e42752663600903d302244e3303610f Mon Sep 17 00:00:00 2001 From: Kai Zhou Date: Tue, 7 May 2024 08:00:41 +0000 Subject: [PATCH] Retrieve WifiDppQrGeneratorFragment at runtime. * Add getWifiDppQrCodeGeneratorFragment() in WifiFeatureProvider * WifiDppConfiguratorActivity calls from the FeatureFactory to get WifiDppQrCodeGeneratorFragment instance * Use a flag to guard this behaviour * Updated a few private variables of WifiDppQrCodeGeneratorFragment to protected so I can access them in derived classes. Bug: b/338891273 Settings Intake: b/329012096 Test: manual test, override the flag locally, and check I can switch to overriden implementation. Flag: com.android.settings.flags.enable_wifi_sharing_runtime_fragment Change-Id: I715bf89bd9be221f06914e87629c76bf7a2f743f --- aconfig/settings_wifi_flag_declarations.aconfig | 12 ++++++++++++ .../wifi/dpp/WifiDppConfiguratorActivity.java | 9 ++++++++- .../wifi/dpp/WifiDppQrCodeGeneratorFragment.java | 4 ++-- .../settings/wifi/factory/WifiFeatureProvider.java | 10 ++++++++++ 4 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 aconfig/settings_wifi_flag_declarations.aconfig diff --git a/aconfig/settings_wifi_flag_declarations.aconfig b/aconfig/settings_wifi_flag_declarations.aconfig new file mode 100644 index 00000000000..cb8007f2e93 --- /dev/null +++ b/aconfig/settings_wifi_flag_declarations.aconfig @@ -0,0 +1,12 @@ +package: "com.android.settings.flags" +container: "system_ext" + +# NOTE: Keep alphabetized to help limit merge conflicts from multiple simultaneous editors. + +flag { + name: "enable_wifi_sharing_runtime_fragment" + namespace: "prism_qr" + description: "Use WifiFeatureProvider to get the instance of WifiDppQrCodeGeneratorFragment." + bug: "329012096" +} + diff --git a/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivity.java b/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivity.java index a7527d7332f..c7ad9ca0d8d 100644 --- a/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivity.java +++ b/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivity.java @@ -35,6 +35,8 @@ import androidx.annotation.VisibleForTesting; import androidx.fragment.app.FragmentTransaction; import com.android.settings.R; +import com.android.settings.flags.Flags; +import com.android.settings.overlay.FeatureFactory; import java.util.List; @@ -236,7 +238,12 @@ public class WifiDppConfiguratorActivity extends WifiDppBaseActivity implements WifiDppUtils.TAG_FRAGMENT_QR_CODE_GENERATOR); if (fragment == null) { - fragment = new WifiDppQrCodeGeneratorFragment(); + if (Flags.enableWifiSharingRuntimeFragment()) { + fragment = FeatureFactory.getFeatureFactory().getWifiFeatureProvider() + .getWifiDppQrCodeGeneratorFragment(); + } else { + fragment = new WifiDppQrCodeGeneratorFragment(); + } } else { if (fragment.isVisible()) { return; diff --git a/src/com/android/settings/wifi/dpp/WifiDppQrCodeGeneratorFragment.java b/src/com/android/settings/wifi/dpp/WifiDppQrCodeGeneratorFragment.java index 3d437e22e7d..1213b0dc2e3 100644 --- a/src/com/android/settings/wifi/dpp/WifiDppQrCodeGeneratorFragment.java +++ b/src/com/android/settings/wifi/dpp/WifiDppQrCodeGeneratorFragment.java @@ -56,7 +56,7 @@ public class WifiDppQrCodeGeneratorFragment extends WifiDppQrCodeBaseFragment { private static final String TAG = "WifiDppQrCodeGeneratorFragment"; private ImageView mQrCodeView; - private String mQrCode; + protected String mQrCode; private static final String CHIP_LABEL_METADATA_KEY = "android.service.chooser.chip_label"; private static final String CHIP_ICON_METADATA_KEY = "android.service.chooser.chip_icon"; @@ -258,7 +258,7 @@ public class WifiDppQrCodeGeneratorFragment extends WifiDppQrCodeBaseFragment { return button; } - private void setQrCode() { + protected void setQrCode() { try { final int qrcodeSize = getContext().getResources().getDimensionPixelSize( R.dimen.qrcode_size); diff --git a/src/com/android/settings/wifi/factory/WifiFeatureProvider.java b/src/com/android/settings/wifi/factory/WifiFeatureProvider.java index 5ab899afdc5..e5bf81a3c35 100644 --- a/src/com/android/settings/wifi/factory/WifiFeatureProvider.java +++ b/src/com/android/settings/wifi/factory/WifiFeatureProvider.java @@ -27,6 +27,7 @@ import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelStoreOwner; import com.android.settings.wifi.details.WifiNetworkDetailsViewModel; +import com.android.settings.wifi.dpp.WifiDppQrCodeGeneratorFragment; import com.android.settings.wifi.repository.SharedConnectivityRepository; import com.android.settings.wifi.repository.WifiHotspotRepository; import com.android.settings.wifi.tether.WifiHotspotSecurityViewModel; @@ -146,6 +147,15 @@ public class WifiFeatureProvider { return viewModel; } + /** + * Gets an instance of WifiDppQrCodeGeneratorFragment + */ + public WifiDppQrCodeGeneratorFragment getWifiDppQrCodeGeneratorFragment() { + WifiDppQrCodeGeneratorFragment fragment = new WifiDppQrCodeGeneratorFragment(); + verboseLog(TAG, "getWifiDppQrCodeGeneratorFragment():" + fragment); + return fragment; + } + /** * Send a {@link Log#VERBOSE} log message. *