Merge "Fix null PendingIntent in network listens" am: 27a942cb32 am: 78aa9a4bdc

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1748153

Change-Id: I93002b6e1f6a40af501f8af6721865dbdc329984
This commit is contained in:
Remi NGUYEN VAN
2021-06-28 07:40:20 +00:00
committed by Automerger Merge Worker
2 changed files with 10 additions and 6 deletions

View File

@@ -7596,9 +7596,16 @@ public class ConnectivityService extends IConnectivityManager.Stub
// If apps could file multi-layer requests with PendingIntents, they'd need to know
// which of the layer is satisfied alongside with some ID for the request. Hence, if
// such an API is ever implemented, there is no doubt the right request to send in
// EXTRA_NETWORK_REQUEST is mActiveRequest, and whatever ID would be added would need to
// be sent as a separate extra.
intent.putExtra(ConnectivityManager.EXTRA_NETWORK_REQUEST, nri.getActiveRequest());
// EXTRA_NETWORK_REQUEST is the active request, and whatever ID would be added would
// need to be sent as a separate extra.
final NetworkRequest req = nri.isMultilayerRequest()
? nri.getActiveRequest()
// Non-multilayer listen requests do not have an active request
: nri.mRequests.get(0);
if (req == null) {
Log.wtf(TAG, "No request in NRI " + nri);
}
intent.putExtra(ConnectivityManager.EXTRA_NETWORK_REQUEST, req);
nri.mPendingIntentSent = true;
sendIntent(nri.mPendingIntent, intent);
}

View File

@@ -76,7 +76,6 @@ import static android.system.OsConstants.AF_UNSPEC;
import static com.android.compatibility.common.util.SystemUtil.callWithShellPermissionIdentity;
import static com.android.compatibility.common.util.SystemUtil.runShellCommand;
import static com.android.compatibility.common.util.SystemUtil.runWithShellPermissionIdentity;
import static com.android.modules.utils.build.SdkLevel.isAtLeastS;
import static com.android.networkstack.apishim.ConstantsShim.BLOCKED_REASON_LOCKDOWN_VPN;
import static com.android.networkstack.apishim.ConstantsShim.BLOCKED_REASON_NONE;
import static com.android.testutils.MiscAsserts.assertThrows;
@@ -956,8 +955,6 @@ public class ConnectivityManagerTest {
private void assertPendingIntentRequestMatches(NetworkRequest broadcasted, NetworkRequest filed,
boolean useListen) {
// TODO: BUG (b/191713869): on S the request extra is null on listens
if (isAtLeastS() && useListen && broadcasted == null) return;
assertArrayEquals(filed.networkCapabilities.getCapabilities(),
broadcasted.networkCapabilities.getCapabilities());
// TODO: BUG (b/189868426): this should also apply to listens