Fix inconsistent permission check in LocationManager.
Ensures there is a consistent permission check between the LocationManager APIs:
- getProviders(Criteria, boolean)
- getAllProviders()
Bug: 24776299
Test: ran LocationManagerTest#testGetProviders from CTS
Change-Id: Ia0d5a510a6cdb34df1f53bb0b3885aa295ba51ae
diff --git a/services/core/java/com/android/server/LocationManagerService.java b/services/core/java/com/android/server/LocationManagerService.java
index 966e553..340d672 100644
--- a/services/core/java/com/android/server/LocationManagerService.java
+++ b/services/core/java/com/android/server/LocationManagerService.java
@@ -1542,18 +1542,7 @@
*/
@Override
public List<String> getAllProviders() {
- ArrayList<String> out;
- synchronized (mLock) {
- out = new ArrayList<>(mProviders.size());
- for (LocationProviderInterface provider : mProviders) {
- String name = provider.getName();
- if (LocationManager.FUSED_PROVIDER.equals(name)) {
- continue;
- }
- out.add(name);
- }
- }
-
+ List<String> out = getProviders(null /*criteria*/, false /*enabledOnly*/);
if (D) Log.d(TAG, "getAllProviders()=" + out);
return out;
}