From c84d42e7d6eb63781d4ad7b39171554d5fa07e97 Mon Sep 17 00:00:00 2001 From: Lifu Tang Date: Wed, 31 Jan 2018 18:01:54 -0800 Subject: [PATCH] Remove unused methods from LocationManagerService Test: Built and Manually tested Change-Id: I7e13d51864d86054eb9394704927dc4d449c0b13 --- .../android/location/ILocationManager.aidl | 5 - .../server/LocationManagerService.java | 171 ------------------ 2 files changed, 176 deletions(-) diff --git a/location/java/android/location/ILocationManager.aidl b/location/java/android/location/ILocationManager.aidl index 018db9a7fc9d6..fa3f99a90cc8b 100644 --- a/location/java/android/location/ILocationManager.aidl +++ b/location/java/android/location/ILocationManager.aidl @@ -88,11 +88,6 @@ interface ILocationManager boolean providerMeetsCriteria(String provider, in Criteria criteria); ProviderProperties getProviderProperties(String provider); String getNetworkProviderPackage(); - boolean isProviderEnabled(String provider); - boolean isProviderEnabledForUser(String provider, int userId); - boolean setProviderEnabledForUser(String provider, boolean enabled, int userId); - boolean isLocationEnabledForUser(int userId); - void setLocationEnabledForUser(boolean enabled, int userId); void addTestProvider(String name, in ProviderProperties properties, String opPackageName); void removeTestProvider(String provider, String opPackageName); diff --git a/services/core/java/com/android/server/LocationManagerService.java b/services/core/java/com/android/server/LocationManagerService.java index 1dd92f3130a74..65e90bad41a72 100644 --- a/services/core/java/com/android/server/LocationManagerService.java +++ b/services/core/java/com/android/server/LocationManagerService.java @@ -1396,23 +1396,6 @@ public class LocationManagerService extends ILocationManager.Stub { return isAllowedByCurrentUserSettingsLocked(provider); } - /** - * Returns "true" if access to the specified location provider is allowed by the specified - * user's settings. Access to all location providers is forbidden to non-location-provider - * processes belonging to background users. - * - * @param provider the name of the location provider - * @param uid the requestor's UID - * @param userId the user id to query - */ - private boolean isAllowedByUserSettingsLockedForUser( - String provider, int uid, int userId) { - if (!isCurrentProfile(UserHandle.getUserId(uid)) && !isUidALocationProvider(uid)) { - return false; - } - return isLocationProviderEnabledForUser(provider, userId); - } - /** * Returns the permission string associated with the specified resolution level. * @@ -2584,143 +2567,6 @@ public class LocationManagerService extends ILocationManager.Stub { return null; } - /** - * Method for enabling or disabling location. - * - * @param enabled true to enable location. false to disable location - * @param userId the user id to set - */ - @Override - public void setLocationEnabledForUser(boolean enabled, int userId) { - // Check INTERACT_ACROSS_USERS permission if userId is not current user id. - checkInteractAcrossUsersPermission(userId); - - // Enable or disable all location providers. Fused provider and passive provider are - // excluded. - synchronized (mLock) { - for(String provider : getAllProvidersForLocationSettings()) { - setProviderEnabledForUser(provider, enabled, userId); - } - } - } - - /** - * Returns the current enabled/disabled status of location - * - * @param userId the user id to query - * @return true if location is enabled. false if location is disabled. - */ - @Override - public boolean isLocationEnabledForUser(int userId) { - // Check INTERACT_ACROSS_USERS permission if userId is not current user id. - checkInteractAcrossUsersPermission(userId); - - // If at least one location provider is enabled, return true. Fused provider and passive - // provider are excluded. - synchronized (mLock) { - for (String provider : getAllProvidersForLocationSettings()) { - if (isProviderEnabledForUser(provider, userId)) { - return true; - } - } - return false; - } - } - - @Override - public boolean isProviderEnabled(String provider) { - return isProviderEnabledForUser(provider, UserHandle.getCallingUserId()); - } - - /** - * Method for determining if a location provider is enabled. - * - * @param provider the location provider to query - * @param userId the user id to query - * @return true if the provider is enabled - */ - @Override - public boolean isProviderEnabledForUser(String provider, int userId) { - // Check INTERACT_ACROSS_USERS permission if userId is not current user id. - checkInteractAcrossUsersPermission(userId); - - // Fused provider is accessed indirectly via criteria rather than the provider-based APIs, - // so we discourage its use - if (LocationManager.FUSED_PROVIDER.equals(provider)) return false; - - int uid = Binder.getCallingUid(); - long identity = Binder.clearCallingIdentity(); - try { - synchronized (mLock) { - LocationProviderInterface p = mProvidersByName.get(provider); - return p != null - && isAllowedByUserSettingsLockedForUser(provider, uid, userId); - } - } finally { - Binder.restoreCallingIdentity(identity); - } - } - - /** - * Method for enabling or disabling a single location provider. - * - * @param provider the name of the provider - * @param enabled true to enable the provider. false to disable the provider - * @param userId the user id to set - * @return true if the value was set successfully. false on failure. - */ - @Override - public boolean setProviderEnabledForUser( - String provider, boolean enabled, int userId) { - mContext.enforceCallingPermission( - android.Manifest.permission.WRITE_SECURE_SETTINGS, - "Requires WRITE_SECURE_SETTINGS permission"); - - // Check INTERACT_ACROSS_USERS permission if userId is not current user id. - checkInteractAcrossUsersPermission(userId); - - final long identity = Binder.clearCallingIdentity(); - try { - synchronized (mLock) { - // to ensure thread safety, we write the provider name with a '+' or '-' - // and let the SettingsProvider handle it rather than reading and modifying - // the list of enabled providers. - if (enabled) { - provider = "+" + provider; - } else { - provider = "-" + provider; - } - return Settings.Secure.putStringForUser( - mContext.getContentResolver(), - Settings.Secure.LOCATION_PROVIDERS_ALLOWED, - provider, - userId); - } - } finally { - Binder.restoreCallingIdentity(identity); - } - } - - /** - * Return all location providers except fused provider and passive provider. These two - * providers are not generating location by themselves, but only echo locations from other - * providers. - * - * @return All location providers except fused provider and passive provider, including - * providers that are not permitted to be accessed by the calling activity or are - * currently disabled. - */ - private List getAllProvidersForLocationSettings() { - List providersForSettings = new ArrayList<>(mProviders.size()); - for (String provider : getAllProviders()) { - if (provider.equals(LocationManager.PASSIVE_PROVIDER)) { - continue; - } - providersForSettings.add(provider); - } - return providersForSettings; - } - /** * Read location provider status from Settings.Secure * @@ -2741,23 +2587,6 @@ public class LocationManagerService extends ILocationManager.Stub { } } - /** - * Method for checking INTERACT_ACROSS_USERS permission if specified user id is not the same as - * current user id - * - * @param userId the user id to get or set value - */ - private void checkInteractAcrossUsersPermission(int userId) { - int uid = Binder.getCallingUid(); - if (UserHandle.getUserId(uid) != userId) { - if (ActivityManager.checkComponentPermission( - android.Manifest.permission.INTERACT_ACROSS_USERS, uid, -1, true) - != PERMISSION_GRANTED) { - throw new SecurityException("Requires INTERACT_ACROSS_USERS permission"); - } - } - } - /** * Returns "true" if the UID belongs to a bound location provider. *