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

Commit 0b302499 authored by Oscar Shu's avatar Oscar Shu Committed by Android (Google) Code Review
Browse files

Merge "Hide apps with NETWORK_SETTINGS from special wifi settings" into pi-dev

parents 5f6937dd 0aabe7f3
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.Manifest;
import android.app.AppOpsManager;
import android.content.Context;

import com.android.internal.util.ArrayUtils;
import com.android.settings.applications.AppStateAppOpsBridge;
import com.android.settings.applications.AppStateAppOpsBridge.PermissionState;
import com.android.settingslib.applications.ApplicationsState;
@@ -37,6 +38,7 @@ public class AppStateChangeWifiStateBridge extends AppStateAppOpsBridge {
    private static final String TAG = "AppStateChangeWifiStateBridge";
    private static final int APP_OPS_OP_CODE = AppOpsManager.OP_CHANGE_WIFI_STATE;
    private static final String PM_CHANGE_WIFI_STATE = Manifest.permission.CHANGE_WIFI_STATE;
    private static final String PM_NETWORK_SETTINGS = Manifest.permission.NETWORK_SETTINGS;

    private static final String[] PM_PERMISSIONS = {
            PM_CHANGE_WIFI_STATE
@@ -86,6 +88,17 @@ public class AppStateChangeWifiStateBridge extends AppStateAppOpsBridge {
                return false;
            }
            WifiSettingsState wifiSettingsState = (WifiSettingsState) info.extraInfo;
            if (wifiSettingsState.packageInfo != null) {
                final String[] requestedPermissions
                        = wifiSettingsState.packageInfo.requestedPermissions;
                if (ArrayUtils.contains(requestedPermissions, PM_NETWORK_SETTINGS)) {
                    /*
                     * NETWORK_SETTINGS permission trumps CHANGE_WIFI_CONFIG, so remove this from
                     * the list.
                    */
                    return false;
                }
            }
            return wifiSettingsState.permissionDeclared;
        }
    };
+14 −0
Original line number Diff line number Diff line
@@ -16,6 +16,10 @@
package com.android.settings.wifi;

import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.mock;

import android.content.pm.PackageInfo;
import android.Manifest;

import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settingslib.applications.ApplicationsState.AppEntry;
@@ -66,4 +70,14 @@ public class AppStateChangeWifiStateBridgeTest {
        mEntry.extraInfo = mState;
        assertThat(mFilter.filterApp(mEntry)).isFalse();
    }

    @Test
    public void testFilterApp_networkSettingsGranted_returnFalse() {
        mState.permissionDeclared = true;
        mState.packageInfo = mock(PackageInfo.class);
        mState.packageInfo.requestedPermissions
                = new String[]{ Manifest.permission.NETWORK_SETTINGS };
        mEntry.extraInfo = mState;
        assertThat(mFilter.filterApp(mEntry)).isFalse();
    }
}