Merge "Revert "Adding renounce permissions logic to ipc calls."" am: 702d7d10df am: ef47b4fab2

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2000932

Change-Id: Ie5589018d34fb4001dbd232a021e93759eb45c14
This commit is contained in:
Rafael Higuera Silva
2022-02-25 20:31:31 +00:00
committed by Automerger Merge Worker
2 changed files with 20 additions and 76 deletions

View File

@@ -239,10 +239,8 @@ public class TelephonyRegistryManager {
* @param events Events
* @param notifyNow Whether to notify instantly
*/
public void listenFromListener(int subId, @NonNull boolean renounceFineLocationAccess,
@NonNull boolean renounceCoarseLocationAccess, @NonNull String pkg,
@NonNull String featureId, @NonNull PhoneStateListener listener,
@NonNull int events, boolean notifyNow) {
public void listenFromListener(int subId, @NonNull String pkg, @NonNull String featureId,
@NonNull PhoneStateListener listener, @NonNull int events, boolean notifyNow) {
if (listener == null) {
throw new IllegalStateException("telephony service is null.");
}
@@ -259,8 +257,8 @@ public class TelephonyRegistryManager {
} else if (listener.mSubId != null) {
subId = listener.mSubId;
}
sRegistry.listenWithEventList(renounceFineLocationAccess, renounceCoarseLocationAccess,
subId, pkg, featureId, listener.callback, eventsList, notifyNow);
sRegistry.listenWithEventList(false, false, subId, pkg, featureId,
listener.callback, eventsList, notifyNow);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}

View File

@@ -48,7 +48,6 @@ import android.compat.annotation.EnabledAfter;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.ComponentName;
import android.content.Context;
import android.content.ContextParams;
import android.content.Intent;
import android.database.Cursor;
import android.net.ConnectivityManager;
@@ -141,7 +140,6 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.Executor;
import java.util.concurrent.RejectedExecutionException;
@@ -379,8 +377,16 @@ public class TelephonyManager {
@UnsupportedAppUsage
public TelephonyManager(Context context, int subId) {
mSubId = subId;
mContext = mergeAttributionAndRenouncedPermissions(context.getApplicationContext(),
context);
Context appContext = context.getApplicationContext();
if (appContext != null) {
if (Objects.equals(context.getAttributionTag(), appContext.getAttributionTag())) {
mContext = appContext;
} else {
mContext = appContext.createAttributionContext(context.getAttributionTag());
}
} else {
mContext = context;
}
mSubscriptionManager = SubscriptionManager.from(mContext);
}
@@ -401,34 +407,6 @@ public class TelephonyManager {
return sInstance;
}
// This method takes the Application context and adds the attributionTag
// and renouncedPermissions from the given context.
private Context mergeAttributionAndRenouncedPermissions(Context to, Context from) {
Context contextToReturn = from;
if (to != null) {
if (!Objects.equals(from.getAttributionTag(), to.getAttributionTag())) {
contextToReturn = to.createAttributionContext(from.getAttributionTag());
} else {
contextToReturn = to;
}
Set<String> renouncedPermissions =
from.getAttributionSource().getRenouncedPermissions();
if (!renouncedPermissions.isEmpty()) {
if (to.getParams() != null) {
contextToReturn = contextToReturn.createContext(
new ContextParams.Builder(to.getParams())
.setRenouncedPermissions(renouncedPermissions).build());
} else {
contextToReturn = contextToReturn.createContext(
new ContextParams.Builder()
.setRenouncedPermissions(renouncedPermissions).build());
}
}
}
return contextToReturn;
}
private String getOpPackageName() {
// For legacy reasons the TelephonyManager has API for getting
// a static instance with no context set preventing us from
@@ -459,16 +437,6 @@ public class TelephonyManager {
return null;
}
private Set<String> getRenouncedPermissions() {
// For legacy reasons the TelephonyManager has API for getting
// a static instance with no context set preventing us from
// getting the attribution source.
if (mContext != null) {
return mContext.getAttributionSource().getRenouncedPermissions();
}
return Collections.emptySet();
}
/**
* Post a runnable to the BackgroundThread.
*
@@ -6170,14 +6138,8 @@ public class TelephonyManager {
(TelephonyRegistryManager)
mContext.getSystemService(Context.TELEPHONY_REGISTRY_SERVICE);
if (telephonyRegistry != null) {
Set<String> renouncedPermissions = getRenouncedPermissions();
boolean renounceFineLocationAccess = renouncedPermissions
.contains(Manifest.permission.ACCESS_FINE_LOCATION);
boolean renounceCoarseLocationAccess = renouncedPermissions
.contains(Manifest.permission.ACCESS_COARSE_LOCATION);
telephonyRegistry.listenFromListener(mSubId, renounceFineLocationAccess,
renounceCoarseLocationAccess, getOpPackageName(), getAttributionTag(),
listener, events, notifyNow);
telephonyRegistry.listenFromListener(mSubId, getOpPackageName(),
getAttributionTag(), listener, events, notifyNow);
} else {
Rlog.w(TAG, "telephony registry not ready.");
}
@@ -11640,10 +11602,7 @@ public class TelephonyManager {
Manifest.permission.ACCESS_COARSE_LOCATION
})
public @Nullable ServiceState getServiceState() {
return getServiceState(getRenouncedPermissions()
.contains(Manifest.permission.ACCESS_FINE_LOCATION),
getRenouncedPermissions()
.contains(Manifest.permission.ACCESS_COARSE_LOCATION));
return getServiceState(false, false);
}
/**
@@ -11655,11 +11614,6 @@ public class TelephonyManager {
* If you want continuous updates of service state info, register a {@link PhoneStateListener}
* via {@link #listen} with the {@link PhoneStateListener#LISTEN_SERVICE_STATE} event.
*
* There's another way to renounce permissions with a custom context
* {@link AttributionSource.Builder#setRenouncedPermissions(Set<String>)} but only for system
* apps. To avoid confusion, calling this method supersede renouncing permissions with a
* custom context.
*
* <p>Requires Permission: {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
* or that the calling app has carrier privileges (see {@link #hasCarrierPrivileges})
* and {@link android.Manifest.permission#ACCESS_COARSE_LOCATION}.
@@ -11703,7 +11657,8 @@ public class TelephonyManager {
ITelephony service = getITelephony();
if (service != null) {
return service.getServiceStateForSubscriber(subId, renounceFineLocationAccess,
renounceCoarseLocationAccess, getOpPackageName(), getAttributionTag());
renounceCoarseLocationAccess,
getOpPackageName(), getAttributionTag());
}
} catch (RemoteException e) {
Log.e(TAG, "Error calling ITelephony#getServiceStateForSubscriber", e);
@@ -15539,10 +15494,7 @@ public class TelephonyManager {
*/
public void registerTelephonyCallback(@NonNull @CallbackExecutor Executor executor,
@NonNull TelephonyCallback callback) {
registerTelephonyCallback(
getRenouncedPermissions().contains(Manifest.permission.ACCESS_FINE_LOCATION),
getRenouncedPermissions().contains(Manifest.permission.ACCESS_COARSE_LOCATION),
executor, callback);
registerTelephonyCallback(false, false, executor, callback);
}
/**
@@ -15572,12 +15524,6 @@ public class TelephonyManager {
* instability. If a process has registered too many callbacks without unregistering them, it
* may encounter an {@link IllegalStateException} when trying to register more callbacks.
*
* <p>
* There's another way to renounce permissions with a custom context
* {@link AttributionSource.Builder#setRenouncedPermissions(Set<String>)} but only for system
* apps. To avoid confusion, calling this method supersede renouncing permissions with a
* custom context.
*
* @param renounceFineLocationAccess Set this to true if the caller would not like to receive
* location related information which will be sent if the caller already possess
* {@link android.Manifest.permission#ACCESS_FINE_LOCATION} and do not renounce the permissions.