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

Commit ee3cbbe0 authored by Soonil Nagarkar's avatar Soonil Nagarkar
Browse files

Dump location noteOp with location off

These are appropriate in some circumstances, but we dump them to the log
for future evaluation just in case they are inappropriate.

Bug: 180111317
Test: presubmits
Change-Id: I39fc93e9288fa782d30a652427d9d37fbd311c11
parent d6eea182
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -70,6 +70,7 @@ import android.location.provider.IProviderRequestListener;
import android.location.provider.ProviderProperties;
import android.location.util.identity.CallerIdentity;
import android.os.Binder;
import android.os.Build;
import android.os.Bundle;
import android.os.ICancellationSignal;
import android.os.ParcelFileDescriptor;
@@ -350,6 +351,22 @@ public class LocationManagerService extends ILocationManager.Stub {
    void onSystemReady() {
        mInjector.getSettingsHelper().addOnLocationEnabledChangedListener(
                this::onLocationModeChanged);

        if (Build.IS_DEBUGGABLE) {
            // on debug builds, watch for location noteOps while location is off. there are some
            // scenarios (emergency location) where this is expected, but generally this should
            // rarely occur, and may indicate bugs. dump occurrences to logs for further evaluation
            AppOpsManager appOps = Objects.requireNonNull(
                    mContext.getSystemService(AppOpsManager.class));
            appOps.startWatchingNoted(
                    new int[]{AppOpsManager.OP_FINE_LOCATION, AppOpsManager.OP_COARSE_LOCATION},
                    (code, uid, packageName, attributionTag, flags, result) -> {
                        if (!isLocationEnabledForUser(UserHandle.getUserId(uid))) {
                            Log.w(TAG, "location noteOp with location off - "
                                    + CallerIdentity.forTest(uid, 0, packageName, attributionTag));
                        }
                    });
        }
    }

    void onSystemThirdPartyAppsCanStart() {