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
This commit is contained in:
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user