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
This commit is contained in:
Kai Zhou
2024-05-07 08:00:41 +00:00
parent b04e2d4692
commit 5097783e6e
4 changed files with 32 additions and 3 deletions

View File

@@ -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"
}

View File

@@ -35,6 +35,8 @@ import androidx.annotation.VisibleForTesting;
import androidx.fragment.app.FragmentTransaction; import androidx.fragment.app.FragmentTransaction;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.flags.Flags;
import com.android.settings.overlay.FeatureFactory;
import java.util.List; import java.util.List;
@@ -236,7 +238,12 @@ public class WifiDppConfiguratorActivity extends WifiDppBaseActivity implements
WifiDppUtils.TAG_FRAGMENT_QR_CODE_GENERATOR); WifiDppUtils.TAG_FRAGMENT_QR_CODE_GENERATOR);
if (fragment == null) { if (fragment == null) {
fragment = new WifiDppQrCodeGeneratorFragment(); if (Flags.enableWifiSharingRuntimeFragment()) {
fragment = FeatureFactory.getFeatureFactory().getWifiFeatureProvider()
.getWifiDppQrCodeGeneratorFragment();
} else {
fragment = new WifiDppQrCodeGeneratorFragment();
}
} else { } else {
if (fragment.isVisible()) { if (fragment.isVisible()) {
return; return;

View File

@@ -56,7 +56,7 @@ public class WifiDppQrCodeGeneratorFragment extends WifiDppQrCodeBaseFragment {
private static final String TAG = "WifiDppQrCodeGeneratorFragment"; private static final String TAG = "WifiDppQrCodeGeneratorFragment";
private ImageView mQrCodeView; 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_LABEL_METADATA_KEY = "android.service.chooser.chip_label";
private static final String CHIP_ICON_METADATA_KEY = "android.service.chooser.chip_icon"; private static final String CHIP_ICON_METADATA_KEY = "android.service.chooser.chip_icon";
@@ -258,7 +258,7 @@ public class WifiDppQrCodeGeneratorFragment extends WifiDppQrCodeBaseFragment {
return button; return button;
} }
private void setQrCode() { protected void setQrCode() {
try { try {
final int qrcodeSize = getContext().getResources().getDimensionPixelSize( final int qrcodeSize = getContext().getResources().getDimensionPixelSize(
R.dimen.qrcode_size); R.dimen.qrcode_size);

View File

@@ -27,6 +27,7 @@ import androidx.lifecycle.ViewModelProvider;
import androidx.lifecycle.ViewModelStoreOwner; import androidx.lifecycle.ViewModelStoreOwner;
import com.android.settings.wifi.details.WifiNetworkDetailsViewModel; 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.SharedConnectivityRepository;
import com.android.settings.wifi.repository.WifiHotspotRepository; import com.android.settings.wifi.repository.WifiHotspotRepository;
import com.android.settings.wifi.tether.WifiHotspotSecurityViewModel; import com.android.settings.wifi.tether.WifiHotspotSecurityViewModel;
@@ -146,6 +147,15 @@ public class WifiFeatureProvider {
return viewModel; 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. * Send a {@link Log#VERBOSE} log message.
* *