Merge "Unbreak testStartUsingNetworkFeature_enableHipri failure" am: 0b3d643758

Change-Id: I30eefa35d19f0a2dd8382fc3f63470d1aeb0dea9
This commit is contained in:
Mark Chien
2020-03-27 15:45:06 +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;
@@ -5396,13 +5397,26 @@ 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()) {
if (checkUnsupportedStartingFrom(Build.VERSION_CODES.M, callingPackageName)) {
throw new SecurityException("Insufficient permissions to specify legacy type"); 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)
? NetworkRequest.Type.TRACK_DEFAULT ? NetworkRequest.Type.TRACK_DEFAULT