/* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.server.wifi.util; import android.Manifest; import android.app.ActivityManager; import android.content.Context; import android.content.pm.PackageManager; import android.util.Log; /** * A wifi permissions dependency class to wrap around external * calls to static methods that enable testing. */ public class WifiPermissionsWrapper { private static final String TAG = "WifiPermissionsWrapper"; private final Context mContext; private boolean mVerboseLoggingEnabled; public WifiPermissionsWrapper(Context context) { mContext = context; } public int getCurrentUser() { return ActivityManager.getCurrentUser(); } /** * Determine if a UID has a permission. * @param permissionType permission string * @param uid to get permission for * @return Permissions setting */ public int getUidPermission(String permissionType, int uid) { // We don't care about pid, pass in -1 int granted = mContext.checkPermission(permissionType, -1, uid); if (mVerboseLoggingEnabled) { Log.v(TAG, "getUidPermission(" + permissionType + ", " + uid + "): " + (granted == PackageManager.PERMISSION_GRANTED)); } return granted; } /** * Determines if the caller has the override wifi config permission. * * @param uid to check the permission for * @return int representation of success or denied */ public int getOverrideWifiConfigPermission(int uid) { return getUidPermission(android.Manifest.permission.OVERRIDE_WIFI_CONFIG, uid); } /** * Determines if the caller has local mac address permission. * * @param uid to check the permission for * @return int representation of success or denied */ public int getLocalMacAddressPermission(int uid) { return getUidPermission(Manifest.permission.LOCAL_MAC_ADDRESS, uid); } /** * Sets the verbose logging level. */ public void enableVerboseLogging(boolean enabled) { mVerboseLoggingEnabled = enabled; } }