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

Commit 2f1943b2 authored by Lifu Tang's avatar Lifu Tang Committed by Android (Google) Code Review
Browse files

Merge "Restrict WifiScanModeActivity when user restriction applies" into main

parents 2222ab94 7a792e0b
Loading
Loading
Loading
Loading
+33 −21
Original line number Diff line number Diff line
@@ -39,26 +39,24 @@ import com.android.settings.Utils;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settingslib.wifi.WifiPermissionChecker;

/**
 * This activity requests users permission to allow scanning even when Wi-Fi is turned off
 */
/** This activity requests users permission to allow scanning even when Wi-Fi is turned off */
public class WifiScanModeActivity extends FragmentActivity {
    private static final String TAG = "WifiScanModeActivity";
    private DialogFragment mDialog;
    @VisibleForTesting
    String mApp;
    @VisibleForTesting
    WifiPermissionChecker mWifiPermissionChecker;
    @VisibleForTesting String mApp;
    @VisibleForTesting WifiPermissionChecker mWifiPermissionChecker;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().addSystemFlags(
        getWindow()
                .addSystemFlags(
                        WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
        Intent intent = getIntent();
        if (savedInstanceState == null) {
            if (intent != null && WifiManager.ACTION_REQUEST_SCAN_ALWAYS_AVAILABLE
                    .equals(intent.getAction())) {
            if (intent != null
                    && WifiManager.ACTION_REQUEST_SCAN_ALWAYS_AVAILABLE.equals(
                            intent.getAction())) {
                refreshAppLabel();
            } else {
                finish();
@@ -92,6 +90,12 @@ public class WifiScanModeActivity extends FragmentActivity {
            return;
        }

        if (!isWifiScanModeConfigAllowed(getApplicationContext())) {
            Log.e(TAG, "This user is not allowed to configure Wi-Fi Scan Mode!");
            finish();
            return;
        }

        if (mDialog == null) {
            mDialog = AlertDialogFragment.newInstance(mApp);
            mDialog.show(getSupportFragmentManager(), "dialog");
@@ -140,6 +144,7 @@ public class WifiScanModeActivity extends FragmentActivity {
        }

        private final String mApp;

        public AlertDialogFragment(String app) {
            super();
            mApp = app;
@@ -158,25 +163,27 @@ public class WifiScanModeActivity extends FragmentActivity {
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            return new AlertDialog.Builder(getActivity())
                    .setMessage(TextUtils.isEmpty(mApp) ?
                        getString(R.string.wifi_scan_always_turn_on_message_unknown) :
                        getString(R.string.wifi_scan_always_turnon_message, mApp))
                    .setPositiveButton(R.string.wifi_scan_always_confirm_allow,
                    .setMessage(
                            TextUtils.isEmpty(mApp)
                                    ? getString(R.string.wifi_scan_always_turn_on_message_unknown)
                                    : getString(R.string.wifi_scan_always_turnon_message, mApp))
                    .setPositiveButton(
                            R.string.wifi_scan_always_confirm_allow,
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int whichButton) {
                                    ((WifiScanModeActivity) getActivity()).doPositiveClick();
                                }
                            }
                    )
                    .setNegativeButton(R.string.wifi_scan_always_confirm_deny,
                            })
                    .setNegativeButton(
                            R.string.wifi_scan_always_confirm_deny,
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int whichButton) {
                                    ((WifiScanModeActivity) getActivity()).doNegativeClick();
                                }
                            }
                    )
                            })
                    .create();
        }

        @Override
        public void onCancel(DialogInterface dialog) {
            ((WifiScanModeActivity) getActivity()).doNegativeClick();
@@ -184,9 +191,14 @@ public class WifiScanModeActivity extends FragmentActivity {
    }

    private static boolean isGuestUser(Context context) {
        if (context == null) return false;
        final UserManager userManager = context.getSystemService(UserManager.class);
        if (userManager == null) return false;
        return userManager.isGuestUser();
    }

    private static boolean isWifiScanModeConfigAllowed(Context context) {
        final UserManager userManager = context.getSystemService(UserManager.class);
        if (userManager == null) return true;
        return !userManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_LOCATION);
    }
}