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

Commit 6054757c authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Merge cherrypicks of [14129459, 14130267, 14129460, 14130198, 14130202,...

Merge cherrypicks of [14129459, 14130267, 14129460, 14130198, 14130202, 14130204, 14130305, 14130306, 14130307, 14129440, 14129442, 14129443, 14129735, 14129736, 14129737, 14129738, 14129739, 14129444, 14130346, 14129741, 14130347, 14130348, 14129742, 14130349, 14130350, 14130351, 14130352, 14130244, 14129743, 14129744, 14130365, 14130037, 14130321, 14130322, 14130323, 14130324, 14130405] into security-aosp-rvc-release

Change-Id: Ia72f8d8f0aac5772b3724c8bc46971061a6531e4
parents 1eaeadf8 9388ce6d
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.settings;

import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;

import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
@@ -72,6 +74,8 @@ public class ActivityPicker extends AlertActivity implements
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        getWindow().addPrivateFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
        
        final Intent intent = getIntent();
        
        // Read base intent from extras, otherwise assume default
+10 −2
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.settings.vpn2;

import android.app.Dialog;
import android.app.admin.DevicePolicyManager;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.DialogInterface;
@@ -55,6 +56,7 @@ public class AppDialogFragment extends InstrumentedDialogFragment implements App
    private UserManager mUserManager;
    private final IConnectivityManager mService = IConnectivityManager.Stub.asInterface(
            ServiceManager.getService(Context.CONNECTIVITY_SERVICE));
    private DevicePolicyManager mDevicePolicyManager;

    @Override
    public int getMetricsCategory() {
@@ -97,7 +99,11 @@ public class AppDialogFragment extends InstrumentedDialogFragment implements App
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mPackageInfo = getArguments().getParcelable(ARG_PACKAGE);
        mUserManager = UserManager.get(getContext());
        mDevicePolicyManager = getContext()
                .createContextAsUser(UserHandle.of(getUserId()), /* flags= */ 0)
                .getSystemService(DevicePolicyManager.class);
    }

    @Override
@@ -106,7 +112,6 @@ public class AppDialogFragment extends InstrumentedDialogFragment implements App
        final String label = args.getString(ARG_LABEL);
        boolean managing = args.getBoolean(ARG_MANAGING);
        boolean connected = args.getBoolean(ARG_CONNECTED);
        mPackageInfo = args.getParcelable(ARG_PACKAGE);

        if (managing) {
            return new AppDialog(getActivity(), this, mPackageInfo, label);
@@ -178,7 +183,10 @@ public class AppDialogFragment extends InstrumentedDialogFragment implements App

    private boolean isUiRestricted() {
        final UserHandle userHandle = UserHandle.of(getUserId());
        return mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_VPN, userHandle);
        if (mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_VPN, userHandle)) {
            return true;
        }
        return mPackageInfo.packageName.equals(mDevicePolicyManager.getAlwaysOnVpnPackage());
    }

    private int getUserId() {
+23 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.settings.vpn2;

import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
@@ -26,6 +27,8 @@ import androidx.preference.Preference;

import com.android.internal.net.LegacyVpnInfo;
import com.android.internal.net.VpnConfig;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;

/**
 * {@link androidx.preference.Preference} containing information about a VPN
@@ -43,6 +46,7 @@ public class AppPreference extends ManageablePreference {
        super.setUserId(userId);

        mPackageName = packageName;
        disableIfConfiguredByAdmin();

        // Fetch icon and VPN label
        String label = packageName;
@@ -74,6 +78,25 @@ public class AppPreference extends ManageablePreference {
        setIcon(icon);
    }

    /**
     * Disable this preference if VPN is set as always on by a profile or device owner.
     * NB: it should be called after super.setUserId() otherwise admin information can be lost.
     */
    private void disableIfConfiguredByAdmin() {
        if (isDisabledByAdmin()) {
            // Already disabled due to user restriction.
            return;
        }
        final DevicePolicyManager dpm = getContext()
                .createContextAsUser(UserHandle.of(getUserId()), /* flags= */ 0)
                .getSystemService(DevicePolicyManager.class);
        if (mPackageName.equals(dpm.getAlwaysOnVpnPackage())) {
            final EnforcedAdmin admin = RestrictedLockUtils.getProfileOrDeviceOwner(
                    getContext(), UserHandle.of(mUserId));
            setDisabledByAdmin(admin);
        }
    }

    public PackageInfo getPackageInfo() {
        try {
            PackageManager pm = getUserContext().getPackageManager();
+3 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.content.pm.PackageManager;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.WindowManager;

import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
@@ -43,6 +44,8 @@ public class WifiScanModeActivity extends FragmentActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        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