Merge "Dump location noteOp with location off" into sc-dev am: 6ad1b191f7

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/13665901

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I70a8b6ab0954109246f1518c1d26b21b2e3f862f
This commit is contained in:
TreeHugger Robot
2021-02-23 01:10:33 +00:00
committed by Automerger Merge Worker

View File

@@ -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() {