Merge "Fix incorrect error log message in GnssVisibilityControl class" into qt-dev

This commit is contained in:
Anil Admal
2019-04-24 00:12:41 +00:00
committed by Android (Google) Code Review

View File

@@ -288,6 +288,18 @@ class GnssVisibilityControl {
return "<Unknown>"; return "<Unknown>";
} }
} }
private boolean isRequestAccepted() {
return mResponseType != NfwNotification.NFW_RESPONSE_TYPE_REJECTED;
}
private boolean isRequestAttributedToProxyApp() {
return !TextUtils.isEmpty(mProxyAppPackageName);
}
private boolean isEmergencyRequestNotification() {
return mInEmergencyMode && !isRequestAttributedToProxyApp();
}
} }
private void handlePermissionsChanged(int uid) { private void handlePermissionsChanged(int uid) {
@@ -376,20 +388,37 @@ class GnssVisibilityControl {
private void handleNfwNotification(NfwNotification nfwNotification) { private void handleNfwNotification(NfwNotification nfwNotification) {
if (DEBUG) Log.d(TAG, "Non-framework location access notification: " + nfwNotification); if (DEBUG) Log.d(TAG, "Non-framework location access notification: " + nfwNotification);
final String proxyAppPackageName = nfwNotification.mProxyAppPackageName; if (nfwNotification.isEmergencyRequestNotification()) {
Boolean isLocationPermissionEnabled = mProxyAppToLocationPermissions.get( handleEmergencyNfwNotification(nfwNotification);
proxyAppPackageName); return;
boolean isLocationRequestAccepted =
nfwNotification.mResponseType != NfwNotification.NFW_RESPONSE_TYPE_REJECTED;
boolean isPermissionMismatched;
if (isLocationPermissionEnabled == null) {
isPermissionMismatched = isLocationRequestAccepted;
} else {
isPermissionMismatched = (isLocationPermissionEnabled != isLocationRequestAccepted);
} }
final String proxyAppPackageName = nfwNotification.mProxyAppPackageName;
final Boolean isLocationPermissionEnabled = mProxyAppToLocationPermissions.get(
proxyAppPackageName);
final boolean isLocationRequestAccepted = nfwNotification.isRequestAccepted();
final boolean isPermissionMismatched =
(isLocationPermissionEnabled == null) ? isLocationRequestAccepted
: (isLocationPermissionEnabled != isLocationRequestAccepted);
logEvent(nfwNotification, isPermissionMismatched); logEvent(nfwNotification, isPermissionMismatched);
if (TextUtils.isEmpty(proxyAppPackageName)) { if (!nfwNotification.isRequestAttributedToProxyApp()) {
// Handle cases where GNSS HAL implementation correctly rejected NFW location request.
// 1. GNSS HAL implementation doesn't provide location to any NFW location use cases.
// There is no Location Attribution App configured in the framework.
// 2. GNSS HAL implementation doesn't provide location to some NFW location use cases.
// Location Attribution Apps are configured only for the supported NFW location
// use cases. All other use cases which are not supported (and always rejected) by
// the GNSS HAL implementation will have proxyAppPackageName set to empty string.
if (!isLocationRequestAccepted) {
if (DEBUG) {
Log.d(TAG, "Non-framework location request rejected. ProxyAppPackageName field"
+ " is not set in the notification: " + nfwNotification + ". Number of"
+ " configured proxy apps: " + mProxyAppToLocationPermissions.size());
}
return;
}
Log.e(TAG, "ProxyAppPackageName field is not set. AppOps service not notified " Log.e(TAG, "ProxyAppPackageName field is not set. AppOps service not notified "
+ "for non-framework location access notification: " + nfwNotification); + "for non-framework location access notification: " + nfwNotification);
return; return;
@@ -423,6 +452,16 @@ class GnssVisibilityControl {
} }
} }
private void handleEmergencyNfwNotification(NfwNotification nfwNotification) {
boolean isPermissionMismatched =
(nfwNotification.mResponseType == NfwNotification.NFW_RESPONSE_TYPE_REJECTED);
if (isPermissionMismatched) {
Log.e(TAG, "Emergency non-framework location request incorrectly rejected."
+ " Notification: " + nfwNotification);
}
logEvent(nfwNotification, isPermissionMismatched);
}
private void logEvent(NfwNotification notification, boolean isPermissionMismatched) { private void logEvent(NfwNotification notification, boolean isPermissionMismatched) {
StatsLog.write(StatsLog.GNSS_NFW_NOTIFICATION_REPORTED, StatsLog.write(StatsLog.GNSS_NFW_NOTIFICATION_REPORTED,
notification.mProxyAppPackageName, notification.mProxyAppPackageName,