Clear binder identity during network logging notification processing

A regression was introduced by Iab009978c472f843000c1b193de571863fc185bb
which moved some external calls outside a binderClearCallingIdentity block.
Fix it by moving them back.

Bug: 193206826
Test: atest DeviceOwnerTest#testAdminActionBookkeeping
Test: atest DeviceOwnerTest#testNetworkLoggingWithSingleUser
Test: atest DeviceOwnerTest#testNetworkLogging_multipleBatches
Test: atest DeviceOwnerTest#testNetworkLoggingWithTwoUsers
Test: atest DeviceOwnerTest#testNetworkLogging_rebootResetsId
Test: atest OrgOwnedProfileOwnerTest#testNetworkLoggingLogged
Test: atest OrgOwnedProfileOwnerTest#testNetworkLoggingDelegate
Test: atest OrgOwnedProfileOwnerTest#testNetworkLogging
Test: atest DeviceOwnerPlusProfileOwnerTest#testNetworkAndSecurityLoggingAvailableIfAffiliated
Test: atest MixedDeviceOwnerTest#testDelegation
Test: CTSVerifier: Device Owner Tests -> Network Logging U
Change-Id: I6c6420f39f671082137adcf498914dd5ee1374fa
This commit is contained in:
Rubin Xu
2021-07-13 13:53:19 +01:00
parent 77222e8ea9
commit 80f1f86f7a

View File

@@ -14991,9 +14991,9 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
}
private void setNetworkLoggingActiveInternal(boolean active) {
final boolean[] shouldSendNotification = new boolean[] {false};
synchronized (getLockObject()) {
mInjector.binderWithCleanCallingIdentity(() -> {
mInjector.binderWithCleanCallingIdentity(() -> {
boolean shouldSendNotification = false;
synchronized (getLockObject()) {
if (active) {
if (mNetworkLogger == null) {
final int affectedUserId = getNetworkLoggingAffectedUser();
@@ -15008,7 +15008,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
+ " service not being available yet.");
}
maybePauseDeviceWideLoggingLocked();
shouldSendNotification[0] = shouldSendNetworkLoggingNotificationLocked();
shouldSendNotification = shouldSendNetworkLoggingNotificationLocked();
} else {
if (mNetworkLogger != null && !mNetworkLogger.stopNetworkLogging()) {
Slogf.wtf(LOG_TAG, "Network logging could not be stopped due to the logging"
@@ -15016,15 +15016,15 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
}
mNetworkLogger = null;
}
});
}
if (active) {
if (shouldSendNotification[0]) {
sendNetworkLoggingNotification();
}
} else {
mInjector.getNotificationManager().cancel(SystemMessage.NOTE_NETWORK_LOGGING);
}
if (active) {
if (shouldSendNotification) {
sendNetworkLoggingNotification();
}
} else {
mInjector.getNotificationManager().cancel(SystemMessage.NOTE_NETWORK_LOGGING);
}
});
}
private @UserIdInt int getNetworkLoggingAffectedUser() {