Merge "Unbreak testStartUsingNetworkFeature_enableHipri failure" am: 0b3d643758 am: d53c48616f

Change-Id: Ifedc9c8825550bc5ec5c32c46d0cd0f48d016b5e
This commit is contained in:
Mark Chien
2020-03-27 15:58:49 +00:00
committed by Automerger Merge Worker

View File

@@ -63,6 +63,7 @@ import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.database.ContentObserver; import android.database.ContentObserver;
import android.net.CaptivePortal; import android.net.CaptivePortal;
@@ -5405,12 +5406,25 @@ public class ConnectivityService extends IConnectivityManager.Stub
} }
} }
private boolean checkUnsupportedStartingFrom(int version, String callingPackageName) {
final PackageManager pm = mContext.getPackageManager();
final int userId = UserHandle.getCallingUserId();
try {
final int callingVersion = pm.getApplicationInfoAsUser(
callingPackageName, 0 /* flags */, userId).targetSdkVersion;
if (callingVersion < version) return false;
} catch (PackageManager.NameNotFoundException e) { }
return true;
}
@Override @Override
public NetworkRequest requestNetwork(NetworkCapabilities networkCapabilities, public NetworkRequest requestNetwork(NetworkCapabilities networkCapabilities,
Messenger messenger, int timeoutMs, IBinder binder, int legacyType, Messenger messenger, int timeoutMs, IBinder binder, int legacyType,
@NonNull String callingPackageName) { @NonNull String callingPackageName) {
if (legacyType != TYPE_NONE && !checkNetworkStackPermission()) { if (legacyType != TYPE_NONE && !checkNetworkStackPermission()) {
throw new SecurityException("Insufficient permissions to specify legacy type"); if (checkUnsupportedStartingFrom(Build.VERSION_CODES.M, callingPackageName)) {
throw new SecurityException("Insufficient permissions to specify legacy type");
}
} }
final int callingUid = Binder.getCallingUid(); final int callingUid = Binder.getCallingUid();
final NetworkRequest.Type type = (networkCapabilities == null) final NetworkRequest.Type type = (networkCapabilities == null)