Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 80f1f86f authored by Rubin Xu's avatar Rubin Xu
Browse files

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
parent 77222e8e
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -14991,9 +14991,9 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
    }
    private void setNetworkLoggingActiveInternal(boolean active) {
        final boolean[] shouldSendNotification = new boolean[] {false};
        synchronized (getLockObject()) {
        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]) {
                if (shouldSendNotification) {
                    sendNetworkLoggingNotification();
                }
            } else {
                mInjector.getNotificationManager().cancel(SystemMessage.NOTE_NETWORK_LOGGING);
            }
        });
    }
    private @UserIdInt int getNetworkLoggingAffectedUser() {