summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/location/GnssVisibilityControl.java17
1 files changed, 13 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/location/GnssVisibilityControl.java b/services/core/java/com/android/server/location/GnssVisibilityControl.java
index 8d4ad7f30821..65bd5c6a14da 100644
--- a/services/core/java/com/android/server/location/GnssVisibilityControl.java
+++ b/services/core/java/com/android/server/location/GnssVisibilityControl.java
@@ -456,9 +456,8 @@ class GnssVisibilityControl {
final String proxyAppPkgName = nfwNotification.mProxyAppPackageName;
final ProxyAppState proxyAppState = mProxyAppsState.get(proxyAppPkgName);
final boolean isLocationRequestAccepted = nfwNotification.isRequestAccepted();
- final boolean isPermissionMismatched =
- (proxyAppState == null) ? isLocationRequestAccepted
- : (proxyAppState.mHasLocationPermission != isLocationRequestAccepted);
+ final boolean isPermissionMismatched = isPermissionMismatched(proxyAppState,
+ nfwNotification);
logEvent(nfwNotification, isPermissionMismatched);
if (!nfwNotification.isRequestAttributedToProxyApp()) {
@@ -506,14 +505,24 @@ class GnssVisibilityControl {
// Log proxy app permission mismatch between framework and GNSS HAL.
if (isPermissionMismatched) {
- Log.w(TAG, "Permission mismatch. Framework proxy app " + proxyAppPkgName
+ Log.w(TAG, "Permission mismatch. Proxy app " + proxyAppPkgName
+ " location permission is set to " + proxyAppState.mHasLocationPermission
+ + " and GNSS HAL enabled is set to " + mIsGpsEnabled
+ " but GNSS non-framework location access response type is "
+ nfwNotification.getResponseTypeAsString() + " for notification: "
+ nfwNotification);
}
}
+ private boolean isPermissionMismatched(ProxyAppState proxyAppState,
+ NfwNotification nfwNotification) {
+ // Non-framework non-emergency location requests must be accepted only when IGnss.hal
+ // is enabled and the proxy app has location permission.
+ final boolean isLocationRequestAccepted = nfwNotification.isRequestAccepted();
+ return (proxyAppState == null || !mIsGpsEnabled) ? isLocationRequestAccepted
+ : (proxyAppState.mHasLocationPermission != isLocationRequestAccepted);
+ }
+
private void showLocationIcon(ProxyAppState proxyAppState, NfwNotification nfwNotification,
int uid, String proxyAppPkgName) {
// If we receive a new NfwNotification before the location icon is turned off for the