Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5097783e authored by Kai Zhou's avatar Kai Zhou
Browse files

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
parent b04e2d46
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
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"
}
+8 −1
Original line number Diff line number Diff line
@@ -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) {
            if (Flags.enableWifiSharingRuntimeFragment()) {
                fragment = FeatureFactory.getFeatureFactory().getWifiFeatureProvider()
                    .getWifiDppQrCodeGeneratorFragment();
            } else {
                fragment = new WifiDppQrCodeGeneratorFragment();
            }
        } else {
            if (fragment.isVisible()) {
                return;
+2 −2
Original line number Diff line number Diff line
@@ -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);
+10 −0
Original line number Diff line number Diff line
@@ -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.
     *