Fix broken testCaptivePortalApp
This was broken by aosp/1657763, only on eng builds because of a wtf. The root cause of the issue is that the test is acquiring MAINLINE_NETWORK_STACK after it registers a callback but before in unregisters it. After aosp/1657763, the objects keeping track of callbacks are separate for processes with and without MAINLINE_NETWORK_STACK, which means the removal is looked up in a different counter. Solve this by having the NRI remember the relevant counter keeping track of it. Bug: none Test: testCaptivePortalApp Change-Id: I566a28522fa68be9cc2bdb4624b588b4f01d3b7e
This commit is contained in:
@@ -4034,7 +4034,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
}
|
||||
}
|
||||
}
|
||||
decrementRequestCount(nri);
|
||||
nri.decrementRequestCount();
|
||||
mNetworkRequestInfoLogs.log("RELEASE " + nri);
|
||||
|
||||
if (null != nri.getActiveRequest()) {
|
||||
@@ -4151,14 +4151,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
? mSystemNetworkRequestCounter : mNetworkRequestCounter;
|
||||
}
|
||||
|
||||
private void incrementRequestCountOrThrow(NetworkRequestInfo nri) {
|
||||
getRequestCounter(nri).incrementCountOrThrow(nri.mUid);
|
||||
}
|
||||
|
||||
private void decrementRequestCount(NetworkRequestInfo nri) {
|
||||
getRequestCounter(nri).decrementCount(nri.mUid);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAcceptUnvalidated(Network network, boolean accept, boolean always) {
|
||||
enforceNetworkStackSettingsOrSetup();
|
||||
@@ -5457,6 +5449,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
@Nullable
|
||||
final String mCallingAttributionTag;
|
||||
|
||||
// Counter keeping track of this NRI.
|
||||
final PerUidCounter mPerUidCounter;
|
||||
|
||||
// Effective UID of this request. This is different from mUid when a privileged process
|
||||
// files a request on behalf of another UID. This UID is used to determine blocked status,
|
||||
// UID matching, and so on. mUid above is used for permission checks and to enforce the
|
||||
@@ -5507,7 +5502,8 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
mPid = getCallingPid();
|
||||
mUid = mDeps.getCallingUid();
|
||||
mAsUid = asUid;
|
||||
incrementRequestCountOrThrow(this);
|
||||
mPerUidCounter = getRequestCounter(this);
|
||||
mPerUidCounter.incrementCountOrThrow(mUid);
|
||||
/**
|
||||
* Location sensitive data not included in pending intent. Only included in
|
||||
* {@link NetworkCallback}.
|
||||
@@ -5539,7 +5535,8 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
mUid = mDeps.getCallingUid();
|
||||
mAsUid = asUid;
|
||||
mPendingIntent = null;
|
||||
incrementRequestCountOrThrow(this);
|
||||
mPerUidCounter = getRequestCounter(this);
|
||||
mPerUidCounter.incrementCountOrThrow(mUid);
|
||||
mCallbackFlags = callbackFlags;
|
||||
mCallingAttributionTag = callingAttributionTag;
|
||||
linkDeathRecipient();
|
||||
@@ -5577,7 +5574,8 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
mUid = nri.mUid;
|
||||
mAsUid = nri.mAsUid;
|
||||
mPendingIntent = nri.mPendingIntent;
|
||||
incrementRequestCountOrThrow(this);
|
||||
mPerUidCounter = getRequestCounter(this);
|
||||
mPerUidCounter.incrementCountOrThrow(mUid);
|
||||
mCallbackFlags = nri.mCallbackFlags;
|
||||
mCallingAttributionTag = nri.mCallingAttributionTag;
|
||||
linkDeathRecipient();
|
||||
@@ -5609,6 +5607,10 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
return Collections.unmodifiableList(tempRequests);
|
||||
}
|
||||
|
||||
void decrementRequestCount() {
|
||||
mPerUidCounter.decrementCount(mUid);
|
||||
}
|
||||
|
||||
void linkDeathRecipient() {
|
||||
if (null != mBinder) {
|
||||
try {
|
||||
@@ -8773,7 +8775,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
// Decrement the reference count for this NetworkRequestInfo. The reference count is
|
||||
// incremented when the NetworkRequestInfo is created as part of
|
||||
// enforceRequestCountLimit().
|
||||
decrementRequestCount(nri);
|
||||
nri.decrementRequestCount();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -8839,7 +8841,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
// Decrement the reference count for this NetworkRequestInfo. The reference count is
|
||||
// incremented when the NetworkRequestInfo is created as part of
|
||||
// enforceRequestCountLimit().
|
||||
decrementRequestCount(nri);
|
||||
nri.decrementRequestCount();
|
||||
|
||||
iCb.unlinkToDeath(cbInfo, 0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user