diff options
| -rw-r--r-- | services/core/java/com/android/server/location/GnssVisibilityControl.java | 17 |
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 |